From 0214fb09edd46d1294c9b60138b05bdcaa990e0a Mon Sep 17 00:00:00 2001 From: yezhiqiu <983577727@qq.com> Date: Tue, 30 Sep 2025 10:01:20 +0800 Subject: [PATCH] first commit --- .gitignore | 15 + .idea/.gitignore | 3 + .idea/AndroidProjectSystem.xml | 6 + .idea/compiler.xml | 6 + .idea/deploymentTargetSelector.xml | 10 + .idea/gradle.xml | 22 + .idea/migrations.xml | 10 + .idea/misc.xml | 10 + .idea/runConfigurations.xml | 17 + .idea/vcs.xml | 6 + FastBleLib/build.gradle | 31 + .../results.bin | 1 + .../fastble/BleManager$BleManagerHolder.dex | Bin 0 -> 1096 bytes .../com/clj/fastble/BleManager.dex | Bin 0 -> 15332 bytes .../clj/fastble/bluetooth/BleBluetooth$1.dex | Bin 0 -> 7604 bytes .../bluetooth/BleBluetooth$LastState.dex | Bin 0 -> 2056 bytes .../bluetooth/BleBluetooth$MainHandler.dex | Bin 0 -> 5252 bytes .../clj/fastble/bluetooth/BleBluetooth.dex | Bin 0 -> 9892 bytes .../clj/fastble/bluetooth/BleConnector$1.dex | Bin 0 -> 4296 bytes .../clj/fastble/bluetooth/BleConnector.dex | Bin 0 -> 8992 bytes .../MultipleBluetoothController$1.dex | Bin 0 -> 1756 bytes .../bluetooth/MultipleBluetoothController.dex | Bin 0 -> 5340 bytes .../clj/fastble/bluetooth/SplitWriter$1.dex | Bin 0 -> 1368 bytes .../clj/fastble/bluetooth/SplitWriter$2.dex | Bin 0 -> 2576 bytes .../com/clj/fastble/bluetooth/SplitWriter.dex | Bin 0 -> 4552 bytes .../clj/fastble/callback/BleBaseCallback.dex | Bin 0 -> 1072 bytes .../clj/fastble/callback/BleGattCallback.dex | Bin 0 -> 1188 bytes .../fastble/callback/BleIndicateCallback.dex | Bin 0 -> 916 bytes .../callback/BleMtuChangedCallback.dex | Bin 0 -> 884 bytes .../fastble/callback/BleNotifyCallback.dex | Bin 0 -> 908 bytes .../clj/fastble/callback/BleReadCallback.dex | Bin 0 -> 856 bytes .../clj/fastble/callback/BleRssiCallback.dex | Bin 0 -> 864 bytes .../callback/BleScanAndConnectCallback.dex | Bin 0 -> 944 bytes .../clj/fastble/callback/BleScanCallback.dex | Bin 0 -> 1108 bytes .../fastble/callback/BleScanPresenterImp.dex | Bin 0 -> 744 bytes .../clj/fastble/callback/BleWriteCallback.dex | Bin 0 -> 888 bytes .../fastble/data/BleConnectStateParameter.dex | Bin 0 -> 1068 bytes .../com/clj/fastble/data/BleDevice$1.dex | Bin 0 -> 1572 bytes .../com/clj/fastble/data/BleDevice.dex | Bin 0 -> 3200 bytes .../com/clj/fastble/data/BleMsg.dex | Bin 0 -> 2256 bytes .../com/clj/fastble/data/BleScanState.dex | Bin 0 -> 1772 bytes .../com/clj/fastble/data/BleWriteState.dex | Bin 0 -> 708 bytes .../clj/fastble/exception/BleException.dex | Bin 0 -> 1660 bytes .../fastble/exception/ConnectException.dex | Bin 0 -> 1680 bytes .../clj/fastble/exception/GattException.dex | Bin 0 -> 1324 bytes .../clj/fastble/exception/OtherException.dex | Bin 0 -> 792 bytes .../fastble/exception/TimeoutException.dex | Bin 0 -> 804 bytes .../clj/fastble/scan/BleScanPresenter$1.dex | Bin 0 -> 1380 bytes .../clj/fastble/scan/BleScanPresenter$2.dex | Bin 0 -> 1372 bytes .../clj/fastble/scan/BleScanPresenter$3.dex | Bin 0 -> 1400 bytes .../clj/fastble/scan/BleScanPresenter$4.dex | Bin 0 -> 1344 bytes .../clj/fastble/scan/BleScanPresenter$5.dex | Bin 0 -> 1360 bytes .../clj/fastble/scan/BleScanPresenter$6.dex | Bin 0 -> 1320 bytes .../scan/BleScanPresenter$ScanHandler.dex | Bin 0 -> 1688 bytes .../com/clj/fastble/scan/BleScanPresenter.dex | Bin 0 -> 6496 bytes .../scan/BleScanRuleConfig$Builder.dex | Bin 0 -> 2292 bytes .../clj/fastble/scan/BleScanRuleConfig.dex | Bin 0 -> 2044 bytes .../com/clj/fastble/scan/BleScanner$1$1.dex | Bin 0 -> 1772 bytes .../com/clj/fastble/scan/BleScanner$1.dex | Bin 0 -> 2860 bytes .../scan/BleScanner$BleScannerHolder.dex | Bin 0 -> 1112 bytes .../com/clj/fastble/scan/BleScanner.dex | Bin 0 -> 3120 bytes .../com/clj/fastble/utils/BleLog.dex | Bin 0 -> 1212 bytes .../com/clj/fastble/utils/BleLruHashMap.dex | Bin 0 -> 2216 bytes .../com/clj/fastble/utils/HexUtil.dex | Bin 0 -> 3564 bytes .../desugar_graph.bin | Bin 0 -> 235 bytes .../results.bin | 1 + .../classes/classes_dex/classes.dex | Bin 0 -> 71116 bytes .../results.bin | 1 + .../classes/classes_dex/classes.dex | Bin 0 -> 71068 bytes .../results.bin | 1 + .../classes/classes_dex/classes.dex | Bin 0 -> 62880 bytes .../aapt/AndroidManifest.xml | 12 + .../aapt/output-metadata.json | 18 + .../aapt/AndroidManifest.xml | 12 + .../aapt/output-metadata.json | 18 + .../aar-metadata.properties | 6 + .../aar-metadata.properties | 6 + .../annotationProcessors.json | 1 + .../annotationProcessors.json | 1 + .../bundleLibCompileToJarDebug/classes.jar | Bin 0 -> 144830 bytes .../bundleLibCompileToJarRelease/classes.jar | Bin 0 -> 144830 bytes .../debug/generateDebugRFile/R.jar | Bin 0 -> 276 bytes .../release/generateReleaseRFile/R.jar | Bin 0 -> 276 bytes .../debug/generateDebugRFile/R.txt | 0 .../release/generateReleaseRFile/R.txt | 0 .../compile-file-map.properties | 1 + .../debug/packageDebugResources/merger.xml | 2 + .../incremental/mergeDebugAssets/merger.xml | 2 + .../mergeDebugJniLibFolders/merger.xml | 2 + .../incremental/mergeDebugShaders/merger.xml | 2 + .../incremental/mergeReleaseAssets/merger.xml | 2 + .../mergeReleaseJniLibFolders/merger.xml | 2 + .../mergeReleaseShaders/merger.xml | 2 + .../compile-file-map.properties | 1 + .../packageReleaseResources/merger.xml | 2 + .../fastble/BleManager$BleManagerHolder.class | Bin 0 -> 619 bytes .../classes/com/clj/fastble/BleManager.class | Bin 0 -> 21430 bytes .../fastble/bluetooth/BleBluetooth$1.class | Bin 0 -> 9036 bytes .../bluetooth/BleBluetooth$LastState.class | Bin 0 -> 1510 bytes .../bluetooth/BleBluetooth$MainHandler.class | Bin 0 -> 5337 bytes .../clj/fastble/bluetooth/BleBluetooth.class | Bin 0 -> 12363 bytes .../fastble/bluetooth/BleConnector$1.class | Bin 0 -> 4462 bytes .../clj/fastble/bluetooth/BleConnector.class | Bin 0 -> 11536 bytes .../MultipleBluetoothController$1.class | Bin 0 -> 1397 bytes .../MultipleBluetoothController.class | Bin 0 -> 5689 bytes .../clj/fastble/bluetooth/SplitWriter$1.class | Bin 0 -> 1022 bytes .../clj/fastble/bluetooth/SplitWriter$2.class | Bin 0 -> 2344 bytes .../clj/fastble/bluetooth/SplitWriter.class | Bin 0 -> 5137 bytes .../fastble/callback/BleBaseCallback.class | Bin 0 -> 832 bytes .../fastble/callback/BleGattCallback.class | Bin 0 -> 760 bytes .../callback/BleIndicateCallback.class | Bin 0 -> 500 bytes .../callback/BleMtuChangedCallback.class | Bin 0 -> 464 bytes .../fastble/callback/BleNotifyCallback.class | Bin 0 -> 490 bytes .../fastble/callback/BleReadCallback.class | Bin 0 -> 446 bytes .../fastble/callback/BleRssiCallback.class | Bin 0 -> 445 bytes .../callback/BleScanAndConnectCallback.class | Bin 0 -> 614 bytes .../fastble/callback/BleScanCallback.class | Bin 0 -> 658 bytes .../callback/BleScanPresenterImp.class | Bin 0 -> 234 bytes .../fastble/callback/BleWriteCallback.class | Bin 0 -> 453 bytes .../data/BleConnectStateParameter.class | Bin 0 -> 771 bytes .../com/clj/fastble/data/BleDevice$1.class | Bin 0 -> 1177 bytes .../com/clj/fastble/data/BleDevice.class | Bin 0 -> 3253 bytes .../classes/com/clj/fastble/data/BleMsg.class | Bin 0 -> 2053 bytes .../com/clj/fastble/data/BleScanState.class | Bin 0 -> 1309 bytes .../com/clj/fastble/data/BleWriteState.class | Bin 0 -> 367 bytes .../clj/fastble/exception/BleException.class | Bin 0 -> 1495 bytes .../fastble/exception/ConnectException.class | Bin 0 -> 1545 bytes .../clj/fastble/exception/GattException.class | Bin 0 -> 1020 bytes .../fastble/exception/OtherException.class | Bin 0 -> 436 bytes .../fastble/exception/TimeoutException.class | Bin 0 -> 413 bytes .../clj/fastble/scan/BleScanPresenter$1.class | Bin 0 -> 893 bytes .../clj/fastble/scan/BleScanPresenter$2.class | Bin 0 -> 871 bytes .../clj/fastble/scan/BleScanPresenter$3.class | Bin 0 -> 907 bytes .../clj/fastble/scan/BleScanPresenter$4.class | Bin 0 -> 833 bytes .../clj/fastble/scan/BleScanPresenter$5.class | Bin 0 -> 808 bytes .../clj/fastble/scan/BleScanPresenter$6.class | Bin 0 -> 844 bytes .../scan/BleScanPresenter$ScanHandler.class | Bin 0 -> 1430 bytes .../clj/fastble/scan/BleScanPresenter.class | Bin 0 -> 7001 bytes .../scan/BleScanRuleConfig$Builder.class | Bin 0 -> 2525 bytes .../clj/fastble/scan/BleScanRuleConfig.class | Bin 0 -> 2173 bytes .../com/clj/fastble/scan/BleScanner$1$1.class | Bin 0 -> 1282 bytes .../com/clj/fastble/scan/BleScanner$1.class | Bin 0 -> 2810 bytes .../scan/BleScanner$BleScannerHolder.class | Bin 0 -> 644 bytes .../com/clj/fastble/scan/BleScanner.class | Bin 0 -> 3552 bytes .../com/clj/fastble/utils/BleLog.class | Bin 0 -> 982 bytes .../com/clj/fastble/utils/BleLruHashMap.class | Bin 0 -> 1896 bytes .../com/clj/fastble/utils/HexUtil.class | Bin 0 -> 3772 bytes .../fastble/BleManager$BleManagerHolder.class | Bin 0 -> 619 bytes .../classes/com/clj/fastble/BleManager.class | Bin 0 -> 21430 bytes .../fastble/bluetooth/BleBluetooth$1.class | Bin 0 -> 9036 bytes .../bluetooth/BleBluetooth$LastState.class | Bin 0 -> 1510 bytes .../bluetooth/BleBluetooth$MainHandler.class | Bin 0 -> 5337 bytes .../clj/fastble/bluetooth/BleBluetooth.class | Bin 0 -> 12363 bytes .../fastble/bluetooth/BleConnector$1.class | Bin 0 -> 4462 bytes .../clj/fastble/bluetooth/BleConnector.class | Bin 0 -> 11536 bytes .../MultipleBluetoothController$1.class | Bin 0 -> 1397 bytes .../MultipleBluetoothController.class | Bin 0 -> 5689 bytes .../clj/fastble/bluetooth/SplitWriter$1.class | Bin 0 -> 1022 bytes .../clj/fastble/bluetooth/SplitWriter$2.class | Bin 0 -> 2344 bytes .../clj/fastble/bluetooth/SplitWriter.class | Bin 0 -> 5137 bytes .../fastble/callback/BleBaseCallback.class | Bin 0 -> 832 bytes .../fastble/callback/BleGattCallback.class | Bin 0 -> 760 bytes .../callback/BleIndicateCallback.class | Bin 0 -> 500 bytes .../callback/BleMtuChangedCallback.class | Bin 0 -> 464 bytes .../fastble/callback/BleNotifyCallback.class | Bin 0 -> 490 bytes .../fastble/callback/BleReadCallback.class | Bin 0 -> 446 bytes .../fastble/callback/BleRssiCallback.class | Bin 0 -> 445 bytes .../callback/BleScanAndConnectCallback.class | Bin 0 -> 614 bytes .../fastble/callback/BleScanCallback.class | Bin 0 -> 658 bytes .../callback/BleScanPresenterImp.class | Bin 0 -> 234 bytes .../fastble/callback/BleWriteCallback.class | Bin 0 -> 453 bytes .../data/BleConnectStateParameter.class | Bin 0 -> 771 bytes .../com/clj/fastble/data/BleDevice$1.class | Bin 0 -> 1177 bytes .../com/clj/fastble/data/BleDevice.class | Bin 0 -> 3253 bytes .../classes/com/clj/fastble/data/BleMsg.class | Bin 0 -> 2053 bytes .../com/clj/fastble/data/BleScanState.class | Bin 0 -> 1309 bytes .../com/clj/fastble/data/BleWriteState.class | Bin 0 -> 367 bytes .../clj/fastble/exception/BleException.class | Bin 0 -> 1495 bytes .../fastble/exception/ConnectException.class | Bin 0 -> 1545 bytes .../clj/fastble/exception/GattException.class | Bin 0 -> 1020 bytes .../fastble/exception/OtherException.class | Bin 0 -> 436 bytes .../fastble/exception/TimeoutException.class | Bin 0 -> 413 bytes .../clj/fastble/scan/BleScanPresenter$1.class | Bin 0 -> 893 bytes .../clj/fastble/scan/BleScanPresenter$2.class | Bin 0 -> 871 bytes .../clj/fastble/scan/BleScanPresenter$3.class | Bin 0 -> 907 bytes .../clj/fastble/scan/BleScanPresenter$4.class | Bin 0 -> 833 bytes .../clj/fastble/scan/BleScanPresenter$5.class | Bin 0 -> 808 bytes .../clj/fastble/scan/BleScanPresenter$6.class | Bin 0 -> 844 bytes .../scan/BleScanPresenter$ScanHandler.class | Bin 0 -> 1430 bytes .../clj/fastble/scan/BleScanPresenter.class | Bin 0 -> 7001 bytes .../scan/BleScanRuleConfig$Builder.class | Bin 0 -> 2525 bytes .../clj/fastble/scan/BleScanRuleConfig.class | Bin 0 -> 2173 bytes .../com/clj/fastble/scan/BleScanner$1$1.class | Bin 0 -> 1282 bytes .../com/clj/fastble/scan/BleScanner$1.class | Bin 0 -> 2810 bytes .../scan/BleScanner$BleScannerHolder.class | Bin 0 -> 644 bytes .../com/clj/fastble/scan/BleScanner.class | Bin 0 -> 3552 bytes .../com/clj/fastble/utils/BleLog.class | Bin 0 -> 982 bytes .../com/clj/fastble/utils/BleLruHashMap.class | Bin 0 -> 1896 bytes .../com/clj/fastble/utils/HexUtil.class | Bin 0 -> 3772 bytes .../debug/parseDebugLocalResources/R-def.txt | 2 + .../parseReleaseLocalResources/R-def.txt | 2 + .../manifest-merger-blame-debug-report.txt | 20 + .../manifest-merger-blame-release-report.txt | 20 + .../processDebugManifest/AndroidManifest.xml | 12 + .../AndroidManifest.xml | 12 + .../extractDeepLinksDebug/navigation.json | 1 + .../extractDeepLinksRelease/navigation.json | 1 + .../nestedResourcesValidationReport.txt | 1 + .../nestedResourcesValidationReport.txt | 1 + .../fastble/BleManager$BleManagerHolder.class | Bin 0 -> 619 bytes .../com/clj/fastble/BleManager.class | Bin 0 -> 21430 bytes .../fastble/bluetooth/BleBluetooth$1.class | Bin 0 -> 9036 bytes .../bluetooth/BleBluetooth$LastState.class | Bin 0 -> 1510 bytes .../bluetooth/BleBluetooth$MainHandler.class | Bin 0 -> 5337 bytes .../clj/fastble/bluetooth/BleBluetooth.class | Bin 0 -> 12363 bytes .../fastble/bluetooth/BleConnector$1.class | Bin 0 -> 4462 bytes .../clj/fastble/bluetooth/BleConnector.class | Bin 0 -> 11536 bytes .../MultipleBluetoothController$1.class | Bin 0 -> 1397 bytes .../MultipleBluetoothController.class | Bin 0 -> 5689 bytes .../clj/fastble/bluetooth/SplitWriter$1.class | Bin 0 -> 1022 bytes .../clj/fastble/bluetooth/SplitWriter$2.class | Bin 0 -> 2344 bytes .../clj/fastble/bluetooth/SplitWriter.class | Bin 0 -> 5137 bytes .../fastble/callback/BleBaseCallback.class | Bin 0 -> 832 bytes .../fastble/callback/BleGattCallback.class | Bin 0 -> 760 bytes .../callback/BleIndicateCallback.class | Bin 0 -> 500 bytes .../callback/BleMtuChangedCallback.class | Bin 0 -> 464 bytes .../fastble/callback/BleNotifyCallback.class | Bin 0 -> 490 bytes .../fastble/callback/BleReadCallback.class | Bin 0 -> 446 bytes .../fastble/callback/BleRssiCallback.class | Bin 0 -> 445 bytes .../callback/BleScanAndConnectCallback.class | Bin 0 -> 614 bytes .../fastble/callback/BleScanCallback.class | Bin 0 -> 658 bytes .../callback/BleScanPresenterImp.class | Bin 0 -> 234 bytes .../fastble/callback/BleWriteCallback.class | Bin 0 -> 453 bytes .../data/BleConnectStateParameter.class | Bin 0 -> 771 bytes .../com/clj/fastble/data/BleDevice$1.class | Bin 0 -> 1177 bytes .../com/clj/fastble/data/BleDevice.class | Bin 0 -> 3253 bytes .../com/clj/fastble/data/BleMsg.class | Bin 0 -> 2053 bytes .../com/clj/fastble/data/BleScanState.class | Bin 0 -> 1309 bytes .../com/clj/fastble/data/BleWriteState.class | Bin 0 -> 367 bytes .../clj/fastble/exception/BleException.class | Bin 0 -> 1495 bytes .../fastble/exception/ConnectException.class | Bin 0 -> 1545 bytes .../clj/fastble/exception/GattException.class | Bin 0 -> 1020 bytes .../fastble/exception/OtherException.class | Bin 0 -> 436 bytes .../fastble/exception/TimeoutException.class | Bin 0 -> 413 bytes .../clj/fastble/scan/BleScanPresenter$1.class | Bin 0 -> 893 bytes .../clj/fastble/scan/BleScanPresenter$2.class | Bin 0 -> 871 bytes .../clj/fastble/scan/BleScanPresenter$3.class | Bin 0 -> 907 bytes .../clj/fastble/scan/BleScanPresenter$4.class | Bin 0 -> 833 bytes .../clj/fastble/scan/BleScanPresenter$5.class | Bin 0 -> 808 bytes .../clj/fastble/scan/BleScanPresenter$6.class | Bin 0 -> 844 bytes .../scan/BleScanPresenter$ScanHandler.class | Bin 0 -> 1430 bytes .../clj/fastble/scan/BleScanPresenter.class | Bin 0 -> 7001 bytes .../scan/BleScanRuleConfig$Builder.class | Bin 0 -> 2525 bytes .../clj/fastble/scan/BleScanRuleConfig.class | Bin 0 -> 2173 bytes .../com/clj/fastble/scan/BleScanner$1$1.class | Bin 0 -> 1282 bytes .../com/clj/fastble/scan/BleScanner$1.class | Bin 0 -> 2810 bytes .../scan/BleScanner$BleScannerHolder.class | Bin 0 -> 644 bytes .../com/clj/fastble/scan/BleScanner.class | Bin 0 -> 3552 bytes .../com/clj/fastble/utils/BleLog.class | Bin 0 -> 982 bytes .../com/clj/fastble/utils/BleLruHashMap.class | Bin 0 -> 1896 bytes .../com/clj/fastble/utils/HexUtil.class | Bin 0 -> 3772 bytes .../bundleLibRuntimeToJarDebug/classes.jar | Bin 0 -> 144576 bytes .../bundleLibRuntimeToJarRelease/classes.jar | Bin 0 -> 144576 bytes .../generateDebugRFile/package-aware-r.txt | 1 + .../generateReleaseRFile/package-aware-r.txt | 1 + .../logs/manifest-merger-debug-report.txt | 33 + .../logs/manifest-merger-release-report.txt | 33 + .../previous-compilation-data.bin | Bin 0 -> 4197 bytes .../previous-compilation-data.bin | Bin 0 -> 4197 bytes FastBleLib/proguard-rules.pro | 17 + FastBleLib/src/main/AndroidManifest.xml | 9 + .../main/java/com/clj/fastble/BleManager.java | 906 +++++++++++ .../clj/fastble/bluetooth/BleBluetooth.java | 612 ++++++++ .../clj/fastble/bluetooth/BleConnector.java | 608 ++++++++ .../MultipleBluetoothController.java | 139 ++ .../clj/fastble/bluetooth/SplitWriter.java | 158 ++ .../clj/fastble/callback/BleBaseCallback.java | 27 + .../clj/fastble/callback/BleGattCallback.java | 24 + .../fastble/callback/BleIndicateCallback.java | 13 + .../callback/BleMtuChangedCallback.java | 12 + .../fastble/callback/BleNotifyCallback.java | 14 + .../clj/fastble/callback/BleReadCallback.java | 12 + .../clj/fastble/callback/BleRssiCallback.java | 12 + .../callback/BleScanAndConnectCallback.java | 13 + .../clj/fastble/callback/BleScanCallback.java | 14 + .../fastble/callback/BleScanPresenterImp.java | 11 + .../fastble/callback/BleWriteCallback.java | 12 + .../data/BleConnectStateParameter.java | 29 + .../java/com/clj/fastble/data/BleDevice.java | 112 ++ .../java/com/clj/fastble/data/BleMsg.java | 60 + .../com/clj/fastble/data/BleScanState.java | 18 + .../com/clj/fastble/data/BleWriteState.java | 8 + .../clj/fastble/exception/BleException.java | 47 + .../fastble/exception/ConnectException.java | 42 + .../clj/fastble/exception/GattException.java | 28 + .../clj/fastble/exception/OtherException.java | 10 + .../fastble/exception/TimeoutException.java | 10 + .../clj/fastble/scan/BleScanPresenter.java | 229 +++ .../clj/fastble/scan/BleScanRuleConfig.java | 94 ++ .../java/com/clj/fastble/scan/BleScanner.java | 139 ++ .../java/com/clj/fastble/utils/BleLog.java | 31 + .../com/clj/fastble/utils/BleLruHashMap.java | 34 + .../java/com/clj/fastble/utils/HexUtil.java | 121 ++ app/.gitignore | 1 + app/agconnect-services.json | 0 app/build.gradle | 335 ++++ app/google-services.json | 0 app/proguard-rules.pro | 21 + .../tracker/ExampleInstrumentedTest.kt | 23 + app/src/main/AndroidManifest.xml | 610 ++++++++ .../assets/annual_protection_plan_en.html | 42 + app/src/main/assets/find_device.mp3 | Bin 0 -> 16568 bytes app/src/main/assets/fonts/Credit.ttf | Bin 0 -> 70136 bytes app/src/main/assets/fonts/DinCond_Bold.otf | Bin 0 -> 31380 bytes app/src/main/assets/fonts/Roboto_Bold.ttf | Bin 0 -> 163448 bytes app/src/main/assets/fonts/Roboto_Regular.ttf | Bin 0 -> 158604 bytes app/src/main/assets/lottie/active_dog.json | 1 + app/src/main/assets/lottie/cat_and_ball.json | 1 + app/src/main/assets/lottie/dfu_loading.json | 1 + app/src/main/assets/lottie/fail_anim.json | 1 + app/src/main/assets/lottie/loading_dog.json | 1 + app/src/main/assets/lottie/logo_loader.json | 1 + app/src/main/assets/lottie/map_lowpower.json | 1 + app/src/main/assets/lottie/pic_map_lost.json | 1 + .../main/assets/lottie/pic_map_nosignal.json | 1 + .../main/assets/lottie/searching_tracker.json | 1 + app/src/main/assets/lottie/success_anim.json | 1 + app/src/main/assets/privacy_cn.html | 469 ++++++ app/src/main/assets/privacy_en.html | 72 + .../subscription_terms_conditions_en.html | 24 + app/src/main/assets/terms_cn.html | 476 ++++++ app/src/main/assets/terms_en.html | 77 + .../java/com/abbidot/tracker/MyApplication.kt | 94 ++ .../tracker/adapter/AssignOptionsAdapter.kt | 47 + .../adapter/BaiduMapPoiSearchResultAdapter.kt | 24 + .../adapter/ChangePetListDialogAdapter.kt | 90 ++ .../tracker/adapter/ChoosePlanAdapter.kt | 82 + .../tracker/adapter/CreditCardAdapter.kt | 53 + .../tracker/adapter/DFUStateAdapter.kt | 39 + .../tracker/adapter/DurationSetAdapter.kt | 52 + .../tracker/adapter/FamilyAvatarAdapter.kt | 38 + .../tracker/adapter/FamilyMembersAdapter.kt | 63 + .../tracker/adapter/FamilyRelationAdapter.kt | 26 + .../tracker/adapter/FeedbackImageAdapter.kt | 53 + .../tracker/adapter/FencesZoneAdapter.kt | 74 + .../adapter/FirstPermissionsAdapter.kt | 81 + .../tracker/adapter/GridItemDecoration.kt | 57 + .../adapter/HelpTextImageTypeAdapter.kt | 73 + .../tracker/adapter/HomeAccountMenuAdapter.kt | 167 ++ .../adapter/HomeMapDeviceMsgAdapter.kt | 32 + .../adapter/HomeMapDeviceStateAdapter.kt | 70 + .../tracker/adapter/HomePetFamilyAdapter.kt | 34 + .../adapter/HomePetTrackMenuAdapter.kt | 106 ++ .../adapter/HomePetTrackStateAdapter.kt | 60 + .../abbidot/tracker/adapter/HowWorkAdapter.kt | 27 + .../tracker/adapter/LedLightColorAdapter.kt | 25 + .../tracker/adapter/MySubscriptionAdapter.kt | 193 +++ .../tracker/adapter/MyTrackerV2Adapter.kt | 116 ++ .../tracker/adapter/NotificationV2Adapter.kt | 73 + .../tracker/adapter/PermissionsSetAdapter.kt | 66 + .../tracker/adapter/PetLabelsAdapter.kt | 57 + .../tracker/adapter/PetsBadgesAdapter.kt | 31 + .../adapter/PetsParentBadgesAdapter.kt | 89 ++ .../SelectFencesTypeCardShadeAdapter.kt | 37 + .../adapter/SelectMapListDialogAdapter.kt | 29 + .../adapter/SelectMapTypeCardShadeAdapter.kt | 41 + .../tracker/adapter/SpaceItemDecoration.kt | 37 + .../adapter/SubscriptionHistoryAdapter.kt | 122 ++ .../adapter/SubscriptionPlanAdapter.kt | 45 + .../adapter/SubscriptionPlanDetailAdapter.kt | 31 + .../adapter/SureSubscribeSummaryAdapter.kt | 34 + .../tracker/adapter/TextViewAdapter.kt | 25 + .../tracker/adapter/ViewPagerAdapter.kt | 21 + .../adapter/VirtualFencesZoneShadeAdapter.kt | 34 + .../tracker/adapter/WiFiListAdapter.kt | 39 + .../tracker/adapter/WiFiZoneAdapter.kt | 43 + .../com/abbidot/tracker/alipay/PayResult.kt | 1 + .../com/abbidot/tracker/base/BaseActivity.kt | 799 ++++++++++ .../com/abbidot/tracker/base/BaseDialog.kt | 96 ++ .../com/abbidot/tracker/base/BaseDiffBean.kt | 14 + .../abbidot/tracker/base/BaseDiffCallBack.kt | 57 + .../com/abbidot/tracker/base/BaseFragment.kt | 167 ++ .../com/abbidot/tracker/base/BaseMapCommon.kt | 195 +++ .../tracker/base/BaseQMUIRVItemSwipeAction.kt | 25 + .../tracker/base/BaseSwipeMenuAdapter.kt | 152 ++ .../java/com/abbidot/tracker/base/BaseView.kt | 51 + .../abbidot/tracker/bean/ActiveTimeBean.kt | 40 + .../abbidot/tracker/bean/AlipayOrderBean.kt | 10 + .../abbidot/tracker/bean/BleReportDataBean.kt | 78 + .../tracker/bean/BleTrackDeviceBean.kt | 15 + .../abbidot/tracker/bean/CountryCodeBean.kt | 8 + .../abbidot/tracker/bean/CreditCardBean.kt | 30 + .../com/abbidot/tracker/bean/DFUStateBean.kt | 12 + .../java/com/abbidot/tracker/bean/DataBean.kt | 43 + .../com/abbidot/tracker/bean/DeviceBean.kt | 53 + .../abbidot/tracker/bean/DeviceDetailBean.kt | 20 + .../abbidot/tracker/bean/DeviceInfoBean.kt | 22 + .../com/abbidot/tracker/bean/FamilyBean.kt | 39 + .../com/abbidot/tracker/bean/FamilyPetBean.kt | 13 + .../com/abbidot/tracker/bean/FencesBean.kt | 96 ++ .../com/abbidot/tracker/bean/FirmwareBean.kt | 16 + .../com/abbidot/tracker/bean/GetFencesBean.kt | 19 + .../abbidot/tracker/bean/HistoryDataBean.kt | 31 + .../com/abbidot/tracker/bean/HomeDataBean.kt | 14 + .../abbidot/tracker/bean/InviteInfoBean.kt | 10 + .../com/abbidot/tracker/bean/LKSimListBean.kt | 16 + .../abbidot/tracker/bean/LKSimPriceBean.kt | 24 + .../abbidot/tracker/bean/LKSimSetMealBean.kt | 27 + .../com/abbidot/tracker/bean/LabelBean.kt | 25 + .../com/abbidot/tracker/bean/LiveDataBean.kt | 12 + .../com/abbidot/tracker/bean/MapDeviceBean.kt | 70 + .../com/abbidot/tracker/bean/MenuTxtBean.kt | 39 + .../com/abbidot/tracker/bean/MessageBean.kt | 28 + .../abbidot/tracker/bean/NotificationBean.kt | 11 + .../com/abbidot/tracker/bean/OrderBean.kt | 12 + .../com/abbidot/tracker/bean/PackageBean.kt | 25 + .../tracker/bean/PackageBenefitsBean.kt | 8 + .../abbidot/tracker/bean/PackageTypeBean.kt | 14 + .../abbidot/tracker/bean/ParentBadgeBean.kt | 12 + .../com/abbidot/tracker/bean/PayResultBean.kt | 25 + .../abbidot/tracker/bean/PetAllInfoBean.kt | 15 + .../java/com/abbidot/tracker/bean/PetBean.kt | 52 + .../com/abbidot/tracker/bean/PointBean.kt | 14 + .../abbidot/tracker/bean/ReceiveDeviceData.kt | 12 + .../tracker/bean/RechargeDeviceBean.kt | 29 + .../tracker/bean/RechargeHistoryBean.kt | 14 + .../com/abbidot/tracker/bean/SetMealBean.kt | 24 + .../com/abbidot/tracker/bean/SleepTimeBean.kt | 20 + .../bean/StripeSubscriptionPriceBean.kt | 10 + .../tracker/bean/SubscriptionsOrderBean.kt | 98 ++ .../java/com/abbidot/tracker/bean/UserBean.kt | 26 + .../com/abbidot/tracker/bean/UserInfoBean.kt | 37 + .../abbidot/tracker/bean/WXPayOrderBean.kt | 16 + .../java/com/abbidot/tracker/bean/WiFiBean.kt | 14 + .../abbidot/tracker/bean/WiFiBleListBean.kt | 8 + .../com/abbidot/tracker/bean/WiFiZoneBean.kt | 24 + .../abbidot/tracker/bean/WiFiZoneListBean.kt | 10 + .../abbidot/tracker/constant/ConstantInt.kt | 122 ++ .../tracker/constant/ConstantString.kt | 118 ++ .../tracker/constant/GetResultCallback.kt | 13 + .../com/abbidot/tracker/constant/KeyNames.kt | 17 + .../tracker/constant/MultipleEntity.kt | 23 + .../abbidot/tracker/database/MyDatabase.kt | 68 + .../abbidot/tracker/database/dao/BaseDao.kt | 119 ++ .../tracker/database/dao/CreditCardDao.kt | 12 + .../abbidot/tracker/database/dao/DeviceDao.kt | 18 + .../tracker/database/dao/MessageDao.kt | 12 + .../adapter/RechargeAmountCNAdapter.kt | 62 + .../adapter/RechargeHistoryCNAdapter.kt | 31 + .../adapter/SelectPaymentMethodAdapter.kt | 51 + .../deprecated/ui/activity/DetailActivity.kt | 99 ++ .../ui/activity/LoginRegisterCNActivity.kt | 126 ++ .../ui/activity/SwipeActionActivity.kt | 158 ++ .../ui/activity/data/HistoryDataActivity.kt | 186 +++ .../activity/map/HomeMapNavigationActivity.kt | 234 +++ .../ui/activity/map/MapLiveActivity.kt | 276 ++++ .../ui/activity/profile/FencesAddActivity.kt | 502 ++++++ .../profile/recharge/AddCreditCardActivity.kt | 157 ++ .../recharge/PaymentMethodPayPalActivity.kt | 391 +++++ .../recharge/PaymentMethodStripeActivity.kt | 485 ++++++ .../profile/recharge/PaymentResultActivity.kt | 64 + .../recharge/cn/RechargeAmountCNActivity.kt | 100 ++ .../cn/RechargeDeviceDetailCNActivity.kt | 127 ++ .../recharge/cn/RechargeHistoryCNActivity.kt | 53 + .../cn/RechargeOrderDetailCNActivity.kt | 257 +++ .../ui/activity/vm/AddPetLabelsViewModel.kt | 64 + .../activity/vm/AddTrackerDeviceViewModel.kt | 84 + .../vm/AutomaticSubscribeViewModel.kt | 43 + .../ui/activity/vm/BraintreePalViewModel.kt | 250 +++ .../ui/activity/vm/ChangePasswordViewModel.kt | 29 + .../ui/activity/vm/LedLightViewModel.kt | 33 + .../ui/activity/vm/NotificationsViewModel.kt | 39 + .../ui/activity/vm/PayCNViewModel.kt | 80 + .../ui/activity/vm/RechargeAmountViewModel.kt | 42 + .../ui/activity/vm/RechargeDeviceViewModel.kt | 29 + .../activity/vm/RechargeHistoryViewModel.kt | 26 + .../ui/activity/vm/StripePalViewModel.kt | 223 +++ .../forgot/ForgetPasswordCNFinishFragment.kt | 98 ++ .../forgot/ForgetPasswordCNStartFragment.kt | 139 ++ .../ui/fragment/login/BindPhoneCNFragment.kt | 114 ++ .../fragment/login/LoginCNAccountFragment.kt | 152 ++ .../ui/fragment/login/LoginCNCodeFragment.kt | 144 ++ .../ui/fragment/login/LoginCNFirstFragment.kt | 92 ++ .../map/baidumap/FencesAddBaiduMapFragment.kt | 410 +++++ .../baidumap/NavigationBaiduMapFragment.kt | 113 ++ .../googlemap/FencesAddGoogleMapFragment.kt | 313 ++++ .../googlemap/NavigationGoogleMapFragment.kt | 148 ++ .../fragment/profile/PaymentFailFragment.kt | 52 + .../profile/PaymentSuccessFragment.kt | 59 + .../register/RegisterCNFinishFragment.kt | 71 + .../register/RegisterCNStartFragment.kt | 134 ++ .../ui/fragment/vm/HomeViewModel.kt | 39 + .../ui/fragment/vm/LoginCNViewModel.kt | 117 ++ .../ui/fragment/vm/MyPetsViewModel.kt | 26 + .../ui/fragment/vm/RegisterCNViewModel.kt | 68 + .../ui/fragment/vm/RoutePlanningViewModel.kt | 159 ++ .../abbidot/tracker/dialog/CommonDialog1.kt | 76 + .../abbidot/tracker/dialog/CommonDialog2.kt | 50 + .../tracker/dialog/CommonListDialog.kt | 42 + .../abbidot/tracker/dialog/DFUNewDialog.kt | 94 ++ .../com/abbidot/tracker/dialog/DialogUtils.kt | 191 +++ .../abbidot/tracker/dialog/MyAlertDialog.kt | 88 ++ .../tracker/dialog/PackageUpgradeDialog.kt | 85 + .../tracker/dialog/PrivacyPolicyDialog.kt | 58 + .../tracker/dialog/SelectMapListDialog.kt | 33 + .../tracker/dialog/SelectMapTypeDialog.kt | 61 + .../tracker/dialog/SelectPetLabelDialog.kt | 61 + .../tracker/dialog/SetPetWeightDialog.kt | 163 ++ .../dialog/ShowCalenderAndTimeDialog.kt | 205 +++ .../tracker/dialog/ShowCalenderDialog.kt | 143 ++ .../tracker/dialog/ShowYearMonthDialog.kt | 114 ++ .../tracker/dialog/TrackerDFUStateDialog.kt | 87 ++ .../tracker/diff/FeedbackImageDiffCallBack.kt | 25 + .../tracker/diff/NotificationsDiffUtil.kt | 19 + .../tracker/diff/PaymentMethodDiffCallBack.kt | 33 + .../tracker/diff/PetPropertyDiffCallBack.kt | 24 + .../receiver/BluetoothMonitorReceiver.kt | 49 + .../tracker/receiver/GPSMonitorReceiver.kt | 38 + .../receiver/MyJPushMessageReceiver.kt | 10 + .../tracker/retrofit2/INetworkService.kt | 1382 +++++++++++++++++ .../abbidot/tracker/retrofit2/NetworkApi.kt | 1264 +++++++++++++++ .../abbidot/tracker/service/DfuService.java | 53 + .../abbidot/tracker/service/MyJPushService.kt | 13 + .../com/abbidot/tracker/ui/DebugActivity.kt | 278 ++++ .../tracker/ui/activity/HomeV2Activity.kt | 580 +++++++ .../ui/activity/MyCropImageActivity.kt | 135 ++ .../ui/activity/NotificationActivity.java | 33 + .../tracker/ui/activity/SayHelloActivity.kt | 52 + .../tracker/ui/activity/SplashActivity.kt | 264 ++++ .../tracker/ui/activity/WebViewActivity.kt | 140 ++ .../activity/account/AddEmailValidActivity.kt | 86 + .../activity/account/ChangeEmailActivity.kt | 59 + .../account/ChangeEmailSuccessActivity.kt | 26 + .../ui/activity/account/ChangeNameActivity.kt | 81 + .../activity/account/CreateAccountActivity.kt | 232 +++ .../account/CreateAccountV2Activity.kt | 25 + .../activity/account/EmailAddressActivity.kt | 72 + .../account/ForgotPasswordV2Activity.kt | 31 + .../ui/activity/account/LoginV2Activity.kt | 252 +++ .../account/NotificationV2Activity.kt | 129 ++ .../account/ResetPasswordSuccessActivity.kt | 25 + .../activity/account/SignupSuccessActivity.kt | 55 + .../activity/account/UserProfileActivity.kt | 306 ++++ .../ui/activity/data/DataBoardActivity.kt | 182 +++ .../ui/activity/data/MoreActivityActivity.kt | 350 +++++ .../ui/activity/data/MoreSleepActivity.kt | 215 +++ .../activity/data/SharePetActivityActivity.kt | 285 ++++ .../activity/device/AddNewTracker1Activity.kt | 115 ++ .../activity/device/AddNewTracker2Activity.kt | 123 ++ .../activity/device/AddNewTracker3Activity.kt | 166 ++ .../activity/device/AddNewTracker4Activity.kt | 94 ++ .../device/AddPairedSuccessActivity.kt | 161 ++ .../activity/device/DeleteTracker1Activity.kt | 51 + .../activity/device/DeleteTracker2Activity.kt | 263 ++++ .../ui/activity/device/MyTrackerV2Activity.kt | 577 +++++++ .../AddAndEditFencesZoneBaseActivity.kt | 791 ++++++++++ .../device/fences/AddNoGoZoneActivity.kt | 42 + .../device/fences/AddSafeZoneActivity.kt | 39 + .../device/fences/EditNoGoZoneActivity.kt | 72 + .../device/fences/EditSafeZoneActivity.kt | 79 + .../fences/PreviewFencesZoneActivity.kt | 355 +++++ .../device/fences/VirtualFencesActivity.kt | 252 +++ .../activity/device/set/LedLightActivity.kt | 387 +++++ .../device/set/LiveDurationSetActivity.kt | 106 ++ .../activity/device/set/PowerOffActivity.kt | 150 ++ .../device/set/TrackingDurationSetActivity.kt | 110 ++ .../device/wifi/AddWifiPasswordActivity.kt | 309 ++++ .../device/wifi/AddWifiPowerZone1Activity.kt | 235 +++ .../device/wifi/AddWifiPowerZone2Activity.kt | 106 ++ .../device/wifi/AddWifiPowerZone3Activity.kt | 287 ++++ .../device/wifi/EditWifiPowerZoneActivity.kt | 473 ++++++ .../device/wifi/PowerSavingSetActivity.kt | 164 ++ .../ui/activity/help/FeedbackActivity.kt | 275 ++++ .../help/HelpActiveTrackerActivity.kt | 16 + .../help/HelpCreatePetFenceActivity.kt | 54 + .../activity/help/HelpPowerOnOffActivity.kt | 26 + .../help/HelpTrackerBatteryActivity.kt | 120 ++ .../help/HelpTrackerStatusActivity.kt | 18 + .../ui/activity/help/HowWorkActivity.kt | 48 + .../tracker/ui/activity/map/LiveActivityV2.kt | 969 ++++++++++++ .../ui/activity/pet/BadgeDetailActivity.kt | 58 + .../ui/activity/pet/BadgesListActivity.kt | 66 + .../ui/activity/pet/FamilyMembersActivity.kt | 135 ++ .../ui/activity/pet/InviteFamilyActivity.kt | 184 +++ .../ui/activity/pet/PetHeightActivity.kt | 176 +++ .../ui/activity/pet/PetProfileActivity.kt | 600 +++++++ .../ui/activity/pet/PetWeightActivity.kt | 158 ++ .../activity/pet/ShowInviteDeviceActivity.kt | 83 + .../first/FirstMeasurementUnitsActivity.kt | 160 ++ .../pet/first/FirstPetProfileActivity.kt | 290 ++++ .../pet/first/FirstSetPetHeightActivity.kt | 144 ++ .../pet/first/FirstSetPetTypeActivity.kt | 105 ++ .../pet/first/FirstSetPetWeightActivity.kt | 144 ++ .../tracker/ui/activity/set/AboutActivity.kt | 65 + .../ui/activity/set/AdvancedSetActivity.kt | 127 ++ .../activity/set/FirstPermissionsActivity.kt | 113 ++ .../activity/set/NotificationsSetActivity.kt | 133 ++ .../ui/activity/set/PermissionsSetActivity.kt | 62 + .../subscribe/AddCreditCardPaymentActivity.kt | 359 +++++ .../activity/subscribe/ChoosePlanActivity.kt | 155 ++ .../subscribe/MySubscriptionActivity.kt | 92 ++ .../subscribe/PaymentMethodActivity.kt | 76 + .../subscribe/PaymentSuccessActivity.kt | 237 +++ .../subscribe/RequestRefundActivity.kt | 113 ++ .../subscribe/SubscriptionDetailActivity.kt | 84 + .../subscribe/SubscriptionHistoryActivity.kt | 60 + .../subscribe/SubscriptionPlanActivity.kt | 140 ++ .../subscribe/SureSubscriptionPlanActivity.kt | 350 +++++ .../tracker/ui/common/CountryCommon.kt | 89 ++ .../tracker/ui/common/MyCropImageContract.kt | 41 + .../ui/common/PermissionsActivityCommon.kt | 225 +++ .../tracker/ui/common/PetProfileCommon.kt | 196 +++ .../tracker/ui/common/UnitSelectDialog.kt | 52 + .../ui/common/map/EditWifiZoneMapCommon.kt | 69 + .../ui/common/map/FencesAddEditMapCommon.kt | 181 +++ .../tracker/ui/common/map/FencesMapCommon.kt | 308 ++++ .../ui/common/map/HistoryDataMapCommon.kt | 129 ++ .../tracker/ui/common/map/HomeMapCommon.kt | 182 +++ .../tracker/ui/common/map/MapLiveCommon.kt | 47 + .../ui/common/map/NavigationMapCommon.kt | 30 + .../ui/common/map/PreviewFencesZoneCommon.kt | 83 + .../ui/common/map/WifiZone2MapCommon.kt | 42 + .../ui/fragment/account/AccountV2Fragment.kt | 290 ++++ .../account/CreateAccountV2OneFragment.kt | 184 +++ .../account/CreateAccountV2ThreeFragment.kt | 219 +++ .../ui/fragment/account/EmailValidFragment.kt | 207 +++ .../account/ForgotPasswordV2OneFragment.kt | 110 ++ .../account/ForgotPasswordV2ThereFragment.kt | 195 +++ .../ui/fragment/data/ActivityV2Fragment.kt | 309 ++++ .../ui/fragment/data/RouteV2Fragment.kt | 455 ++++++ .../tracker/ui/fragment/demo/HomeFragment.kt | 32 + .../tracker/ui/fragment/demo/MineFragment.kt | 114 ++ .../ui/fragment/demo/RecordFragment.kt | 86 + .../ui/fragment/device/HomeTrackFragment.kt | 923 +++++++++++ .../tracker/ui/fragment/map/MapV2Fragment.kt | 624 ++++++++ .../map/baidumap/BaseBaiduMapFragment.kt | 845 ++++++++++ .../baidumap/FencesAddEditBaiduMapFragment.kt | 495 ++++++ .../baidumap/HistoryDataBaiduMapFragment.kt | 243 +++ .../map/baidumap/HomeMapBaiduMapFragment.kt | 148 ++ .../map/baidumap/MapLiveBaiduMapFragment.kt | 72 + .../baidumap/PreviewFencesBaiduMapFragment.kt | 33 + .../map/googlemap/BaseGoogleMapFragment.kt | 1104 +++++++++++++ .../EditWiFiZoneGoogleMapFragment.kt | 66 + .../FencesAddEditGoogleMapFragment.kt | 471 ++++++ .../map/googlemap/GoogleBitmapHelper.kt | 164 ++ .../googlemap/HistoryDataGoogleMapFragment.kt | 304 ++++ .../map/googlemap/HomeMapGoogleMapFragment.kt | 308 ++++ .../map/googlemap/MapLiveGoogleMapFragment.kt | 63 + .../map/googlemap/MarkerInfoWindowAdapter.kt | 71 + .../PreviewFencesGoogleMapFragment.kt | 33 + .../googlemap/WiFiZone2GoogleMapFragment.kt | 101 ++ .../ui/fragment/pet/HomePetFragment.kt | 285 ++++ .../tracker/ui/fragment/pet/PetV2Fragment.kt | 142 ++ .../subscribe/CreditCardPaymentFragment.kt | 218 +++ .../subscribe/PaypalPaymentFragment.kt | 74 + .../abbidot/tracker/util/BleReportManage.kt | 317 ++++ .../com/abbidot/tracker/util/CoilEngine.kt | 62 + .../java/com/abbidot/tracker/util/FileUtil.kt | 153 ++ .../tracker/util/GoogleLocationUtil.java | 68 + .../com/abbidot/tracker/util/ImageUtil.kt | 254 +++ .../com/abbidot/tracker/util/LonAndLatUtil.kt | 146 ++ .../util/NumberPickerValueFill0Format.kt | 17 + .../abbidot/tracker/util/SocketUtilManage.kt | 223 +++ .../abbidot/tracker/util/ThirdPartyUtil.kt | 49 + .../java/com/abbidot/tracker/util/Util.kt | 786 ++++++++++ .../java/com/abbidot/tracker/util/ViewUtil.kt | 1113 +++++++++++++ .../tracker/util/bluetooth/SRBleCmdUtil.kt | 298 ++++ .../tracker/util/bluetooth/SRBleUtil.kt | 449 ++++++ .../com/abbidot/tracker/vm/AppSetViewModel.kt | 43 + .../tracker/vm/ConnectionDeviceViewModel.kt | 282 ++++ .../tracker/vm/CountDownTimerViewModel.kt | 43 + .../abbidot/tracker/vm/DataDetailViewModel.kt | 85 + .../com/abbidot/tracker/vm/DataViewModel.kt | 53 + .../abbidot/tracker/vm/DeviceDFUViewModel.kt | 235 +++ .../tracker/vm/DownLoadFileViewModel.kt | 170 ++ .../com/abbidot/tracker/vm/FamilyViewModel.kt | 86 + .../abbidot/tracker/vm/FeedbackViewModel.kt | 35 + .../tracker/vm/FencesManageViewModel.kt | 150 ++ .../abbidot/tracker/vm/FencesMapViewModel.kt | 279 ++++ .../tracker/vm/FindBleDeviceViewModel.kt | 292 ++++ .../abbidot/tracker/vm/GeoCoderViewModel.kt | 192 +++ .../tracker/vm/LogBleReportViewModel.kt | 110 ++ .../com/abbidot/tracker/vm/LoginViewModel.kt | 27 + .../abbidot/tracker/vm/MapLiveViewModel.kt | 74 + .../com/abbidot/tracker/vm/MapViewModel.kt | 378 +++++ .../abbidot/tracker/vm/PetInfoViewModel.kt | 412 +++++ .../tracker/vm/PetRelationViewModel.kt | 78 + .../tracker/vm/ScreenshotsViewModel.kt | 156 ++ .../tracker/vm/SocketSendMessageViewModel.kt | 43 + .../tracker/vm/SubscriptionManageViewModel.kt | 116 ++ .../tracker/vm/SubscriptionPayViewModel.kt | 75 + .../vm/TakePhotoAndCompressViewModel.kt | 104 ++ .../tracker/vm/TrackerInfoViewModel.kt | 68 + .../abbidot/tracker/vm/TrackerSetViewModel.kt | 109 ++ .../tracker/vm/UserProfileViewModel.kt | 165 ++ .../abbidot/tracker/vm/WiFiZoneViewModel.kt | 83 + .../abbidot/tracker/widget/BarChartV2View.kt | 217 +++ .../com/abbidot/tracker/widget/BatteryView.kt | 160 ++ .../abbidot/tracker/widget/BrowserView.java | 411 +++++ .../tracker/widget/CircleCountDownView.kt | 147 ++ .../tracker/widget/ColorPickerRectangle.java | 196 +++ .../abbidot/tracker/widget/CreditCardView.kt | 156 ++ .../tracker/widget/CustomViewInterfaces.kt | 25 + .../tracker/widget/FencesCircleView.kt | 415 +++++ .../tracker/widget/FencesPolygonView.kt | 856 ++++++++++ .../abbidot/tracker/widget/FencesRectView.kt | 738 +++++++++ .../tracker/widget/HorizontalBarChartView.kt | 260 ++++ .../tracker/widget/InviteFamilyAnimateView.kt | 415 +++++ .../abbidot/tracker/widget/LineChartView.kt | 270 ++++ .../tracker/widget/MapDeviceNetView.kt | 135 ++ .../tracker/widget/MapMarkerInfoView.kt | 133 ++ .../tracker/widget/MyBluetoothAnimView.kt | 194 +++ .../com/abbidot/tracker/widget/MyChartView.kt | 134 ++ .../com/abbidot/tracker/widget/MyMonthView.kt | 105 ++ .../com/abbidot/tracker/widget/MyRoomView.kt | 167 ++ .../abbidot/tracker/widget/MySignalView.kt | 99 ++ .../java/com/abbidot/tracker/widget/MyView.kt | 67 + .../tracker/widget/MyWiFiSignalView.kt | 198 +++ .../tracker/widget/NonSwipeRecyclerView.kt | 24 + .../abbidot/tracker/widget/RingChartView.kt | 196 +++ .../abbidot/tracker/widget/RingScaleView.kt | 416 +++++ .../abbidot/tracker/widget/SignalRadarView.kt | 283 ++++ .../tracker/widget/SmallDotProgressView.kt | 122 ++ .../abbidot/tracker/widget/TypefaceButton.kt | 32 + .../tracker/widget/TypefaceRoundButton.kt | 32 + .../tracker/widget/TypefaceTextView.kt | 29 + .../abbidot/tracker/widget/VerifyEditText.kt | 297 ++++ .../widget/VerticalBottomToTopSeekBar.kt | 76 + .../widget/VerticalTopToBottomSeekBar.kt | 98 ++ .../tracker/widget/calender/DateItem.java | 103 ++ .../tracker/widget/calender/DateUtil.java | 108 ++ .../tracker/widget/calender/DayAdapter.java | 187 +++ .../tracker/widget/calender/DayV2Adapter.java | 215 +++ .../calender/HorizontalCalenderView.java | 596 +++++++ .../calender/HorizontalCalenderViewV1.java | 644 ++++++++ .../calender/HorizontalCalenderViewV2.java | 685 ++++++++ .../tracker/widget/calender/ViewUtil.java | 272 ++++ .../abbidot/tracker/wxapi/WXBaseActivity.kt | 52 + .../abbidot/tracker/wxapi/WXEntryActivity.kt | 73 + .../tracker/wxapi/WXPayEntryActivity.kt | 44 + .../shape_transparent_black_bg.xml | 30 + .../drawable-v24/ic_launcher_foreground.xml | 30 + app/src/main/res/drawable-xhdpi/bg_color.png | Bin 0 -> 88189 bytes app/src/main/res/drawable-xhdpi/bg_dialog.png | Bin 0 -> 16849 bytes .../res/drawable-xhdpi/bg_list_my_pets.png | Bin 0 -> 12690 bytes .../main/res/drawable-xhdpi/bg_pay_amount.png | Bin 0 -> 2774 bytes .../res/drawable-xhdpi/card_pay_manager.png | Bin 0 -> 417 bytes .../res/drawable-xhdpi/gray_ico_switch_on.png | Bin 0 -> 1882 bytes app/src/main/res/drawable-xhdpi/ico_back.png | Bin 0 -> 649 bytes .../main/res/drawable-xhdpi/ico_bluetooth.png | Bin 0 -> 634 bytes .../main/res/drawable-xhdpi/ico_cancel.png | Bin 0 -> 1363 bytes .../res/drawable-xhdpi/ico_cancel_detail.png | Bin 0 -> 541 bytes .../main/res/drawable-xhdpi/ico_center.png | Bin 0 -> 676 bytes .../res/drawable-xhdpi/ico_color_selector.png | Bin 0 -> 1450 bytes .../res/drawable-xhdpi/ico_data_behavior.png | Bin 0 -> 3961 bytes app/src/main/res/drawable-xhdpi/ico_date.png | Bin 0 -> 1279 bytes .../main/res/drawable-xhdpi/ico_delete.png | Bin 0 -> 1406 bytes app/src/main/res/drawable-xhdpi/ico_done.png | Bin 0 -> 1527 bytes .../res/drawable-xhdpi/ico_fance_rotate.png | Bin 0 -> 1967 bytes .../res/drawable-xhdpi/ico_fance_scale1.png | Bin 0 -> 1748 bytes .../res/drawable-xhdpi/ico_fance_scale2.png | Bin 0 -> 1695 bytes .../main/res/drawable-xhdpi/ico_feelback.png | Bin 0 -> 2532 bytes .../res/drawable-xhdpi/ico_fence_address.png | Bin 0 -> 768 bytes .../drawable-xhdpi/ico_fence_rectangle.png | Bin 0 -> 1457 bytes .../ico_fence_rectangle_active.png | Bin 0 -> 1311 bytes .../res/drawable-xhdpi/ico_fence_round.png | Bin 0 -> 3385 bytes .../drawable-xhdpi/ico_fence_round_active.png | Bin 0 -> 3146 bytes .../res/drawable-xhdpi/ico_fence_time.png | Bin 0 -> 1119 bytes .../main/res/drawable-xhdpi/ico_gou_off.png | Bin 0 -> 1300 bytes .../main/res/drawable-xhdpi/ico_gou_on.png | Bin 0 -> 1015 bytes .../main/res/drawable-xhdpi/ico_gps_no.png | Bin 0 -> 1300 bytes app/src/main/res/drawable-xhdpi/ico_help.png | Bin 0 -> 2686 bytes .../res/drawable-xhdpi/ico_history_point.png | Bin 0 -> 2942 bytes .../drawable-xhdpi/ico_history_point_one.png | Bin 0 -> 2913 bytes .../ico_history_track_active.png | Bin 0 -> 2428 bytes .../ico_history_track_active_one.png | Bin 0 -> 2458 bytes .../res/drawable-xhdpi/ico_lay_amexcard.png | Bin 0 -> 2583 bytes .../drawable-xhdpi/ico_lay_discovercard.png | Bin 0 -> 2920 bytes .../drawable-xhdpi/ico_lay_maestrocard.png | Bin 0 -> 3481 bytes .../res/drawable-xhdpi/ico_lay_mastercard.png | Bin 0 -> 4050 bytes .../res/drawable-xhdpi/ico_lay_newcard.png | Bin 0 -> 1203 bytes .../res/drawable-xhdpi/ico_lay_paypal.png | Bin 0 -> 7156 bytes .../res/drawable-xhdpi/ico_lay_visa_card.png | Bin 0 -> 2705 bytes .../main/res/drawable-xhdpi/ico_link_pet.png | Bin 0 -> 2149 bytes .../main/res/drawable-xhdpi/ico_list_next.png | Bin 0 -> 665 bytes .../res/drawable-xhdpi/ico_loading_code.png | Bin 0 -> 3611 bytes .../res/drawable-xhdpi/ico_loading_user.png | Bin 0 -> 4792 bytes .../res/drawable-xhdpi/ico_loading_wechat.png | Bin 0 -> 3329 bytes .../drawable-xhdpi/ico_loading_wechat2.png | Bin 0 -> 2108 bytes app/src/main/res/drawable-xhdpi/ico_man.png | Bin 0 -> 3857 bytes .../res/drawable-xhdpi/ico_man_active.png | Bin 0 -> 4052 bytes .../res/drawable-xhdpi/ico_map_battery.png | Bin 0 -> 623 bytes .../drawable-xhdpi/ico_map_battery_low.png | Bin 0 -> 663 bytes .../main/res/drawable-xhdpi/ico_map_gaode.png | Bin 0 -> 9885 bytes .../res/drawable-xhdpi/ico_map_google.png | Bin 0 -> 8978 bytes .../main/res/drawable-xhdpi/ico_map_gps.png | Bin 0 -> 1060 bytes .../res/drawable-xhdpi/ico_map_light_off.png | Bin 0 -> 2508 bytes .../res/drawable-xhdpi/ico_map_light_on.png | Bin 0 -> 2856 bytes .../drawable-xhdpi/ico_map_navigation_go.png | Bin 0 -> 719 bytes .../res/drawable-xhdpi/ico_map_refresh.png | Bin 0 -> 4835 bytes app/src/main/res/drawable-xhdpi/ico_off.png | Bin 0 -> 1298 bytes app/src/main/res/drawable-xhdpi/ico_on.png | Bin 0 -> 1618 bytes .../main/res/drawable-xhdpi/ico_pay_hot.png | Bin 0 -> 1690 bytes .../main/res/drawable-xhdpi/ico_pet_link.png | Bin 0 -> 682 bytes app/src/main/res/drawable-xhdpi/ico_photo.png | Bin 0 -> 2554 bytes .../main/res/drawable-xhdpi/ico_recharge.png | Bin 0 -> 2867 bytes .../main/res/drawable-xhdpi/ico_search.png | Bin 0 -> 1793 bytes .../main/res/drawable-xhdpi/ico_setting.png | Bin 0 -> 2865 bytes .../main/res/drawable-xhdpi/ico_sw_dowm.png | Bin 0 -> 599 bytes .../res/drawable-xhdpi/ico_sw_dowm_br.png | Bin 0 -> 738 bytes .../res/drawable-xhdpi/ico_switch_off.png | Bin 0 -> 1901 bytes .../main/res/drawable-xhdpi/ico_switch_on.png | Bin 0 -> 1974 bytes .../main/res/drawable-xhdpi/ico_unlinked.png | Bin 0 -> 1774 bytes app/src/main/res/drawable-xhdpi/ico_wman.png | Bin 0 -> 3937 bytes .../res/drawable-xhdpi/ico_wman_active.png | Bin 0 -> 4754 bytes .../icon_tracker_device_small.png | Bin 0 -> 9915 bytes .../res/drawable-xhdpi/map_live_start.png | Bin 0 -> 588 bytes .../main/res/drawable-xhdpi/pic_alipay.png | Bin 0 -> 11684 bytes .../main/res/drawable-xhdpi/pic_avatar_df.png | Bin 0 -> 5335 bytes .../drawable-xhdpi/pic_history_location.png | Bin 0 -> 3381 bytes .../res/drawable-xhdpi/pic_map_gps_avatar.png | Bin 0 -> 3165 bytes .../res/drawable-xhdpi/pic_map_location.png | Bin 0 -> 3828 bytes .../main/res/drawable-xhdpi/pic_wechatpay.png | Bin 0 -> 12549 bytes app/src/main/res/drawable-xxhdpi/bg_color.png | Bin 0 -> 200434 bytes .../main/res/drawable-xxhdpi/bg_dialog.png | Bin 0 -> 35190 bytes .../res/drawable-xxhdpi/bg_list_my_pets.png | Bin 0 -> 26330 bytes .../res/drawable-xxhdpi/bg_pay_amount.png | Bin 0 -> 6624 bytes .../res/drawable-xxhdpi/card_pay_manager.png | Bin 0 -> 584 bytes .../drawable-xxhdpi/gray_ico_switch_on.png | Bin 0 -> 3467 bytes app/src/main/res/drawable-xxhdpi/ico_back.png | Bin 0 -> 1590 bytes .../res/drawable-xxhdpi/ico_bluetooth.png | Bin 0 -> 1275 bytes .../main/res/drawable-xxhdpi/ico_cancel.png | Bin 0 -> 2775 bytes .../res/drawable-xxhdpi/ico_cancel_detail.png | Bin 0 -> 931 bytes .../main/res/drawable-xxhdpi/ico_center.png | Bin 0 -> 1235 bytes .../drawable-xxhdpi/ico_color_selector.png | Bin 0 -> 2640 bytes .../res/drawable-xxhdpi/ico_data_behavior.png | Bin 0 -> 7692 bytes app/src/main/res/drawable-xxhdpi/ico_date.png | Bin 0 -> 2224 bytes .../main/res/drawable-xxhdpi/ico_delete.png | Bin 0 -> 2655 bytes app/src/main/res/drawable-xxhdpi/ico_done.png | Bin 0 -> 2975 bytes .../res/drawable-xxhdpi/ico_fance_rotate.png | Bin 0 -> 3806 bytes .../res/drawable-xxhdpi/ico_fance_scale1.png | Bin 0 -> 3421 bytes .../res/drawable-xxhdpi/ico_fance_scale2.png | Bin 0 -> 3401 bytes .../main/res/drawable-xxhdpi/ico_feelback.png | Bin 0 -> 5204 bytes .../res/drawable-xxhdpi/ico_fence_address.png | Bin 0 -> 1328 bytes .../drawable-xxhdpi/ico_fence_rectangle.png | Bin 0 -> 3058 bytes .../ico_fence_rectangle_active.png | Bin 0 -> 2500 bytes .../res/drawable-xxhdpi/ico_fence_round.png | Bin 0 -> 6321 bytes .../ico_fence_round_active.png | Bin 0 -> 5862 bytes .../res/drawable-xxhdpi/ico_fence_time.png | Bin 0 -> 2221 bytes .../main/res/drawable-xxhdpi/ico_gou_off.png | Bin 0 -> 2589 bytes .../main/res/drawable-xxhdpi/ico_gou_on.png | Bin 0 -> 1838 bytes .../main/res/drawable-xxhdpi/ico_gps_no.png | Bin 0 -> 2512 bytes app/src/main/res/drawable-xxhdpi/ico_help.png | Bin 0 -> 5496 bytes .../res/drawable-xxhdpi/ico_history_point.png | Bin 0 -> 5712 bytes .../drawable-xxhdpi/ico_history_point_one.png | Bin 0 -> 5462 bytes .../ico_history_track_active.png | Bin 0 -> 4515 bytes .../ico_history_track_active_one.png | Bin 0 -> 4707 bytes .../res/drawable-xxhdpi/ico_lay_amexcard.png | Bin 0 -> 4690 bytes .../drawable-xxhdpi/ico_lay_discovercard.png | Bin 0 -> 5465 bytes .../drawable-xxhdpi/ico_lay_maestrocard.png | Bin 0 -> 6162 bytes .../drawable-xxhdpi/ico_lay_mastercard.png | Bin 0 -> 7586 bytes .../res/drawable-xxhdpi/ico_lay_newcard.png | Bin 0 -> 2319 bytes .../res/drawable-xxhdpi/ico_lay_paypal.png | Bin 0 -> 11743 bytes .../res/drawable-xxhdpi/ico_lay_visa_card.png | Bin 0 -> 5186 bytes .../main/res/drawable-xxhdpi/ico_link_pet.png | Bin 0 -> 4703 bytes .../res/drawable-xxhdpi/ico_list_next.png | Bin 0 -> 1178 bytes .../res/drawable-xxhdpi/ico_loading_code.png | Bin 0 -> 8584 bytes .../res/drawable-xxhdpi/ico_loading_user.png | Bin 0 -> 10409 bytes .../drawable-xxhdpi/ico_loading_wechat.png | Bin 0 -> 6503 bytes .../drawable-xxhdpi/ico_loading_wechat2.png | Bin 0 -> 3904 bytes app/src/main/res/drawable-xxhdpi/ico_man.png | Bin 0 -> 7128 bytes .../res/drawable-xxhdpi/ico_man_active.png | Bin 0 -> 7844 bytes .../res/drawable-xxhdpi/ico_map_battery.png | Bin 0 -> 1142 bytes .../drawable-xxhdpi/ico_map_battery_low.png | Bin 0 -> 1196 bytes .../res/drawable-xxhdpi/ico_map_gaode.png | Bin 0 -> 18684 bytes .../res/drawable-xxhdpi/ico_map_google.png | Bin 0 -> 14297 bytes .../main/res/drawable-xxhdpi/ico_map_gps.png | Bin 0 -> 2218 bytes .../res/drawable-xxhdpi/ico_map_light_off.png | Bin 0 -> 4656 bytes .../res/drawable-xxhdpi/ico_map_light_on.png | Bin 0 -> 5197 bytes .../drawable-xxhdpi/ico_map_navigation_go.png | Bin 0 -> 1547 bytes .../res/drawable-xxhdpi/ico_map_refresh.png | Bin 0 -> 9296 bytes app/src/main/res/drawable-xxhdpi/ico_off.png | Bin 0 -> 2505 bytes app/src/main/res/drawable-xxhdpi/ico_on.png | Bin 0 -> 3142 bytes .../main/res/drawable-xxhdpi/ico_pay_hot.png | Bin 0 -> 4003 bytes .../main/res/drawable-xxhdpi/ico_pet_link.png | Bin 0 -> 1393 bytes .../main/res/drawable-xxhdpi/ico_photo.png | Bin 0 -> 4633 bytes .../main/res/drawable-xxhdpi/ico_recharge.png | Bin 0 -> 5825 bytes .../main/res/drawable-xxhdpi/ico_search.png | Bin 0 -> 3252 bytes .../main/res/drawable-xxhdpi/ico_setting.png | Bin 0 -> 5850 bytes .../main/res/drawable-xxhdpi/ico_sw_dowm.png | Bin 0 -> 1015 bytes .../res/drawable-xxhdpi/ico_sw_dowm_br.png | Bin 0 -> 1258 bytes .../res/drawable-xxhdpi/ico_switch_off.png | Bin 0 -> 3586 bytes .../res/drawable-xxhdpi/ico_switch_on.png | Bin 0 -> 3533 bytes .../main/res/drawable-xxhdpi/ico_unlinked.png | Bin 0 -> 4060 bytes app/src/main/res/drawable-xxhdpi/ico_wman.png | Bin 0 -> 7317 bytes .../res/drawable-xxhdpi/ico_wman_active.png | Bin 0 -> 9226 bytes .../icon_tracker_device_small.png | Bin 0 -> 17101 bytes .../res/drawable-xxhdpi/map_live_start.png | Bin 0 -> 989 bytes .../main/res/drawable-xxhdpi/pic_alipay.png | Bin 0 -> 20488 bytes .../res/drawable-xxhdpi/pic_avatar_df.png | Bin 0 -> 10088 bytes .../drawable-xxhdpi/pic_history_location.png | Bin 0 -> 6331 bytes .../drawable-xxhdpi/pic_map_gps_avatar.png | Bin 0 -> 6437 bytes .../res/drawable-xxhdpi/pic_map_location.png | Bin 0 -> 7256 bytes .../res/drawable-xxhdpi/pic_wechatpay.png | Bin 0 -> 23126 bytes .../main/res/drawable-xxxhdpi/bg_color.png | Bin 0 -> 301792 bytes .../main/res/drawable-xxxhdpi/bg_dialog.png | Bin 0 -> 55773 bytes .../res/drawable-xxxhdpi/bg_list_my_pets.png | Bin 0 -> 33197 bytes .../res/drawable-xxxhdpi/bg_pay_amount.png | Bin 0 -> 9101 bytes .../res/drawable-xxxhdpi/card_pay_manager.png | Bin 0 -> 666 bytes .../drawable-xxxhdpi/gray_ico_switch_on.png | Bin 0 -> 4534 bytes .../main/res/drawable-xxxhdpi/ico_back.png | Bin 0 -> 1413 bytes .../res/drawable-xxxhdpi/ico_bluetooth.png | Bin 0 -> 1303 bytes .../main/res/drawable-xxxhdpi/ico_cancel.png | Bin 0 -> 3165 bytes .../drawable-xxxhdpi/ico_cancel_detail.png | Bin 0 -> 1168 bytes .../main/res/drawable-xxxhdpi/ico_center.png | Bin 0 -> 1424 bytes .../drawable-xxxhdpi/ico_color_selector.png | Bin 0 -> 3438 bytes .../drawable-xxxhdpi/ico_data_behavior.png | Bin 0 -> 9014 bytes .../main/res/drawable-xxxhdpi/ico_date.png | Bin 0 -> 2683 bytes .../main/res/drawable-xxxhdpi/ico_delete.png | Bin 0 -> 2864 bytes .../main/res/drawable-xxxhdpi/ico_done.png | Bin 0 -> 3458 bytes .../res/drawable-xxxhdpi/ico_fance_rotate.png | Bin 0 -> 4465 bytes .../res/drawable-xxxhdpi/ico_fance_scale1.png | Bin 0 -> 3732 bytes .../res/drawable-xxxhdpi/ico_fance_scale2.png | Bin 0 -> 3793 bytes .../res/drawable-xxxhdpi/ico_feelback.png | Bin 0 -> 6056 bytes .../drawable-xxxhdpi/ico_fence_address.png | Bin 0 -> 1493 bytes .../drawable-xxxhdpi/ico_fence_rectangle.png | Bin 0 -> 3352 bytes .../ico_fence_rectangle_active.png | Bin 0 -> 2973 bytes .../res/drawable-xxxhdpi/ico_fence_round.png | Bin 0 -> 7825 bytes .../ico_fence_round_active.png | Bin 0 -> 7178 bytes .../res/drawable-xxxhdpi/ico_fence_time.png | Bin 0 -> 2398 bytes .../main/res/drawable-xxxhdpi/ico_gou_off.png | Bin 0 -> 2871 bytes .../main/res/drawable-xxxhdpi/ico_gou_on.png | Bin 0 -> 2142 bytes .../main/res/drawable-xxxhdpi/ico_gps_no.png | Bin 0 -> 3000 bytes .../main/res/drawable-xxxhdpi/ico_help.png | Bin 0 -> 6045 bytes .../drawable-xxxhdpi/ico_history_point.png | Bin 0 -> 6371 bytes .../ico_history_point_one.png | Bin 0 -> 6254 bytes .../ico_history_track_active.png | Bin 0 -> 5295 bytes .../ico_history_track_active_one.png | Bin 0 -> 5366 bytes .../res/drawable-xxxhdpi/ico_lay_amexcard.png | Bin 0 -> 7171 bytes .../drawable-xxxhdpi/ico_lay_discovercard.png | Bin 0 -> 8357 bytes .../drawable-xxxhdpi/ico_lay_maestrocard.png | Bin 0 -> 8581 bytes .../drawable-xxxhdpi/ico_lay_mastercard.png | Bin 0 -> 12053 bytes .../res/drawable-xxxhdpi/ico_lay_newcard.png | Bin 0 -> 3140 bytes .../res/drawable-xxxhdpi/ico_lay_paypal.png | Bin 0 -> 16447 bytes .../drawable-xxxhdpi/ico_lay_visa_card.png | Bin 0 -> 8208 bytes .../res/drawable-xxxhdpi/ico_link_pet.png | Bin 0 -> 5375 bytes .../res/drawable-xxxhdpi/ico_list_next.png | Bin 0 -> 1301 bytes .../res/drawable-xxxhdpi/ico_loading_code.png | Bin 0 -> 12064 bytes .../res/drawable-xxxhdpi/ico_loading_user.png | Bin 0 -> 15294 bytes .../drawable-xxxhdpi/ico_loading_wechat.png | Bin 0 -> 7335 bytes .../drawable-xxxhdpi/ico_loading_wechat2.png | Bin 0 -> 4326 bytes app/src/main/res/drawable-xxxhdpi/ico_man.png | Bin 0 -> 8544 bytes .../res/drawable-xxxhdpi/ico_man_active.png | Bin 0 -> 9114 bytes .../res/drawable-xxxhdpi/ico_map_battery.png | Bin 0 -> 1271 bytes .../drawable-xxxhdpi/ico_map_battery_low.png | Bin 0 -> 1324 bytes .../res/drawable-xxxhdpi/ico_map_gaode.png | Bin 0 -> 31129 bytes .../res/drawable-xxxhdpi/ico_map_google.png | Bin 0 -> 20093 bytes .../main/res/drawable-xxxhdpi/ico_map_gps.png | Bin 0 -> 2402 bytes .../drawable-xxxhdpi/ico_map_light_off.png | Bin 0 -> 5450 bytes .../res/drawable-xxxhdpi/ico_map_light_on.png | Bin 0 -> 5830 bytes .../ico_map_navigation_go.png | Bin 0 -> 1397 bytes .../res/drawable-xxxhdpi/ico_map_refresh.png | Bin 0 -> 10757 bytes app/src/main/res/drawable-xxxhdpi/ico_off.png | Bin 0 -> 2816 bytes app/src/main/res/drawable-xxxhdpi/ico_on.png | Bin 0 -> 3526 bytes .../main/res/drawable-xxxhdpi/ico_pay_hot.png | Bin 0 -> 4373 bytes .../res/drawable-xxxhdpi/ico_pet_link.png | Bin 0 -> 1481 bytes .../main/res/drawable-xxxhdpi/ico_photo.png | Bin 0 -> 6015 bytes .../res/drawable-xxxhdpi/ico_recharge.png | Bin 0 -> 6752 bytes .../main/res/drawable-xxxhdpi/ico_search.png | Bin 0 -> 3713 bytes .../main/res/drawable-xxxhdpi/ico_setting.png | Bin 0 -> 6859 bytes .../main/res/drawable-xxxhdpi/ico_sw_dowm.png | Bin 0 -> 1257 bytes .../res/drawable-xxxhdpi/ico_sw_dowm_br.png | Bin 0 -> 1549 bytes .../res/drawable-xxxhdpi/ico_switch_off.png | Bin 0 -> 4487 bytes .../res/drawable-xxxhdpi/ico_switch_on.png | Bin 0 -> 4591 bytes .../res/drawable-xxxhdpi/ico_unlinked.png | Bin 0 -> 3614 bytes .../main/res/drawable-xxxhdpi/ico_wman.png | Bin 0 -> 8811 bytes .../res/drawable-xxxhdpi/ico_wman_active.png | Bin 0 -> 10734 bytes .../icon_tracker_device_small.png | Bin 0 -> 26827 bytes .../res/drawable-xxxhdpi/map_live_start.png | Bin 0 -> 1128 bytes .../main/res/drawable-xxxhdpi/pic_alipay.png | Bin 0 -> 29699 bytes .../res/drawable-xxxhdpi/pic_avatar_df.png | Bin 0 -> 11964 bytes .../drawable-xxxhdpi/pic_history_location.png | Bin 0 -> 7775 bytes .../drawable-xxxhdpi/pic_map_gps_avatar.png | Bin 0 -> 7521 bytes .../res/drawable-xxxhdpi/pic_map_location.png | Bin 0 -> 9155 bytes .../res/drawable-xxxhdpi/pic_wechatpay.png | Bin 0 -> 33948 bytes .../main/res/drawable/abbidot_ico_1024.png | Bin 0 -> 56980 bytes .../res/drawable/abbidot_logo_loading.png | Bin 0 -> 9201 bytes .../main/res/drawable/active_tracker_help.png | Bin 0 -> 116093 bytes .../main/res/drawable/battery_life_help1.png | Bin 0 -> 82865 bytes .../main/res/drawable/battery_life_help2.png | Bin 0 -> 53188 bytes .../main/res/drawable/battery_life_help3.png | Bin 0 -> 14251 bytes .../main/res/drawable/battery_life_help4.png | Bin 0 -> 24007 bytes .../main/res/drawable/battery_life_help5.png | Bin 0 -> 81280 bytes .../main/res/drawable/bg_feedback_shape.xml | 20 + .../drawable/button_enabled_text_color.xml | 5 + app/src/main/res/drawable/charge_power_on.gif | Bin 0 -> 44421 bytes .../res/drawable/check_box_agree_select.xml | 5 + .../check_box_icon_point_selector.xml | 5 + .../check_box_yellow_icon_selector.xml | 5 + .../main/res/drawable/create_fence_help1.png | Bin 0 -> 46036 bytes .../main/res/drawable/create_fence_help2.png | Bin 0 -> 98629 bytes .../main/res/drawable/create_fence_help3.png | Bin 0 -> 13002 bytes .../main/res/drawable/create_fence_help4.png | Bin 0 -> 37704 bytes .../res/drawable/credit_card_chip_yellow.xml | 6 + .../credit_card_chip_yellow_inner.xml | 11 + app/src/main/res/drawable/debug_ic.xml | 59 + app/src/main/res/drawable/front_card_bg.png | Bin 0 -> 135818 bytes app/src/main/res/drawable/gif_shake_on.gif | Bin 0 -> 282215 bytes .../main/res/drawable/help_tracker_status.png | Bin 0 -> 79548 bytes .../res/drawable/home_account_selector.xml | 9 + .../res/drawable/home_activity_selector.xml | 9 + .../res/drawable/home_map_selector_v2.xml | 9 + .../home_navigation_color_selector.xml | 10 + .../main/res/drawable/home_pet_selector.xml | 9 + .../main/res/drawable/home_route_selector.xml | 9 + .../main/res/drawable/home_v2_bottom_bg.xml | 8 + .../res/drawable/ic_launcher_background.xml | 170 ++ app/src/main/res/drawable/ico_account.xml | 18 + .../main/res/drawable/ico_account_active.xml | 18 + app/src/main/res/drawable/ico_activity.xml | 30 + .../main/res/drawable/ico_activity_active.xml | 30 + .../main/res/drawable/ico_map_active_v2.xml | 23 + app/src/main/res/drawable/ico_map_v2.xml | 23 + app/src/main/res/drawable/ico_pet.xml | 41 + app/src/main/res/drawable/ico_pet_active.xml | 47 + .../res/drawable/ico_save_to_facebook.png | Bin 0 -> 9816 bytes .../main/res/drawable/ico_save_to_phone.png | Bin 0 -> 2920 bytes .../drawable/icon_1_year_hugger_lock_svg.xml | 19 + .../icon_1_year_hugger_unlock_svg.xml | 19 + .../icon_2_year_companion_lock_svg.xml | 22 + .../icon_2_year_companion_unlock_svg.xml | 22 + .../drawable/icon_3_year_harmony_lock_svg.xml | 19 + .../icon_3_year_harmony_unlock_svg.xml | 19 + app/src/main/res/drawable/icon_about_svg.xml | 25 + .../main/res/drawable/icon_active_time.xml | 22 + .../res/drawable/icon_advanced_set_svg.xml | 74 + app/src/main/res/drawable/icon_back_svg.xml | 16 + .../drawable/icon_badges_unlock_bg_svg.xml | 485 ++++++ .../main/res/drawable/icon_black_back_svg.xml | 16 + .../main/res/drawable/icon_black_cir_ring.xml | 11 + .../main/res/drawable/icon_bluetooth_svg.xml | 41 + .../drawable/icon_calendar2_activity_svg.xml | 31 + .../main/res/drawable/icon_calendar2_svg.xml | 33 + .../drawable/icon_calendar_activity_svg.xml | 36 + .../main/res/drawable/icon_calendar_svg.xml | 33 + .../drawable/icon_calender_big_left_svg.xml | 9 + .../drawable/icon_calender_big_right_svg.xml | 9 + .../icon_calender_small_right_svg.xml | 9 + app/src/main/res/drawable/icon_calories.xml | 34 + .../drawable/icon_cat_default_head_svg.xml | 73 + .../res/drawable/icon_cat_height_tip_svg.xml | 62 + .../main/res/drawable/icon_cat_image_svg.xml | 51 + .../main/res/drawable/icon_cat_type_image.png | Bin 0 -> 9300 bytes app/src/main/res/drawable/icon_cells_svg.xml | 27 + .../drawable/icon_cellular_network_svg.xml | 31 + .../main/res/drawable/icon_circle_ring_bg.xml | 9 + app/src/main/res/drawable/icon_clock.xml | 10 + .../main/res/drawable/icon_clock_active.xml | 18 + .../res/drawable/icon_dark_green_star_svg.xml | 13 + .../drawable/icon_database_restore_svg.xml | 36 + app/src/main/res/drawable/icon_date_svg.xml | 28 + .../main/res/drawable/icon_date_time_svg.xml | 39 + .../drawable/icon_day_1_devotee_lock_svg.xml | 19 + .../icon_day_1_devotee_unlock_svg.xml | 19 + app/src/main/res/drawable/icon_delete_svg.xml | 18 + .../drawable/icon_device_battery_bg_svg.xml | 18 + .../res/drawable/icon_diners_club_svg.xml | 10 + .../res/drawable/icon_discover_card_svg.xml | 17 + app/src/main/res/drawable/icon_distance.xml | 24 + .../drawable/icon_dog_default_head_svg.xml | 37 + .../main/res/drawable/icon_dog_image_svg.xml | 60 + .../main/res/drawable/icon_dog_type_image.png | Bin 0 -> 13968 bytes .../main/res/drawable/icon_drop_down_svg.xml | 13 + app/src/main/res/drawable/icon_edit_svg.xml | 19 + .../res/drawable/icon_family_boy_avatar.png | Bin 0 -> 10424 bytes .../res/drawable/icon_family_girl_avatar.png | Bin 0 -> 10831 bytes .../drawable/icon_family_invitation_bg.png | Bin 0 -> 47213 bytes app/src/main/res/drawable/icon_female_svg.xml | 9 + .../icon_fence_circle_scale_red_svg.xml | 18 + .../drawable/icon_fence_circle_scale_svg.xml | 18 + .../icon_fence_circle_shape_select_svg.xml | 16 + .../drawable/icon_fence_circle_shape_svg.xml | 16 + .../res/drawable/icon_fence_dot_red_svg.xml | 11 + .../main/res/drawable/icon_fence_dot_svg.xml | 11 + .../icon_fence_polygon_operate_red_svg.xml | 11 + .../icon_fence_polygon_operate_svg.xml | 11 + .../icon_fence_polygon_shape_select_svg.xml | 41 + .../drawable/icon_fence_polygon_shape_svg.xml | 41 + .../icon_fence_rect_red_rotate_svg.xml | 22 + .../drawable/icon_fence_rect_rotate_svg.xml | 22 + .../icon_fence_rect_shape_select_svg.xml | 31 + .../drawable/icon_fence_rect_shape_svg.xml | 31 + .../drawable/icon_fence_rect_zoom_red_svg.xml | 18 + .../res/drawable/icon_fence_rect_zoom_svg.xml | 18 + .../icon_fences_zone_gps_green_svg.xml | 43 + .../drawable/icon_fences_zone_gps_red_svg.xml | 44 + .../res/drawable/icon_fences_zone_gps_svg.xml | 43 + .../res/drawable/icon_fresh_paws_lock_svg.xml | 16 + .../drawable/icon_fresh_paws_unlock_svg.xml | 16 + .../icon_furr_timer_friend_lock_svg.xml | 22 + .../icon_furr_timer_friend_unlock_svg.xml | 22 + .../drawable/icon_furry_friend_lock_svg.xml | 16 + .../drawable/icon_furry_friend_unlock_svg.xml | 16 + .../res/drawable/icon_gray_delete_svg.xml | 21 + .../res/drawable/icon_gray_down_arrow.xml | 9 + .../res/drawable/icon_gray_right_arrow.xml | 9 + .../res/drawable/icon_help_square_svg.xml | 24 + .../res/drawable/icon_hide_password_svg.xml | 9 + .../icon_history_point_activity_svg.xml | 45 + .../res/drawable/icon_history_point_svg.xml | 46 + .../icon_history_track_activity_svg.xml | 45 + .../res/drawable/icon_history_track_svg.xml | 46 + .../res/drawable/icon_input_check_svg.xml | 13 + .../res/drawable/icon_label_select_svg.xml | 17 + app/src/main/res/drawable/icon_light_svg.xml | 49 + app/src/main/res/drawable/icon_link_svg.xml | 26 + .../main/res/drawable/icon_location_svg.xml | 17 + .../main/res/drawable/icon_login_v2_bg.png | Bin 0 -> 965592 bytes app/src/main/res/drawable/icon_logout_svg.xml | 18 + .../main/res/drawable/icon_lr_arrow_svg.xml | 9 + app/src/main/res/drawable/icon_male_svg.xml | 9 + .../main/res/drawable/icon_map_bluetooth.xml | 41 + app/src/main/res/drawable/icon_map_gps.xml | 44 + .../res/drawable/icon_map_navigation_svg.xml | 11 + .../main/res/drawable/icon_map_offline.xml | 11 + app/src/main/res/drawable/icon_map_online.xml | 11 + .../res/drawable/icon_map_satellite_type.png | Bin 0 -> 25272 bytes app/src/main/res/drawable/icon_map_signal.xml | 30 + .../main/res/drawable/icon_map_signal_svg.xml | 42 + .../res/drawable/icon_map_standard_type.png | Bin 0 -> 20627 bytes app/src/main/res/drawable/icon_map_type.xml | 27 + app/src/main/res/drawable/icon_map_zone.xml | 40 + .../res/drawable/icon_master_card_svg.xml | 18 + .../drawable/icon_measurement_units_svg.xml | 30 + .../drawable/icon_month__mate_lock_svg.xml | 19 + .../drawable/icon_month_mate_unlock_svg.xml | 19 + .../main/res/drawable/icon_more_sleep_bg.png | Bin 0 -> 444825 bytes .../main/res/drawable/icon_my_tracker_svg.xml | 31 + .../icon_newbie_navigator_lock_svg.xml | 19 + .../icon_newbie_navigator_unlock_svg.xml | 19 + .../drawable/icon_no_zone_type1_small_svg.xml | 50 + .../res/drawable/icon_no_zone_type1_svg.xml | 53 + .../drawable/icon_no_zone_type2_small_svg.xml | 51 + .../res/drawable/icon_no_zone_type2_svg.xml | 54 + .../drawable/icon_no_zone_type3_small_svg.xml | 43 + .../res/drawable/icon_no_zone_type3_svg.xml | 46 + app/src/main/res/drawable/icon_noti_svg.xml | 12 + .../res/drawable/icon_notification_svg.xml | 20 + .../res/drawable/icon_pair_tracker_image1.png | Bin 0 -> 35711 bytes .../res/drawable/icon_pair_tracker_image2.png | Bin 0 -> 35466 bytes .../icon_pawsome_partner_lock_svg.xml | 22 + .../icon_pawsome_partner_unlock_svg.xml | 22 + .../drawable/icon_pawtential_pal_lock_svg.xml | 20 + .../icon_pawtential_pal_unlock_svg.xml | 20 + .../drawable/icon_payment_credit_card_svg.xml | 29 + .../res/drawable/icon_payment_paypal_svg.xml | 24 + .../drawable/icon_permission_check_svg.xml | 16 + .../icon_permission_error_check_svg.xml | 14 + .../drawable/icon_permission_no_check_svg.xml | 11 + .../res/drawable/icon_permissions_svg.xml | 31 + .../main/res/drawable/icon_pet_fence_svg.xml | 55 + .../main/res/drawable/icon_pet_foot_svg.xml | 35 + .../res/drawable/icon_pet_head_edit_svg.xml | 26 + .../res/drawable/icon_pet_height_tip_svg.xml | 81 + .../main/res/drawable/icon_pet_share_svg.xml | 37 + .../drawable/icon_placeholder_image_svg.xml | 28 + .../main/res/drawable/icon_point_bg_svg.xml | 19 + .../icon_profile_birthday_edit_svg.xml | 34 + .../icon_purrfect_partner_lock_svg.xml | 28 + .../icon_purrfect_partner_unlock_svg.xml | 28 + app/src/main/res/drawable/icon_red_dot.xml | 9 + app/src/main/res/drawable/icon_refresh.xml | 10 + .../icon_save_zone_type1_small_svg.xml | 52 + .../res/drawable/icon_save_zone_type1_svg.xml | 55 + .../icon_save_zone_type2_small_svg.xml | 49 + .../res/drawable/icon_save_zone_type2_svg.xml | 52 + .../icon_save_zone_type3_small_svg.xml | 41 + .../res/drawable/icon_save_zone_type3_svg.xml | 44 + .../icon_save_zone_type4_small_svg.xml | 48 + .../res/drawable/icon_save_zone_type4_svg.xml | 51 + .../icon_save_zone_type5_small_svg.xml | 34 + .../res/drawable/icon_save_zone_type5_svg.xml | 37 + app/src/main/res/drawable/icon_say_hi_bg.png | Bin 0 -> 99395 bytes .../res/drawable/icon_selected_point_svg.xml | 14 + .../res/drawable/icon_share_activity_svg1.xml | 29 + .../res/drawable/icon_share_activity_svg2.xml | 24 + app/src/main/res/drawable/icon_share_svg1.xml | 26 + app/src/main/res/drawable/icon_share_svg2.xml | 26 + .../res/drawable/icon_show_password_svg.xml | 9 + app/src/main/res/drawable/icon_sleep_time.xml | 26 + .../res/drawable/icon_smart_phone_svg.xml | 31 + .../res/drawable/icon_socialite_lock_svg.xml | 19 + .../drawable/icon_socialite_unlock_svg.xml | 19 + .../main/res/drawable/icon_sound_off_svg.xml | 17 + .../main/res/drawable/icon_sound_on_svg.xml | 20 + app/src/main/res/drawable/icon_store_svg.xml | 20 + .../res/drawable/icon_subscription_svg.xml | 30 + .../icon_tailwag_explorer_lock_svg.xml | 16 + .../icon_tailwag_explorer_unlock_svg.xml | 16 + .../main/res/drawable/icon_tip_image_svg.xml | 10 + .../res/drawable/icon_total_distance_svg.xml | 37 + .../drawable/icon_unselected_point_svg.xml | 11 + .../res/drawable/icon_upload_image_svg.xml | 20 + .../main/res/drawable/icon_user_head_svg.xml | 18 + .../res/drawable/icon_weighting_scale_svg.xml | 18 + .../main/res/drawable/icon_white_back_svg.xml | 16 + app/src/main/res/drawable/icon_white_time.xml | 14 + .../res/drawable/icon_wif_location_svg.xml | 18 + .../res/drawable/icon_wifi_zone_head_bg.png | Bin 0 -> 25450 bytes .../drawable/icon_wifi_zone_home_type_svg.xml | 58 + .../icon_wifi_zone_office_type_svg.xml | 44 + .../res/drawable/icon_wifi_zone_type1_svg.xml | 61 + .../res/drawable/icon_wifi_zone_type2_svg.xml | 47 + .../res/drawable/icon_yellow_no_check_svg.xml | 7 + .../drawable/invite_family_animate_image1.png | Bin 0 -> 2944 bytes .../drawable/invite_family_animate_image2.png | Bin 0 -> 2827 bytes .../drawable/invite_family_animate_image3.png | Bin 0 -> 6368 bytes .../drawable/invite_family_animate_image4.png | Bin 0 -> 2944 bytes .../main/res/drawable/message_shape_bg.xml | 8 + .../res/drawable/progress_bar_progress_bg.xml | 7 + .../drawable/pwd_reset_successful_done.gif | Bin 0 -> 762867 bytes .../main/res/drawable/qmui_s_icon_switch.xml | 9 + .../selector_button_enabled_text_color.xml | 5 + .../selector_calendar_icon_pressed1.xml | 5 + .../selector_calendar_icon_pressed2.xml | 5 + .../drawable/selector_dark_check_gray_bg.xml | 20 + .../drawable/selector_fence_circle_shape.xml | 5 + .../selector_fence_rectangle_shape.xml | 5 + .../drawable/selector_gray_icon_switch.xml | 8 + .../selector_green_yellow_btn_state.xml | 12 + .../drawable/selector_history_point_check.xml | 5 + .../drawable/selector_history_point_rb.xml | 5 + .../drawable/selector_history_track_check.xml | 5 + .../drawable/selector_history_track_rb.xml | 5 + .../selector_home_data_gray_pressed1.xml | 15 + .../selector_home_data_gray_pressed2.xml | 15 + .../selector_home_data_gray_pressed3.xml | 15 + .../main/res/drawable/selector_man_check.xml | 5 + .../selector_payment_method_check.xml | 5 + .../selector_pet_type_switch_check.xml | 13 + .../selector_shape6_gray_bg_pressed.xml | 15 + .../selector_shape8_white_bg_pressed.xml | 15 + .../drawable/selector_share_icon_pressed1.xml | 5 + .../drawable/selector_share_icon_pressed2.xml | 5 + .../drawable/selector_transparent_pressed.xml | 5 + .../res/drawable/selector_woman_check.xml | 5 + .../selector_yellow_check_gray_bg.xml | 21 + .../res/drawable/shape100_yellow_color_bg.xml | 18 + ...0_feedback_dashed_gray_border_white_bg.xml | 19 + .../main/res/drawable/shape10_white_bg.xml | 17 + .../drawable/shape10_white_border_gray_bg.xml | 11 + .../main/res/drawable/shape10_yellow_bg.xml | 18 + .../drawable/shape12_gray_border_white_bg.xml | 10 + .../res/drawable/shape12_gray_white_bg.xml | 16 + .../res/drawable/shape16_gray_color_bg.xml | 8 + .../res/drawable/shape16_white_color_bg.xml | 8 + app/src/main/res/drawable/shape20_gray_bg.xml | 30 + .../main/res/drawable/shape20_white_bg.xml | 7 + .../drawable/shape20_white_half_bottom_bg.xml | 10 + .../shape20_yellow_border_cyan_bg.xml | 9 + .../res/drawable/shape22_green_yellow_bg.xml | 19 + .../main/res/drawable/shape24_white_bg.xml | 7 + .../main/res/drawable/shape28_yellow_bg.xml | 18 + .../res/drawable/shape30_gray_white_edit.xml | 7 + .../main/res/drawable/shape30_white_edit.xml | 7 + .../drawable/shape30_white_half_bottom_bg.xml | 11 + .../shape30_white_half_bottom_shadow_bg.xml | 21 + .../res/drawable/shape32_black_color_bg.xml | 8 + .../res/drawable/shape32_white_color_bg.xml | 8 + .../drawable/shape36_drak_green_color_bg.xml | 8 + .../res/drawable/shape36_gray_color_bg.xml | 8 + .../res/drawable/shape36_green_yellow_bg.xml | 19 + .../res/drawable/shape40_black70_toast_bg.xml | 8 + .../drawable/shape44_gray_border_white_bg.xml | 11 + .../res/drawable/shape44_gray_yellow_bg.xml | 17 + .../drawable/shape4_gray_border_white_bg.xml | 11 + .../drawable/shape50_white_half_bottom_bg.xml | 11 + .../res/drawable/shape50_yellow_color_bg.xml | 6 + .../drawable/shape6_blue_half_bottom_bg.xml | 18 + .../drawable/shape6_gray_border_white_bg.xml | 10 + app/src/main/res/drawable/shape6_red_bg.xml | 6 + .../drawable/shape6_yellow_half_bottom_bg.xml | 18 + app/src/main/res/drawable/shape8_black_bg.xml | 8 + .../shape8_dark_border_pale_yellow_bg.xml | 10 + .../res/drawable/shape8_dark_color_bg.xml | 8 + ...hape8_dark_gray_border_white_yellow_bg.xml | 17 + app/src/main/res/drawable/shape8_gray_bg.xml | 17 + .../shape8_gray_border_transparent_bg.xml | 11 + .../drawable/shape8_gray_border_white_bg.xml | 11 + .../res/drawable/shape8_gray_white_bg.xml | 8 + .../res/drawable/shape8_gray_yellow_bg.xml | 29 + .../drawable/shape8_red_border_white_bg.xml | 11 + app/src/main/res/drawable/shape8_white_bg.xml | 6 + .../res/drawable/shape8_white_gray_bg.xml | 18 + .../drawable/shape9_red_border_reddish_bg.xml | 9 + .../main/res/drawable/shape_back_ciecle.xml | 8 + .../res/drawable/shape_black50_circle_bg.xml | 11 + .../res/drawable/shape_black_circle_bg.xml | 8 + .../drawable/shape_home_route_calendar_bg.xml | 8 + .../main/res/drawable/shape_light_grey_bg.xml | 8 + .../res/drawable/shape_progress_bar_style.xml | 23 + .../main/res/drawable/shape_red_circle_bg.xml | 5 + .../res/drawable/shape_seek_bar_style.xml | 18 + .../drawable/shape_transparent_black_bg.xml | 14 + .../shape_verify_edittext_default_bg.xml | 9 + .../drawable/shape_white_alpha_circle_bg.xml | 15 + .../res/drawable/shape_white_circle_bg.xml | 15 + .../drawable/shape_white_cyan_gradient.xml | 14 + .../drawable/shape_white_gray_circle_bg.xml | 7 + .../res/drawable/shape_yellow_circle_bg.xml | 15 + .../res/drawable/share_default_bg_image.png | Bin 0 -> 273272 bytes app/src/main/res/drawable/sign_strip.png | Bin 0 -> 5034 bytes .../main/res/drawable/text_view_pressed.xml | 4 + .../res/drawable/v2_bg_color_gradient.xml | 10 + app/src/main/res/layout/activity_about.xml | 74 + .../res/layout/activity_add_credit_card.xml | 98 ++ .../activity_add_credit_card_payment.xml | 190 +++ .../layout/activity_add_edit_fences_zone.xml | 179 +++ .../res/layout/activity_add_email_valid.xml | 31 + .../res/layout/activity_add_new_tracker1.xml | 100 ++ .../res/layout/activity_add_new_tracker2.xml | 70 + .../res/layout/activity_add_new_tracker3.xml | 121 ++ .../res/layout/activity_add_new_tracker4.xml | 89 ++ .../layout/activity_add_paired_success.xml | 77 + .../res/layout/activity_add_wifi_password.xml | 91 ++ .../layout/activity_add_wifi_power_zone1.xml | 106 ++ .../layout/activity_add_wifi_power_zone2.xml | 87 ++ .../layout/activity_add_wifi_power_zone3.xml | 47 + .../main/res/layout/activity_advanced_set.xml | 37 + .../main/res/layout/activity_badge_detail.xml | 83 + .../main/res/layout/activity_badges_list.xml | 51 + .../layout/activity_change_email_success.xml | 35 + .../main/res/layout/activity_change_name.xml | 46 + .../main/res/layout/activity_choose_plan.xml | 28 + .../res/layout/activity_create_account.xml | 118 ++ .../main/res/layout/activity_data_board.xml | 105 ++ app/src/main/res/layout/activity_debug.xml | 57 + .../res/layout/activity_delete_tracker1.xml | 130 ++ .../res/layout/activity_delete_tracker2.xml | 104 ++ app/src/main/res/layout/activity_detail.xml | 30 + .../res/layout/activity_edit_power_zone.xml | 144 ++ .../res/layout/activity_email_address.xml | 42 + .../res/layout/activity_family_members.xml | 41 + app/src/main/res/layout/activity_feedback.xml | 163 ++ .../main/res/layout/activity_fences_add.xml | 208 +++ .../activity_first_measurement_units.xml | 58 + .../res/layout/activity_first_permissions.xml | 54 + .../res/layout/activity_first_pet_profile.xml | 131 ++ .../layout/activity_first_set_pet_height.xml | 77 + .../layout/activity_first_set_pet_type.xml | 142 ++ .../layout/activity_first_set_pet_weight.xml | 97 ++ .../layout/activity_help_active_tracker.xml | 41 + .../layout/activity_help_create_pet_fence.xml | 19 + .../res/layout/activity_help_power_on_off.xml | 61 + .../layout/activity_help_tracker_battery.xml | 20 + .../layout/activity_help_tracker_status.xml | 50 + .../main/res/layout/activity_history_data.xml | 115 ++ .../layout/activity_home_map_navigation.xml | 187 +++ app/src/main/res/layout/activity_home_v2.xml | 92 ++ app/src/main/res/layout/activity_how_work.xml | 19 + .../res/layout/activity_invite_family.xml | 102 ++ .../main/res/layout/activity_led_light.xml | 158 ++ .../res/layout/activity_live_duration_set.xml | 75 + app/src/main/res/layout/activity_live_v2.xml | 136 ++ .../res/layout/activity_login_register_cn.xml | 56 + app/src/main/res/layout/activity_login_v2.xml | 120 ++ app/src/main/res/layout/activity_map_live.xml | 91 ++ .../res/layout/activity_more_activity.xml | 387 +++++ .../main/res/layout/activity_more_sleep.xml | 215 +++ .../res/layout/activity_my_crop_image.xml | 21 + .../res/layout/activity_my_subscription.xml | 20 + .../res/layout/activity_my_tracker_v2.xml | 17 + .../res/layout/activity_notification_v2.xml | 44 + .../res/layout/activity_notifications_set.xml | 43 + .../res/layout/activity_payment_method.xml | 79 + .../res/layout/activity_payment_result.xml | 19 + .../res/layout/activity_payment_success.xml | 123 ++ .../res/layout/activity_permissions_set.xml | 56 + .../main/res/layout/activity_pet_height.xml | 109 ++ .../main/res/layout/activity_pet_profile.xml | 136 ++ .../main/res/layout/activity_pet_weight.xml | 121 ++ .../main/res/layout/activity_power_off.xml | 96 ++ .../res/layout/activity_power_saving_set.xml | 121 ++ .../layout/activity_preview_fences_zone.xml | 127 ++ .../layout/activity_recharge_amount_cn.xml | 46 + .../activity_recharge_device_detail_cn.xml | 53 + .../layout/activity_recharge_history_cn.xml | 18 + .../activity_recharge_order_detail_cn.xml | 93 ++ .../res/layout/activity_request_refund.xml | 85 + .../activity_reset_password_success.xml | 36 + .../main/res/layout/activity_say_hello.xml | 72 + .../layout/activity_select_payment_method.xml | 34 + .../layout/activity_share_pet_activity.xml | 97 ++ .../layout/activity_show_invite_device.xml | 55 + .../res/layout/activity_signup_success.xml | 36 + app/src/main/res/layout/activity_splash.xml | 55 + .../layout/activity_subscription_detail.xml | 127 ++ .../layout/activity_subscription_history.xml | 20 + .../res/layout/activity_subscription_plan.xml | 52 + .../activity_sure_subscription_plan.xml | 83 + .../main/res/layout/activity_swipe_action.xml | 18 + .../layout/activity_tracking_duration_set.xml | 56 + .../main/res/layout/activity_user_profile.xml | 94 ++ .../res/layout/activity_virtual_fences.xml | 104 ++ app/src/main/res/layout/activity_web_view.xml | 21 + .../dialog_calender_and_time_layout.xml | 75 + .../res/layout/dialog_calender_layout.xml | 57 + .../main/res/layout/dialog_common_layout.xml | 59 + app/src/main/res/layout/dialog_dfu_new.xml | 134 ++ app/src/main/res/layout/dialog_legal_info.xml | 95 ++ .../res/layout/dialog_list_item_layout.xml | 9 + app/src/main/res/layout/dialog_my_layout.xml | 66 + .../res/layout/dialog_package_upgrade.xml | 45 + .../res/layout/dialog_select_map_layout.xml | 37 + .../layout/dialog_select_map_type_layout.xml | 69 + .../layout/dialog_select_pet_label_layout.xml | 55 + .../layout/dialog_set_pet_weight_layout.xml | 63 + .../layout/dialog_tracker_dfu_list_layout.xml | 79 + .../layout/dialog_year_and_month_layout.xml | 57 + .../main/res/layout/fragment_account_v2.xml | 95 ++ .../main/res/layout/fragment_activity_v2.xml | 212 +++ .../res/layout/fragment_base_baidu_map.xml | 9 + .../res/layout/fragment_base_email_valid.xml | 118 ++ .../res/layout/fragment_bind_phone_cn.xml | 26 + .../layout/fragment_create_account_v2_one.xml | 71 + .../fragment_create_account_v2_three.xml | 79 + .../layout/fragment_credit_card_payment.xml | 47 + .../fragment_forget_password_cn_finish.xml | 41 + .../fragment_forget_password_cn_start.xml | 37 + .../fragment_forgot_password_v2_one.xml | 66 + .../fragment_forgot_password_v2_there.xml | 50 + .../main/res/layout/fragment_google_map.xml | 9 + app/src/main/res/layout/fragment_home.xml | 16 + app/src/main/res/layout/fragment_home_pet.xml | 301 ++++ .../main/res/layout/fragment_home_track.xml | 147 ++ .../res/layout/fragment_login_cn_account.xml | 97 ++ .../res/layout/fragment_login_cn_code.xml | 45 + .../res/layout/fragment_login_cn_first.xml | 63 + app/src/main/res/layout/fragment_map_v2.xml | 100 ++ app/src/main/res/layout/fragment_mine.xml | 13 + .../main/res/layout/fragment_payment_fail.xml | 54 + .../res/layout/fragment_payment_success.xml | 39 + .../res/layout/fragment_paypal_payment.xml | 35 + app/src/main/res/layout/fragment_pet_v2.xml | 65 + app/src/main/res/layout/fragment_record.xml | 20 + .../layout/fragment_register_cn_finish.xml | 32 + .../res/layout/fragment_register_cn_start.xml | 45 + app/src/main/res/layout/fragment_route_v2.xml | 196 +++ .../res/layout/horizontal_calender_view.xml | 80 + .../main/res/layout/item_associated_pet.xml | 56 + .../res/layout/item_baidu_map_poi_result.xml | 26 + .../layout/item_bottom_sheet_add_layout.xml | 33 + .../res/layout/item_choose_plan_layout.xml | 129 ++ .../res/layout/item_credit_card_layout.xml | 41 + .../res/layout/item_duration_set_layout.xml | 26 + .../res/layout/item_family_member_layout.xml | 93 ++ .../main/res/layout/item_feedback_image.xml | 33 + .../res/layout/item_home_map_device_msg.xml | 19 + .../res/layout/item_home_map_device_state.xml | 64 + .../res/layout/item_home_pet_device_state.xml | 42 + .../main/res/layout/item_home_pet_family.xml | 25 + .../layout/item_home_route_notification.xml | 54 + .../layout/item_horizontal_calender_day.xml | 41 + .../item_invite_family_avatar_layout.xml | 13 + .../item_invite_family_relation_layout.xml | 14 + .../main/res/layout/item_led_color_select.xml | 12 + .../main/res/layout/item_map_type_layout.xml | 23 + .../main/res/layout/item_my_pet_dialog.xml | 54 + .../layout/item_my_subscription_layout.xml | 179 +++ .../res/layout/item_my_tracker_v2_layout.xml | 148 ++ .../layout/item_notifications_set_layout.xml | 35 + .../res/layout/item_payment_method_layout.xml | 29 + .../layout/item_permission_state_layout.xml | 84 + .../res/layout/item_pet_label_layout_v2.xml | 24 + .../res/layout/item_pets_badges_layout.xml | 23 + .../layout/item_pets_parent_badges_layout.xml | 36 + .../res/layout/item_qmui_common_item_view.xml | 8 + .../main/res/layout/item_recharge_amount.xml | 94 ++ .../res/layout/item_recharge_amount_cn.xml | 66 + .../main/res/layout/item_recharge_device.xml | 93 ++ .../res/layout/item_recharge_history_cn.xml | 66 + app/src/main/res/layout/item_select_map.xml | 23 + .../item_select_type_card_shade_layout.xml | 17 + .../res/layout/item_shadow_image_view.xml | 22 + .../layout/item_subscribe_summary_layout.xml | 27 + .../item_subscription_history_layout.xml | 86 + .../item_subscription_plan_detail_layout.xml | 28 + .../layout/item_subscription_plan_layout.xml | 101 ++ .../main/res/layout/item_text_img_type.xml | 42 + app/src/main/res/layout/item_text_type.xml | 60 + app/src/main/res/layout/item_text_view.xml | 12 + .../main/res/layout/item_title_text_type.xml | 6 + .../res/layout/item_tracker_dfu_state.xml | 34 + .../res/layout/item_virtual_fences_layout.xml | 65 + .../main/res/layout/item_wifi_info_layout.xml | 26 + .../main/res/layout/item_wifi_zone_layout.xml | 50 + .../res/layout/layout_assign_options_list.xml | 10 + ...out_associated_custom_qmui_group_right.xml | 34 + .../layout/layout_behind_of_credit_card.xml | 42 + .../res/layout/layout_ble_connect_state.xml | 15 + .../layout/layout_bluetooth_find_device.xml | 82 + .../layout_create_account_policy_terms.xml | 29 + .../res/layout/layout_credit_card_no_data.xml | 29 + .../res/layout/layout_data_board_item.xml | 64 + .../layout_device_light_image_button.xml | 24 + .../layout_device_recharge_describe.xml | 80 + .../layout_device_recharge_describe_cn.xml | 63 + .../layout_dfu_custom_qmui_group_right.xml | 31 + app/src/main/res/layout/layout_empty_view.xml | 25 + .../res/layout/layout_family_empty_view.xml | 27 + .../layout/layout_front_of_credit_card.xml | 120 ++ .../main/res/layout/layout_get_phone_code.xml | 43 + .../res/layout/layout_head_image_view.xml | 14 + app/src/main/res/layout/layout_help_image.xml | 7 + .../main/res/layout/layout_help_title1.xml | 9 + .../main/res/layout/layout_help_title2.xml | 9 + .../res/layout/layout_home_detail_top.xml | 30 + .../res/layout/layout_input_edit_view.xml | 71 + .../res/layout/layout_input_edit_view2.xml | 32 + app/src/main/res/layout/layout_list_item.xml | 9 + app/src/main/res/layout/layout_live_issue.xml | 74 + .../res/layout/layout_live_v2_data_info.xml | 118 ++ .../layout/layout_login_cn_policy_terms.xml | 47 + .../res/layout/layout_only_pull_refresh.xml | 12 + .../res/layout/layout_pet_gps_battery.xml | 73 + .../layout_pull_refresh_and_load_more.xml | 33 + app/src/main/res/layout/layout_sport_data.xml | 43 + app/src/main/res/layout/layout_sport_time.xml | 33 + .../layout/layout_subscribe_count_down.xml | 89 ++ ...yout_sure_subscribe_plan_addons_layout.xml | 81 + ...yout_sure_subscribe_plan_detail_layout.xml | 78 + ...out_sure_subscribe_plan_summary_layout.xml | 42 + app/src/main/res/layout/layout_top_bar.xml | 17 + .../res/layout/layout_top_pet_data_big.xml | 39 + .../res/layout/layout_top_pet_data_small.xml | 39 + .../res/layout/layout_upload_head_edit.xml | 26 + .../layout_virtual_fences_empty_view.xml | 28 + app/src/main/res/layout/list_item_day.xml | 36 + ...rch_sdk_result_missing_feedback_layout.xml | 7 + .../main/res/layout/marker_info_contents.xml | 32 + .../main/res/layout/pop_subscription_item.xml | 40 + .../main/res/layout/qmui_common_list_item.xml | 93 ++ .../res/layout/sheet_dialog_auto_recharge.xml | 52 + .../res/layout/sheet_dialog_select_date.xml | 38 + app/src/main/res/layout/toast_my_layout.xml | 12 + .../res/layout/view_credit_card_layout.xml | 16 + .../main/res/menu/menu_home_bottom_nav_v2.xml | 27 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes app/src/main/res/mipmap-xhdpi/logo.png | Bin 0 -> 840 bytes .../main/res/mipmap-xhdpi/logo_abbidot.png | Bin 0 -> 4907 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes app/src/main/res/mipmap-xxhdpi/logo.png | Bin 0 -> 1199 bytes .../main/res/mipmap-xxhdpi/logo_abbidot.png | Bin 0 -> 7277 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes app/src/main/res/mipmap-xxxhdpi/logo.png | Bin 0 -> 1619 bytes .../main/res/mipmap-xxxhdpi/logo_abbidot.png | Bin 0 -> 10193 bytes app/src/main/res/values-de/strings.xml | 930 +++++++++++ app/src/main/res/values-land/dimens.xml | 3 + app/src/main/res/values-night/colors.xml | 10 + app/src/main/res/values-night/themes.xml | 2 + app/src/main/res/values-w1240dp/dimens.xml | 3 + app/src/main/res/values-w600dp/dimens.xml | 3 + app/src/main/res/values-zh-rCN/strings.xml | 975 ++++++++++++ app/src/main/res/values/arrays.xml | 31 + app/src/main/res/values/colors.xml | 373 +++++ app/src/main/res/values/dimens.xml | 101 ++ app/src/main/res/values/ids.xml | 26 + app/src/main/res/values/qmui_themes.xml | 47 + app/src/main/res/values/strings.xml | 1033 ++++++++++++ app/src/main/res/values/themes.xml | 259 +++ app/src/main/res/xml/file_paths.xml | 57 + .../main/res/xml/network_security_config.xml | 6 + .../com/abbidot/tracker/ExampleUnitTest.kt | 17 + baselibrary/.gitignore | 1 + baselibrary/build.gradle | 62 + baselibrary/consumer-rules.pro | 0 baselibrary/proguard-rules.pro | 21 + .../baselibrary/ExampleInstrumentedTest.kt | 24 + baselibrary/src/main/AndroidManifest.xml | 4 + .../abbidot/baselibrary/constant/ConState.kt | 45 + .../baselibrary/constant/DeviceType.kt | 17 + .../abbidot/baselibrary/constant/EventName.kt | 108 ++ .../abbidot/baselibrary/constant/MMKVKey.kt | 99 ++ .../baselibrary/constant/ResultCode.kt | 21 + .../abbidot/baselibrary/eventbus/XEventBus.kt | 50 + .../baselibrary/eventbus/core/EmptyMessage.kt | 4 + .../eventbus/core/EventLiveData.kt | 16 + .../eventbus/core/EventObserverWrapper.kt | 30 + .../baselibrary/eventbus/core/LiveData.java | 495 ++++++ .../eventbus/core/MutableLiveData.java | 52 + .../baselibrary/list/BaseRecyclerAdapter.kt | 247 +++ .../baselibrary/list/RecyclerViewHolder.kt | 86 + .../network/base/BaseNetworkApi.kt | 133 ++ .../baselibrary/network/base/BaseResponse.kt | 11 + .../baselibrary/network/base/IService.kt | 4 + .../network/exception/ErrorCode.kt | 79 + .../exception/NetworkErrorCodeException.kt | 17 + .../network/exception/NetworkException.kt | 13 + .../interceptor/CommonRequestInterceptor.kt | 92 ++ .../interceptor/CommonResponseInterceptor.kt | 21 + .../interceptor/DoubleDefault0Adapter.kt | 36 + .../network/interceptor/StringNullAdapter.kt | 36 + .../com/abbidot/baselibrary/util/AppUtils.kt | 121 ++ .../com/abbidot/baselibrary/util/LogUtil.kt | 75 + .../com/abbidot/baselibrary/util/MMKVUtil.kt | 98 ++ .../com/abbidot/baselibrary/util/Utils.kt | 378 +++++ .../util/reflect/ReflectArgument.java | 46 + .../util/reflect/ReflectHelper.java | 239 +++ .../abbidot/baselibrary/util/rsa/Base64.java | 604 +++++++ .../abbidot/baselibrary/util/rsa/Digest.java | 177 +++ .../com/abbidot/baselibrary/util/rsa/RSA.java | 187 +++ .../abbidot/baselibrary/ExampleUnitTest.kt | 17 + build.gradle | 59 + easyPhotos/.gitignore | 73 + easyPhotos/build.gradle | 57 + easyPhotos/proguard-rules.pro | 25 + easyPhotos/src/main/AndroidManifest.xml | 46 + .../easyphotos/Builder/AlbumBuilder.java | 678 ++++++++ .../huantansheng/easyphotos/EasyPhotos.java | 345 ++++ .../easyphotos/callback/PuzzleCallback.java | 22 + .../easyphotos/callback/SelectCallback.java | 26 + .../easyphotos/constant/Code.java | 21 + .../huantansheng/easyphotos/constant/Key.java | 23 + .../easyphotos/constant/Type.java | 10 + .../easyphotos/engine/ImageEngine.java | 63 + .../easyphotos/models/ad/AdEntity.java | 18 + .../easyphotos/models/ad/AdListener.java | 11 + .../easyphotos/models/ad/AdViewHolder.java | 20 + .../easyphotos/models/album/AlbumModel.java | 397 +++++ .../easyphotos/models/album/entity/Album.java | 49 + .../models/album/entity/AlbumItem.java | 34 + .../easyphotos/models/album/entity/Photo.java | 114 ++ .../easyphotos/models/puzzle/Area.java | 65 + .../models/puzzle/DegreeSeekBar.java | 353 +++++ .../easyphotos/models/puzzle/Line.java | 52 + .../easyphotos/models/puzzle/MatrixUtils.java | 167 ++ .../models/puzzle/PuzzleLayout.java | 88 ++ .../easyphotos/models/puzzle/PuzzlePiece.java | 432 ++++++ .../easyphotos/models/puzzle/PuzzleUtils.java | 94 ++ .../easyphotos/models/puzzle/PuzzleView.java | 791 ++++++++++ .../models/puzzle/SquarePuzzleView.java | 32 + .../models/puzzle/slant/CrossoverPointF.java | 34 + .../models/puzzle/slant/SlantArea.java | 294 ++++ .../models/puzzle/slant/SlantLine.java | 173 +++ .../puzzle/slant/SlantPuzzleLayout.java | 334 ++++ .../models/puzzle/slant/SlantUtils.java | 482 ++++++ .../models/puzzle/straight/StraightArea.java | 231 +++ .../models/puzzle/straight/StraightLine.java | 215 +++ .../puzzle/straight/StraightPuzzleLayout.java | 359 +++++ .../models/puzzle/straight/StraightUtils.java | 236 +++ .../template/slant/NumberSlantLayout.java | 33 + .../puzzle/template/slant/OneSlantLayout.java | 36 + .../template/slant/SlantLayoutHelper.java | 70 + .../template/slant/ThreeSlantLayout.java | 48 + .../puzzle/template/slant/TwoSlantLayout.java | 30 + .../straight/EightStraightLayout.java | 89 ++ .../template/straight/FiveStraightLayout.java | 94 ++ .../template/straight/FourStraightLayout.java | 52 + .../template/straight/NineStraightLayout.java | 76 + .../straight/NumberStraightLayout.java | 31 + .../template/straight/OneStraightLayout.java | 45 + .../straight/SevenStraightLayout.java | 77 + .../template/straight/SixStraightLayout.java | 93 ++ .../straight/StraightLayoutHelper.java | 69 + .../straight/ThreeStraightLayout.java | 50 + .../template/straight/TwoStraightLayout.java | 58 + .../models/sticker/StickerModel.java | 220 +++ .../models/sticker/cache/StickerCache.java | 114 ++ .../sticker/entity/TextStickerData.java | 48 + .../listener/OnStickerClickListener.java | 16 + .../models/sticker/view/BitmapSticker.java | 441 ++++++ .../models/sticker/view/EditFragment.java | 201 +++ .../models/sticker/view/TextSticker.java | 553 +++++++ .../easyphotos/result/Result.java | 144 ++ .../easyphotos/setting/Setting.java | 123 ++ .../easyphotos/ui/EasyPhotosActivity.java | 1187 ++++++++++++++ .../easyphotos/ui/PreviewActivity.java | 503 ++++++ .../easyphotos/ui/PreviewFragment.java | 73 + .../easyphotos/ui/PuzzleActivity.java | 668 ++++++++ .../easyphotos/ui/PuzzleSelectorActivity.java | 264 ++++ .../ui/adapter/AlbumItemsAdapter.java | 182 +++ .../easyphotos/ui/adapter/PhotosAdapter.java | 306 ++++ .../ui/adapter/PreviewPhotosAdapter.java | 165 ++ .../adapter/PreviewPhotosFragmentAdapter.java | 104 ++ .../easyphotos/ui/adapter/PuzzleAdapter.java | 103 ++ .../ui/adapter/PuzzleSelectorAdapter.java | 99 ++ .../adapter/PuzzleSelectorPreviewAdapter.java | 101 ++ .../ui/adapter/TextStickerAdapter.java | 80 + .../easyphotos/ui/dialog/LoadingDialog.java | 49 + .../ui/widget/PressedImageView.java | 47 + .../easyphotos/ui/widget/PressedTextView.java | 72 + .../ui/widget/PreviewRecyclerView.java | 59 + .../easyphotos/utils/Color/ColorUtils.java | 37 + .../easyphotos/utils/String/StringUtils.java | 19 + .../easyphotos/utils/bitmap/BitmapUtils.java | 412 +++++ .../utils/bitmap/SaveBitmapCallBack.java | 17 + .../easyphotos/utils/file/FileUtils.java | 633 ++++++++ .../easyphotos/utils/media/DurationUtils.java | 54 + .../media/MediaScannerConnectionUtils.java | 36 + .../utils/permission/PermissionUtil.java | 90 ++ .../easyphotos/utils/result/EasyResult.java | 45 + .../utils/result/HolderFragment.java | 86 + .../utils/settings/SettingsUtils.java | 27 + .../utils/system/MeiZuStatusUtils.java | 229 +++ .../easyphotos/utils/system/SystemUtils.java | 272 ++++ .../easyphotos/utils/uri/UriUtils.java | 178 +++ ...log_album_items_background_easy_photos.xml | 7 + .../bg_dialog_loading_easy_photos.xml | 8 + .../res/drawable/bg_menu_done_easy_photos.xml | 8 + .../bg_second_level_menu_easy_photos.xml | 7 + .../bg_seek_bar_alpha_easy_photos.xml | 22 + .../drawable/bg_select_false_easy_photos.xml | 8 + .../bg_select_false_unable_easy_photos.xml | 8 + .../drawable/bg_select_true_easy_photos.xml | 8 + .../bg_selected_frame_easy_photos.xml | 8 + .../bg_selected_frame_puzzle_easy_photos.xml | 8 + .../bg_text_sticker_editor_easy_photos.xml | 8 + .../ic_album_item_choose_easy_photos.xml | 9 + .../ic_album_items_name_easy_photos.xml | 9 + .../drawable/ic_arrow_back_easy_photos.xml | 9 + .../drawable/ic_arrow_down_easy_photos.xml | 9 + .../res/drawable/ic_arrow_up_easy_photos.xml | 9 + .../res/drawable/ic_black_easy_photos.xml | 12 + .../main/res/drawable/ic_blue_easy_photos.xml | 12 + .../res/drawable/ic_camera_easy_photos.xml | 12 + .../res/drawable/ic_clear_easy_photos.xml | 9 + .../main/res/drawable/ic_cyan_easy_photos.xml | 12 + .../res/drawable/ic_delete_easyy_photos.xml | 9 + .../main/res/drawable/ic_edit_easy_photos.xml | 12 + .../main/res/drawable/ic_gray_easy_photos.xml | 12 + .../res/drawable/ic_green_easy_photos.xml | 12 + .../drawable/ic_notifications_easy_photos.xml | 9 + .../res/drawable/ic_orange_easy_photos.xml | 12 + .../main/res/drawable/ic_play_easy_photos.xml | 12 + .../res/drawable/ic_purple_easy_photos.xml | 12 + .../drawable/ic_puzzle_corner_easy_photos.xml | 14 + .../drawable/ic_puzzle_flip_easy_photos.xml | 23 + .../drawable/ic_puzzle_mirror_easy_photos.xml | 14 + .../ic_puzzle_padding_easy_photos.xml | 20 + .../ic_puzzle_replace_easy_photos.xml | 22 + .../drawable/ic_puzzle_rotate_easy_photos.xml | 12 + .../main/res/drawable/ic_red_easy_photos.xml | 12 + .../res/drawable/ic_selector_easy_photos.xml | 9 + .../drawable/ic_selector_true_easy_photos.xml | 9 + .../res/drawable/ic_settings_easy_photos.xml | 9 + .../res/drawable/ic_white_easy_photos.xml | 12 + .../res/drawable/ic_yelow_easy_photos.xml | 12 + .../res/drawable/progress_bar_easy_photos.xml | 20 + .../thumb_seek_bar_alpha_easy_photos.xml | 9 + .../main/res/layout/activity_easy_photos.xml | 288 ++++ .../layout/activity_preview_easy_photos.xml | 166 ++ .../layout/activity_puzzle_easy_photos.xml | 213 +++ .../activity_puzzle_selector_easy_photos.xml | 158 ++ .../res/layout/dialog_loading_easy_photos.xml | 19 + .../layout/fragment_preview_easy_photos.xml | 17 + .../fragment_text_sticker_easy_photos.xml | 208 +++ .../main/res/layout/item_ad_easy_photos.xml | 5 + .../res/layout/item_camera_easy_photos.xml | 27 + .../item_dialog_album_items_easy_photos.xml | 64 + .../layout/item_preview_photo_easy_photos.xml | 25 + ...em_preview_selected_photos_easy_photos.xml | 43 + .../res/layout/item_puzzle_easy_photos.xml | 19 + .../item_puzzle_selector_easy_photos.xml | 44 + ...em_puzzle_selector_preview_easy_photos.xml | 52 + .../res/layout/item_rv_photos_easy_photos.xml | 79 + .../layout/item_text_sticker_easy_photos.xml | 16 + .../ic_controller_easy_photos.png | Bin 0 -> 896 bytes .../mipmap-xhdpi/ic_delete_easy_photos.png | Bin 0 -> 767 bytes .../mipmap-xhdpi/ic_editor_easy_photos.png | Bin 0 -> 3538 bytes .../mipmap-xhdpi/ic_mirror_easy_photos.png | Bin 0 -> 5642 bytes .../mipmap-xhdpi/ic_rotate_easy_photos.png | Bin 0 -> 901 bytes .../ic_controller_easy_photos.png | Bin 0 -> 896 bytes .../mipmap-xxhdpi/ic_delete_easy_photos.png | Bin 0 -> 767 bytes .../mipmap-xxhdpi/ic_editor_easy_photos.png | Bin 0 -> 3538 bytes .../mipmap-xxhdpi/ic_mirror_easy_photos.png | Bin 0 -> 5642 bytes .../mipmap-xxhdpi/ic_rotate_easy_photos.png | Bin 0 -> 901 bytes easyPhotos/src/main/res/values-v19/styles.xml | 17 + easyPhotos/src/main/res/values-v21/styles.xml | 20 + .../src/main/res/values-w480dp/integers.xml | 4 + .../src/main/res/values-w640dp/integers.xml | 4 + easyPhotos/src/main/res/values/attrs.xml | 145 ++ easyPhotos/src/main/res/values/colors.xml | 45 + easyPhotos/src/main/res/values/dimens.xml | 4 + easyPhotos/src/main/res/values/integers.xml | 4 + easyPhotos/src/main/res/values/strings.xml | 78 + easyPhotos/src/main/res/values/styles.xml | 15 + easysocket/.gitignore | 1 + easysocket/build.gradle | 22 + easysocket/src/main/AndroidManifest.xml | 4 + .../java/com/easysocket/ConnectionHolder.java | 136 ++ .../main/java/com/easysocket/EasySocket.java | 335 ++++ .../callback/ProgressDialogCallBack.java | 116 ++ .../easysocket/callback/SimpleCallBack.java | 29 + .../easysocket/callback/SuperCallBack.java | 44 + .../easysocket/config/CallbackIDFactory.java | 18 + .../config/DefaultMessageProtocol.java | 28 + .../DefaultX509ProtocolTrustManager.java | 28 + .../easysocket/config/EasySocketOptions.java | 478 ++++++ .../com/easysocket/config/SocketFactory.java | 14 + .../easysocket/config/SocketSSLConfig.java | 81 + .../connection/action/IOAction.java | 11 + .../connection/action/SocketAction.java | 15 + .../connection/action/SocketStatus.java | 17 + .../connection/connect/SuperConnection.java | 340 ++++ .../connection/connect/TcpConnection.java | 141 ++ .../CallbackResponseDispatcher.java | 187 +++ .../dispatcher/MainThreadExecutor.java | 21 + .../dispatcher/SocketActionDispatcher.java | 221 +++ .../connection/heartbeat/HeartManager.java | 181 +++ .../connection/iowork/EasyReader.java | 327 ++++ .../connection/iowork/EasyWriter.java | 146 ++ .../connection/iowork/IOManager.java | 98 ++ .../connection/reconnect/AbsReconnection.java | 52 + .../reconnect/DefaultReConnection.java | 148 ++ .../com/easysocket/entity/OriginReadData.java | 58 + .../com/easysocket/entity/SocketAddress.java | 54 + .../easysocket/entity/basemsg/IResponse.java | 9 + .../easysocket/entity/basemsg/ISender.java | 11 + .../entity/basemsg/SuperCallbackResponse.java | 13 + .../entity/basemsg/SuperCallbackSender.java | 36 + .../entity/basemsg/SuperSender.java | 9 + .../easysocket/exception/InitialExeption.java | 12 + .../exception/NotNullException.java | 12 + .../exception/ReadRecoverableExeption.java | 13 + .../exception/ReadUnrecoverableException.java | 12 + .../exception/RequestCancelException.java | 13 + .../exception/RequestTimeOutException.java | 13 + .../interfaces/callback/ICallBack.java | 18 + .../interfaces/callback/IProgressDialog.java | 26 + .../easysocket/interfaces/callback/IType.java | 29 + .../callback/ProgressCancelListener.java | 24 + .../config/IConnectionSwitchListener.java | 13 + .../interfaces/config/IMessageProtocol.java | 20 + .../interfaces/config/IOptions.java | 22 + .../interfaces/conn/IConnectionManager.java | 65 + .../interfaces/conn/IHeartManager.java | 28 + .../interfaces/conn/IReconnListener.java | 20 + .../com/easysocket/interfaces/conn/ISend.java | 25 + .../conn/ISocketActionDispatch.java | 38 + .../conn/ISocketActionListener.java | 52 + .../conn/ISubscribeSocketAction.java | 20 + .../interfaces/conn/SocketActionListener.java | 57 + .../easysocket/interfaces/io/IIOManager.java | 27 + .../com/easysocket/interfaces/io/IReader.java | 32 + .../com/easysocket/interfaces/io/IWriter.java | 38 + .../java/com/easysocket/utils/LogUtil.java | 87 ++ .../main/java/com/easysocket/utils/Utils.java | 149 ++ gradle.properties | 40 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++ gradlew.bat | 84 + settings.gradle | 7 + 1862 files changed, 119528 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/AndroidProjectSystem.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/deploymentTargetSelector.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/migrations.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml create mode 100644 FastBleLib/build.gradle create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/results.bin create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager$BleManagerHolder.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$LastState.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleConnector$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleConnector.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$2.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleBaseCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleGattCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleIndicateCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleMtuChangedCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleNotifyCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleReadCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleRssiCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleScanAndConnectCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleScanCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleScanPresenterImp.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleWriteCallback.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleConnectStateParameter.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleMsg.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleScanState.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleWriteState.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/BleException.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/ConnectException.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/GattException.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/OtherException.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/TimeoutException.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$2.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$3.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$4.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$5.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$6.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$ScanHandler.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanRuleConfig$Builder.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanRuleConfig.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanner$1$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanner$1.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanner$BleScannerHolder.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanner.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/BleLog.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/BleLruHashMap.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/HexUtil.dex create mode 100644 FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin create mode 100644 FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/results.bin create mode 100644 FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/transformed/classes/classes_dex/classes.dex create mode 100644 FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/results.bin create mode 100644 FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/transformed/classes/classes_dex/classes.dex create mode 100644 FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/results.bin create mode 100644 FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/transformed/classes/classes_dex/classes.dex create mode 100644 FastBleLib/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml create mode 100644 FastBleLib/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json create mode 100644 FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml create mode 100644 FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json create mode 100644 FastBleLib/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties create mode 100644 FastBleLib/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties create mode 100644 FastBleLib/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json create mode 100644 FastBleLib/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json create mode 100644 FastBleLib/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar create mode 100644 FastBleLib/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar create mode 100644 FastBleLib/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar create mode 100644 FastBleLib/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar create mode 100644 FastBleLib/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt create mode 100644 FastBleLib/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt create mode 100644 FastBleLib/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties create mode 100644 FastBleLib/build/intermediates/incremental/debug/packageDebugResources/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeDebugAssets/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeDebugShaders/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml create mode 100644 FastBleLib/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties create mode 100644 FastBleLib/build/intermediates/incremental/release/packageReleaseResources/merger.xml create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$LastState.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleGattCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleIndicateCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleMtuChangedCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleNotifyCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleReadCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanPresenterImp.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleWriteCallback.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleDevice$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleWriteState.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/BleException.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/ConnectException.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/GattException.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$2.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$4.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$6.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$ScanHandler.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig$Builder.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$BleScannerHolder.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/utils/BleLog.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/utils/BleLruHashMap.class create mode 100644 FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$LastState.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleGattCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleIndicateCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleMtuChangedCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleNotifyCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleReadCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanPresenterImp.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleWriteCallback.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleDevice$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleWriteState.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/BleException.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/ConnectException.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/GattException.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$2.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$4.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$6.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$ScanHandler.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig$Builder.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$BleScannerHolder.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/utils/BleLog.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/utils/BleLruHashMap.class create mode 100644 FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class create mode 100644 FastBleLib/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt create mode 100644 FastBleLib/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt create mode 100644 FastBleLib/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt create mode 100644 FastBleLib/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt create mode 100644 FastBleLib/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml create mode 100644 FastBleLib/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml create mode 100644 FastBleLib/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json create mode 100644 FastBleLib/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json create mode 100644 FastBleLib/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt create mode 100644 FastBleLib/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager$BleManagerHolder.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth$LastState.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleConnector$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleConnector.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$2.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleBaseCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleGattCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleIndicateCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleMtuChangedCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleNotifyCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleReadCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleRssiCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanAndConnectCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanPresenterImp.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleWriteCallback.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleConnectStateParameter.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleDevice$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleDevice.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleMsg.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleScanState.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleWriteState.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/BleException.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/ConnectException.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/GattException.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/OtherException.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/TimeoutException.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$2.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$3.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$4.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$5.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$6.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$ScanHandler.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanRuleConfig$Builder.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanRuleConfig.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner$1$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner$1.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner$BleScannerHolder.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/utils/BleLog.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/utils/BleLruHashMap.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/utils/HexUtil.class create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar create mode 100644 FastBleLib/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar create mode 100644 FastBleLib/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt create mode 100644 FastBleLib/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt create mode 100644 FastBleLib/build/outputs/logs/manifest-merger-debug-report.txt create mode 100644 FastBleLib/build/outputs/logs/manifest-merger-release-report.txt create mode 100644 FastBleLib/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin create mode 100644 FastBleLib/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin create mode 100644 FastBleLib/proguard-rules.pro create mode 100644 FastBleLib/src/main/AndroidManifest.xml create mode 100644 FastBleLib/src/main/java/com/clj/fastble/BleManager.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleConnector.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/bluetooth/MultipleBluetoothController.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/bluetooth/SplitWriter.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleBaseCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleGattCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleIndicateCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleMtuChangedCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleNotifyCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleReadCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleRssiCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleScanAndConnectCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleScanCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleScanPresenterImp.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/callback/BleWriteCallback.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/data/BleConnectStateParameter.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/data/BleDevice.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/data/BleMsg.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/data/BleScanState.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/data/BleWriteState.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/exception/BleException.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/exception/ConnectException.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/exception/GattException.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/exception/OtherException.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/exception/TimeoutException.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/scan/BleScanPresenter.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/scan/BleScanRuleConfig.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/scan/BleScanner.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/utils/BleLog.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/utils/BleLruHashMap.java create mode 100644 FastBleLib/src/main/java/com/clj/fastble/utils/HexUtil.java create mode 100644 app/.gitignore create mode 100644 app/agconnect-services.json create mode 100644 app/build.gradle create mode 100644 app/google-services.json create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/abbidot/tracker/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/annual_protection_plan_en.html create mode 100644 app/src/main/assets/find_device.mp3 create mode 100644 app/src/main/assets/fonts/Credit.ttf create mode 100644 app/src/main/assets/fonts/DinCond_Bold.otf create mode 100644 app/src/main/assets/fonts/Roboto_Bold.ttf create mode 100644 app/src/main/assets/fonts/Roboto_Regular.ttf create mode 100644 app/src/main/assets/lottie/active_dog.json create mode 100644 app/src/main/assets/lottie/cat_and_ball.json create mode 100644 app/src/main/assets/lottie/dfu_loading.json create mode 100644 app/src/main/assets/lottie/fail_anim.json create mode 100644 app/src/main/assets/lottie/loading_dog.json create mode 100644 app/src/main/assets/lottie/logo_loader.json create mode 100644 app/src/main/assets/lottie/map_lowpower.json create mode 100644 app/src/main/assets/lottie/pic_map_lost.json create mode 100644 app/src/main/assets/lottie/pic_map_nosignal.json create mode 100644 app/src/main/assets/lottie/searching_tracker.json create mode 100644 app/src/main/assets/lottie/success_anim.json create mode 100644 app/src/main/assets/privacy_cn.html create mode 100644 app/src/main/assets/privacy_en.html create mode 100644 app/src/main/assets/subscription_terms_conditions_en.html create mode 100644 app/src/main/assets/terms_cn.html create mode 100644 app/src/main/assets/terms_en.html create mode 100644 app/src/main/java/com/abbidot/tracker/MyApplication.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/AssignOptionsAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/BaiduMapPoiSearchResultAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/ChangePetListDialogAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/CreditCardAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/DFUStateAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/DurationSetAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FamilyAvatarAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FamilyMembersAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FamilyRelationAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FeedbackImageAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FencesZoneAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/FirstPermissionsAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/GridItemDecoration.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HelpTextImageTypeAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomeAccountMenuAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceMsgAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceStateAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomePetFamilyAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/HowWorkAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/LedLightColorAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/MyTrackerV2Adapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/NotificationV2Adapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/PermissionsSetAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/PetLabelsAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/PetsBadgesAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/PetsParentBadgesAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SelectFencesTypeCardShadeAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SelectMapListDialogAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SelectMapTypeCardShadeAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SpaceItemDecoration.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/SureSubscribeSummaryAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/TextViewAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/ViewPagerAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/VirtualFencesZoneShadeAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/WiFiListAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/alipay/PayResult.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseDiffCallBack.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseQMUIRVItemSwipeAction.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseSwipeMenuAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/base/BaseView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/AlipayOrderBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/BleReportDataBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/BleTrackDeviceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/CountryCodeBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/DataBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/DeviceDetailBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/HistoryDataBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/LKSimSetMealBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/LabelBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/LiveDataBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/MapDeviceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/MessageBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/NotificationBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/OrderBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/ParentBadgeBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PayResultBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PetAllInfoBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PetBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/PointBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/ReceiveDeviceData.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/RechargeDeviceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/RechargeHistoryBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/SetMealBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/SleepTimeBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/StripeSubscriptionPriceBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/UserBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/UserInfoBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/WXPayOrderBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/WiFiBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/WiFiBleListBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/WiFiZoneBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt create mode 100644 app/src/main/java/com/abbidot/tracker/constant/ConstantInt.kt create mode 100644 app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt create mode 100644 app/src/main/java/com/abbidot/tracker/constant/GetResultCallback.kt create mode 100644 app/src/main/java/com/abbidot/tracker/constant/KeyNames.kt create mode 100644 app/src/main/java/com/abbidot/tracker/constant/MultipleEntity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/database/MyDatabase.kt create mode 100644 app/src/main/java/com/abbidot/tracker/database/dao/BaseDao.kt create mode 100644 app/src/main/java/com/abbidot/tracker/database/dao/CreditCardDao.kt create mode 100644 app/src/main/java/com/abbidot/tracker/database/dao/DeviceDao.kt create mode 100644 app/src/main/java/com/abbidot/tracker/database/dao/MessageDao.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeAmountCNAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeHistoryCNAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/adapter/SelectPaymentMethodAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/DetailActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/LoginRegisterCNActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/SwipeActionActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/data/HistoryDataActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/HomeMapNavigationActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/MapLiveActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/FencesAddActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/AddCreditCardActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodPayPalActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodStripeActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentResultActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeAmountCNActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeDeviceDetailCNActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeHistoryCNActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeOrderDetailCNActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddPetLabelsViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddTrackerDeviceViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AutomaticSubscribeViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/BraintreePalViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/ChangePasswordViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/LedLightViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/PayCNViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeAmountViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeDeviceViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeHistoryViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/StripePalViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNFinishFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNStartFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/BindPhoneCNFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNAccountFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNCodeFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNFirstFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/FencesAddBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/FencesAddGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentFailFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentSuccessFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNFinishFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNStartFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/HomeViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/LoginCNViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/MyPetsViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RegisterCNViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RoutePlanningViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/CommonDialog1.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/CommonDialog2.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/CommonListDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/DFUNewDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/DialogUtils.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/MyAlertDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/PackageUpgradeDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/PrivacyPolicyDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/SelectMapListDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/SelectMapTypeDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/SelectPetLabelDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/SetPetWeightDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderAndTimeDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/ShowYearMonthDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/dialog/TrackerDFUStateDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/diff/FeedbackImageDiffCallBack.kt create mode 100644 app/src/main/java/com/abbidot/tracker/diff/NotificationsDiffUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/diff/PaymentMethodDiffCallBack.kt create mode 100644 app/src/main/java/com/abbidot/tracker/diff/PetPropertyDiffCallBack.kt create mode 100644 app/src/main/java/com/abbidot/tracker/receiver/BluetoothMonitorReceiver.kt create mode 100644 app/src/main/java/com/abbidot/tracker/receiver/GPSMonitorReceiver.kt create mode 100644 app/src/main/java/com/abbidot/tracker/receiver/MyJPushMessageReceiver.kt create mode 100644 app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt create mode 100644 app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt create mode 100644 app/src/main/java/com/abbidot/tracker/service/DfuService.java create mode 100644 app/src/main/java/com/abbidot/tracker/service/MyJPushService.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/DebugActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/MyCropImageActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/NotificationActivity.java create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/SayHelloActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/SplashActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/WebViewActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailSuccessActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeNameActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/EmailAddressActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/ForgotPasswordV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/LoginV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/ResetPasswordSuccessActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/SignupSuccessActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/account/UserProfileActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/data/DataBoardActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreActivityActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreSleepActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/data/SharePetActivityActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker1Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker4Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker1Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/MyTrackerV2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddNoGoZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddSafeZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditNoGoZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditSafeZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/PreviewFencesZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/VirtualFencesActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LiveDurationSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/set/PowerOffActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/set/TrackingDurationSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPasswordActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone2Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpActiveTrackerActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpCreatePetFenceActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpPowerOnOffActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerBatteryActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerStatusActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/help/HowWorkActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgeDetailActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgesListActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/FamilyMembersActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/InviteFamilyActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetHeightActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetWeightActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/ShowInviteDeviceActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstPetProfileActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetHeightActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetTypeActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetWeightActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/set/AboutActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/set/AdvancedSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/set/FirstPermissionsActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/set/NotificationsSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/set/PermissionsSetActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/AddCreditCardPaymentActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/MySubscriptionActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentMethodActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionDetailActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionHistoryActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/CountryCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/MyCropImageContract.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/PermissionsActivityCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/PetProfileCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/UnitSelectDialog.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/EditWifiZoneMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/FencesMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/HistoryDataMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/HomeMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/MapLiveCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/NavigationMapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/PreviewFencesZoneCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/common/map/WifiZone2MapCommon.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2OneFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2ThreeFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/EmailValidFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2OneFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2ThereFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/demo/HomeFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/demo/MineFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/demo/RecordFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/FencesAddEditBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HistoryDataBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/MapLiveBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/PreviewFencesBaiduMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/EditWiFiZoneGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/FencesAddEditGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/GoogleBitmapHelper.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MapLiveGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MarkerInfoWindowAdapter.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/PreviewFencesGoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/WiFiZone2GoogleMapFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/CreditCardPaymentFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/PaypalPaymentFragment.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/BleReportManage.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/CoilEngine.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/FileUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/GoogleLocationUtil.java create mode 100644 app/src/main/java/com/abbidot/tracker/util/ImageUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/LonAndLatUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/NumberPickerValueFill0Format.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/SocketUtilManage.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/ThirdPartyUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/Util.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleCmdUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/AppSetViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/ConnectionDeviceViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/CountDownTimerViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/DataDetailViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/DataViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/DownLoadFileViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/FamilyViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/FeedbackViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/FencesManageViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/FencesMapViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/FindBleDeviceViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/GeoCoderViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/LogBleReportViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/LoginViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/MapLiveViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/PetInfoViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/PetRelationViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/ScreenshotsViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/SocketSendMessageViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/SubscriptionManageViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/SubscriptionPayViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/TakePhotoAndCompressViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/TrackerInfoViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/vm/WiFiZoneViewModel.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/BarChartV2View.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/BatteryView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/BrowserView.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/CircleCountDownView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/ColorPickerRectangle.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/CreditCardView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/CustomViewInterfaces.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/FencesCircleView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/FencesPolygonView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/FencesRectView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/HorizontalBarChartView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/InviteFamilyAnimateView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/LineChartView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MapMarkerInfoView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyBluetoothAnimView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyChartView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyMonthView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyRoomView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MySignalView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/MyWiFiSignalView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/NonSwipeRecyclerView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/RingChartView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/RingScaleView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/SignalRadarView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/SmallDotProgressView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/TypefaceButton.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/TypefaceRoundButton.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/TypefaceTextView.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/VerifyEditText.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/VerticalBottomToTopSeekBar.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/VerticalTopToBottomSeekBar.kt create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/DateItem.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/DateUtil.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/DayAdapter.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/DayV2Adapter.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderView.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV1.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV2.java create mode 100644 app/src/main/java/com/abbidot/tracker/widget/calender/ViewUtil.java create mode 100644 app/src/main/java/com/abbidot/tracker/wxapi/WXBaseActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt create mode 100644 app/src/main/java/com/abbidot/tracker/wxapi/WXPayEntryActivity.kt create mode 100644 app/src/main/res/drawable-v23/shape_transparent_black_bg.xml create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable-xhdpi/bg_color.png create mode 100644 app/src/main/res/drawable-xhdpi/bg_dialog.png create mode 100644 app/src/main/res/drawable-xhdpi/bg_list_my_pets.png create mode 100644 app/src/main/res/drawable-xhdpi/bg_pay_amount.png create mode 100644 app/src/main/res/drawable-xhdpi/card_pay_manager.png create mode 100644 app/src/main/res/drawable-xhdpi/gray_ico_switch_on.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_back.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_bluetooth.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_cancel.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_cancel_detail.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_center.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_color_selector.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_data_behavior.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_date.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_delete.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_done.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fance_rotate.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fance_scale1.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fance_scale2.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_feelback.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_address.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_rectangle.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_rectangle_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_round.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_round_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_fence_time.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_gou_off.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_gou_on.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_gps_no.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_help.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_history_point.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_history_point_one.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_history_track_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_history_track_active_one.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_amexcard.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_discovercard.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_maestrocard.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_mastercard.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_newcard.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_paypal.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_lay_visa_card.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_link_pet.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_list_next.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_loading_code.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_loading_user.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_loading_wechat.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_loading_wechat2.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_man.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_man_active.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_battery.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_battery_low.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_gaode.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_google.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_gps.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_light_off.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_light_on.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_navigation_go.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_map_refresh.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_off.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_on.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_pay_hot.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_pet_link.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_photo.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_recharge.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_search.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_setting.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_sw_dowm.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_sw_dowm_br.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_switch_off.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_switch_on.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_unlinked.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_wman.png create mode 100644 app/src/main/res/drawable-xhdpi/ico_wman_active.png create mode 100644 app/src/main/res/drawable-xhdpi/icon_tracker_device_small.png create mode 100644 app/src/main/res/drawable-xhdpi/map_live_start.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_alipay.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_avatar_df.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_history_location.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_map_gps_avatar.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_map_location.png create mode 100644 app/src/main/res/drawable-xhdpi/pic_wechatpay.png create mode 100644 app/src/main/res/drawable-xxhdpi/bg_color.png create mode 100644 app/src/main/res/drawable-xxhdpi/bg_dialog.png create mode 100644 app/src/main/res/drawable-xxhdpi/bg_list_my_pets.png create mode 100644 app/src/main/res/drawable-xxhdpi/bg_pay_amount.png create mode 100644 app/src/main/res/drawable-xxhdpi/card_pay_manager.png create mode 100644 app/src/main/res/drawable-xxhdpi/gray_ico_switch_on.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_back.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_bluetooth.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_cancel.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_cancel_detail.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_center.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_color_selector.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_data_behavior.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_date.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_delete.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_done.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fance_rotate.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fance_scale1.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fance_scale2.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_feelback.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_address.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_rectangle.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_rectangle_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_round.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_round_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_fence_time.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_gou_off.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_gou_on.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_gps_no.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_help.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_history_point.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_history_point_one.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_history_track_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_history_track_active_one.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_amexcard.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_discovercard.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_maestrocard.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_mastercard.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_newcard.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_paypal.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_lay_visa_card.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_link_pet.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_list_next.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_loading_code.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_loading_user.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_loading_wechat.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_loading_wechat2.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_man.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_man_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_battery.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_battery_low.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_gaode.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_google.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_gps.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_light_off.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_light_on.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_navigation_go.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_map_refresh.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_off.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_on.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_pay_hot.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_pet_link.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_photo.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_recharge.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_search.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_setting.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_sw_dowm.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_sw_dowm_br.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_switch_off.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_switch_on.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_unlinked.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_wman.png create mode 100644 app/src/main/res/drawable-xxhdpi/ico_wman_active.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_tracker_device_small.png create mode 100644 app/src/main/res/drawable-xxhdpi/map_live_start.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_alipay.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_avatar_df.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_history_location.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_map_gps_avatar.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_map_location.png create mode 100644 app/src/main/res/drawable-xxhdpi/pic_wechatpay.png create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_color.png create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_dialog.png create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_list_my_pets.png create mode 100644 app/src/main/res/drawable-xxxhdpi/bg_pay_amount.png create mode 100644 app/src/main/res/drawable-xxxhdpi/card_pay_manager.png create mode 100644 app/src/main/res/drawable-xxxhdpi/gray_ico_switch_on.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_back.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_bluetooth.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_cancel.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_cancel_detail.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_center.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_color_selector.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_data_behavior.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_date.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_delete.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_done.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fance_rotate.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fance_scale1.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fance_scale2.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_feelback.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_address.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_rectangle.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_rectangle_active.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_round.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_round_active.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_fence_time.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_gou_off.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_gou_on.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_gps_no.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_help.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_history_point.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_history_point_one.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_history_track_active.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_history_track_active_one.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_amexcard.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_discovercard.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_maestrocard.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_mastercard.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_newcard.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_paypal.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_lay_visa_card.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_link_pet.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_list_next.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_loading_code.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_loading_user.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_loading_wechat.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_loading_wechat2.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_man.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_man_active.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_battery.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_battery_low.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_gaode.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_google.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_gps.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_light_off.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_light_on.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_navigation_go.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_map_refresh.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_off.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_on.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_pay_hot.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_pet_link.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_photo.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_recharge.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_search.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_setting.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_sw_dowm.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_sw_dowm_br.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_switch_off.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_switch_on.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_unlinked.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_wman.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ico_wman_active.png create mode 100644 app/src/main/res/drawable-xxxhdpi/icon_tracker_device_small.png create mode 100644 app/src/main/res/drawable-xxxhdpi/map_live_start.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_alipay.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_avatar_df.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_history_location.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_map_gps_avatar.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_map_location.png create mode 100644 app/src/main/res/drawable-xxxhdpi/pic_wechatpay.png create mode 100644 app/src/main/res/drawable/abbidot_ico_1024.png create mode 100644 app/src/main/res/drawable/abbidot_logo_loading.png create mode 100644 app/src/main/res/drawable/active_tracker_help.png create mode 100644 app/src/main/res/drawable/battery_life_help1.png create mode 100644 app/src/main/res/drawable/battery_life_help2.png create mode 100644 app/src/main/res/drawable/battery_life_help3.png create mode 100644 app/src/main/res/drawable/battery_life_help4.png create mode 100644 app/src/main/res/drawable/battery_life_help5.png create mode 100644 app/src/main/res/drawable/bg_feedback_shape.xml create mode 100644 app/src/main/res/drawable/button_enabled_text_color.xml create mode 100644 app/src/main/res/drawable/charge_power_on.gif create mode 100644 app/src/main/res/drawable/check_box_agree_select.xml create mode 100644 app/src/main/res/drawable/check_box_icon_point_selector.xml create mode 100644 app/src/main/res/drawable/check_box_yellow_icon_selector.xml create mode 100644 app/src/main/res/drawable/create_fence_help1.png create mode 100644 app/src/main/res/drawable/create_fence_help2.png create mode 100644 app/src/main/res/drawable/create_fence_help3.png create mode 100644 app/src/main/res/drawable/create_fence_help4.png create mode 100644 app/src/main/res/drawable/credit_card_chip_yellow.xml create mode 100644 app/src/main/res/drawable/credit_card_chip_yellow_inner.xml create mode 100644 app/src/main/res/drawable/debug_ic.xml create mode 100644 app/src/main/res/drawable/front_card_bg.png create mode 100644 app/src/main/res/drawable/gif_shake_on.gif create mode 100644 app/src/main/res/drawable/help_tracker_status.png create mode 100644 app/src/main/res/drawable/home_account_selector.xml create mode 100644 app/src/main/res/drawable/home_activity_selector.xml create mode 100644 app/src/main/res/drawable/home_map_selector_v2.xml create mode 100644 app/src/main/res/drawable/home_navigation_color_selector.xml create mode 100644 app/src/main/res/drawable/home_pet_selector.xml create mode 100644 app/src/main/res/drawable/home_route_selector.xml create mode 100644 app/src/main/res/drawable/home_v2_bottom_bg.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ico_account.xml create mode 100644 app/src/main/res/drawable/ico_account_active.xml create mode 100644 app/src/main/res/drawable/ico_activity.xml create mode 100644 app/src/main/res/drawable/ico_activity_active.xml create mode 100644 app/src/main/res/drawable/ico_map_active_v2.xml create mode 100644 app/src/main/res/drawable/ico_map_v2.xml create mode 100644 app/src/main/res/drawable/ico_pet.xml create mode 100644 app/src/main/res/drawable/ico_pet_active.xml create mode 100644 app/src/main/res/drawable/ico_save_to_facebook.png create mode 100644 app/src/main/res/drawable/ico_save_to_phone.png create mode 100644 app/src/main/res/drawable/icon_1_year_hugger_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_1_year_hugger_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_2_year_companion_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_2_year_companion_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_3_year_harmony_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_3_year_harmony_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_about_svg.xml create mode 100644 app/src/main/res/drawable/icon_active_time.xml create mode 100644 app/src/main/res/drawable/icon_advanced_set_svg.xml create mode 100644 app/src/main/res/drawable/icon_back_svg.xml create mode 100644 app/src/main/res/drawable/icon_badges_unlock_bg_svg.xml create mode 100644 app/src/main/res/drawable/icon_black_back_svg.xml create mode 100644 app/src/main/res/drawable/icon_black_cir_ring.xml create mode 100644 app/src/main/res/drawable/icon_bluetooth_svg.xml create mode 100644 app/src/main/res/drawable/icon_calendar2_activity_svg.xml create mode 100644 app/src/main/res/drawable/icon_calendar2_svg.xml create mode 100644 app/src/main/res/drawable/icon_calendar_activity_svg.xml create mode 100644 app/src/main/res/drawable/icon_calendar_svg.xml create mode 100644 app/src/main/res/drawable/icon_calender_big_left_svg.xml create mode 100644 app/src/main/res/drawable/icon_calender_big_right_svg.xml create mode 100644 app/src/main/res/drawable/icon_calender_small_right_svg.xml create mode 100644 app/src/main/res/drawable/icon_calories.xml create mode 100644 app/src/main/res/drawable/icon_cat_default_head_svg.xml create mode 100644 app/src/main/res/drawable/icon_cat_height_tip_svg.xml create mode 100644 app/src/main/res/drawable/icon_cat_image_svg.xml create mode 100644 app/src/main/res/drawable/icon_cat_type_image.png create mode 100644 app/src/main/res/drawable/icon_cells_svg.xml create mode 100644 app/src/main/res/drawable/icon_cellular_network_svg.xml create mode 100644 app/src/main/res/drawable/icon_circle_ring_bg.xml create mode 100644 app/src/main/res/drawable/icon_clock.xml create mode 100644 app/src/main/res/drawable/icon_clock_active.xml create mode 100644 app/src/main/res/drawable/icon_dark_green_star_svg.xml create mode 100644 app/src/main/res/drawable/icon_database_restore_svg.xml create mode 100644 app/src/main/res/drawable/icon_date_svg.xml create mode 100644 app/src/main/res/drawable/icon_date_time_svg.xml create mode 100644 app/src/main/res/drawable/icon_day_1_devotee_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_day_1_devotee_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_delete_svg.xml create mode 100644 app/src/main/res/drawable/icon_device_battery_bg_svg.xml create mode 100644 app/src/main/res/drawable/icon_diners_club_svg.xml create mode 100644 app/src/main/res/drawable/icon_discover_card_svg.xml create mode 100644 app/src/main/res/drawable/icon_distance.xml create mode 100644 app/src/main/res/drawable/icon_dog_default_head_svg.xml create mode 100644 app/src/main/res/drawable/icon_dog_image_svg.xml create mode 100644 app/src/main/res/drawable/icon_dog_type_image.png create mode 100644 app/src/main/res/drawable/icon_drop_down_svg.xml create mode 100644 app/src/main/res/drawable/icon_edit_svg.xml create mode 100644 app/src/main/res/drawable/icon_family_boy_avatar.png create mode 100644 app/src/main/res/drawable/icon_family_girl_avatar.png create mode 100644 app/src/main/res/drawable/icon_family_invitation_bg.png create mode 100644 app/src/main/res/drawable/icon_female_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_circle_scale_red_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_circle_scale_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_circle_shape_select_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_circle_shape_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_dot_red_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_dot_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_polygon_operate_red_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_polygon_operate_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_polygon_shape_select_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_polygon_shape_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_red_rotate_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_rotate_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_shape_select_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_shape_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_zoom_red_svg.xml create mode 100644 app/src/main/res/drawable/icon_fence_rect_zoom_svg.xml create mode 100644 app/src/main/res/drawable/icon_fences_zone_gps_green_svg.xml create mode 100644 app/src/main/res/drawable/icon_fences_zone_gps_red_svg.xml create mode 100644 app/src/main/res/drawable/icon_fences_zone_gps_svg.xml create mode 100644 app/src/main/res/drawable/icon_fresh_paws_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_fresh_paws_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_furr_timer_friend_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_furr_timer_friend_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_furry_friend_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_furry_friend_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_gray_delete_svg.xml create mode 100644 app/src/main/res/drawable/icon_gray_down_arrow.xml create mode 100644 app/src/main/res/drawable/icon_gray_right_arrow.xml create mode 100644 app/src/main/res/drawable/icon_help_square_svg.xml create mode 100644 app/src/main/res/drawable/icon_hide_password_svg.xml create mode 100644 app/src/main/res/drawable/icon_history_point_activity_svg.xml create mode 100644 app/src/main/res/drawable/icon_history_point_svg.xml create mode 100644 app/src/main/res/drawable/icon_history_track_activity_svg.xml create mode 100644 app/src/main/res/drawable/icon_history_track_svg.xml create mode 100644 app/src/main/res/drawable/icon_input_check_svg.xml create mode 100644 app/src/main/res/drawable/icon_label_select_svg.xml create mode 100644 app/src/main/res/drawable/icon_light_svg.xml create mode 100644 app/src/main/res/drawable/icon_link_svg.xml create mode 100644 app/src/main/res/drawable/icon_location_svg.xml create mode 100644 app/src/main/res/drawable/icon_login_v2_bg.png create mode 100644 app/src/main/res/drawable/icon_logout_svg.xml create mode 100644 app/src/main/res/drawable/icon_lr_arrow_svg.xml create mode 100644 app/src/main/res/drawable/icon_male_svg.xml create mode 100644 app/src/main/res/drawable/icon_map_bluetooth.xml create mode 100644 app/src/main/res/drawable/icon_map_gps.xml create mode 100644 app/src/main/res/drawable/icon_map_navigation_svg.xml create mode 100644 app/src/main/res/drawable/icon_map_offline.xml create mode 100644 app/src/main/res/drawable/icon_map_online.xml create mode 100644 app/src/main/res/drawable/icon_map_satellite_type.png create mode 100644 app/src/main/res/drawable/icon_map_signal.xml create mode 100644 app/src/main/res/drawable/icon_map_signal_svg.xml create mode 100644 app/src/main/res/drawable/icon_map_standard_type.png create mode 100644 app/src/main/res/drawable/icon_map_type.xml create mode 100644 app/src/main/res/drawable/icon_map_zone.xml create mode 100644 app/src/main/res/drawable/icon_master_card_svg.xml create mode 100644 app/src/main/res/drawable/icon_measurement_units_svg.xml create mode 100644 app/src/main/res/drawable/icon_month__mate_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_month_mate_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_more_sleep_bg.png create mode 100644 app/src/main/res/drawable/icon_my_tracker_svg.xml create mode 100644 app/src/main/res/drawable/icon_newbie_navigator_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_newbie_navigator_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type1_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type1_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type2_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type2_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type3_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_no_zone_type3_svg.xml create mode 100644 app/src/main/res/drawable/icon_noti_svg.xml create mode 100644 app/src/main/res/drawable/icon_notification_svg.xml create mode 100644 app/src/main/res/drawable/icon_pair_tracker_image1.png create mode 100644 app/src/main/res/drawable/icon_pair_tracker_image2.png create mode 100644 app/src/main/res/drawable/icon_pawsome_partner_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_pawsome_partner_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_pawtential_pal_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_pawtential_pal_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_payment_credit_card_svg.xml create mode 100644 app/src/main/res/drawable/icon_payment_paypal_svg.xml create mode 100644 app/src/main/res/drawable/icon_permission_check_svg.xml create mode 100644 app/src/main/res/drawable/icon_permission_error_check_svg.xml create mode 100644 app/src/main/res/drawable/icon_permission_no_check_svg.xml create mode 100644 app/src/main/res/drawable/icon_permissions_svg.xml create mode 100644 app/src/main/res/drawable/icon_pet_fence_svg.xml create mode 100644 app/src/main/res/drawable/icon_pet_foot_svg.xml create mode 100644 app/src/main/res/drawable/icon_pet_head_edit_svg.xml create mode 100644 app/src/main/res/drawable/icon_pet_height_tip_svg.xml create mode 100644 app/src/main/res/drawable/icon_pet_share_svg.xml create mode 100644 app/src/main/res/drawable/icon_placeholder_image_svg.xml create mode 100644 app/src/main/res/drawable/icon_point_bg_svg.xml create mode 100644 app/src/main/res/drawable/icon_profile_birthday_edit_svg.xml create mode 100644 app/src/main/res/drawable/icon_purrfect_partner_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_purrfect_partner_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_red_dot.xml create mode 100644 app/src/main/res/drawable/icon_refresh.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type1_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type1_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type2_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type2_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type3_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type3_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type4_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type4_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type5_small_svg.xml create mode 100644 app/src/main/res/drawable/icon_save_zone_type5_svg.xml create mode 100644 app/src/main/res/drawable/icon_say_hi_bg.png create mode 100644 app/src/main/res/drawable/icon_selected_point_svg.xml create mode 100644 app/src/main/res/drawable/icon_share_activity_svg1.xml create mode 100644 app/src/main/res/drawable/icon_share_activity_svg2.xml create mode 100644 app/src/main/res/drawable/icon_share_svg1.xml create mode 100644 app/src/main/res/drawable/icon_share_svg2.xml create mode 100644 app/src/main/res/drawable/icon_show_password_svg.xml create mode 100644 app/src/main/res/drawable/icon_sleep_time.xml create mode 100644 app/src/main/res/drawable/icon_smart_phone_svg.xml create mode 100644 app/src/main/res/drawable/icon_socialite_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_socialite_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_sound_off_svg.xml create mode 100644 app/src/main/res/drawable/icon_sound_on_svg.xml create mode 100644 app/src/main/res/drawable/icon_store_svg.xml create mode 100644 app/src/main/res/drawable/icon_subscription_svg.xml create mode 100644 app/src/main/res/drawable/icon_tailwag_explorer_lock_svg.xml create mode 100644 app/src/main/res/drawable/icon_tailwag_explorer_unlock_svg.xml create mode 100644 app/src/main/res/drawable/icon_tip_image_svg.xml create mode 100644 app/src/main/res/drawable/icon_total_distance_svg.xml create mode 100644 app/src/main/res/drawable/icon_unselected_point_svg.xml create mode 100644 app/src/main/res/drawable/icon_upload_image_svg.xml create mode 100644 app/src/main/res/drawable/icon_user_head_svg.xml create mode 100644 app/src/main/res/drawable/icon_weighting_scale_svg.xml create mode 100644 app/src/main/res/drawable/icon_white_back_svg.xml create mode 100644 app/src/main/res/drawable/icon_white_time.xml create mode 100644 app/src/main/res/drawable/icon_wif_location_svg.xml create mode 100644 app/src/main/res/drawable/icon_wifi_zone_head_bg.png create mode 100644 app/src/main/res/drawable/icon_wifi_zone_home_type_svg.xml create mode 100644 app/src/main/res/drawable/icon_wifi_zone_office_type_svg.xml create mode 100644 app/src/main/res/drawable/icon_wifi_zone_type1_svg.xml create mode 100644 app/src/main/res/drawable/icon_wifi_zone_type2_svg.xml create mode 100644 app/src/main/res/drawable/icon_yellow_no_check_svg.xml create mode 100644 app/src/main/res/drawable/invite_family_animate_image1.png create mode 100644 app/src/main/res/drawable/invite_family_animate_image2.png create mode 100644 app/src/main/res/drawable/invite_family_animate_image3.png create mode 100644 app/src/main/res/drawable/invite_family_animate_image4.png create mode 100644 app/src/main/res/drawable/message_shape_bg.xml create mode 100644 app/src/main/res/drawable/progress_bar_progress_bg.xml create mode 100644 app/src/main/res/drawable/pwd_reset_successful_done.gif create mode 100644 app/src/main/res/drawable/qmui_s_icon_switch.xml create mode 100644 app/src/main/res/drawable/selector_button_enabled_text_color.xml create mode 100644 app/src/main/res/drawable/selector_calendar_icon_pressed1.xml create mode 100644 app/src/main/res/drawable/selector_calendar_icon_pressed2.xml create mode 100644 app/src/main/res/drawable/selector_dark_check_gray_bg.xml create mode 100644 app/src/main/res/drawable/selector_fence_circle_shape.xml create mode 100644 app/src/main/res/drawable/selector_fence_rectangle_shape.xml create mode 100644 app/src/main/res/drawable/selector_gray_icon_switch.xml create mode 100644 app/src/main/res/drawable/selector_green_yellow_btn_state.xml create mode 100644 app/src/main/res/drawable/selector_history_point_check.xml create mode 100644 app/src/main/res/drawable/selector_history_point_rb.xml create mode 100644 app/src/main/res/drawable/selector_history_track_check.xml create mode 100644 app/src/main/res/drawable/selector_history_track_rb.xml create mode 100644 app/src/main/res/drawable/selector_home_data_gray_pressed1.xml create mode 100644 app/src/main/res/drawable/selector_home_data_gray_pressed2.xml create mode 100644 app/src/main/res/drawable/selector_home_data_gray_pressed3.xml create mode 100644 app/src/main/res/drawable/selector_man_check.xml create mode 100644 app/src/main/res/drawable/selector_payment_method_check.xml create mode 100644 app/src/main/res/drawable/selector_pet_type_switch_check.xml create mode 100644 app/src/main/res/drawable/selector_shape6_gray_bg_pressed.xml create mode 100644 app/src/main/res/drawable/selector_shape8_white_bg_pressed.xml create mode 100644 app/src/main/res/drawable/selector_share_icon_pressed1.xml create mode 100644 app/src/main/res/drawable/selector_share_icon_pressed2.xml create mode 100644 app/src/main/res/drawable/selector_transparent_pressed.xml create mode 100644 app/src/main/res/drawable/selector_woman_check.xml create mode 100644 app/src/main/res/drawable/selector_yellow_check_gray_bg.xml create mode 100644 app/src/main/res/drawable/shape100_yellow_color_bg.xml create mode 100644 app/src/main/res/drawable/shape10_feedback_dashed_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape10_white_bg.xml create mode 100644 app/src/main/res/drawable/shape10_white_border_gray_bg.xml create mode 100644 app/src/main/res/drawable/shape10_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape12_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape12_gray_white_bg.xml create mode 100644 app/src/main/res/drawable/shape16_gray_color_bg.xml create mode 100644 app/src/main/res/drawable/shape16_white_color_bg.xml create mode 100644 app/src/main/res/drawable/shape20_gray_bg.xml create mode 100644 app/src/main/res/drawable/shape20_white_bg.xml create mode 100644 app/src/main/res/drawable/shape20_white_half_bottom_bg.xml create mode 100644 app/src/main/res/drawable/shape20_yellow_border_cyan_bg.xml create mode 100644 app/src/main/res/drawable/shape22_green_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape24_white_bg.xml create mode 100644 app/src/main/res/drawable/shape28_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape30_gray_white_edit.xml create mode 100644 app/src/main/res/drawable/shape30_white_edit.xml create mode 100644 app/src/main/res/drawable/shape30_white_half_bottom_bg.xml create mode 100644 app/src/main/res/drawable/shape30_white_half_bottom_shadow_bg.xml create mode 100644 app/src/main/res/drawable/shape32_black_color_bg.xml create mode 100644 app/src/main/res/drawable/shape32_white_color_bg.xml create mode 100644 app/src/main/res/drawable/shape36_drak_green_color_bg.xml create mode 100644 app/src/main/res/drawable/shape36_gray_color_bg.xml create mode 100644 app/src/main/res/drawable/shape36_green_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape40_black70_toast_bg.xml create mode 100644 app/src/main/res/drawable/shape44_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape44_gray_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape4_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape50_white_half_bottom_bg.xml create mode 100644 app/src/main/res/drawable/shape50_yellow_color_bg.xml create mode 100644 app/src/main/res/drawable/shape6_blue_half_bottom_bg.xml create mode 100644 app/src/main/res/drawable/shape6_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape6_red_bg.xml create mode 100644 app/src/main/res/drawable/shape6_yellow_half_bottom_bg.xml create mode 100644 app/src/main/res/drawable/shape8_black_bg.xml create mode 100644 app/src/main/res/drawable/shape8_dark_border_pale_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape8_dark_color_bg.xml create mode 100644 app/src/main/res/drawable/shape8_dark_gray_border_white_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape8_gray_bg.xml create mode 100644 app/src/main/res/drawable/shape8_gray_border_transparent_bg.xml create mode 100644 app/src/main/res/drawable/shape8_gray_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape8_gray_white_bg.xml create mode 100644 app/src/main/res/drawable/shape8_gray_yellow_bg.xml create mode 100644 app/src/main/res/drawable/shape8_red_border_white_bg.xml create mode 100644 app/src/main/res/drawable/shape8_white_bg.xml create mode 100644 app/src/main/res/drawable/shape8_white_gray_bg.xml create mode 100644 app/src/main/res/drawable/shape9_red_border_reddish_bg.xml create mode 100644 app/src/main/res/drawable/shape_back_ciecle.xml create mode 100644 app/src/main/res/drawable/shape_black50_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_black_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_home_route_calendar_bg.xml create mode 100644 app/src/main/res/drawable/shape_light_grey_bg.xml create mode 100644 app/src/main/res/drawable/shape_progress_bar_style.xml create mode 100644 app/src/main/res/drawable/shape_red_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_seek_bar_style.xml create mode 100644 app/src/main/res/drawable/shape_transparent_black_bg.xml create mode 100644 app/src/main/res/drawable/shape_verify_edittext_default_bg.xml create mode 100644 app/src/main/res/drawable/shape_white_alpha_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_white_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_white_cyan_gradient.xml create mode 100644 app/src/main/res/drawable/shape_white_gray_circle_bg.xml create mode 100644 app/src/main/res/drawable/shape_yellow_circle_bg.xml create mode 100644 app/src/main/res/drawable/share_default_bg_image.png create mode 100644 app/src/main/res/drawable/sign_strip.png create mode 100644 app/src/main/res/drawable/text_view_pressed.xml create mode 100644 app/src/main/res/drawable/v2_bg_color_gradient.xml create mode 100644 app/src/main/res/layout/activity_about.xml create mode 100644 app/src/main/res/layout/activity_add_credit_card.xml create mode 100644 app/src/main/res/layout/activity_add_credit_card_payment.xml create mode 100644 app/src/main/res/layout/activity_add_edit_fences_zone.xml create mode 100644 app/src/main/res/layout/activity_add_email_valid.xml create mode 100644 app/src/main/res/layout/activity_add_new_tracker1.xml create mode 100644 app/src/main/res/layout/activity_add_new_tracker2.xml create mode 100644 app/src/main/res/layout/activity_add_new_tracker3.xml create mode 100644 app/src/main/res/layout/activity_add_new_tracker4.xml create mode 100644 app/src/main/res/layout/activity_add_paired_success.xml create mode 100644 app/src/main/res/layout/activity_add_wifi_password.xml create mode 100644 app/src/main/res/layout/activity_add_wifi_power_zone1.xml create mode 100644 app/src/main/res/layout/activity_add_wifi_power_zone2.xml create mode 100644 app/src/main/res/layout/activity_add_wifi_power_zone3.xml create mode 100644 app/src/main/res/layout/activity_advanced_set.xml create mode 100644 app/src/main/res/layout/activity_badge_detail.xml create mode 100644 app/src/main/res/layout/activity_badges_list.xml create mode 100644 app/src/main/res/layout/activity_change_email_success.xml create mode 100644 app/src/main/res/layout/activity_change_name.xml create mode 100644 app/src/main/res/layout/activity_choose_plan.xml create mode 100644 app/src/main/res/layout/activity_create_account.xml create mode 100644 app/src/main/res/layout/activity_data_board.xml create mode 100644 app/src/main/res/layout/activity_debug.xml create mode 100644 app/src/main/res/layout/activity_delete_tracker1.xml create mode 100644 app/src/main/res/layout/activity_delete_tracker2.xml create mode 100644 app/src/main/res/layout/activity_detail.xml create mode 100644 app/src/main/res/layout/activity_edit_power_zone.xml create mode 100644 app/src/main/res/layout/activity_email_address.xml create mode 100644 app/src/main/res/layout/activity_family_members.xml create mode 100644 app/src/main/res/layout/activity_feedback.xml create mode 100644 app/src/main/res/layout/activity_fences_add.xml create mode 100644 app/src/main/res/layout/activity_first_measurement_units.xml create mode 100644 app/src/main/res/layout/activity_first_permissions.xml create mode 100644 app/src/main/res/layout/activity_first_pet_profile.xml create mode 100644 app/src/main/res/layout/activity_first_set_pet_height.xml create mode 100644 app/src/main/res/layout/activity_first_set_pet_type.xml create mode 100644 app/src/main/res/layout/activity_first_set_pet_weight.xml create mode 100644 app/src/main/res/layout/activity_help_active_tracker.xml create mode 100644 app/src/main/res/layout/activity_help_create_pet_fence.xml create mode 100644 app/src/main/res/layout/activity_help_power_on_off.xml create mode 100644 app/src/main/res/layout/activity_help_tracker_battery.xml create mode 100644 app/src/main/res/layout/activity_help_tracker_status.xml create mode 100644 app/src/main/res/layout/activity_history_data.xml create mode 100644 app/src/main/res/layout/activity_home_map_navigation.xml create mode 100644 app/src/main/res/layout/activity_home_v2.xml create mode 100644 app/src/main/res/layout/activity_how_work.xml create mode 100644 app/src/main/res/layout/activity_invite_family.xml create mode 100644 app/src/main/res/layout/activity_led_light.xml create mode 100644 app/src/main/res/layout/activity_live_duration_set.xml create mode 100644 app/src/main/res/layout/activity_live_v2.xml create mode 100644 app/src/main/res/layout/activity_login_register_cn.xml create mode 100644 app/src/main/res/layout/activity_login_v2.xml create mode 100644 app/src/main/res/layout/activity_map_live.xml create mode 100644 app/src/main/res/layout/activity_more_activity.xml create mode 100644 app/src/main/res/layout/activity_more_sleep.xml create mode 100644 app/src/main/res/layout/activity_my_crop_image.xml create mode 100644 app/src/main/res/layout/activity_my_subscription.xml create mode 100644 app/src/main/res/layout/activity_my_tracker_v2.xml create mode 100644 app/src/main/res/layout/activity_notification_v2.xml create mode 100644 app/src/main/res/layout/activity_notifications_set.xml create mode 100644 app/src/main/res/layout/activity_payment_method.xml create mode 100644 app/src/main/res/layout/activity_payment_result.xml create mode 100644 app/src/main/res/layout/activity_payment_success.xml create mode 100644 app/src/main/res/layout/activity_permissions_set.xml create mode 100644 app/src/main/res/layout/activity_pet_height.xml create mode 100644 app/src/main/res/layout/activity_pet_profile.xml create mode 100644 app/src/main/res/layout/activity_pet_weight.xml create mode 100644 app/src/main/res/layout/activity_power_off.xml create mode 100644 app/src/main/res/layout/activity_power_saving_set.xml create mode 100644 app/src/main/res/layout/activity_preview_fences_zone.xml create mode 100644 app/src/main/res/layout/activity_recharge_amount_cn.xml create mode 100644 app/src/main/res/layout/activity_recharge_device_detail_cn.xml create mode 100644 app/src/main/res/layout/activity_recharge_history_cn.xml create mode 100644 app/src/main/res/layout/activity_recharge_order_detail_cn.xml create mode 100644 app/src/main/res/layout/activity_request_refund.xml create mode 100644 app/src/main/res/layout/activity_reset_password_success.xml create mode 100644 app/src/main/res/layout/activity_say_hello.xml create mode 100644 app/src/main/res/layout/activity_select_payment_method.xml create mode 100644 app/src/main/res/layout/activity_share_pet_activity.xml create mode 100644 app/src/main/res/layout/activity_show_invite_device.xml create mode 100644 app/src/main/res/layout/activity_signup_success.xml create mode 100644 app/src/main/res/layout/activity_splash.xml create mode 100644 app/src/main/res/layout/activity_subscription_detail.xml create mode 100644 app/src/main/res/layout/activity_subscription_history.xml create mode 100644 app/src/main/res/layout/activity_subscription_plan.xml create mode 100644 app/src/main/res/layout/activity_sure_subscription_plan.xml create mode 100644 app/src/main/res/layout/activity_swipe_action.xml create mode 100644 app/src/main/res/layout/activity_tracking_duration_set.xml create mode 100644 app/src/main/res/layout/activity_user_profile.xml create mode 100644 app/src/main/res/layout/activity_virtual_fences.xml create mode 100644 app/src/main/res/layout/activity_web_view.xml create mode 100644 app/src/main/res/layout/dialog_calender_and_time_layout.xml create mode 100644 app/src/main/res/layout/dialog_calender_layout.xml create mode 100644 app/src/main/res/layout/dialog_common_layout.xml create mode 100644 app/src/main/res/layout/dialog_dfu_new.xml create mode 100644 app/src/main/res/layout/dialog_legal_info.xml create mode 100644 app/src/main/res/layout/dialog_list_item_layout.xml create mode 100644 app/src/main/res/layout/dialog_my_layout.xml create mode 100644 app/src/main/res/layout/dialog_package_upgrade.xml create mode 100644 app/src/main/res/layout/dialog_select_map_layout.xml create mode 100644 app/src/main/res/layout/dialog_select_map_type_layout.xml create mode 100644 app/src/main/res/layout/dialog_select_pet_label_layout.xml create mode 100644 app/src/main/res/layout/dialog_set_pet_weight_layout.xml create mode 100644 app/src/main/res/layout/dialog_tracker_dfu_list_layout.xml create mode 100644 app/src/main/res/layout/dialog_year_and_month_layout.xml create mode 100644 app/src/main/res/layout/fragment_account_v2.xml create mode 100644 app/src/main/res/layout/fragment_activity_v2.xml create mode 100644 app/src/main/res/layout/fragment_base_baidu_map.xml create mode 100644 app/src/main/res/layout/fragment_base_email_valid.xml create mode 100644 app/src/main/res/layout/fragment_bind_phone_cn.xml create mode 100644 app/src/main/res/layout/fragment_create_account_v2_one.xml create mode 100644 app/src/main/res/layout/fragment_create_account_v2_three.xml create mode 100644 app/src/main/res/layout/fragment_credit_card_payment.xml create mode 100644 app/src/main/res/layout/fragment_forget_password_cn_finish.xml create mode 100644 app/src/main/res/layout/fragment_forget_password_cn_start.xml create mode 100644 app/src/main/res/layout/fragment_forgot_password_v2_one.xml create mode 100644 app/src/main/res/layout/fragment_forgot_password_v2_there.xml create mode 100644 app/src/main/res/layout/fragment_google_map.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/layout/fragment_home_pet.xml create mode 100644 app/src/main/res/layout/fragment_home_track.xml create mode 100644 app/src/main/res/layout/fragment_login_cn_account.xml create mode 100644 app/src/main/res/layout/fragment_login_cn_code.xml create mode 100644 app/src/main/res/layout/fragment_login_cn_first.xml create mode 100644 app/src/main/res/layout/fragment_map_v2.xml create mode 100644 app/src/main/res/layout/fragment_mine.xml create mode 100644 app/src/main/res/layout/fragment_payment_fail.xml create mode 100644 app/src/main/res/layout/fragment_payment_success.xml create mode 100644 app/src/main/res/layout/fragment_paypal_payment.xml create mode 100644 app/src/main/res/layout/fragment_pet_v2.xml create mode 100644 app/src/main/res/layout/fragment_record.xml create mode 100644 app/src/main/res/layout/fragment_register_cn_finish.xml create mode 100644 app/src/main/res/layout/fragment_register_cn_start.xml create mode 100644 app/src/main/res/layout/fragment_route_v2.xml create mode 100644 app/src/main/res/layout/horizontal_calender_view.xml create mode 100644 app/src/main/res/layout/item_associated_pet.xml create mode 100644 app/src/main/res/layout/item_baidu_map_poi_result.xml create mode 100644 app/src/main/res/layout/item_bottom_sheet_add_layout.xml create mode 100644 app/src/main/res/layout/item_choose_plan_layout.xml create mode 100644 app/src/main/res/layout/item_credit_card_layout.xml create mode 100644 app/src/main/res/layout/item_duration_set_layout.xml create mode 100644 app/src/main/res/layout/item_family_member_layout.xml create mode 100644 app/src/main/res/layout/item_feedback_image.xml create mode 100644 app/src/main/res/layout/item_home_map_device_msg.xml create mode 100644 app/src/main/res/layout/item_home_map_device_state.xml create mode 100644 app/src/main/res/layout/item_home_pet_device_state.xml create mode 100644 app/src/main/res/layout/item_home_pet_family.xml create mode 100644 app/src/main/res/layout/item_home_route_notification.xml create mode 100644 app/src/main/res/layout/item_horizontal_calender_day.xml create mode 100644 app/src/main/res/layout/item_invite_family_avatar_layout.xml create mode 100644 app/src/main/res/layout/item_invite_family_relation_layout.xml create mode 100644 app/src/main/res/layout/item_led_color_select.xml create mode 100644 app/src/main/res/layout/item_map_type_layout.xml create mode 100644 app/src/main/res/layout/item_my_pet_dialog.xml create mode 100644 app/src/main/res/layout/item_my_subscription_layout.xml create mode 100644 app/src/main/res/layout/item_my_tracker_v2_layout.xml create mode 100644 app/src/main/res/layout/item_notifications_set_layout.xml create mode 100644 app/src/main/res/layout/item_payment_method_layout.xml create mode 100644 app/src/main/res/layout/item_permission_state_layout.xml create mode 100644 app/src/main/res/layout/item_pet_label_layout_v2.xml create mode 100644 app/src/main/res/layout/item_pets_badges_layout.xml create mode 100644 app/src/main/res/layout/item_pets_parent_badges_layout.xml create mode 100644 app/src/main/res/layout/item_qmui_common_item_view.xml create mode 100644 app/src/main/res/layout/item_recharge_amount.xml create mode 100644 app/src/main/res/layout/item_recharge_amount_cn.xml create mode 100644 app/src/main/res/layout/item_recharge_device.xml create mode 100644 app/src/main/res/layout/item_recharge_history_cn.xml create mode 100644 app/src/main/res/layout/item_select_map.xml create mode 100644 app/src/main/res/layout/item_select_type_card_shade_layout.xml create mode 100644 app/src/main/res/layout/item_shadow_image_view.xml create mode 100644 app/src/main/res/layout/item_subscribe_summary_layout.xml create mode 100644 app/src/main/res/layout/item_subscription_history_layout.xml create mode 100644 app/src/main/res/layout/item_subscription_plan_detail_layout.xml create mode 100644 app/src/main/res/layout/item_subscription_plan_layout.xml create mode 100644 app/src/main/res/layout/item_text_img_type.xml create mode 100644 app/src/main/res/layout/item_text_type.xml create mode 100644 app/src/main/res/layout/item_text_view.xml create mode 100644 app/src/main/res/layout/item_title_text_type.xml create mode 100644 app/src/main/res/layout/item_tracker_dfu_state.xml create mode 100644 app/src/main/res/layout/item_virtual_fences_layout.xml create mode 100644 app/src/main/res/layout/item_wifi_info_layout.xml create mode 100644 app/src/main/res/layout/item_wifi_zone_layout.xml create mode 100644 app/src/main/res/layout/layout_assign_options_list.xml create mode 100644 app/src/main/res/layout/layout_associated_custom_qmui_group_right.xml create mode 100644 app/src/main/res/layout/layout_behind_of_credit_card.xml create mode 100644 app/src/main/res/layout/layout_ble_connect_state.xml create mode 100644 app/src/main/res/layout/layout_bluetooth_find_device.xml create mode 100644 app/src/main/res/layout/layout_create_account_policy_terms.xml create mode 100644 app/src/main/res/layout/layout_credit_card_no_data.xml create mode 100644 app/src/main/res/layout/layout_data_board_item.xml create mode 100644 app/src/main/res/layout/layout_device_light_image_button.xml create mode 100644 app/src/main/res/layout/layout_device_recharge_describe.xml create mode 100644 app/src/main/res/layout/layout_device_recharge_describe_cn.xml create mode 100644 app/src/main/res/layout/layout_dfu_custom_qmui_group_right.xml create mode 100644 app/src/main/res/layout/layout_empty_view.xml create mode 100644 app/src/main/res/layout/layout_family_empty_view.xml create mode 100644 app/src/main/res/layout/layout_front_of_credit_card.xml create mode 100644 app/src/main/res/layout/layout_get_phone_code.xml create mode 100644 app/src/main/res/layout/layout_head_image_view.xml create mode 100644 app/src/main/res/layout/layout_help_image.xml create mode 100644 app/src/main/res/layout/layout_help_title1.xml create mode 100644 app/src/main/res/layout/layout_help_title2.xml create mode 100644 app/src/main/res/layout/layout_home_detail_top.xml create mode 100644 app/src/main/res/layout/layout_input_edit_view.xml create mode 100644 app/src/main/res/layout/layout_input_edit_view2.xml create mode 100644 app/src/main/res/layout/layout_list_item.xml create mode 100644 app/src/main/res/layout/layout_live_issue.xml create mode 100644 app/src/main/res/layout/layout_live_v2_data_info.xml create mode 100644 app/src/main/res/layout/layout_login_cn_policy_terms.xml create mode 100644 app/src/main/res/layout/layout_only_pull_refresh.xml create mode 100644 app/src/main/res/layout/layout_pet_gps_battery.xml create mode 100644 app/src/main/res/layout/layout_pull_refresh_and_load_more.xml create mode 100644 app/src/main/res/layout/layout_sport_data.xml create mode 100644 app/src/main/res/layout/layout_sport_time.xml create mode 100644 app/src/main/res/layout/layout_subscribe_count_down.xml create mode 100644 app/src/main/res/layout/layout_sure_subscribe_plan_addons_layout.xml create mode 100644 app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml create mode 100644 app/src/main/res/layout/layout_sure_subscribe_plan_summary_layout.xml create mode 100644 app/src/main/res/layout/layout_top_bar.xml create mode 100644 app/src/main/res/layout/layout_top_pet_data_big.xml create mode 100644 app/src/main/res/layout/layout_top_pet_data_small.xml create mode 100644 app/src/main/res/layout/layout_upload_head_edit.xml create mode 100644 app/src/main/res/layout/layout_virtual_fences_empty_view.xml create mode 100644 app/src/main/res/layout/list_item_day.xml create mode 100644 app/src/main/res/layout/mapbox_search_sdk_result_missing_feedback_layout.xml create mode 100644 app/src/main/res/layout/marker_info_contents.xml create mode 100644 app/src/main/res/layout/pop_subscription_item.xml create mode 100644 app/src/main/res/layout/qmui_common_list_item.xml create mode 100644 app/src/main/res/layout/sheet_dialog_auto_recharge.xml create mode 100644 app/src/main/res/layout/sheet_dialog_select_date.xml create mode 100644 app/src/main/res/layout/toast_my_layout.xml create mode 100644 app/src/main/res/layout/view_credit_card_layout.xml create mode 100644 app/src/main/res/menu/menu_home_bottom_nav_v2.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/logo.png create mode 100644 app/src/main/res/mipmap-xhdpi/logo_abbidot.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/logo.png create mode 100644 app/src/main/res/mipmap-xxhdpi/logo_abbidot.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/logo.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/logo_abbidot.png create mode 100644 app/src/main/res/values-de/strings.xml create mode 100644 app/src/main/res/values-land/dimens.xml create mode 100644 app/src/main/res/values-night/colors.xml create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values-w1240dp/dimens.xml create mode 100644 app/src/main/res/values-w600dp/dimens.xml create mode 100644 app/src/main/res/values-zh-rCN/strings.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/ids.xml create mode 100644 app/src/main/res/values/qmui_themes.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/file_paths.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 app/src/test/java/com/abbidot/tracker/ExampleUnitTest.kt create mode 100644 baselibrary/.gitignore create mode 100644 baselibrary/build.gradle create mode 100644 baselibrary/consumer-rules.pro create mode 100644 baselibrary/proguard-rules.pro create mode 100644 baselibrary/src/androidTest/java/com/abbidot/baselibrary/ExampleInstrumentedTest.kt create mode 100644 baselibrary/src/main/AndroidManifest.xml create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/constant/ConState.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/constant/DeviceType.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/constant/EventName.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/constant/MMKVKey.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/constant/ResultCode.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EmptyMessage.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventLiveData.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventObserverWrapper.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/LiveData.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/MutableLiveData.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/list/BaseRecyclerAdapter.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/list/RecyclerViewHolder.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseNetworkApi.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseResponse.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/base/IService.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/ErrorCode.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkErrorCodeException.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkException.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonRequestInterceptor.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonResponseInterceptor.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/DoubleDefault0Adapter.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/StringNullAdapter.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/LogUtil.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/MMKVUtil.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/Utils.kt create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectArgument.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectHelper.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Base64.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Digest.java create mode 100644 baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/RSA.java create mode 100644 baselibrary/src/test/java/com/abbidot/baselibrary/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 easyPhotos/.gitignore create mode 100644 easyPhotos/build.gradle create mode 100644 easyPhotos/proguard-rules.pro create mode 100644 easyPhotos/src/main/AndroidManifest.xml create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/Builder/AlbumBuilder.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/EasyPhotos.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/PuzzleCallback.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/SelectCallback.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Code.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Key.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Type.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/engine/ImageEngine.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdEntity.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdListener.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdViewHolder.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/AlbumModel.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Album.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/AlbumItem.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Photo.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Area.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/DegreeSeekBar.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Line.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/MatrixUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzlePiece.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleView.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/SquarePuzzleView.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/CrossoverPointF.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantArea.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantLine.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantPuzzleLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightArea.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightLine.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightPuzzleLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/NumberSlantLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/OneSlantLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/SlantLayoutHelper.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/ThreeSlantLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/TwoSlantLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/EightStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FiveStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FourStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NineStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NumberStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/OneStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SevenStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SixStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/StraightLayoutHelper.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/ThreeStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/TwoStraightLayout.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/StickerModel.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/cache/StickerCache.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/entity/TextStickerData.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/listener/OnStickerClickListener.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/BitmapSticker.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/EditFragment.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/TextSticker.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/result/Result.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/setting/Setting.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/EasyPhotosActivity.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewActivity.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewFragment.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleActivity.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleSelectorActivity.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/AlbumItemsAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PhotosAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosFragmentAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorPreviewAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/TextStickerAdapter.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/dialog/LoadingDialog.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedImageView.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedTextView.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PreviewRecyclerView.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/Color/ColorUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/String/StringUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/BitmapUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/SaveBitmapCallBack.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/file/FileUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/DurationUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/MediaScannerConnectionUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/permission/PermissionUtil.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/EasyResult.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/HolderFragment.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/settings/SettingsUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/MeiZuStatusUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/SystemUtils.java create mode 100644 easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/uri/UriUtils.java create mode 100644 easyPhotos/src/main/res/drawable/bg_dialog_album_items_background_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_dialog_loading_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_menu_done_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_second_level_menu_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_seek_bar_alpha_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_select_false_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_select_false_unable_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_select_true_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_selected_frame_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_selected_frame_puzzle_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/bg_text_sticker_editor_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_album_item_choose_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_album_items_name_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_arrow_back_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_arrow_down_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_arrow_up_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_black_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_blue_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_camera_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_clear_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_cyan_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_delete_easyy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_edit_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_gray_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_green_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_notifications_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_orange_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_play_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_purple_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_corner_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_flip_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_mirror_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_padding_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_replace_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_puzzle_rotate_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_red_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_selector_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_selector_true_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_settings_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_white_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/ic_yelow_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/progress_bar_easy_photos.xml create mode 100644 easyPhotos/src/main/res/drawable/thumb_seek_bar_alpha_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/activity_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/activity_preview_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/activity_puzzle_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/activity_puzzle_selector_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/dialog_loading_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/fragment_preview_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/fragment_text_sticker_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_ad_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_camera_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_dialog_album_items_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_preview_photo_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_preview_selected_photos_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_puzzle_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_puzzle_selector_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_puzzle_selector_preview_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_rv_photos_easy_photos.xml create mode 100644 easyPhotos/src/main/res/layout/item_text_sticker_easy_photos.xml create mode 100644 easyPhotos/src/main/res/mipmap-xhdpi/ic_controller_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xhdpi/ic_delete_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xhdpi/ic_editor_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xhdpi/ic_mirror_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xhdpi/ic_rotate_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xxhdpi/ic_controller_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xxhdpi/ic_delete_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xxhdpi/ic_editor_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xxhdpi/ic_mirror_easy_photos.png create mode 100644 easyPhotos/src/main/res/mipmap-xxhdpi/ic_rotate_easy_photos.png create mode 100644 easyPhotos/src/main/res/values-v19/styles.xml create mode 100644 easyPhotos/src/main/res/values-v21/styles.xml create mode 100644 easyPhotos/src/main/res/values-w480dp/integers.xml create mode 100644 easyPhotos/src/main/res/values-w640dp/integers.xml create mode 100644 easyPhotos/src/main/res/values/attrs.xml create mode 100644 easyPhotos/src/main/res/values/colors.xml create mode 100644 easyPhotos/src/main/res/values/dimens.xml create mode 100644 easyPhotos/src/main/res/values/integers.xml create mode 100644 easyPhotos/src/main/res/values/strings.xml create mode 100644 easyPhotos/src/main/res/values/styles.xml create mode 100644 easysocket/.gitignore create mode 100644 easysocket/build.gradle create mode 100644 easysocket/src/main/AndroidManifest.xml create mode 100644 easysocket/src/main/java/com/easysocket/ConnectionHolder.java create mode 100644 easysocket/src/main/java/com/easysocket/EasySocket.java create mode 100644 easysocket/src/main/java/com/easysocket/callback/ProgressDialogCallBack.java create mode 100644 easysocket/src/main/java/com/easysocket/callback/SimpleCallBack.java create mode 100644 easysocket/src/main/java/com/easysocket/callback/SuperCallBack.java create mode 100644 easysocket/src/main/java/com/easysocket/config/CallbackIDFactory.java create mode 100644 easysocket/src/main/java/com/easysocket/config/DefaultMessageProtocol.java create mode 100644 easysocket/src/main/java/com/easysocket/config/DefaultX509ProtocolTrustManager.java create mode 100644 easysocket/src/main/java/com/easysocket/config/EasySocketOptions.java create mode 100644 easysocket/src/main/java/com/easysocket/config/SocketFactory.java create mode 100644 easysocket/src/main/java/com/easysocket/config/SocketSSLConfig.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/action/IOAction.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/action/SocketAction.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/action/SocketStatus.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/connect/TcpConnection.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/dispatcher/MainThreadExecutor.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/dispatcher/SocketActionDispatcher.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/heartbeat/HeartManager.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/iowork/EasyReader.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/iowork/EasyWriter.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/iowork/IOManager.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/reconnect/AbsReconnection.java create mode 100644 easysocket/src/main/java/com/easysocket/connection/reconnect/DefaultReConnection.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/OriginReadData.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/SocketAddress.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/basemsg/IResponse.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/basemsg/ISender.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackResponse.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackSender.java create mode 100644 easysocket/src/main/java/com/easysocket/entity/basemsg/SuperSender.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/InitialExeption.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/NotNullException.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/ReadRecoverableExeption.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/ReadUnrecoverableException.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/RequestCancelException.java create mode 100644 easysocket/src/main/java/com/easysocket/exception/RequestTimeOutException.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/callback/ICallBack.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/callback/IProgressDialog.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/callback/IType.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/callback/ProgressCancelListener.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/config/IConnectionSwitchListener.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/config/IMessageProtocol.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/config/IOptions.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/IConnectionManager.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/IHeartManager.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/IReconnListener.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/ISend.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionDispatch.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionListener.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/ISubscribeSocketAction.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/conn/SocketActionListener.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/io/IIOManager.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/io/IReader.java create mode 100644 easysocket/src/main/java/com/easysocket/interfaces/io/IWriter.java create mode 100644 easysocket/src/main/java/com/easysocket/utils/LogUtil.java create mode 100644 easysocket/src/main/java/com/easysocket/utils/Utils.java create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1c5ab05 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..dea3418 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,22 @@ + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..74dd639 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/FastBleLib/build.gradle b/FastBleLib/build.gradle new file mode 100644 index 0000000..56a2cf3 --- /dev/null +++ b/FastBleLib/build.gradle @@ -0,0 +1,31 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 31 +// buildToolsVersion "30.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 31 + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + namespace 'com.clj.fastble' +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) +} + +task makeAAR(type: Copy) { + from('build/outputs/aar/') + into('build/aarFloder/') + include('FastBleLib-release.aar') + rename('FastBleLib-release.aar', 'FastBLE-' + '"2.4.0".aar') +} +makeAAR.dependsOn(build) diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/results.bin b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/results.bin new file mode 100644 index 0000000..7ed749e --- /dev/null +++ b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/results.bin @@ -0,0 +1 @@ +o/bundleLibRuntimeToDirDebug diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager$BleManagerHolder.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager$BleManagerHolder.dex new file mode 100644 index 0000000000000000000000000000000000000000..5b9949e845bf43c0249ec55f56b148f6a7beb161 GIT binary patch literal 1096 zcmaKs&ubG=5XWaXX|0L2u^<*HQXj=r(@kyBq$w4D)d~@*heGinFE6j@CYzU#-Go9l z6i*cddlpZ6_aZ{UqX-^*75xJ|NkP!7-`VUELFt6gzIpRz=FKiMsp#!gZvHA=|M+$7 z%H*XVzn0hD{#^O+UR_-Jl7E!?wwfer5z+Sg!Z?;t_7g{FufQ9SMlR0Jcb@`KZE469AAqT6JZ zC|gp^hNHZivnl}hA&9xX@5{F z4Rxj0(X`p?-OBHXvQ%|#Dq>Mo^tPB0c;A-mg~eqX&58~W%AG2Xwxpj`TUyoqPQw?A zLA#@8M8h>%*>c6=<%Jp1)omYdg_!*8+}!M3UOb^|yw)%$HT6pcE3= zwly|k*$MkpGIjb~!s5m_PkXz`L)&_~n>@0uy{Q8<68BOGXAeNYt?`$PMLPEg3$O94 zaa=ra9L9T|xwz-!xr=9yeL0@z&zkD@DbHX6I>&Mk+R!;a&t)>Qb8Q42rm)`=nZC}o O4o7yL1&ZwafA9yhX2(_l literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/BleManager.dex new file mode 100644 index 0000000000000000000000000000000000000000..658d6084cd5a8e592f43fb1792900d51af1ca03c GIT binary patch literal 15332 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$1.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$1.dex new file mode 100644 index 0000000000000000000000000000000000000000..36f7742b1a8d9a94c06e6fb0d7b1d4d868dc5baf GIT binary patch literal 7604 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$LastState.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth$LastState.dex new file mode 100644 index 0000000000000000000000000000000000000000..fdcad24006afbfc41806f27837306f3180b8bd01 GIT binary patch literal 2056 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleBluetooth.dex new file mode 100644 index 0000000000000000000000000000000000000000..bad76b2f930354e3ffc75050aacdff70f3fed6fa GIT binary patch literal 9892 zcma)C3vg7|dH&DcT|IZDs}-P!wPLjb^ss~^ECNV^NC=DtD}iCbAUTe&b}wkn>h7`+ zA)dyL9g`PvQ#U3yPDw(XWb7m)LnfX~+Qbtxt}|}SG_LE8lh#d|DQ!KTPScJvnRMLm zKlk377U0X}L~k?^T?1cV zM)Z52td6J=2mzhIYG4G|3mgQpz!!lp0nY&!fv*AI0A2vT3tRzy1iTDf1%3-u)Dv|B z`+*E_7WgvoW8gZ_)IhWwI0-xt{4-G5NHhq{0?z`k0>1--cMxp`62N)jCE#t~4?s2A z69P5>1{{1O5P%G^784PT-@!J|GSp2R;Kl2Yem)KJXX7-vGY>J^+?2 zC+Yx3fe4TQP63|>z6tygxC;C&@Fwsc@V`KL5M=@@fIeUga4!%A(!dGe3E*kq8Q?1L z55Ru{?*mE;kqXoSD}XMb9~cF80+YaT;1j?nfpfrDfo}sp0)7U(0sIE|Z$JqV)dKZE z3$Pa04?GB*1fB+71YQCD3HTqNtQF$`^Z{Fe31C0)0H6bhfh3Rt-Ucd($Om8=6Q&$t zS`nrZVagDu24QFk!$Ig)LKjgGK-CCE5wg7Z-mGUo41SoarDWQu zklBXqxqi01)RNhr$A%xaVcE6`LcRxiIUmcr9P)mvTpllexJ(|m2chROS)PH+K3Psd z<}z8HxAO8B^TYmmtj}2XJmy>n9w#1qeue;+S-;Ve&qB8KPdeoD4*8-({w8EQ?`4Oc z+i3gYdfGNGIpm)@Lf-A6cc@20mq9#|;pUHS9eOYoJ zeFN;nYUXqw?6+9FRdNg6ZSgjX@3DAH@)FuExt4ZFZl$nfoG%tnNUo-xl6|yGauwYx z*-yJAFQYw@Jrt2#LVG2zp?#9?qWdJTr2Ue+*ES!|_Zkm$3n(mj}Mjw;hLk~y} z(GiO?l1nKoxy<4aov_lme|_lhQ<7bDM)FengycqgOtMN(Ne{ zYZhO!^k28)&x5P1@u>!1L|ny=`bEhhdKz3uiY&JdyYv$>-biOH{v5agJFgqu2tEf6 zVAnOk%@m~1fR`iX(~?7U9vnow*gll!JLuyw-ehsW;%18*>03x|g{R|^1w9U4fs#KD zUTOJZPRV#b%}cJQFG;SW=fL(p9)!$K32=EO&Z!kLidG6KB(XX39v@M?a<5X5!cWf9 zPYLK@>Om_!NIL~R@4*4#Cu3I^wTybHS=5kEX%=nB%DLU}T@DuVQwG^1^PWTAS2?en zdn2Xt{B0CDGJ+Er2QL}wDD1q#jyDRIBW?2yX;erH?xY8izfmZ8-4Qw4;Y;0(T2u<7 zcbrs(ZA9MYEm4ND!dBV5O1yML-3s1N=E1IfVAu!S5a#PNd`u0iNHNr5t_S8e_bB`K zAk8Zxo2$s*YG6sJtGuxFQUq9!af}Rmz@?H6mG{KRa1H!aaDMV1Ie^}cjMUg36+?BS z7b_J5`NbNX`W-2?2Ys4S`(@aPa2gg|AFCGdRw}(2!HqO*l~^S?BpRqusi0JF3+@(1 z?NtbAJ5wg85NAZ}zIy^6a~D-rO&shpFwS zFwfLm%roe3YF}g73puy`4)x)l4`C&zf)J770NEXg}&kzdUuij&3s=J z>uvwLRiD)tg+AhOVf|a^+5?Vsws;%LQg6;Xh2BS7_}&np zDdE9xTtz<7Ol?^0<{acXWBTTu%!Lnf;zDNbW!#fS?|l?>H4Egl_A<`PtJ}Gk+2z$B zuU%g0BFk%XlvlRM^6a|a>Bw8Y$h>x42OM>+SY%zdI?AhDba~vv3Pq5Y-*EyWqN1JZ zUdXbCEeZZC2`!P5>~)+YZOG5>3qrmtnd8MLvgucYU%qFvU*21>r-BWY^AtRo`x)QU z%rlVldNJNyGldSr2aZ7sDAUkQ1ywoo6omaqO{tv-4Rx&y2V}TTh8+ka!5Z@8#Hhrs z)2v{gAZ&v#E`K?~Rw;9NAy}JrK8^CcT%Pc&_hYZ*c`h8a<@1u~7@r25gJ+wa_v|g& z%XvPmz3h```4`}W?`Z*d6Xt!Rc!vB+Yim13bQ`HI?!``=K47s*a%-pqX?ysr6w5^b zeQ`HDRfrH?nEAw3sL^#no}g>Us~9+W{mkkvq<9rRJr!zi!R;0Z2{Vtt3G}ec(;`ny zzRz;r37klLg6={IUcq^BHmiKgZFW}ycHgdret_G6o;m;)VCCWE8`j~i);wPn`U%>} z>y+;$Q#g~I{lopmcD&b`eO!W`;n|?jtH{UisywH#2L$&~5MyD^EspO;T>5hC2|jq? z_d3&;Dt&VaZxq!5y8`be2)P}%tHZAxb-;QlssqOtQwO^}|Kae3)m7w+Jc8r-S3%>-3nCVn>@+JuCkrWK zNI6tU*^6kr5X}}0??pui?N1<1s8XD?= z+27~QehKM{i=GuL5l1aJGeLdyB=lP4>`L$zUtG}CRF=f4l9 zE$0ma91r4Sa);DIC7Ep)Ef(ABrv>lKrk_%o&SkKj-(pNV8RzeC*sczz2y+WotI4$% zFR^%;n#>v50a7cXxpZ1LvXPmzuEk(cQZcJV znTO&=JiCdMO@makIiYV(#MaTs$1NV4*hba1?(UJX@ZQ~9 z$!jadwuHA*aN9^E612(>>hn=Om5nEjU@|J}5NjbZM#@;2#C8&4Qo@LZw*z5vg%P;J z;mI(0IOLQ`Y7T2gES-$UdNjjGW;OQK6VcL#^z29~K1i+k^l7{DJ^5yA(dXh(eUMsi zXS7YrW(TR`!%RlCL}FTt9v-BIyeZn5MZfl-@3Z}$ z?GWnJ6pkimd!mVldJbxt>~um$we@k$KqB&VE=YAYuP{(6`UYvuVr|1HXb-v&rS~s3 z&$t#h?!gcwxK{0p%=Mv`=rEqFN%&lM8=vF3L^hss%uDX*bTT0;v#^Vz)(~+|@~9Su zZ1sXdoVH^|EFML-6zqF%Yd@aNjm~JsAw5>e(RJG#6Ul7+;IV@B?d!f9t8~$}nM}N3 zd*^LyabG&_Y-DhOaZJl<+s>SM20e1IsFhO>L59Fd$Q@cfr>Ub>`dL}Ts#rumEtrvx7|T%beO00 zg9-TU8P~Hj$ymO|+z~zZXqlODEp=1n5Q%-H?89!k54)w9Bn8{0YZ6;1f=TjEIm)ma zS?ko<&8g6$QS3x3dV71xmir)AT6)NiNKwifXUbj9NWU|(77^PsXR&3@QIPxdGH15+ z&b(`T*W~pdaoDVL$m@&bg8c@Eegph0(_%4e>v8T6R15u$n*c3^a^Xs+8mNnxGgU+7 zT(hRau`o%6MbYY`5-pX|jTkz-aCTGqw7vGI8e(xBp;%DI#+xXu=|fAAcC-3JeM9~0 z7pQC>T#KTXExSQcWLVT<7#6p(rBU;^A=MIsF?lh-4XD!6NV^&k`Q)-yBM zTM89aanUJmjUSp(vq3xO^mHUXt5b!k<4XvYLpC>X^5#XZz6Y@}%s3_^lhurGe zY|p^Vh!L~um7xYJ%^W8lciW6=i;^(dXdo>!l?xVly{W&+I$mO?+_03P?*n>5cja_4gK7_X2%%@bu{| z>raIEo(xx^fly4J4|Rob(@n(_^6uU}n~do)VLEpRNi$le8~q+VoXO2*LIc@!PVWlM z#*J<*6%P%p>F)|*j%RS`N1pYo`}$V*tq+}|fzzi?p9n3uN8~pWzDwj+%^+9>E zKG?4zuhN7U!zOp#K;7E9wmOe9y0SRhSsZPz!;2~My8X%>>_VxptoKq?eVyAc6k)=a z6lnP4_dRmP{rVl^Z17qWg6kZ-+lb&X)?MJ>3J0$@u*AWc0D`C3l~crgp2j%kDe*}W6*=}-4KVDTSJeWDLWq!2w#`s*=Cl1EW_W+@XB)5 zT$kacpaS{K5@{pDpSG}kIi!gHsuSXm4MMz*-=fYmu-*BUoOVry7gn+Sh72#ZvHY$K zFSVQRw)p*y-+5PAyw>6^V19?)1D*sf;Y&_8;`YPee}5J_{?7U_Fn?Ee0nFcjKLzG@ zX@1x@Kg{0)QULqqZ`=9*Tl~AhT7dt<#s2x-oBzk<0rPir{9i8fyLR*cTq0=xH--Px z<$@f54gY>2P#}Lt%>NBgpy#r#Lv};v{B>vpLFRh!Z% zow0Ui9Y>+Ym1v(Ul}HHDDoCIRgoOAMND&B#3P|Azq(lOw3PphjsQOT#;)(ycGh@%z zk;_ECoO|v)_ndP-XU92xD>8Coj20&U`-_*}3qAPHH$MNt-6LO``2HV$*xKCo^$&mB zNVGvjTT7$O5b_D3?kY-L-wqxqL{Z2=L8L<7gY1I*BP5#WJ}Mu>;4x&lmM8{#Kp*G_ z$3Oy1ftP>^^XGOcLU|Wqx?zF=KVnZhk-H=s0ucmpPNG~jiJoBTmoT? zd>&H4i2I}@`ZT1Fy;z3nS?D2Hd0%7BUL`tduH^L)Jr|lrlt9 zkPY5SG$KEKc+L57HFsV9fkl3Y7aEU>f86#}Yz($tRs?Ny3#@5Oj*;i@ZM5CTf?C}w z>9p{&LWA@g^Z|NRS-d33Y~%^2MPT~T~*DY~e{l}6fVJc5)&=6855#=|WuhcSG2Zvc z9dDbA`!@=X_mGVHmtAiudPu?X9+Gi?PwqVPDRtx42jX51#9a);{Q=_EP;;w!_8B@m zIzZp4h}Bg#(a~a-f!tQ~^(-@HscDWhCX+&Li85*tqT1%Um5O=r>vy=y&1&=yykX zooC3s=XgairSkFLPi)gio8%ypbKsD||*7;q?vW>#04byPWP}4*~pR`O<&pK9V zcwO7nNSPrqlOZKTB9oz(jArIamXS+Xc4DGz<_db6T7#7@z@VU)(v_we%i7?|3e!2= zwzWJQ^k=eGF_A5-C$4F>vs%y-tA(=eSeCPvKt>b3lBS~vTkhuGm;6|-yS8Z>-sd%| z6$-0b_Bw~3F>^*%bM#5CE=?l`+Rr)V$u-T)>$$xig9rAQw;bcz%{}Y=qYUP=plboo zA7g9V#-86}2WD}#WCRDfe^KW*H5Rda@Sd!m4KOI%!C#{sCUyX=$@Gfm18iKQ6|EzRIih@}jvOE?x{d4lS+Y!(}O zx}fE43TdVM2!&VW3883ScP4H+`gp0N-K1)0Q<|eu7=;M%Ftb)MT0d0h`v0Lb;>|t1g%2 zq*Bx}=XM7}4VF1C^YMG^R`~YymdVG&Z}-$-D-K4m6{_C~XP0$nZt;rW947+cHs=S4|v8G`Y z-3T6Eib~aY>1w{uI@#tqy|%qQmAVz@%T70Q@l)}fz7-#g<3ipr3i8Me6|I~u8&=DC zG_7g&PAK6GsZy1p1_glgZ&^D*g(c-rnB6 z72kJLR9y7CS2C_|bUrb9a&B6>Q-RO1d_X2&~4SC?o~E_PIlX3-O(WEUxl zBHrk(+Sv&`t_~|ZHS)c77r+1cefLwypM!S+Km5+)hu?>fP{+T~`0?vmUIiO~`}^Pc z{66Jh--~0T1!TtH0U+H%H^LM}MmH8V)K|ubR;BPpAdXB|^7YL!u eJ~?kfnf>rLj0$_sgL4gg_56LqiL(v=J>q{Lr$>bV literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleConnector.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/BleConnector.dex new file mode 100644 index 0000000000000000000000000000000000000000..359f4605218589ada95c85f00687a80f22090300 GIT binary patch literal 8992 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 B(vJWD literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController$1.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController$1.dex new file mode 100644 index 0000000000000000000000000000000000000000..cb27e2692be059624d4c284cd33c37e4abae109a GIT binary patch literal 1756 zcmbW2O>7%Q6vyApuAMYZQXp%Ne=IOPID;?_fY0TnKs5C=dx_6nySIPiaySPD|;p=1B%y?OKI zz4_Rk_0;y*{Dmc&y#CWye}Dd~I#)gaQe$N5&mWfW`0GEupZPsY)FGnnwZ%yYUCzR0 zL1X&~@DPlE89{_U4N!6Wy@U2HrF5A!%TE}7o>l}{@kLS2to&>B9;4d+{2wgxv1u6Bc z_UCs-w*|2@knt?!sE*1xB;|EKDimJBI^yvmJw)PNPL7hnNSMh+#cK+49BW)llg33@ z&QcC5=XDzTM|2&&ydNbYs3Zl2^OACMOq|5|N&Fz_7JPXBUPGgk<75-mmQ%$E+C&d( zQR3~>zPzt6LKj+&VzwNEbFefhd&v*|^fJlIH4=4_b(@U3ZIiI+yzNHqiW_WJHk>4F z1gg>qx+;yLv{kths4K%pjV?aI^IA7Z{mvoxl_*T(C zgkh9AsUL-v7eY6P5PNb_W^KDE>eDCCVN0 zxBUcB%a7R1Ii3WGHIi#K9d}$;CCQ6{(@bat$B1N#P8}$(M)hVG#cIV#U~H=N@M&@; z8i#RJ^?X-dRd0|Hv=TBy><4AIPRNL1$)+tonVzRi&%vWW8~y%j^|sY;+$|M)*0SZP zZEMEjoPMCsXSN-AN_RB6O?0)KWY%pdcPr_(6Kgq*yK2U2`{At9@vY_O7H6y;_8$j} zG1a++g}H^Q^(I~I_xrc4$9rt>#39zwhP!yt^E?ETS$Vo3R&xU?6hu+C_UD(crr3LuT=P|>3pZ$k-Ki`S$H$cVVhu;9c zC)mD=N|X-eDCqZ*@wST F{{jN>RmcDU literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/MultipleBluetoothController.dex new file mode 100644 index 0000000000000000000000000000000000000000..2f616ba4382eae6d315b4f2d0ff7b5d41137b32d GIT binary patch literal 5340 zcmbtYYit}>6+ZLWwY^^3lU>Jl67PDmd3b{#Ydf!X)=d+~EqSc-Xe_rlQq{3{;%u^> z-RzEyjYZmsN2RK&P$W{R;tziS6@DP7_<=w?Dxo3}0trxrf`AH%i2NxMQbDSK@0%H~ zH+Gspx%M~b-ZST($35rXnVr0~92(kxSf02(D7Qji`PsXx`@WUQJRNnu`sJ?;f9~JE zy4x;N7Ln!Y0}&9nb%A#YJ@Pw&yNbv*(2OdAf5~eihd~`s+>-u)$QRl~a-f&PB3FS5 zumpS-co}#Fcn!D(ybgR1_#L3Ph&%}_18)F70`36~ts*;sG;kU)ffe8u@FwsB;Mc%k zfe(OI*gp;20KN#^1O5r@Fht@&64(p$0fWE@a2PlVoClr<%D^h{3h)N-b>O?eFM!_w z?*jLM_W^B-NEeUzU4^)7gz-z#5;7#D$!1sZl06ztO3;YH68}L5x0nm;t zbOS@cQ@|PE0&o>@fK}i#zjV>I7mE1&~tN3UmO>X&1np z?f|-h1ds%F11W&I*Ba95=AGjP0BM&l7$ZLju(3~H*vMl)0U64(pF+RU?+^KN={Fl? z=zqrNGX^&5WDIQVGZr@X84nx%Wn64~0QPBjuirmb*FRa;r~hj*=h5%=<)1^J@pGNn z_5tj_0RCE^bJzNeD}V@wAQKQnhCvlX`h-uP235g1;Zo$(rJZsbR6|7EKN>Q|{X{zI zQcaGzv{8R1KJ1#sV^hV;2(RSx)k&JREz=Tq*8fB&dU!}6q0$6eYXXI$Fp(^fg> zjt#ls(`P_~h+_h@0o6pi4bXegrCoB!r7eGl04bSJxKTe+~NjpbHA%e-ii0i2$l? zYM8z=a{Af_-$TkMqI!ToGyr}aN1x{{*J?X-$3f|>A~D}zRgS?1*N^`8e2Bjr$cH>$f&(+@YJx42(zkGjQx-$O@oHi47{xv zL*%JFs)i?K6J#6VV_2&shH*-y?#Fe+CULzNQeK`}qn_=3h@G}YUWD!Kpk*V8aS~N> z-Q}~QC=)_#+Y!s91kY^)ay*ePB^2xx)(rFfdFbc?H>QqiI^u2h^U#F5>vc1V>i6o& z=MVLWfwgb-Gr+p%xytOW`PmH{^jMYKu))0-)3^_8gEC>P0rx3s8Z@M26mMO?Q+kvr z_y;lDTO->DLQm?xH=oa=sUg-PSN@}F;(V@ZTtgJNdTV_eHhErnYdz_%5$oqWh=E%? zhF!Upm5*JCyd}1vABHAApW+HMsd1$j$zk4FaOJbf(`D4wcllQh(t4gm(_9@(I)3nCGN=s3 z1_q&5Rag20nmi9<9c{WY-JZN1P~rh?2E(Aj{*3y`ez^dvg_VGkf`Ml@$-*~zQCj0? zbU6_1Q4~!%t-M^&)It4EnSeSDw-hCdyL34a`i08*a4q-)Pd zzMoMp;=dQ5`cnHOI99L=&QVd1W+gmcw8o2zmQyM@S424_N>0?=DIh0W4wqdy)6Q2) zg?xH;O)OoTFkvkf=B%uA=jKWa>AB+7^kuW^%oZ((Sd*r0&RdnNq&D5HSG8_FE2EE) zoLnqAg>s#@CrY+cDHV%WW%qDa4u7<%SxIb~m^U4h0jx#0XOqODQz%v`lB+D9G^> zqEji@^I6$eC+G3T7YoHa*L$mXi%zDGS1RU8u26-Rjym=UuG<`KXQlI@{OZOD3uUun zIwk0j)=j8I{}ASwwAV?Vax8zoQOEUM+sGM{BO7GKHs#<$Y6vww^4Pf>GK@L(Yldv@ zehRgpkLjk!Psjh@U0a>Xix%>dctm9nvKT~}7IhkXavFPb8hcWi5p@QA zGoP0>Tu_L$Eh#~>T(<1IglFryM*WD3E=}Ng6)r94u2-_OVmM_jl>OXFTWzV=<^2=G z)fAa!au4tJRX`aI-H4Aq2jI|;Sd8>*YyCR{ydv3UsL-|4#LYykm z_5Sf<(Kps;F%?)T(dKap;c`5muUOTpw4o1U>#;{SFuXv)^mT=6UHa2f8@Y1L7@o4L zj%m+X62yQq5zt9<*$?hSY0-A10lc&3f+daUOq)0srQwQMJ!>sHq7oOv`Qk&-s2P@V>X~~j^M<0yUT)1 zrM%_dm|dL5ErdNVcg32!R$W}ECXYCkMXNu#P_PHgav^zS1g4I%A#9ood~vwKg(3qjmST zdm~Ym7QA#tns2_Of3q!o^QFeWw<);38s_zm!RwbIyxw!K@45WDE#$n_%InWVy#BCR zQT`ld@11sDzp<6i-$QswC7tl;Gd_KRFRy5PCKGGzj(`7;p!|074k$%`i3@&~x{dnS zNG}0pfI9elh~NGA?B{PQe*5D$A>QNnKfVj_n*+ZAuDwU_JD`&AzCZC>pyv1ads%@& qzEAMmi3&b#@mryeKJ_v-L7#r`_qGOk^67KX=kvEX9j6SxQT_*MM05TC literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$1.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$1.dex new file mode 100644 index 0000000000000000000000000000000000000000..6344f75b534db79d3b822b448eac00c2bd96c4aa GIT binary patch literal 1368 zcma)+%TE(g6o=0|T99Y42niw3jHtl?ZFxvT!HsCZ6l2s>3@*Iw4DHbAOzli75op-B z(imf0m`LKnjemd(7p`5q)V(n-bYY?<8W;Y~w2hdsVA5~Sne({!+|zrnZfv&2re^8w z*Kbc}UflTn{N=}={fnpX{#aRkc;el{v(*4miHJ7S(?=ov=ZQ)*0FCW!;5|SXkwhdz z%tHntQ;_)4HePQOqCLo71Pp>NanFbxu50W5wq$8?eq#2Vng>lAHRUeY%PPI~y?_(0S~Bpknl6 zkdi+uOPP9nJI~Di`nTUBddK#h>e+{2d1J}MLNmPmuMUc&7 z^7_8O*A3}JB$}ivF`}?EMN^>`x(3Vb5YO2~C*{7LE*h1>UGwG|>Z|vLC9i=c$MJXp zyo2+mZF*-(TBhEVu=TQI>QTpyE|g+=~Rl^ zL^g|sj>KXyYOm`TERl0b73ExvI`e+R8oeN;=;lbZF*XJG?NZRoo5-d>RiG)P-pLD( z)@!xJ#Fmy3*@9u~+MK2vo7$L$HkM4wU+j3%(GA~`spR0w3wJ!5H?jq{QgpRBuUs+4 zw4!N`i;}6$O-_$#RV)TwLQY~L9-oLOv>i&;YPBuxa6QN0gWNM>GNaGxF(k{aa`< z7}~`~>>ZSchUB2sH=xQba<@w1A(HSsipaaW>Yk!VuN8lf&0=5k9$SLE1WJv4&ijua z_T^y<`CtFe1^b)#4aYR^9NxRldxwW&AKyJ}Yu-OBIiK$!DN>K&dq`>Me6}P^$oYKk lW!QNxzNb{^JO|fJ(Bbyarh<5$i)#%w?0jyyaE{^o@h{)^^5*~m literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$2.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter$2.dex new file mode 100644 index 0000000000000000000000000000000000000000..a5db251930a8c53bc027399b105f57e358a92d38 GIT binary patch literal 2576 zcma);O>7%Q6vyB0+K%lwj`LCam8R}CCH+X^IB`=GSEwXu)l@FD!~|$1)Qvs0H(l?# zyX!PiHHr#SIdZ2$J#yirM@}HPAcVw$3qpW;$nr`?cF*}e-QAJBM=b%aDb#yYkwpZlO?=RVt!Liub6>CZ9z-16aA*oU9XF>%`o zSpN<7T`iq`+WMmoo!8k5AKps{58Bhx**}CQPou9w8<#RkS@x6JV40u^*^g5OGK^jA zlQK%fQif^2l)aReQlkS>s-#O9Bb;9Bo3qR^STBN%^Lkyd9EOa_taI)IzaET?z}|!L z937c=pmwfO?!IgXj19x)hMgnd58gp z2e3QrfOo-?8%wSd|0cQh0k*Y&I~sbClcsI@&yuo8>SB?UbEKYwD3V%)rC6lFqG4BD z$E;)=FLM^UCEUW}*7L&ijH)Qmkz(1YXUf)U=BnZOE0)NtSWV$Oj$g|xH7wJA*)@IP zj!YG3^#8dQ=-4*LvSC>(M)_K1&JuFL`IezThqpP4^|EOArem}B>2{|;NB_g~1-~ZT z4&Q^tieasp*D{7}JH8=TJ8hRO$20BfdEwWbN`Z!-;IwGl!kxDa&nwW#6UKwN7Yx^^ z3*-e}{l!&d&B$1WUCk`{F4iy5?rpZYrfF5U41K{+(>JZm#inSY2C0rjPw---EK_KC z5ye%PQQ1qRUMiAysfbEno};)?E~9)S*~!T*eX2vB?$C1``tc5Z26}g}&Kb+7dK57l z4PjTPtK4*5Vfz%@Dg*7`QqxWuF7mzr{?6m6hxTtn*j5M*oGg0PI& zMTJ71`G%l~Uo*XtNs9VTPz4J6sJuntH3KJ_!W^!ks~Z~&`I|Z)My#aI>J_oBkLmak zG)zmLlkvJ!5prOqS;bJz@W#tEQNHFi>z+RAyG=2s*G+reXqfu!RBlXP!#O~3n3JE# zW+$?F{T3BAHa2eR+fMAi{kSmqM1JO(eD-(+lhtnZ;E=MA+N7}|Wmt_VGkdz#xOy-| z$A(E!RC*_^Zf=G?j%do)5k=YL_ZIGbylDA;eZ&$k*~6{7p#5&)u{3Oa|8Z;ES+>8E z*oW_U{#N355c}SP&hK9Ky8;J(U$wuR_-*AZU=DvjX)T@a9|eoF?{^h;einaU eg<3uwH$mrh`2N!1-;OoXvh&@>!LSd1*ZmFcgTv(j literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/bluetooth/SplitWriter.dex new file mode 100644 index 0000000000000000000000000000000000000000..67fc8be77ef5a7b36938781636ba310ccf84d9d6 GIT binary patch literal 4552 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleBaseCallback.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleBaseCallback.dex new file mode 100644 index 0000000000000000000000000000000000000000..33b2d4d0f523899767dcc9e9fce243bd05d5ad07 GIT binary patch literal 1072 zcma)5J#W)s5Wd$5DTFi%RR-89v!NtzN~`9hVkkvIBB%p23u18WH;EI+39(Zps)))D zKy>KD#Ddg;1qrdRAqIpH5-S5kRds=pu}D1UkEk$l^5f@xAMc&*J5!F6OV`)v-OI^% zduw~|sQLTW^TY1LE6?tJ`SIxMXemxKAfj=7WdY>NevIf6G`61u-h})StN?LAlmKVJ zxM&l%&v2Mv1)KyHfvZ3nkiZ0Z3hV<1zzg6Icn!P--UFY2Wz@z+Xv?q7b>;xLX2Lqh zu&|F~SIZoi9d&u1Lr#{CX5{FT$QdM9E01Mt~Ce$MOy_AHPB62N7V zO6Msf=5Y_+7v$H7QDWV4Ebj(oH*C3~yYi-P+YR057CQQlPNGKHn(mmxzGZ5CSGx_} zmcuGts~P>CX4oCAsk>gomYNYJYX2NmrG*-wrP;dE(zY5MX?TCz?s-GYX;n$oNvYQ; z*^*vZhZ4~5$O+B0gTfT+;wkB#iGa=#&FOTrw5xLK(lOPFYRa*iQ_41OEGMrIEVZ({l2do&&_yD0N`+#vP%NpBX?;4K z?yCR)_DC)_)>dVyyozj6Fe!>q=*eFEAST4IBE%{13i<~O2hSG^ex)zW(XR1)Mf=8c z#5(UB&j|Z?@7NaY9y90j{)xrF$2%Acb)H9oS>#;a2?chp#XCySVG3p#F|706{{aE8 Bsqp{+ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleGattCallback.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleGattCallback.dex new file mode 100644 index 0000000000000000000000000000000000000000..3ccb93a947f16150e7489b9e8a41c2e39b40398d GIT binary patch literal 1188 zcmah}&ubGw6n>LzYHV$-MNu!M?m<-A#+X8DQv}=iqYx-q$)O-J*_}4qZgxX<5(350 zfJYB{^X8>Dr63;EoA~48MZ}{QL7@ka{sDe(J6n_@zT}(t=FNL==1t~{t2+G`3)8gr z?NRH_gC)`XSUWjZ+WB<)*67faS4(HNEusbybt+RMP_g_>6Pj~0AaKXB+>`t zlpw;FZeo~2P7Qh+cm})$J^(*}Y>KD=+y#2TQ(y;p0lWs@0Pld$z<1ymV4>as5CNDH zRD6aEH1B-~$O3%6L8IBnG61lBAA9#3`yuQj#(oT&>#=ZOEEaYdinXAlu};%)tci{p zEfAdKp#*)!NI3yEyvDZrm9dJz6c>CtOz|&Xg_`I)fNUay7 z?^mU>F}W_=lEfm7mSx~JL(k30APBY8UKr$V%jTNWR~ufD&g`#O{g%>UsB5|T#NvuY zI{&|rWYZ#DC_7<2=lJWnRT=53uX2t#5Q_eFz#@$uh;^lw99L3p&rwA>cOXJ_9My3|j4WOEa4`->eE;d)9VU#~!!QY{T>8JDsS9u8J3`tu-vwWHjN_l(P}F z>XALGn=LhN*S%muHavUw($u)!R?P@M26AR5^ZCjAjD3&hy4~)keW2}sULukU)73(L z`m%#;5@N&x6@?{wTh?wW)ytCj19&(5&Yt5@eKBtj(^&Z3vhX?!>x9S5p@hqv#_x~$ zobZXc%)H_p=Cc^vvzgOrV{fq^@0#!g H{9p4M*%;-T literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleIndicateCallback.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleIndicateCallback.dex new file mode 100644 index 0000000000000000000000000000000000000000..3a4fe854673dc491b1f9bea48120c85b40cdb1b1 GIT binary patch literal 916 zcmaJ=ziSjh6n?vR#uzoIjloI=g&_B9HJbYoqmj>DVgeZ z>H8z8b{ji#PtuJI6;7JU-)U~iBpvy>smk>x_6%h5H@`=X|K|Q%zemd_^7T~dDD}dC zi{Ces9$7=OhZ|%+8PMf0SRcz+s#M2bl6nfWU|YL%F$_$L2h#JiSkF?AGo^Hr&{m$` zYwrs_pblKo6|SC&n!q6=&zIb~J_%i2ER3>kERAJSS7WVqlWdZRZW?F0CMI4`mysvB zH&<$6Psa&1Vo$r_I1Q&Qo>D*0^L=sRfU_UZysi1*Jua~7bZ)m=cTfR$RIv^Zsz!pF*kfgQg=8EAtWy2nndol>SwkjKGOBuwL3{*yGQsuwBlZQ0v#sou+4CRNG z=d%36Y|{H12@*AP;clf@y$uaKq^@nhoZ8p*?HSSl#2gQZ>}@$`-sNXL y>)*`7yvFa%{$;N*hdr##|Ebx>xwK|)Xz&GVvHx_evp)NrP;*NBgdVPs(fAt^BCS9G literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleNotifyCallback.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/callback/BleNotifyCallback.dex new file mode 100644 index 0000000000000000000000000000000000000000..2eb9c42b1eb50a1cded03f360958683da432f3bb GIT binary patch literal 908 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice$1.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice$1.dex new file mode 100644 index 0000000000000000000000000000000000000000..13b1c79b223219402a9a1be2e6aa5a1d3dad5f57 GIT binary patch literal 1572 zcma)+L2ukt5Xa|vy=mBlZJHEqP(r$x6#^+)lh#tAY*ZDRR%*3XfudZ><*og)apJXC zws#3stjYzc5*)Z8#DyXuz5xRD!ifVC2Tpteq#i241##iP|L^XWLnDPJ{oah{&CHwk zY)@d0Dz9DGkd66U-ud+prbPN8ayGS z{aNr3z)hAFrtvrh8Q__wFEQ=gA`c)BERhrp!N=ep_!N8wz5zdhhhVlO(gbgV6nqZ8 z13!abz^~vhP(j`rconRH3t$WEfa~Bb@I8QQQ6uYm22{Wdm<2pT6`TfhfCpUwIHn*} z-bFps8AqKyjORE5sMAhg<_yLBl`NC!oUZFb?yJVqI)W^^M5vm|^If z=7An+QP;$3leR3hbsVHg7`RF1zNu5+L@hb@v{82=)3}@(ohRvu4%_0i{iNsm(Sf_C zvmCK*pmXg$siU#plKKfgEo2FFGz<@29mh$o^Dv3sE3qFXSr~UOM>@+|vT}^iwKz8E zc)fAV`VEusCjm~YdnPw2vb=DN*R8M{>wJ)!mdv+#Z*HXHu6wg{VEnu#YFDh?w!C=z z#A7VnJ|=ud`@YGttC8+zGUxMV&DAvNJ$?sbg|XN%>XS0(Or~S=-s@?q-xoUzKY)3t zqk)mV(P(G$j?>Zpp@{=$%L&Ypv+CgX`(aev*jg_MOtH`zbg{Irvo(L;_=nk`mpNN` zIxwqFFO1i8KXkUvd#lb6SAwfX%w}_ay}7>Wd??;%G`jOY-YSB0M|XT3WVir)$%-N)4Z_vgPhw`&(P72PO4m{m+t8zft+b z<~RMvxTpLBY2inzfbH>r$#0*7(u0lv3nlvt2je*?Cw-K@lU_RMRqUrsIq9YR;~2w! zs_Ku|*i%c;xyL0WQD{z#FZu=S%+H={L#Gex7U;~wK2m}|_hx-lV>^2cn;d=E>;DDF Ca}?|V literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleDevice.dex new file mode 100644 index 0000000000000000000000000000000000000000..896a76890cec4eabca6af02d0fefb13368593d11 GIT binary patch literal 3200 zcmai%U2GIp6vxkf`cPVH=zNSk-#J1b=S-KT$3yHuA+LoHOfiT@2%E0c-x-+dH z+Mpo@Q4@U9s3FD>B{6CwJ`h79F}#>)q6QNm`T&U!KJ>wuK4@Z$|8r-yEJ(sFzxkhg z?wNbf{g~OIXr7FBZrVmI^ZJG_JFgu1Yy^N0H3(z@M(Om%^^y ztHb6Tc&=O`q{%!Z$h#!EufSx#y#sv-2Dp?OvFOPKF<1%&ra)zP9Ot57ku7%OrF;?`sOpqd3R$~SZ#hN zWOUPAu`k^>mV4oz{aDVK%d5d$hICCnW9(&KgP+f11}CDD=BLC0N#x_N!g;jgAKLiI z8y5m?Vf^vEZ=->qr8{los!F4ZLSveSI8F9~_Z8y!>~frfCr81I`1whYt%tBn37lkw z#&w>lBJ1P23R{I8r%|2bHP{U_hV1>^a64T_zr4qOR=kG1J4Bxc{!yVI`i}prg?Lr^ zxqmKS2mUd^z4Lp+Z@CUXzk7I}?ammf+OUqi^f1~7IV(K^i&xa{jFKvn^epZl1#Q3p zdnvh3tV+`W^c2o7UoH5vAT8D;d)sM=wr1A+ZhD zvgpONRmrp_$54y{*t-NoVE&P$8lrYpvb`B?!MszgCzEl*h?Z$NjLl7md=ibs}rnw&NL|<=ELFYtlBnsj8WyMR{J9 zY{{@EvjZi=b#qAQ9#`HmiYBJgRM&7|;<#Dx?)D9NRm+~t(XzTY-`787m1GxUgp`pz zU@yp%I+EW*AzbpPkM~p9s8me5NT~uZpV@!PGyAGl;}oTfrdz056Xt+pd#3HVq`~7+ zxG49QLPtx+q)YKh)9Wi1tETHx61JR?pFYJ<_qUS5F!!0Kq&{sFD1!QaqijlJ&~+_p zglDK=*n?)lsTOGws>4Dx9uDd5yzUPhz=2YBcdlY3O z@7R-+WXnHFd}>Im^5Ajz&d4!$A?pZCKRFn611&=Jo}rT7-N{Bh$KMDFO&d7ZlzgFT z)vs?<);YPDv}ATEY1XCJC>_I&@1mnKGrPJ^XC{oo32a)XCsQ;}X4*11wH2!*Pg;A~ zDVnljVrmji#|*c6aHq;{rpK#JnQfV}Ww#p@E7P-ab6aNGthzX&xTm|LtE;1{ zJM%JaoSB(9{h+5Ihg-I9>e^~<*~0fIQSrnIwYjl5-K+{tYoujD@&6jmozc$4#VcpD z%kp|7F3z6O=He-FAu7bJh!EGH@5Y3<0WQJ*3%)uyj1{2t?W{x;|L8ULp8_c_1w_`Sy8=&UV(ztiz*m;GEvu+aVZTd>u@ u=I;lA4mlnE&QRdzvG{vlgUw^hTmzfGKUBoCpK}cde*QM$#MsaOkN6MmUiW1H literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleMsg.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleMsg.dex new file mode 100644 index 0000000000000000000000000000000000000000..5696358ae876349fefc6f898e81948d2c7032bb3 GIT binary patch literal 2256 zcmb`J&2Jk;7{g(PWdfq3yb*1d=#T0*z8Ya_ntbaGc^@I}{078++q!Vmnd1 z4nY-GIaGWcK}bDU}F^3?taJ2++}w0lf~!%+_^Nd{Lv5Zy}5e!kNscGFWM&tZa+A|*bZZCKQli75yuR? z1+>U-1=j+M;g99<6(S$n0(}c#3P^?Fm1c03|ehAEITqVcALp=MupKYd`QEX!=l5mk$^4hLnTsM<2@ z?24UkN)uH#g=CVbdM#xhn*&kxk$_AXPvo{s;aqVuyx~;*^`aZjJH8W^vwMXNBxr)e zMWt>aCL>0i^;4>Fs8b{Nz_N@~#*7&j6ZJIgbPT3)8_&z(DjTk> zvYRfIGSszMFP&PkXfhi&=n70sLj4(11BvqL-l2K1t|d%6E9W3-ykxULhV^>oyq9x) zH(T)?zgl5E2gaULth%hDljC-p$3;xz(v zA_HBo?s|}ZnU7jj!=Uow4uNDxx z;Z&w_H{9G-rCO@!i~eraozzQSdCJ-G^u^ivNqx`VtsoIO3)7LvbYww)orP<)+D-jG z|BtBu%u^A^xtvErh~9pqf&byd-nhl@w}!OGwI{S`Ev(IG5p7nR(w3?0p8AAcq`|;ji>mFJjfYe=MJA^wARp3e;kz0Kr5vh?6G*+l1tBh#-~gf*Bu<==I3O+vq)Hq(aH&wKkmvy<{(tOyY@D+o*10AZds^Zi+kso&gKsMerJ^f!D#C;1akD zu7Hohci=WKvBp902q=I>a2~9I0JOmy-~;dp_#Auzz5-u^Z^8HAC-4hcjEKbG-vGD| z>;nmKKiCf#@Ii10&~CRdHpVpwpBO)uku=)O0aBw2=dsW70AM=@o1tENv}ez?Sd`8f zrIG`>uVhe5k;7WX^qvYC##FSUI@k0gt@}!{TE^rkWCVW*5w)T9am*Ul;)sT6fd+lNmV zV9gzT)CsK7&D8+b;km3&MDZJZ$uv2pGBilQ;RFT~H$D`ar4ut_+HamWW3+JclT z?(ZO$TbeDuP^?HSx9K!GUR$h@(xXe#H{&+^zz@$zbfznfGX>fIWW%etPEZM*&>LTM zHXTtVQDrg8WiiXBj+Nb3Gw(K5^UF>xC<=+H=l^)AT}bqg{}P{>Q4~*8?Z)YDBXC#dJ=8crKCl6zFepws-XW=2wb zY!<7lo*NearK^M+eo!w+f92flx#Fv(`EpSb-F9Vec448k@U*BUF_+3Eu~3yHcm7^t z9&lXOYqy_jIQ6zf+(s+##By6TPhxd1oMXcZ5W7TJ!$cp4#I#skmT2#ImbbU(r!Lx6 z$6fP+nmujTye)gwM%LH;hEC;J6N~AAYNw8&6{kJsu6XWRyVGpj)8R(P8?~E$Fy^fL z_Vi;XM(s`H8)twyQ{$79Q=4D4RX_e7E zGbc&>ThN%9OvW(Pk+d2zv^0m3Ljyw*Q$>`#pH=VeC}JA&cJ_v)uI^aZBI>Oj>t@7= zzhkNR50wvmXdG~uCE{?HK{ti9w;VsA{l_=dC+m$)=`3BH- z_Z{FJ;Vs{N3pk(e0k`1ygl_`3;yQd6RJPma+hC$iJAQiV-4uJ7vByGZR#0^ Zpv`so?J{A{z3FSTr{{N#j?;#3*5Bdv5hMTr literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleWriteState.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/data/BleWriteState.dex new file mode 100644 index 0000000000000000000000000000000000000000..975e19c4816630d6fb788484ac0d9930efbcdb58 GIT binary patch literal 708 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/GattException.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/GattException.dex new file mode 100644 index 0000000000000000000000000000000000000000..c3179cf04fffb845a5c0931a1153ca6d1272475a GIT binary patch literal 1324 zcma)6&1(};5TCaj`59ht|AtarfCbtMm>~@1OsXdfgZP;*L2%tvu-vewlq{K zh|pt?J%|V*9{dN2dg#GJZ+Z~C_TWJT!Gi}6{${fqDS|lJ-_E>w^YteCrX-tvlhaq| z<)`%rldY4x{kMBZ$6tIt+Wq1_d1k)aOr9Zfh^SedNr3sZ7aGdFbEnANP=n^Dx~H4#aVoR>Alj zOE3)cu-*>z3n-4`s(xieF7y|%){)PN^T|hrO19R6Q$%TD44zuIFOQ0I9epj%=ZcEZ z&W>}RqsSP6p7U=aF86(iBq9oOCQ-9ky1?B^h{0G2JVxg!CWhnhs27@M3g-Sd5^|1% zFd&t>u35I_-Jp?MhUaNFo2GO;t7dC=Otay-vNWbqg10(56KlqX(Khesw#u+r^bD_2 zzfK}gqCiR^4;1Kf!K_u&W@RnCV${9micHHeM|!RzJ0Ws3{twGj733&U;3Co$!!D;6 zJ=e0!IU4y(H`lN#CF$l!6iF%ONiF6J)MYr1v`f_Yr(_x^OOG?OPe23pQ_CK&*3Lo7 zwni(h)_itLUpCBjgwbd9l5FZp9fx$RiovZ*Rcj^bZ!9;;*jhE}DRWht>-9#puFraI zLnigAWv2|s(r2e;lKO^p>u`imb|RCR$Yk|x%C%apE&ab+0^jLuW@YNCF$HH5_|_EV z;ZEczqKc2I5Qo55{@?k2F@@hd^Kj1aHxbSnwhiYEUj??~nZtK8oI7mGdY(N(Yu|02 gKWZTJoe{Vf9E0zK#A`9zS}*S}}5VVP&%Z;rg&^8f$< literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/OtherException.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/exception/OtherException.dex new file mode 100644 index 0000000000000000000000000000000000000000..d07a739810a939ea702a2902cdb1b410466548d0 GIT binary patch literal 792 zcma)4F>BjE6n>K2q{JbFWJya0b5kg`6(vsVIH5yG27{r6f+5{x>1 zOP97|#zMD1hC+uxmJS`ebT9ND^ba(Id{34jSxO&#+`I3-clV_CxpFeMw(*#XAAc8~ z-GA4-I{EWgD~`{~r(f==gZJYVgD4=PNxQa$C5^W_(L6Hd?*N|wQ1lhZgZDoG4fq8- z0C9=63gQv41vtP5;4^RzTmavI@4!!B3pH5MyU_*}fEi#m%S$-Co8_y>S<9hk8TY_k z&U3FEFZlprK*{&6K*0AdQ> zwaI8VTco#JRCHzJgerZTx=FHEKNcO^Ig-9B8p4$mQ5I-6P@c{0RR%*>rU#u-4@Z4F zsyKb=97Ur+BpPuzl4UVae#H)yXsp-DVl2Z5g{Y}lEvstP#VguLlH^$Y|EHl?Zdx0) zP0K|!4@G~O~v(K30oIS>~;~MsvR+{GQH6zP;zS`nc VUqY^f=Qr7llxb2=K*JRK`x5L(5XUD?Tct{o7NOWneDKgicC#-P!>;sD6)Y@xQ1<2_n>@Qsn`A>?N}x0< z9(%Dzq0ob0z@rC0fEQ22BEEbD&wCO4PhLbk2oC&s=9&4=UU^!(xR?5B21B?^fs8*Z-PDD2f7(G_?cUjU~7A$kjH zlwH&p!+Y_3e#W!9%6~eno*SR_uJJ7DedF2jop+97?DM|yoVkW~PSHxA_fD;Rp0{$X WjBD`c5a<59msDwr9jP?D>%Rat8J<-D literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$1.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$1.dex new file mode 100644 index 0000000000000000000000000000000000000000..a6cad62fcd6f784d85b03ff12206a66455a431ba GIT binary patch literal 1380 zcma)+&rcIU6vyB0wiQvKR(=>#Nm(0(1X{|ENT~6kfHBseU@vf)?hft3c3QjJriwNk zjNzu9yqKteg&r^_o;-Tw$i+ktp1pYR`<6D*$iZnp``)~H@6DUpov~%Jdvf{$#pu`W z%l9wdjyB(&{ScoX{J#JF$;VIiMx;X|ArVG1 zkoeOY9^c^b2y!2M1wTLt&gZ}#@DRKPAHi1;g8yld0vRw1=D}5P53GU$aKU}>0PKKg z;3vSJP-aj^1o8;z0!IPYd<-0K!!~Xw0P9~+TTffxgRWs!{pdrbfk5hk&iy{Xy=YsW zg5+l_>c8yDWlN~rHR(y^%UWtfGz2AbR;8S_ z+>P|Q@ce=+)3)$M8qN!{;aDl)$!RNz0R-&ykVO<>;8OEa`bmt|)qRyd;$E%Dd95 zyFP^!rlv4IJ?g5cT(C`K)ar^Ne#!BYlXRjX+$547Y%zt=txH;OwHD^K%!05srLxU= z)0Rzh+{F8-I&QE>6Xl96gMmW5h@q13CajXQHobb;Gw1zUU5=Y&M@@*TW6n>_jGGPY z0X7#gbE!-wm6)=1mVXPgUXpEuBd1A>?X!2kdN literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$2.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$2.dex new file mode 100644 index 0000000000000000000000000000000000000000..0d1b5c0dba232b8a2122449cbbf1fee579356a54 GIT binary patch literal 1372 zcma)+&ubGw6vy9eeyFX+Sgoj(QrDs=X_LklYgZJt3WccELN9u7vO6Z*Y$h?Y39+Ry zhu*vhf{Gycr-%o=C|*1Wdh#fE_aNf;Z5mM&al&Wb%$xUSUf#|;Pqhbf$4}6k*cv^| zeO-OEzA*gu>zzd9*vyCT-PV^I38Fd?wU?)dAfom-PP88*)(?Pp04n+h1jwLELQX^S z+(Y+1MzjI>348{^f)6+hu7XwY6ubbRz*g9gfIOH1C&5K<6I6i#tKcrU2OfYYz(ODp zQ9KAeien4pR z$x5wjp$z?+&R)=NP&2+RT~cAW<~cO_7o!CY|MP(~#-Z`QtoM8uWkXgKG6Ach0%s!| zNL|WaDXu6tbZE~nx@%3XB~s&%SSD+^K!ehCl`$6sSu(WGtu-3(>E-LJ_AaY-xD={7 z4VF~6piL;Xt0=B<9woRp6l*j!4VbW2FGN|SWLWmic#aY+88j8$>U8F3*X*KnD@uFz zob9Q$ow4z$>V6RAVxn5}RJ2fRmatToX2LBiw_=)AW6y<+rpnk=Ur)%oZ_nkYGj#x#k`s+=8AB(l2&R&%%{6FG$KZ=xY&EZ zvJzG*PP;})2toJ9sN0Qi#DsVjz^XPq*>-4TrmsU%?jm37X-20^9^O@Cv*KTc8>Kec&XR0H?uOa2Y7D3Vcul_rW9Z z9J~ZA$Pa=bqCDb|dq6X20i5$*u&)l=xU~V+KO(pGy8Z>afn6OyA1d`kQbaoUy8-tS zb-5ps*WxjT8}~n;gKg0ZB&9hqG!sAed5Z_Pw59BC*#?elAmJXbE)toK$bzcQahsqybkrheF ztnC%kw!4yEl0mrWs&rn4G7aY$RdH;Up@IKA0!+gm|4f$}%h0jixn}5SHZR?ZvznG# zd!Y;+Pp4+lXozwZNsv6FPszfo3G^mN60kwLX4@_f+Wcp=I@o?D*QX|w>k!}i0Y{yd*x@AR6 zwc5<&nzbnHRi*RRl$BRiYtX{mDmiX+VnanQucCp)asfljG8nR#mAx92i-9#2`eij} z6&*b!OO7>la(vLL;6!lLh?yK79UUH>wC+)+R;#U9yL)kX$B2~^<0F$JV@n7YO`@Yu z%p}$+l}L2;iT-{OH+uVwUJ|C!dq{|w=!j8gKMBL2jij-Wr1kaKZ}eW^qVhL-0iXOW z!1^7?C9nawHNI!oAHc?Uja$RcvQdvX{_mQ^b$}gtDjsXprbd0@+Q9K#qm1OX57#NP uuJheAuprM9-C@{yEv{oR=sYjyPS9bB?zRbkUW;>$*X?}oIdS&k`uPX?X$pS; literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$4.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$4.dex new file mode 100644 index 0000000000000000000000000000000000000000..4480a2f349842c58fac079ca7b8cf2acf114f915 GIT binary patch literal 1344 zcma)+-%Aux6vxk<{gJ7yW|~lDItdY|qp7qw7Sb;eHj)GhvxmDg*WJW+LDW;|TS)X!&{NOR_gr@)BBIND=G-~=+z7^~MsECAlXbduq z&urtn2>C2Q^bqnh_y$rIQ45#=%U}yU1+Tyt@B?&XPA@nPP68V^UV#4koa^~j<;5;_|E9Z9(^}%- zE{R357IR>U#1geh&r?x!HI#*j+6pS3(@`w7rzokhIHmX<(P8)>tlZ`3F2u4LE1we8 znx@t$E?06U>XeR)K{PZ*sdX9F6s^?jm$RF8UV3Xv`}VZ$s||bD#*e53p^3#vsq8B= zkgpXmRFu((S5)3wR4YaHbX={eVY?LQ5m^cB>9do=_BzgrAYx8-bbNetJZs-4w_dMr z+W-6+zb*uRFz@G2W%J`%o@}M8jy`d@bDO&QM8A~~y~ivoX>}y&a6btl=+OXeZzmrn zgm{Xi<2yHqYsq=#Ku&?1d`;1Ktl8$F<2>Qk)U#~X6`tR$EzMkJLtcvQxW+Vdo9hhc z4C}eph=Kk6x!xoiea2@$pz5u#pbY;Oi%feAxg;V8#^sE^-G5ZyZ| zNGD8+V|+^(-4GuIwN>F3&c$_dj6kkDcN3YXhq4sA=xE2kM8~eUYTlN5wxT?xeN`D< zmTQuRX6$k)WxLC%y!8AfSEW2SrT%wLp3l(W!CW(RY9=S$HD@IywJ!V8cgi|-P1|nS zb9CXh@{8qMh6eU=x~a9QTy>@AWhlAN_-^d1tjLl=1@P+M$7|jxXz2$Pm7&fVE;8jx zT}a(oT2{87p{_l)xj<`)qBA72WM*d;$jB~`SfCbZ+sgBL}NXQ^3$UZl;q?e z@m9|Jvf`^8wU+hXu2~5*#r&e0|jt^UF*beM7 zVkSn@>CyCr^^`KTT5a7r*jvL3M(pIIZRaN@C4!BJ(cWiF$2TY$k9YJL0|Q1>^z?}y zG7QnvYZ#`{9-;UE8A8xzLTn~zVEne?5 z>?|Ai49D-iYxsQg1UwawHSV0oz0){@eD{dNt`FZoW?knqC$J#T6P``jc`d%5BG7qW b&Yhsc6rNcV{=63F8mrs+Jagjg!}sDp37Y(p literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$6.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$6.dex new file mode 100644 index 0000000000000000000000000000000000000000..62850b57f26a172c9d1c15bb3dfca71d840e40e1 GIT binary patch literal 1320 zcma)6J8u&~5S~5Td1IWHKqv|3FfS>|*$|P3qbPzT637UPKqLYbo4ZYX$$4#j=O`$| z%1=O|p`xKkLy4#(fv8e|L_v{?5+o`LiWGcvu@OQkSo_75D}SgD3{1f%`xWcnQ1*z5qV}f=vWy2D*VHa2^-}rhz~YMXIV9>FCkw;Ck7c`~Z`}cov@nlRs#trb$=3!4&mg^VGa8b-to}r2|zNUX|;Tj9iW` zrx;Cx1_CEZF?o()hoAD zP$)TB8aP7fhSsWb-IKnbrPLAohqifHkwt|lpw*S*NGwn473=oWsBi<)w65EvM69a}JdQU}+h!Ky{@c|M-(6c0M zZ$}RdAzq-!_>HyV9dj+60PP2+>+hQP8ey#a5 I9qxC(0YS9z*Z=?k literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$ScanHandler.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanPresenter$ScanHandler.dex new file mode 100644 index 0000000000000000000000000000000000000000..f6d9858c04537fcdb408af8c9ae12c1eb86c5029 GIT binary patch literal 1688 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 R=Z*w^{!idR+0S>Ee*jeIaAW`g literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanRuleConfig.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/scan/BleScanRuleConfig.dex new file mode 100644 index 0000000000000000000000000000000000000000..7324360861ba177f6f26b7ac74219002b1238f20 GIT binary patch literal 2044 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/BleLog.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/BleLog.dex new file mode 100644 index 0000000000000000000000000000000000000000..c5304f4ccec3928836ff32f3ab3987e31377458f GIT binary patch literal 1212 zcmaKs&ubGw6vyA}Zkr!%W70yE3Z*Uxf@!y@#fG$c5GfRc3Q7;fLnphNWYf(iW;eA^ z8d~W=M6h@+o{H#E1QAgXPyPk{3p^ANyb0d?zTJe{L!I`M@8r$*y`3TR*0MK}(^ux` z!NLB!AFVepU&+Hl=JB8B#?N14J5PspKWRiwBHCD<9fpJ>jo2t=9FKu-Kn34{0^)*b z0D2CJe`?|*3&S4t1q}P(0K5es!DsLl9D?5<3GX<#04{<{;4+v41#k^4f?MD=cn`28 z>Ib}^I7omb7zBNQ$1c}~_P+BTdHxJ>1r<`5E2xrz^1g?xEfT)TO zKC6lEd7M5kVl;-QKAa%zvhziXkhie(G^eV=kQq4Alld*e2%kfZ0ER(WaB(Xxm zqNHV)W!nwz%L)lR-=Ub}--R(CweBPKh{~PL&HScblIEK2S$aXY>3<1m4Van zChHB$4i`%83YMzUpERqsx#qX)zFr7gZ9A*i9dA-L9lbC!o7LCtmXAc_ild{RMy2^rc;8EB{7&a`3O z*hq}Y>Lw;`HrYgts7ORRE2Ciu zul?LWlz_(eHgHZ5HA7y9#2*bQHG2Y*`?ny!@e%Dqp4W(0!5YYdEl>r!;4N?kTm|of zYv2a>3fu(|_!t9c!K@=z$x$ycov)i^Wb@~2C^UzE`eQe z1zZE~gO9)`;B)XL_!|5OegeOM``~x*7f?}?ZGi0wf>1UJ0j^6c&;i$qi`Wi2KqrWR zE^q=wfdSyoYf>EV<8(b&iD_@73aIs8d}} zV17?spN1ZV&T(^l6tJFxT|+d-psU!i4^o3?j!#2mF;9jl?nyx-o>XZRl5^?>0nB^? zvJo1uYedB!^JHya5ZUyjAH?V&WRs_HEfsnaeU?u_HpAlpBtr7e7}tOs_rFJxzNi<9 z9F5}zReE}zeiVS6xL%(*sF&ho;im< z;hS?bkWEqNCt>Rf@(PKPu44|%Cdi6S|}NqUOI zkLOG~8(%Wr%_N17SYBM;l4_u+1Vs@9hq0N&6KTNMwXJ)Q5)j$;|s1VnQj5r z`U20Ivg~b{saNoSh9;@=h%Z#Tcg}W8mpCmiZqM1F`9apLM~0UrG6*a^_tM((!s;9a z4of3eNLiTx3#6?q%&(GIC1o{5?XT2Udqp`Yf!{0^rJW%yEv*~{GnSJs*fy#|eu=Cd zmwb{#qkt!{Dfu@FrMwB5mF}X%2;_>12Tl!}rt^Z_aVcQc%R`#Y{kD?K7bP=OJ&(_M9*ZDguup!Tj!ifSq@5T4N2A$V(j8xb8JFQ|q+c|E3-Ok@|4xH`$ G|HeNwk9wH^ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/HexUtil.dex b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/clj/fastble/utils/HexUtil.dex new file mode 100644 index 0000000000000000000000000000000000000000..ba6ac280b6979eb17ed985e37e0ae8e237d26943 GIT binary patch literal 3564 zcmai1U2Ggz6+ZXgnf>#4J-fEk#EFy5rZ{f!`rnQnJAYm~@irSAC3c`G2*$f(d(-vq zdUrNB3WAWSfkfK}%0pio0Wa_X0`b6~8p$fD2q;uYfRutjK@`e&?#?Fe z12C&^zBA|EJNL|Y&b>R6cQ+%0BZuinfBDkaU$x?~L-y9+zT5J>Hm}D&5NUPkUp~TorT5zDDbKvdJKFAEW!72+6N{@1Q$I3za1vpX%O86e+Bp|@J-+? z;QPRjfu90D1AYno2KY1ZPvGBxiVy{XgTNu69~cJ4fhphwFbAvv*MXbB>%b3zE#R*} zw1p@JbOJkpJwO6@9Owtefl1&fkO8v5dEhfZ9w-CXf#-pnz{|kvz#G6@zz=|50k?rW z!0&-S0DlDT0}p_I0n#F}02}BAdVoRTDDWh(2spqh@N*yl4MPA-t@BRsE}#q84eSBB z0oHs!Z~%B52m*Y}LO&kMx#0up({>hq&L8_1VcTGyhYwCR+w5=m?N7t*@a;V89ll+J z-RavN>=e z2m9IPI5{@9o3XLYu_<^#nt4vXMp}nmLB}+=Q(Ch@8K0j7 zhyDA6p=gi3Zt>aj*`Rs&u_X1{>5|P|RrMx|l!_a2<4EL@Ch;y(9DzVhj51 zN72a7yZ>|V3KEl|hkgq_5VI&Q<7!NGQ^p9WjYO12DPr6;3}Z_vkue*-F^ZVC7TI%q z?n8QMX~7h7OG?puFD8;ANL_L-RT6Pj^+9YTA%D&d%*h%|1gG^HC?z@&PlP5AWAAXu z-i0eGSh9EeyhFGC8V^;nA7h_5fF;P$?WT7OB{QZlHf#yKBj#PxG`0eU$OJ@yeF2ID zZn+$pR2*mTdodYDg*Wwi4Y9C>aeE_SB0dXk3azZ&x6sBlJ0VS42KTCE^w>xQ{C*+b zi|9@CJBaqlfPr-vgO+!-hOG?^bnbO|WhspdYWzBr?uwAsSIhaP%?c zh-X47v52`;=SdmySfkz+NXQMl#lPF58V;ea&Jpfr`K_!y&((@HUOy9o)6hL08-psn zCzDu5tO)Wd_vglj2WehG{gDr8!?uxMOO@;$;D|BO(Md_8(c7SQa}ZkXrbV(0)^U^> zS{Xb7*Mq28RJ9?rq9;h_>KEJtl_I!up_qsXt^$s~aZDgaUi+-T0nti5f_Lo#WHQi%@BG>)Txy&JouFi~ijhiut5AEgf2 zcPg4n?NxM?ho6XkWKw}?lrgPdgMn@5x#K)9eM&xYB#H_9)$uOc&-eP6zSkkX7hREk zGg0bi_pt2iiC(>=C>?3scKQXS#=-^BZcnG=)u&7~Yf4#v85^`o(N|CaT5{G$*Q92@ zK7C*Ff7kNs&B9L0d9{!^9)nWX%(cwdT&E&Ik%Z$V3Z=ZenIL;`Xn16FZ2a)VkjkVpBr_S>n<*CERi~I(b2pv5n=7ot&aF9BC+E4<1c@xkY#KoKY?f3O22R?# zMEkP2^7=roczIyOsd>vqcc6}0Y6JdsQ`DK|83&3^X>}moyz3OTZ*yl#p1bN+rzpP7 zxv+fM&3RL_XPfVQz2p_v-MP)2Tk#6z(nm*J@T!H<>J;tTHlpF1sTYcQo?zEPKA$Mn z*O&2N<&{TIS?ecpk>tfJiAy9e;fbGys!yjWB9gQ>;;oyXmpgvpim`P}@qm zy6$+mMI&@lNDGB&b{)4~dg%Or}Vif)MlIIVhXq{?-V zRHa;_5KaXal4Na}TD&sPak5%||dOWm72>9iBb44$*YOa(xv|YfdedTXS>I z)avWCO1Suz4@h?{etFHh;7I2Z?<5g8%>k literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin b/FastBleLib/build/.transforms/2f4d96d8815bdfa87d85c8f08c4f3592/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin new file mode 100644 index 0000000000000000000000000000000000000000..601f245f575611e9ee7dd20b1adfb34054ece53a GIT binary patch literal 235 zcmZ4UmVvdnh`}&9KUXg?FQq6yGes|{G&3h9wMZ`|wIVYwUC+0)Brz!`)g`qcH7_MK zFS*jaD6t@e0RkAA7#MvRcvGN~CB?pp1tkppK3R!niTb4_nK}AE0qcqapdI2MF+Gr& zo=;|8c4~@8VsQpg*5rU+j6lwT-$0Y17`PLYlT(X}{fmGOs3>9(MCgI4W@W#1@UU3I wMP>#jHwLbp{KOQu#N?9vB2Na+l8mC%;*9*9l!^j-2Z-~^Ie@ePh+V+|087D2XaE2J literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/results.bin b/FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/results.bin new file mode 100644 index 0000000..0d259dd --- /dev/null +++ b/FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/transformed/classes/classes_dex/classes.dex b/FastBleLib/build/.transforms/3c80c0ecb176ee6895d12ab1dcd92718/transformed/classes/classes_dex/classes.dex new file mode 100644 index 0000000000000000000000000000000000000000..039160d995252405694f421e5169bf022de61e68 GIT binary patch literal 71116 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/results.bin b/FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/results.bin new file mode 100644 index 0000000..0d259dd --- /dev/null +++ b/FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/transformed/classes/classes_dex/classes.dex b/FastBleLib/build/.transforms/49adf8ea3a69f71ccfa8eaab736f5d82/transformed/classes/classes_dex/classes.dex new file mode 100644 index 0000000000000000000000000000000000000000..fe27d1654a6f89e3b65f372071d3c57e183a5eff GIT binary patch literal 71068 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 eHjA-tc0*?RUAhic@xZ(l^?f(VonIvZb literal 0 HcmV?d00001 diff --git a/FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/results.bin b/FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/results.bin new file mode 100644 index 0000000..0d259dd --- /dev/null +++ b/FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/results.bin @@ -0,0 +1 @@ +o/classes diff --git a/FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/transformed/classes/classes_dex/classes.dex b/FastBleLib/build/.transforms/c826ccda5a6b4aaea2cfe5c0a041266f/transformed/classes/classes_dex/classes.dex new file mode 100644 index 0000000000000000000000000000000000000000..79983d58c77b8cde311719d14058849fda354e7c GIT binary patch literal 62880 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 + + + + + + + + + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json new file mode 100644 index 0000000..b1b4462 --- /dev/null +++ b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json @@ -0,0 +1,18 @@ +{ + "version": 3, + "artifactType": { + "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "com.clj.fastble", + "variantName": "debug", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml new file mode 100644 index 0000000..e00e686 --- /dev/null +++ b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json new file mode 100644 index 0000000..fa42747 --- /dev/null +++ b/FastBleLib/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json @@ -0,0 +1,18 @@ +{ + "version": 3, + "artifactType": { + "type": "AAPT_FRIENDLY_MERGED_MANIFESTS", + "kind": "Directory" + }, + "applicationId": "com.clj.fastble", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "outputFile": "AndroidManifest.xml" + } + ], + "elementType": "File" +} \ No newline at end of file diff --git a/FastBleLib/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties b/FastBleLib/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties new file mode 100644 index 0000000..1211b1e --- /dev/null +++ b/FastBleLib/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties @@ -0,0 +1,6 @@ +aarFormatVersion=1.0 +aarMetadataVersion=1.0 +minCompileSdk=1 +minCompileSdkExtension=0 +minAndroidGradlePluginVersion=1.0.0 +coreLibraryDesugaringEnabled=false diff --git a/FastBleLib/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties b/FastBleLib/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties new file mode 100644 index 0000000..1211b1e --- /dev/null +++ b/FastBleLib/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties @@ -0,0 +1,6 @@ +aarFormatVersion=1.0 +aarMetadataVersion=1.0 +minCompileSdk=1 +minCompileSdkExtension=0 +minAndroidGradlePluginVersion=1.0.0 +coreLibraryDesugaringEnabled=false diff --git a/FastBleLib/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json b/FastBleLib/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/FastBleLib/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/FastBleLib/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json b/FastBleLib/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/FastBleLib/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/FastBleLib/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/FastBleLib/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar new file mode 100644 index 0000000000000000000000000000000000000000..1da240448b1cf8aa4c3678c837457dd466de01e6 GIT binary patch literal 144830 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 z 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar b/FastBleLib/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar new file mode 100644 index 0000000000000000000000000000000000000000..1da240448b1cf8aa4c3678c837457dd466de01e6 GIT binary patch literal 144830 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 z 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar b/FastBleLib/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar new file mode 100644 index 0000000000000000000000000000000000000000..35c71290e812e2f2a44f761273aa91bface0594c GIT binary patch literal 276 zcmWIWW@cdk14Rx+rV!(w4_kmd5EcjGTn*Y{7#N=+_dXJBSzV6(~0%Pg^DWMJ0N4C7&7 zWnklCU}0cqWMFa5Pf2AkWMBevL4Xm+0?GnuP9RSZNHYRyR;}#}92-IM3=9F@j7$v7 j5H>caLu42jmNbG`7>Tn*Y{7#N=+_dXJBSzV6(~0%Pg^DWMJ0N4C7&7 zWnklCU}0cqWMFa5Pf2AkWMBevL4Xm+0?GnuP9RSZNHYRyR;}#}92-IM3=9F@j7$v7 j5H>caLu42jmNbG`7> + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeDebugAssets/merger.xml b/FastBleLib/build/intermediates/incremental/mergeDebugAssets/merger.xml new file mode 100644 index 0000000..376d3ab --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeDebugAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/FastBleLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml new file mode 100644 index 0000000..0bf21ef --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeDebugShaders/merger.xml b/FastBleLib/build/intermediates/incremental/mergeDebugShaders/merger.xml new file mode 100644 index 0000000..1776399 --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeDebugShaders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/FastBleLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml new file mode 100644 index 0000000..db36b46 --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/FastBleLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml new file mode 100644 index 0000000..55e1c9b --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/FastBleLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml new file mode 100644 index 0000000..d51b877 --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties b/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties new file mode 100644 index 0000000..6eb27cd --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties @@ -0,0 +1 @@ +#Tue Sep 09 14:41:15 CST 2025 diff --git a/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/merger.xml b/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/merger.xml new file mode 100644 index 0000000..795eef3 --- /dev/null +++ b/FastBleLib/build/intermediates/incremental/release/packageReleaseResources/merger.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..95ac447e07aabcfcbf77863e527820d2f3606681 GIT binary patch literal 619 zcmaJ;O;5r=5Peg=N&%_(t;Cqf0W?|;-XI<%K}}E(8WN97S+QhkleYM~{5X(k;t%jg z8K+1@V_*-vGjHG9eKYg%`T7pv2*ors#8QZ7kwB8LZ+ipFR(>qN;5;fkL0 zOVjYoQ(fs3GQkuh6kD^!H3K@*DHvH~kR_OX@gOWE+@5vS=}S8#B@Q3*U+I2^bIWoq%vK$LGHyYXn2s zwhV$&wOS=?mn(DR%+~9+niOJOdqdxrO($}cpSJ2SDxQ!%cU|c>ln4UJw#+HvyT91s z+2}kb?nE>lj$({({}?ejv-l)F6MG}1o;c93$a``OHc{X>qA~$XSO!cTD_CVD5*Noe xK>Qi>$T|Jd>R9{vW|!ZMR^|=4+Y$0Fpy;#Tf>WlfGp1pKy#fZ`YCNJX7+)1ehB5#E literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/BleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..9c16ab82bba4624b245caa70523827d57b2fb72b GIT binary patch literal 21430 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..6601ed86151ae1d18452afb895e5b69c026bcfd2 GIT binary patch literal 5337 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..b95be0afaea0d3248e6136c1b434e46109b61e08 GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..773a59d979649b353cce8427832891488a497e63 GIT binary patch literal 1397 zcmbVM-%k@k5dO9;94!Z&{PMR}t8S{~%v{ z5ECDa&;C)yxx1nT!o_&W?(ELZeDlrh?Ed`q?K^-+SkEJatbv?~F^n^8xIy1>WzTuf zL*16bY0H7oL7=X8ylMA@t0}~$=X-jKAzQZh3Yf->0n5Y%%rY#UA9QR#XXR+)?fl7SE z#8q5lFou2%t#V48Mk&|+)y{4hxIr1k=?t_doq9}?>p(F)NsE_qwl#Z?Ay*IfDZiPf z=Zn{aep{$rPTj#U+YDST_qg(+{ZN^UT7ltl3h|VHrL`KBd`IYRu>Y1T-WOUZg3HP- z&1qSjs2Vw_$YFW(Op;Ejjhxa@V>cM`EwAHqJy4X_yR#;V=2TrbQ*t~(XN!_5w1R^!y_!9~195VZ zj>wt~-xsPbc^HZiMe5-RFkA<-tmvtr*CR_~5;y5jkycwIGb9U@>KCxeR~VmZm%%NX z$H^1u;Wo{Si52dkL_4yN(HQR1dW_6IT4YRjh2|ouUXpnf$gCb=YK6uT=04GW6u2J) z7ZbZbz$TWk90xX0rd7szO1L(8Mz|Yf9pO$@sy{HjLgNURPXi~6%@|~A2psXuQ=%40 d8aY&GkwFzJvAl;>k~uh7qvthBkI~=w`wdNaZsY&} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class new file mode 100644 index 0000000000000000000000000000000000000000..9507406f549fb390768c6952e4874edf06fa83e0 GIT binary patch literal 5689 zcmbtYi+>bX75*l>bdt@4Jb)x1kAw|rl1)gVAV>fS36($+gkaLpS~}Ss!op@Z?ru^- zwJj}bt?##>qV+{pRH$V`h*o@2#dm$bs`c%kV1FonXJ&SGb~mKyukd4b=FYw6JLfy! zId?AC{&)Fl0PFB?9}3`6;ngq?w51e}#AqE$h9imA?Gd9pKDJX&9PZIaeej`Jg{Gkd^A#+~UBbyd zdQ=}a;tGm~jbv9ek<_C>L&5Tf#_pTXZWF_08p=_jpn?l~^kW^dXq2vY#KxlZmu`0X zpkkqfv`B%sp{udK2vw+7u~@?ryh6eHT!5j-n30Udl80M+#v;k^XvEl_9-;MQJQj(F zrzMOw6QhDvd7jQdMVpFc3d&7p<#nq=(NcKCu^J7vSgBw>t?xHRM(y_s7Ifz=qOm#! z^*8sQ#5%6~;77gCa4VD6kmqYiPwJAjPGdYAG};>bWqzZECIl2{!&=wiiSsQ1VH^a*O zAu+XH!z;0Y3XK~hv2jYLegI-v;vj3d-V}R)^};x zh26x{M@NllNI{D`JUa#M@T?)*116^vJsNri+DEhPp-|jNB*gM-HSCq)!eq=^BRuqJ z*e`5)IM+v2_G=ixoeE0B2`K@lHtpmbq{LKL;edv_a5pW`qFa^Bl`94odg(g~AESP?~{6q-z*LkYO6E;E6tidMi)M*epa2wH3p_Ar-?K4kOG8&s3bb zpfH>?;(9X1;;+nF+hvc_z)?h0jA)1=#-5ZhkeugpM@o^3J3lZ~z5ksd4{dkjx2V_JI z840$r38@=hF2_|ooMpW|9@i(j!wHkRlN#QPw@`cIVwy13S;2QmKMW?ru_*aJfk&ms zyiLJkTc9Snt~s)Ayj{VD+{((Nbe67L$0~gc?-Yo4DcF>+oH0bZo}b|Eknz{bk{^$2_!K^^porGe#krC;a(T|~ zU{vfGd{)Efq-}fjP^bt`;PWcJpy7)+$5f~LRE&GNw6nVY9sBya_ViLkeVw}xcJ=O8 zpmeGDGMnYi<{s?W)48Khkj`tkAe*%}5k79nz*nWwJjDcXW1gw8`;gKwDXpj2Y&{l{ z!rqjI%a|rlR>RNkDS_FP;hxHrk+Qz-w*xHrt= z^DH&U04jz=3bwAf`7=VYNPx8PYVu6y$d2C>oW4E%U8P{o31eICOX|U+Y=Cw+3oHfX zxKm0o(=QhUzX;L_btlLE*t1;chY4wPUZ>;n&tWACIkV-oM8;F8+Qeu&aeHT4@G_-S=FWrFddgfdX5(S2%^BL9mtco8`HFNRZ4dX3IlF6;E^E zzY00#K*86{r?2yw2Mp)=Y0T$6&wIRngEI!;R-len1*yieW+TxqzKg5GD#9{6 zgYS`q?{iiml3fM(#+Gk0g2c0qLOq0s~B%R z?;5ZGjr1j8dQxfGay+Rq@f8!_i-LKJiTwiyJ4TCwU7NNe@LC7FHV1qO!MSJNEbuhA6}bJhDGz%Cu{RQX6S3PE_!bv-je|W?;5pAC;ExH7cDUxQ3+-e7-+D@}1cOD8VxA9y>0sqhj zIcl@pOprzanZ`DXcRR59UL$3(G#n@nIHZ*1U*9i5-R zHCfSBWS;h2f&aXctL>d6w~IR8#YlQw*nS7w?+V%jrIr&9;#M2E-$pKPVsx)Ng<|;~ zOyTtz_0BhIWiP8?AIkXgl_9p=!6?thC?m#CoDOk@SW>(jB$gEJodS=e-GM0_QE&=N zdBd)C1<9V~DU8dVpZI5QJa0{(5Kp{jHCuHwK>6N@W(-o$2Y80R%kij&9ptC@8ABqN z?c1}wm%d`X`#Il94vJB59VIG`zCcfF<&b0Xq43+(^mXJV`1;0-uUxevg$L&np}mUJ zAId~n&kh9KLvIferZVRP9uP7GR0wW9k literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..21762b3463721fb3702f4d120abc1a4b099c7e82 GIT binary patch literal 1022 zcma)5U2hUW6g@)`%Cc=&+M>38pi;|6?Lzbo^}$9X2{a}cd^E!{!q#P%>@NE1Pw_99 z)YSOk5Aa7B&p>Tx!vmY_?47yy+;ivNvw!~n`VHVI>KP=kl19?RHKYXgonT};-iiHD zMsd$mcF&urI0)jQ-5Gms{62JJ6&C9Psd(r{#Tp^4r7#TxtH`8bn8?Bu$VtB+25#RD zBKr+(PlZhS%=O*)g+RX4n)A1UV64JMxvO)mo7jLQur{2c+A50VKndKq1UWw@CW9O{ z)7Ubxjr?Wa3vBYsP{snHnZ`|l-K!Vs%UIekJ=Kl|26nKU#%&XKa93dOYUsj#2^i9G zSZJ|UW5+6`C0kbR3Orvncwxf?l1D+G-PvflzB-S+$M0JYYKwvBRt?*n1$gXirncGI-T}svB#JM z_GxFB{i~(@bWyNe3$#Dbt$Fj6>KWFmr?_rC`39qM3h@)SG~vpWFoz`VGE-Nujw-eL ncuJn1p)bhuC^3qfnj*zE;Z>Rm91s8|*})-dv%IxwO literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1ee64997ee4a910304564597b4949f1d419169d4 GIT binary patch literal 2344 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 AUjP6A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..7d5c8010b32a32b44669b1d1bc9fbb7a476b8bb8 GIT binary patch literal 832 zcma))%SyvQ6o&ulEn1`18m;%sF0J5f+$k;;M6l>W>3*7yZQ7VXk_x_+f+D!^0emR& zoHSUh5hQSC&Ya8t&6#|BzP$rDz)l%C_@hRlBd9SfF&|`fhwI zkhkltX-r|-K-t6$Oaa>o?xf@O<*kb1wx^||Jg=>sfjsf_iHh`T>QnVVKL}KtV}a{9 zbp7rjx12Lk!MuRcQ+~(Op@7w-T^P6>8AS4Ybb2UII1M^lpwe`GeL1{q>+nXAE;kNH zyQM;x{q(R9_uNRJ(fltaDU`Z8zF<_#uK$Lmc$CJM?BC&fOQ1{*Qec5)YLa=8GPU{6 zs@YjdNwe!<7&`jQ;id`R>7x@SBR%1 ztxA@|Y!}IzqXbx3B9G`%Bm1-X8O9?8a~Kz!nZ+wuO^c5cHWF#q0|jy70S6Yr%P5UBPnM-3>^UY;uhH`1vIUw8kju1U9Xi^BvN$z|Y!Jx`-V4 zUR!FarD`nM)s0jWr>*f$?S;@d90*jNv-dM8Rm$zQ-!AaRvKw8WnkQ-Lbl$s)1Uj{g zrPls${au+$eVZjxb+q67F3!#Q>dn9w)|qbn ob70&A0^SK*J(f|K;Wnx>+`;ZF{=%^u?*O_usG)>%h@g%Ns)R_|Wh|3Ld?zwDO;jvJl1znsi2I4^ zi%bnxnovF0M!O3_IciTrY!J@=D!wu^ErnZa5De^05gH?H)OEg`s`N&%C80I4Y&#LD z_Iecz++1gb&gefTJwnr(!g`!bsWNV|78?qk{Yw#E;CS%_YHLO8T$ zFc+ziPNh0?TCy_tYDTC;w|$>c8{0gUYN-80N8F&eMe%~2g?JLdF+%psjDmpp`q?m#(h$0q|kQ|x>_h;uI7aSjQY{YL-AyM!Fd=z32 z61hM^;)>auea-HEe7?N{ILDy}3$_c#M+b9Pr^Bd%U3qf2AMlEZZZqm65H0vE9iwk7Cc51Hn_#; Y|0J;81{}f;I^T8|dmQCMFBb6r2YKrzeWyS8aEo@ftgf1w<-BgQ2n7TNYV7Zq3~u(Vt~yV&M<)M;YG= zYK)0-i)Z1SfHUj|D531btD%A_A(Unw$z&EyL~i3mMN%Y5EaYv}NmNJV zs=LyJ>bXv}y&#ms=E%nyq4k$}V62`zeA~UQ87o4)uTwQB=CR7I1P2lteZ!$6k!hz_ zMbA!kPB`iRKcdaUO}dO77E-F52Ygj}LMKJWamV4Wnd)AuJF89VmcINH?dFJZXwvRf zWI|e%>D+3`D!ox-LM6QJxQ<|GicG4WcDo$#fS-$>&cs4^NAUUI-SNOyR2kPJ6ddmtmV^Yz1?V5#; z5D5uf%y{1Oc%J?G_WT0i1cL|;+z?&|J_3eVm{lV5GP&k;Q)rn8u64o1ZIWu4@>)*T znjtt`lxXqr PAKb?tb?I{m9UQy^D3fk| literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..e456b1a21f083f6fc207e43e1e4ded44c6d63723 GIT binary patch literal 445 zcmah_OHRWu6dWgR1EHmSdI5H6k;sN!5sOw-LW)>Wl)Yn&aB*W4C#ctAg~Wmba45tx z6sUv*Ud(u&J)Y6NQolklKUBg^QYkSbZVjKn9%&OGCiKT1w+K6*7l^w6XV^yX OgLkk?r!*VF0Q>KlS#IF~ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..a0bde2e5486c2c0a0f4245f6d4976f5d339d8867 GIT binary patch literal 614 zcmah`O;5r=5PbuMA|UvQH>2?a#@NK*31gxdj7eimFx;2z8Wzjew1xlW$;5*{z#nCt zrNo06xyS;UBKC}M4x6`qh3Fio%8wkXY;D=vb+*;)18S%P4q*eEoaHUD&q&TW&e_~=g36qr Skrgw7IdmI43?=N&fsJqY50#++ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..f1d6bd52af3d5ec485e497d5c1adf64fb540183e GIT binary patch literal 658 zcmah{O;5r=5Pbv1BJ!bt_;J#B0b=Y$P7n@aNK6_v!Ej&73X7#R?ZW@^Wa7ae;Eys+ z7fg&CxXkR#&b+s8X1~5aJ^@_gG=~(@Hmp1{*dgrC#8NoE2qwP*y*T1=`JB% zZwzf@33V@=JDxvto<*!jzH~g{`y=7KI5)l=cp~VnV;ecb<+kd_NX9bIGP;|;60BZ0 zmV}b40(rlfk7V>Dn1fJuL*^NZNG0()Y3Zqo2~Bq!$?ucegkl&ZkL_iEP*vu}DRwN)el)uwdmFBV61V<%75uDifI}gk zOA#O>gcma&Kac16y}mua064;K2oHV$-a`jnhDh3ZBF!wh7Ijk?l}KSsA>?h68kLG# zjh33Bd#p>{oG|!NoCjE8i2pKQRJ!@*<|BKh82Xtm)mb|)RCO*Wk6}Brl$nc4JH0&Q z&5f=Z2HC$8h723FT!cVVsjfFOCMX7`6*VF1js=G$p(tZ8(Qw*Iw zoZ7aMYOGzudsP1Mxx<;b7knQ9jn*w6%ng@tl~h8^h&u;QV2`x%5E8nw!!^R*#|7eb TfK#{VFL)DMRHYFSdf0gf_zZF3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class new file mode 100644 index 0000000000000000000000000000000000000000..16fb2aad7d1726208cbc2d99481cf1ab4dce20bb GIT binary patch literal 771 zcmb7?&r9P#9L3+XY1+ov`g>ig?s}^Q&BdD{xPnk9>w?mQw`m+TB~2ii_OJ4?u(GfR z{{a6e@y!_PD(hhr@|~GClb6r;k%z}W_W<_r)k6v8DjXjbxB_!SIgvpulk4DgFjS!y za1Wv+(uV@&_IAIH8tPSeK4#zx?1bqk2;*UJC38K9Rd6Y_48FzcI8741eWs;WKV&9H zN~?@sIfZd9AiBn>;iHK;fm)Owg*uujZd?dB?e2D;!*O~^rP+%T^?f`VsO((w8v+Zx zG?Z~)W|3JJqN8sj8V9}qLfRLoUn|RLu-IakO8!P6kx^a-GnZ%GnI=AAweSo$3hq@pzfis9qy%H;Ybi?Hi?k*Mm zRQjd`ML&QaN}NqX2}x)%a67lRGryVn?~p%#fBXjU1P{`PA#NgJAqj(!>4_6zyTa?* zZ`(cTLCrkp^ENFD`#e^deC>D;<5gPOQX*qCWZum**i&fy1yM9uF=!g51-^39;%mce`N zK*%<^@V!u(J-vuF~*#2 zos^r+fI(}xGXtueBKv#40myFXm?O#o8Z3(pu|s>&lcJ0Uk+v5H&Xuq+_?A4 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class new file mode 100644 index 0000000000000000000000000000000000000000..bb58e6d6e8def7d672cdf3fa4f9fd25229885eac GIT binary patch literal 3253 zcma)8`BM{T7=Ato354Yc3J7>0A|_FcT6+n_5)=ytR6trwYr7;1E+)HlvuN#U?|-J9 zvC|S~>P)9U^@sjZoj&jG<{%svX7)SZ=Y8Ju%Rm4A@h5=G_$i78G)558(1fr;=Z5}B zPvv!MJ#}k!!^pY{;c?S4-3f)pcw)H)&1i`rs-YE{!ttzKNM-XIsWrXmuI7zYPIvWG zI&WMv9+_D~AyO#MPGxi}=h$X0wVK~DT-$aZ@M19YFO3O$yM_*QDzp|Bv%0llWNjy> z(6Ex0!!8Yna9E+Kuuv?T3Tj4ndo=Xoh(bqU$t)N}S1)YN>y};Q`D_IJ3MXHxI*Ow> z7Qt~1Coo8)svD;AdXY%&>xS!1Gq#>H9EHAkB2#zEKN^c-2&W<#)^Hjl3bC?syO_GI zJ6R)7G{?|${z9kQ6fVT~0ZUZeRuLBoPf1)u0!gyX63#W!Ph4Ztar7q&p?G2?Ej-R? z7{z(UK@`qd3@4*FBPSO$T*M`XW;w~&*1C5zD@T_#yo%R|``9sEqn74Cd>=Y9iDi*| zL&KZ6Li;?)8bVF+m9&3lT*F&nHZ^-!JW8Q>ApW+7Nu(88yfdFvC_XEKeYmFKI;Lp~ zBQdWR=(NK-La^vMrnOGT^x+*1GjcV`tCP8$V-$-K+*IhT2F$;m-ZJxyW)!n%l+V0| zTe!`f*Ecr}i+ML%8<#*sZQOUjQ1>hrG%SklX4m!)n{ihG5xlD~cyPH4UyNcIjgr#u zYgoYtG9dbKQ?>z3|rIrQ4(!9e4ggGr7} zj46y%^I-pKPAoGKr|cYcc4SP;nBOX_8qSi>s4HV<_58B#n6eHwL+%5UwKn)N3Jg## zXfVnD!(?V9%_Jfl$Lku=Vohghck6maPZhCJa$_RhU|I@?c6*QhX!86?L5!c5{hJxiN8xoNPvTR17V z)zhqja?tk=1!am=nKsJTHrFLJf6)5??rUc-eS9( zHl@L}S007)QiKZHjAa>)*HR5u=MM_U%63%TE~!yYaH$19)p3#q(g1}I`DQi9L&T@7 zL0%1SJ03DtUGrkzc)gS$^Bm$Zsb? zlxaa1a$NQJw_#w7E6QP=+WF29^Fe_5lyYI7^;a;HquXdp9^FPP*%R7EcU4Efck?iH zbW=wUb@uXsJ3`idp1#Y(B~nFSf1pqHOxh{j`>{cm!nGd{DI4N{6Y>F@EuP4&QJ+m$ zUkL*xocs%YG&Xs*gfqg8BaM&AnA(Hj03nZ3-7$WTW0-H`ISke~WVAwX6a`qGLu_mY z6gEjg=nb7s{*K7e5?+x>TM4hr7%O2+#_kfXRvpvh89q#>oTmFn=#DcCd)(7G=%ZD1 z4&f6|CpEzFoT5;~`9S+Qj|~%~@n>>qfP^;8JmCZJxzoIkt4SqXQZbuHD~GE0p&>F~K4jftJMj8Ma4e9EtsP>Q2yY!YNa zt99|68kDAri=R~LZ-TcaJHvIgC%;O8yG(**55cdyaDX5IEZ5yEf>GVB`e2Ix&LDSELSn(klfLSybpWj)tThTDKDHr o>kBM19pC#6_rx+)Q;fp(8;|0*_>N;2*UKE`?|XLoAHyyG0g2dvx&QzG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class new file mode 100644 index 0000000000000000000000000000000000000000..4aae379e2bc61ac2ae7f58b3fb2cd796cfc3ac47 GIT binary patch literal 2053 zcmaKtYje{^6o${{LP8SAjRe9ygtkBn21>a!K&!|~5Rqk&WJB6gRklS?#<6E?8HS(L zPo3$9{(%0dPTyUxq!XvpFB(7RynFWDvlsvU&!2x0(F2NSXpF|EXkv~g>4cz#gXm*a zYDb;@QnhgqH&a0;o+h0neJ*JH#?AT^O$)lv>>iey?Ss<$sGm04aj6xhQE96kSNi*c z<}3bA=$nQcmaV#NT7rZv=#<&*^wX%5)}!_y9>?T_*`(C0x~^pg;kIErGA?wyZ2LN8 zm1TSkMWo)dbXW$*1+B=S64xy+^esdWMWpv5D}Y>G)iXO1NNnu#%L5SpMWX11!b zYG79^S#e4aG+!8@TMg{(z0eN~FOa##Y+#Y|EWhTcwbkG-c_IQc9;nb{Y`byB8 z7JrmmAZRr+WV>bCGy*l-a4qYobSzt}=9-|3$I>I~*}#gWnY{Rs6;0D!oRp-~N}5p` z=l0kBYlL3Fw}MXR1N0J>GZ$|>oBO}V_Gy?Z%-`2J|CM70;V|o3Z`C$o4%NY7bj0yf zbnsIzVRl!g-6LA<^#?(-L#Z~plo|Cbqg_(a~3 zSDDsn3QsT52CdOan!#&03mT(2@F~Wp!Sjq4z>AERz{`x!fL9o=g3mHO2VP@*9&~~6 zMerrYm%&#UUj?tzwcM}t{{`bO!8e%xCioWPufg9iz74*^#+ShN7~cm!VEXUC4;eoK zKW6*{{5>1L34X@-IrvAWH^5trO>mj%E$|NG7vPsnzYBI4SHLdQSHZ6td*FcSYv4NL zH{iESzX$%A@h|ASkblkksYt0NTRE7J(lZ}`sX-w`!Hf|~e_QR`m< C5{JtG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class new file mode 100644 index 0000000000000000000000000000000000000000..3f02e220bc25f316ab371f85d8faac1fae2357f6 GIT binary patch literal 1309 zcma)5T~8B16g|^!zm{z&6+sYGKE$>tD+;2vA!4oCq!yD!65@jymZdD&Zj*M)vp>iO z1r?&v@a&H=-n&~vi6nNCnb|vY&bc3R_t)=lKLISE7(+;4%4{}t)7jT|W!u|!EPY3M zQh(}LhACaclb)4;fTAISsDNs0tZkIvRi0JL0yEYBatln3Ye+CT6_Ab6TCG;8z2K_> z4H}XHvDwYF>YK75F#EO-RTYCs$B@)8gp5GMbegUuFr3X*_vL}q9qHEf_3eGj^a?75 zaXE$&4Wqb1L7V}~Zl^)652Vwv)^`P#vpwvRBirpl&w=5!Y`0$M^}qtY{9U4lJ9!3YP(jg)7Z9J83{&sJudiFihTsVTHttHdIbPB=v z&^i19ooE3HI_{FSNHapT_Y9@xLD(02NxQ<}{QSf*#`2S2F!_n>KrThMzyO7z(V7Iy zj?f*8-}6)BFHSD(J4g~dO}9L0+@~3$c&X-iKr2VD)6UUH@}DvJ!3Ufrn)W>efky%l zX_b4pOV0VR0z;7>5L@9xgpDob5HW)*aK2)3tl(jnR-*UdG4q{RnW=E-7}G}x`_@fG h@vYbi=8m9p?txH{dlV_eFhPDp-EZf*mBC~>>O~GV@vj#|Dr;o-~;$5 z#M+{vqM6;9eQ0*SzCS(zT;jk*2bKf7k1l$IQ7T`h$YlO39^zCbhS0mxxi;4X>+~#g zuthjdij7FJR6NPb#F-LnX{5Nx)Uwn@1x6Z07~f9A>1z4th4WS5E$;m}fjq)sR^*kD zxrt;}D~nwa!JZXso*DW&SBrWRt1^_ln6T#;iOeEd>W2S{wt3MN;l%&n$AsVpMO`N9 zPPhC1xV&ht#St8S0{g%rw&8NzVb(#PGiu(#IABGz9O$0EgWlSfUB;%&B8H63NRy8+ L=E(LLJJ|mL$~;g6 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/BleException.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/BleException.class new file mode 100644 index 0000000000000000000000000000000000000000..81949045a898b421bce38b26110ed6ceb6238e72 GIT binary patch literal 1495 zcma)6+fEZv6kVscDWw-W6p)Kr6r?Sb@q*U^3Z-gIwMi*8Jdt5K;E-X4v{Pd={(+z3 zgCPRu z@w_zuHxs@T)RT)IY6&)ZXvl{7y6fANR=*jsd5a$u4*|c=x!FtZXVmSd|Vgii4xD6`z}U_=s(Be znHT562}0{;tD&e*H9n`f`?}8aS^6gFRd_(}2?2~Dg*2Tr)Lai{F^Vk0C-ywqlFPnH z_AQrvn=te=Z7e-9+5?33;|{G0WNq^IPJ1kK1eO^;gpip#MC7XtxJ#=DAFXj(Mf711 zQ6zAWJV^(J`*=VW5!h*%ed39@{D*kdNh8tDzxgxYAbh5S2b`R10Y+>>UK0g$2pMu% zBoEj4n4&$j3y!`obadeSX9bKCXu_r#cEV0H2^~!gOPKDExs^n^RF0D5nM#&P!D%J4 z)TB%o?kJfeCDZ39;XUC!pl977drfM2$=M%>ZysS#Otdk~`_smlc-c8eXd9Smyv|i68vXb=Of+T2k(eiSZx# zK@%B?CjJ0_l=0klY%oA1P43IN_dMsh&pD^R|NQs`;67FrBpBwMV8?R2ZR@?gCmJ5N z_(zBD3ODerHIKhI+@z3Xn0jRkq4#Y1hU2uukT;8Z1`H!A6r^ZgaeY@jV<;Ha+P3|{ zwmjQ!S(_qs{Z^%1Pa}g%3RD%N7-KNcCa@m(K6gYfAj4?GYjY6Kzd6BUdUiT294fXbhPaIc*ACwD%ZTRlzvJOTFMbI zxGCLB1A#Xh+oWUVUwF3|5}%_ymQ|QoU`UA|&KbkFandy+TV^O3=jNbVt}`UpgC=Ll z)?A;zZtpaB_{OGsW6)}WV|#TwbmhKlOo}a+lC)U+|LUkvd9=8YN*v~x5?3Yb-f^oX zmAw#dj&P5a6~i1!a$fCGiYWAe&K0zO~ zU9_T}pm~Js3YKVGrrkRX(Ff$s9M^^pFl;XDBW=#?Bl|6KvS`$hq)|nRpd^@vEN+uU zk6m#GcWFl;(WwlZmkmgv8Sc@aCk|!NEYF6`@5p|kMFJ9B@{u7Vpc-H30x~?nL$XMo z&!d+BiaAZx%&%mM-7_=;1q@>{f+$3LrN>E$n8?VF@VE<1l-Qcyw(2I*8f!rkhrSc$}1`3truTvz}A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/GattException.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/GattException.class new file mode 100644 index 0000000000000000000000000000000000000000..0d1a0684e1bde759718f930079e42fd9de8103b1 GIT binary patch literal 1020 zcma)4%Wl&^6g`ti?YK@;+>$;4w<)b1+L{Hs@Q{iC1x2t3L}KYWLvZEVkuyd}h(BTh z5+o8xd;lMXxZ}8POR3a_J#)|8d+wPt_xGP4zX06BT?GY(Z7(`@yx_=r>yE@>z#aa< z<3r&`p>q)MCntf562rL*nbSO}1z3+#cm_QOHT?p2^+R)MagiaCaz%LT}Gc{c`aKyg>NA{jBTwt{(vrGFb7B!1B6v4$E9 zDQJPAXxTj#*E9V&;m1?D2Qqz0$1+w(zdIcAu+Ok({YU-8 zo*Vlz&cKp*=aXS}=ZZ$R7^(vXilY?zSN9WO9dCRMlYTYP_J^s{Bm7aUseff&y zgd8K#SCFGYyAtgcY|;NVMbA;B6JV}6&yC^)<>uOVRK5~Yz_!Hc9H>Ago+@UsLs5NN z0Sh)oGDkAg_@Ie98LyMZAii&?e5Rx+-3-C9K+@>xzMRo8>|!q~eni<)l#+^Re#y(V z6gE)C!Wkt>u0+X|&;(>;uc<~hZTv*-%>>ts#WCtq)flVB4Y{A-7A<2mP8&_HO{0rd QB3eG9w~_1JPh~lO0WVJ1#{d8T literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class new file mode 100644 index 0000000000000000000000000000000000000000..09f48499c00775002c7826ac9361d223a3891349 GIT binary patch literal 436 zcma)&O-sW-5Qg7LKN8bwYm2>mkyydKc&msg3PR9BrT6W2+ipn{*=&n{%ah>2AK;G? zC-DPB1$SX)pJC>mnSFVEdIoTWt`Co}r?RC`$wEwJ?#780`d;ZfXR=hBCHmqMLJ+D= z)KDkXk4%QF-9EhX&iQjQd;{pvl~O&%-9Rn79Hh Lv`e*ZCJ&uAk8y5- literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class new file mode 100644 index 0000000000000000000000000000000000000000..ee2989f41b334496ca5e18a3e1d3780ae56c32f5 GIT binary patch literal 413 zcma)2O-sW-5Pj1`)5d6PL@!?2i?l_|MetDZpeP7I4=uTGH*4LJ57}4X5VAjH#6@auWta3vE!jZIFMx?$!s3oiG`hJDpF5UJy=~9(RrpWe@GK9 zVSl1?RaUmUlDoH3R>r8b=Yy~wz(bSksV=lVBkc9BAD5Mp z>PpxD?*5+SsNM!Ww0PS(h||LcW5DbL&X?XAcGA#!!P+y64Qw*{Tv1<#bBkZWcO%;9 LFe7X;HV}RS^$ux3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b8b5cdb3d8e1512a845dc92701e00e590fc9e1bd GIT binary patch literal 893 zcma)4U2hUW6g|TtTeef#qOISG?bZSs*CsxR@uAoz8mvt*ybsF=ONQBGc9&=Wl1ZzH z5B>mul=05eq%kyUNtmy__ndR@J%9fG`VHVUnpKqGxF~bnK!ss9N@iiCrr}qSWz zG!i=8SF%t0v5~3NnKZ#3LnWKUY4D0tde_S7Sf&+@Dm;d@xljSYznAkkk_?R{jFHHM z7Q;NmVr{X)t~uC<`57(Om%U)spd)g%n%ZZaawS})e}D4z|b`LbZC z_mW7cfiSVXpFfuETo_tQ$d?KT_BzzfPcoY%qhn#jOwxEMz1ok*T4cE)V#nl~!Rsfv ziR58y>)W8o{O5?5whN^3Ku0P`V?AC#ay+yB=M$kvN}k9xS2QaAL2GHcN~Ebw(I8)N zFx)}O_pLnu+R2S%&=UP?xCaOK>D0AewJ+`GXJG9YXK>p;vHHCTd_Zf3V1Ru*q;>N= z`4Jw|&B9nnh9`8c67Dy@;Azmc1fM=UEmq6(hF&ZXZ=Vv)Dcm1ezaa4n-~+7UupqM9 cDHaPN2U`W=HUiqq01c; z6khm)7e0UwC4RFhDJU#1?0hrBIcLtC`F{QW@e{y9w3bjp*+V730;&Q#aW;wKbR4~v z#tu@7Oe|IOG^HNbBTa^sCEeH+sM_PiG#)Ue`(K=nk3}qb@B`Ek2!vyKDx*}YQS@ps zrr5IN<3uHPPoUgv^?fX3#X}h2BI*JgMTaQT0<{s@17)mKF$runTZO)u!j6`4Il!v3 z;~Sfubn|O^xFS$LxA%Igl;kV~+RZ}Ec|M(1U!by|4VkmjO%xqYCj-)NW-9e=7R$6R zb>h}%n-v$QK(Xoh0gc@bC-{==aW*`XT26>xh3REIReYCTHq|k`NSx=@zaQ_uyBYg> zuHrN^i5kshJTwHhi&CDS9^fu^1lHqBYks(AbehEUL=6w=o$XmVaq0gP)KFUK8fk{k z6ABI#Kf``1jUj_g?!-k1tU-jK>qc(S68|-N?N7O`BQWet Zw~S3*m2ew(xK^-*Z8Ul2Gs?N-?+>ml(ro|$ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..c9d1602df373ad995085c0b8ebc6cafccd6b6a48 GIT binary patch literal 907 zcma)4U279T6g`uTS+m`mZES1(j_uYaQCy)u84)xpD6uV#Gf(v} z7C{qS!RWYeKg zp9+?GF9~@(;3_ir)5o%z3`1)U`CI}1c8B`;QRstYw8s^n3K}q_SNqXea-At6wp1pm zJN+b6p?DXW`c`N*|9Rqx=>lndE5kTRse=Wii-%?cYhj`k&8ZmYD>>Q`UvyuKLk9P~ zltOi5o~9y2gIwZ*;RZ^cXUqc7PTnNDmgrx@O<1@^r>=3Xd1*g70c$@#f!+Rzg`+(1 zHmwzc0lwi5t*fWWcX5wy2F5@#+^2JuaKCyvPlK){c=X{xz8aqA^kRVA_A${M!~TJ# nGZH5U{*DD4fgc6r4@cxOGhHrnG$1LR0Dl33CXipdP3|suZ9iRSw)X&Ng-AtSfti#Erki zfe#^p;L49e%sN#nafqlfdGp@B-+#XS0MJHr1tpXnR6H!9DzG1=lQ2rg;i=5c zAW>l+NgX~*RFCmEQ@PScWsSB#)ttq7<1s1S|KfC9EMvui>!Aiuz#q$ZGEAf%g|7!= z6&XrCjdg4e1j<3P?_w2e4tx*ms0(Z_N}^RJP#Y<8q;n&6qy%<@=0abj(9tTcdf2pf z+}xz+-J(nf*97X9_TEgjmh6Qgx8ZTMvQHQ-+4+hqpRsYN=@vRasr{?awFJU0bj#S`sf2sD&sf1O_7HIA J5@lWT`wM>B#Nz+} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class new file mode 100644 index 0000000000000000000000000000000000000000..69ea040e9653dd0d94432c64489d61fd14945c2c GIT binary patch literal 808 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..0c1232b9a3b66d97c22b3ca36a2d326ae83ce216 GIT binary patch literal 2173 zcmb7F+fLg+5IvilLog6-DTM+8aY+Kj;nrIyEre2m0#xPlK-C9hmej~jq}WE3Z)&Ah zDyr0nen3B}>Z}PN*p3Q$*x6mrIkR(SXY=RpuipR`@U{gZge62|L=j_{&?=^)8K=sL zYS~8yS1e5}E2{?ICHvknc%f20(Mt@nDR%aBlkYe-1KSitaTzU0FvQGt=i=fsZ6Atl zSw@@KmdzE%t`I|+Yqt2%AtQ-ShJ?As&vcD%sTxC9@l-ui6+PmUwR{2tcqCy^#t?=X zk~h(Jj!x;Il+Kb~*6n46a5{4!VT7UID-$WSrIytauSQ8%`b{PoB8AE^XXq&EWxnm0 zN4&bHlBOcXil!O|YE>8O+GfQ5q|*V@MK5=73Gzf-;`Z(Ay3-k7ehls8cT2S1x?7{l zq;1{Ntwc{c;}@4C)vbm)x~d#9NV-)kx(Ijca*%ABRAg1txMhvya&rvDJE!T(Cn&?v zd5$4;K6?{oRz!Js-zbf8T*qnLyWyV`{M&ct_v;ua?X^bpf_?hV?1vdDz%_P3V6PX8 z_aoYL3$>UxRzcJ*U|&yT6(U?wt_F(i9?7K@dPU8?H8smr%bqiY24jJ7<-AA)QbYOzM%2&jgM4DC%8Dwig z6|y2|H2VXoZ!`%(kjC82t_EJpD0Rl3$cekQpb2})tpFN{t#B&+ODENmd=PZ+FM70tsbR}c~eS}LVnE#-OREQy1&mh4TR`AbNY z>jCl1k3!5ksnW&>EO}>-nfbn%o!MW%zyAQRiOLufFia#ZoWlsivg3Db$7|c~c&O^0 zutSGS`>`kXNlFpq%lR_Hh-$f^o-Eh?s~;hZS{Or$Vf2W5dCv_ML$=oDN8Iiz*RyN1 z6X{tN#xcQQX+4K~UY$Gd88%}uCub+r9?3@4CxVWu_N^)@WO3d^&cY<72rq*3xNO=l z>TOb_Fdn$lRSy}ALh&$#8C)|br%mAl2yM!n3UDoJsjHY_ zC59Fwm@ikTfcAuH`Hh!6;2ohvK&E5+Zc}pA4G7c-x{@Ka?{@=7Y`Z%44Bb(`Z#Hyp zXy>VPJU?`0v**mjZHA@c`;FmSxQlyKI=QBc? F-ybh>L45!K literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5fa79ffe0c8c6cf14d797c4a633bc68b0ee0ee6b GIT binary patch literal 2810 zcma)7T~iZR7=BIyEQIA#jn+@7LGz^n1X~S40R=(>qF7W~+b)|G7MER`-8e%pO8-W0 zd*gLyTGTqz@yd(-q>j_+b2cAfR!B3G-E;Q5pU?Ze@A>=RKmP(Sf*;xtLRdkQie|J3 z^y|)6Mz=OIPc_$Dvy6&Au#8RLAsVUUR< zC2C>$$sAX40#SkJy5Ut&sR`t^wgm>`L36rhS!ynpYHjPt}6IcV7QT|NxP~w zT}dE$oEM!}$pAq+FYP3^gsDS4)q$(t?{Y;w&X4L{GEjCVxEsI<^owlG6xxf@17 zTKP=H=eR*p7E|CvJeSD(#w^WV&)i+xBwkqsS%LHQaetVef?EQ;nq4S5W+CIanK`a4 zqZq*izECi!VhYm&JqIN6j2C8{1s#_cU3Imoer%cdtNSK=H!{pm+5i}BtIg{ zPN}FHGp6K3*HrD+yDG;5zud8P%W*k_%EcB?bMjK0wlvo@T=elSZ6(J=celJvxst4J z$5;Hm!qqt6A-*HY)E^MZmr#D=E`*1Cwm|UNk4Jn)%TjoZRqiP7TNC)2>t>4m+)ZKL z7JN#x4#mTKpG^J^@d_P#IJS^}he-O&Yn%*0`Uv|zdeOx703*7DF7{Lu3Ey8|S-s}( zB)-8D8t0vjZ}AK^p_r7|N)> zTH^{FzEuDxprgQmWg5*0$3jtVc&}7)I26FtYb1jJ-XbvL1aN`?P96fF;rlxrK+ZD8 z$m)rkEWIqtZVed%_@uV+0ZhF^2V=Ry?)nv7g!5)v?BUuA40GL+PK96NdI)cElOI!y zZ!q@w6~|rnZPJ3@K3d=cC_m;IrVV?w&+1>X3WkgPX) z87vWY78JEmK$c*%!+|0cJ6@nJCZoQJt^_YZD0M<9{GNzBZO=eseCNf4!$lMS+qp@w zgp?|dYp&}Os`bXA8k}Obq(9rs>V}g@s#8zTR-Ds!pt&IA&o$L;U&OKE0quFfH|N;p zqnUg^!nQseYe`0!PDX6D9G1i~wLeAXk(C6N`A>g=Wt3Rgp&Wn}tOB-)HLNqDlPg~y xz<2^ZuuXq*O>F$Msd8QYa<3>{Pf>gZ>1MwZDjc%OSOQx-D`2rV!N)4Y`UDzlkAwgK literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class new file mode 100644 index 0000000000000000000000000000000000000000..4a533777b67610625f299ef2385582c7ac4ab6cf GIT binary patch literal 3552 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class b/FastBleLib/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..6cd82ab41254e62935bafbf09ed2a98bbdde94ce GIT binary patch literal 3772 zcmbtXTT@io75+BooW6OGLu-2hblPOZrbU}eizsLU4JZ-C2(7ke;vBjU(Aab{P2(_^ zI3_WZ`^DVN)$(Ot@-UfHAvI%}hg2n1sXXQ-PpSNaJf&)^$&hcI(*grzUgm+_`|Q2f z?fceRd-K;1-+clgi3cInK=VU4VZf(g&Dgi>M8PgjB}OM^oNPtG*PAcqE2kB-Sj*)Q z0tosMGO-P&!oF;2HjypNBqr_o%0$6QEL8G^`NUagG0llW&?#n1Ifvg0{@C^YYc1DP zL8{npq7IgVIWT-?czo=}$mo^9OA0mKZrH?*^}Fed7Y8qi<%pQwr4XR1>nZAz#XTnW zqJg?rZH-mR3cFo%BWv++HD8?S5s@Yl*{86_)3f=IAJ2UR3r{wL{Wu^%eM-TI(E%5Z z=S>_G`*oA0@~mB9tlnuq4$+H^_WKv|g`86kp&42TaUAxe)x;4TRj6M(J6xTv`f~o7)hEqhAwW{b8}8Hr_dBjZProsir_S( zTO>{>9Eoi<_3@HDCVFv-^i)b71PVK2n?-s8_>6*zir;-E`b9)1IkSEYC^W30aA~1f z$GW~c44ovk?K`J*AEa8~FU7NoXt-lglD zi4mMkNnR1yGhspr5-~ zR$I`{lPNX>R?0}e=v;6q9Jkpu6v88=tX;Tlm-F&nUDPYnd1`xZ*C*gTJmm8b2vy7l-euBBV>CiJ)*$SB>&srfJX7{3#ituSHS;}Www2Cnp zF0KThW<5h5F)pr~^!K=Gw7C+ugR2tsjB{aJB4N?1ECF#AD^e;0E=JNGx5z@G8KAPf zlpCkL*+RAXhsH_^<*YN57rM-|UV}d>nBV}Zui*;l53l02 zsNOd3rZ$&iV1i zim2o-spII!9Xij;scP_F49myEL-D`BP;bYdoNCe+9~&36E?w&~B6`z9v>u5VcMWy8 z9{-L<^v>J<*OTe$l2zxfB-3|w_14PYkE}V_Oi+NG&=H~jUHsZjl=q;K7ur$cewyJuOA-d7)_&Qs)tAN$60>)OiDSB-gpWdkF=$6s*$>2#V$xI<-D*k5#<4^R5k}&U~ zIr9jy^V;cs@h1Q1jP(L=4_ z(_FoBS7R2v+sfS~e0B}e4rVNvA0c#dmSk2PW9D=r#tdjjH_qTBE})0^VJ|Y=yTR;| zB2CiW7*Bj1-yn{=FzjZSCLyfCG=*=v1+x=l_!hp+5WUjzh17rL0oklRK${=?pQ8RL z)dle#e7B0`f2dSS=SuuZZ=-(uzOaH$Fs?b&`y*BYe)k z*k!OYt6?19=PvIC%Du_PYg-FHb90|8b5?P##9Wn4JbRPz9b1coZ*;W6^sK-$A;P8yeRh2#oAO}}%E zN?#3A2XGaBl4s%?JLn6p`%zCbet>)2mjw8s>!2TpNwu^9p^EiJhNLn42tTfRwZc_l z<|;GQjEAo+;S2ZO?#8q_7hl4QG9-*bFMqP<8y^Rx-MKs+is;64mvJPbw?>TQGN$~C zoaisg^bV%-}MLtJHL} z1^$F_7-;4D+G~D-!%vy6poVUeCxjei+W(9s)lgdkKPNTMTAp63R#*uJ^HUn0+vM?- z$Aa=)s)Er$L3Tm}!Z%68>^%W~{gqU99r7-;0PeeB2k{I1vMS$42i+c|KMrKHcw^`I zGG5x)J8rp3yxVAf5BilGK>)uNp4=PmpDx?LpDgRKkP$ESuvtYl5R`WjWSbIgZ;chhv>Jnf?Q6Kbe6( uD%xiCb2P0K$69NE<92J1W1Tfb1NHJWQ0|p1|D5u@0Glrih2OXc|Mq`&!O5op literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager$BleManagerHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..95ac447e07aabcfcbf77863e527820d2f3606681 GIT binary patch literal 619 zcmaJ;O;5r=5Peg=N&%_(t;Cqf0W?|;-XI<%K}}E(8WN97S+QhkleYM~{5X(k;t%jg z8K+1@V_*-vGjHG9eKYg%`T7pv2*ors#8QZ7kwB8LZ+ipFR(>qN;5;fkL0 zOVjYoQ(fs3GQkuh6kD^!H3K@*DHvH~kR_OX@gOWE+@5vS=}S8#B@Q3*U+I2^bIWoq%vK$LGHyYXn2s zwhV$&wOS=?mn(DR%+~9+niOJOdqdxrO($}cpSJ2SDxQ!%cU|c>ln4UJw#+HvyT91s z+2}kb?nE>lj$({({}?ejv-l)F6MG}1o;c93$a``OHc{X>qA~$XSO!cTD_CVD5*Noe xK>Qi>$T|Jd>R9{vW|!ZMR^|=4+Y$0Fpy;#Tf>WlfGp1pKy#fZ`YCNJX7+)1ehB5#E literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/BleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..9c16ab82bba4624b245caa70523827d57b2fb72b GIT binary patch literal 21430 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..6601ed86151ae1d18452afb895e5b69c026bcfd2 GIT binary patch literal 5337 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/BleConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..b95be0afaea0d3248e6136c1b434e46109b61e08 GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..773a59d979649b353cce8427832891488a497e63 GIT binary patch literal 1397 zcmbVM-%k@k5dO9;94!Z&{PMR}t8S{~%v{ z5ECDa&;C)yxx1nT!o_&W?(ELZeDlrh?Ed`q?K^-+SkEJatbv?~F^n^8xIy1>WzTuf zL*16bY0H7oL7=X8ylMA@t0}~$=X-jKAzQZh3Yf->0n5Y%%rY#UA9QR#XXR+)?fl7SE z#8q5lFou2%t#V48Mk&|+)y{4hxIr1k=?t_doq9}?>p(F)NsE_qwl#Z?Ay*IfDZiPf z=Zn{aep{$rPTj#U+YDST_qg(+{ZN^UT7ltl3h|VHrL`KBd`IYRu>Y1T-WOUZg3HP- z&1qSjs2Vw_$YFW(Op;Ejjhxa@V>cM`EwAHqJy4X_yR#;V=2TrbQ*t~(XN!_5w1R^!y_!9~195VZ zj>wt~-xsPbc^HZiMe5-RFkA<-tmvtr*CR_~5;y5jkycwIGb9U@>KCxeR~VmZm%%NX z$H^1u;Wo{Si52dkL_4yN(HQR1dW_6IT4YRjh2|ouUXpnf$gCb=YK6uT=04GW6u2J) z7ZbZbz$TWk90xX0rd7szO1L(8Mz|Yf9pO$@sy{HjLgNURPXi~6%@|~A2psXuQ=%40 d8aY&GkwFzJvAl;>k~uh7qvthBkI~=w`wdNaZsY&} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/MultipleBluetoothController.class new file mode 100644 index 0000000000000000000000000000000000000000..9507406f549fb390768c6952e4874edf06fa83e0 GIT binary patch literal 5689 zcmbtYi+>bX75*l>bdt@4Jb)x1kAw|rl1)gVAV>fS36($+gkaLpS~}Ss!op@Z?ru^- zwJj}bt?##>qV+{pRH$V`h*o@2#dm$bs`c%kV1FonXJ&SGb~mKyukd4b=FYw6JLfy! zId?AC{&)Fl0PFB?9}3`6;ngq?w51e}#AqE$h9imA?Gd9pKDJX&9PZIaeej`Jg{Gkd^A#+~UBbyd zdQ=}a;tGm~jbv9ek<_C>L&5Tf#_pTXZWF_08p=_jpn?l~^kW^dXq2vY#KxlZmu`0X zpkkqfv`B%sp{udK2vw+7u~@?ryh6eHT!5j-n30Udl80M+#v;k^XvEl_9-;MQJQj(F zrzMOw6QhDvd7jQdMVpFc3d&7p<#nq=(NcKCu^J7vSgBw>t?xHRM(y_s7Ifz=qOm#! z^*8sQ#5%6~;77gCa4VD6kmqYiPwJAjPGdYAG};>bWqzZECIl2{!&=wiiSsQ1VH^a*O zAu+XH!z;0Y3XK~hv2jYLegI-v;vj3d-V}R)^};x zh26x{M@NllNI{D`JUa#M@T?)*116^vJsNri+DEhPp-|jNB*gM-HSCq)!eq=^BRuqJ z*e`5)IM+v2_G=ixoeE0B2`K@lHtpmbq{LKL;edv_a5pW`qFa^Bl`94odg(g~AESP?~{6q-z*LkYO6E;E6tidMi)M*epa2wH3p_Ar-?K4kOG8&s3bb zpfH>?;(9X1;;+nF+hvc_z)?h0jA)1=#-5ZhkeugpM@o^3J3lZ~z5ksd4{dkjx2V_JI z840$r38@=hF2_|ooMpW|9@i(j!wHkRlN#QPw@`cIVwy13S;2QmKMW?ru_*aJfk&ms zyiLJkTc9Snt~s)Ayj{VD+{((Nbe67L$0~gc?-Yo4DcF>+oH0bZo}b|Eknz{bk{^$2_!K^^porGe#krC;a(T|~ zU{vfGd{)Efq-}fjP^bt`;PWcJpy7)+$5f~LRE&GNw6nVY9sBya_ViLkeVw}xcJ=O8 zpmeGDGMnYi<{s?W)48Khkj`tkAe*%}5k79nz*nWwJjDcXW1gw8`;gKwDXpj2Y&{l{ z!rqjI%a|rlR>RNkDS_FP;hxHrk+Qz-w*xHrt= z^DH&U04jz=3bwAf`7=VYNPx8PYVu6y$d2C>oW4E%U8P{o31eICOX|U+Y=Cw+3oHfX zxKm0o(=QhUzX;L_btlLE*t1;chY4wPUZ>;n&tWACIkV-oM8;F8+Qeu&aeHT4@G_-S=FWrFddgfdX5(S2%^BL9mtco8`HFNRZ4dX3IlF6;E^E zzY00#K*86{r?2yw2Mp)=Y0T$6&wIRngEI!;R-len1*yieW+TxqzKg5GD#9{6 zgYS`q?{iiml3fM(#+Gk0g2c0qLOq0s~B%R z?;5ZGjr1j8dQxfGay+Rq@f8!_i-LKJiTwiyJ4TCwU7NNe@LC7FHV1qO!MSJNEbuhA6}bJhDGz%Cu{RQX6S3PE_!bv-je|W?;5pAC;ExH7cDUxQ3+-e7-+D@}1cOD8VxA9y>0sqhj zIcl@pOprzanZ`DXcRR59UL$3(G#n@nIHZ*1U*9i5-R zHCfSBWS;h2f&aXctL>d6w~IR8#YlQw*nS7w?+V%jrIr&9;#M2E-$pKPVsx)Ng<|;~ zOyTtz_0BhIWiP8?AIkXgl_9p=!6?thC?m#CoDOk@SW>(jB$gEJodS=e-GM0_QE&=N zdBd)C1<9V~DU8dVpZI5QJa0{(5Kp{jHCuHwK>6N@W(-o$2Y80R%kij&9ptC@8ABqN z?c1}wm%d`X`#Il94vJB59VIG`zCcfF<&b0Xq43+(^mXJV`1;0-uUxevg$L&np}mUJ zAId~n&kh9KLvIferZVRP9uP7GR0wW9k literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..21762b3463721fb3702f4d120abc1a4b099c7e82 GIT binary patch literal 1022 zcma)5U2hUW6g@)`%Cc=&+M>38pi;|6?Lzbo^}$9X2{a}cd^E!{!q#P%>@NE1Pw_99 z)YSOk5Aa7B&p>Tx!vmY_?47yy+;ivNvw!~n`VHVI>KP=kl19?RHKYXgonT};-iiHD zMsd$mcF&urI0)jQ-5Gms{62JJ6&C9Psd(r{#Tp^4r7#TxtH`8bn8?Bu$VtB+25#RD zBKr+(PlZhS%=O*)g+RX4n)A1UV64JMxvO)mo7jLQur{2c+A50VKndKq1UWw@CW9O{ z)7Ubxjr?Wa3vBYsP{snHnZ`|l-K!Vs%UIekJ=Kl|26nKU#%&XKa93dOYUsj#2^i9G zSZJ|UW5+6`C0kbR3Orvncwxf?l1D+G-PvflzB-S+$M0JYYKwvBRt?*n1$gXirncGI-T}svB#JM z_GxFB{i~(@bWyNe3$#Dbt$Fj6>KWFmr?_rC`39qM3h@)SG~vpWFoz`VGE-Nujw-eL ncuJn1p)bhuC^3qfnj*zE;Z>Rm91s8|*})-dv%IxwO literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/bluetooth/SplitWriter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1ee64997ee4a910304564597b4949f1d419169d4 GIT binary patch literal 2344 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 AUjP6A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleBaseCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..7d5c8010b32a32b44669b1d1bc9fbb7a476b8bb8 GIT binary patch literal 832 zcma))%SyvQ6o&ulEn1`18m;%sF0J5f+$k;;M6l>W>3*7yZQ7VXk_x_+f+D!^0emR& zoHSUh5hQSC&Ya8t&6#|BzP$rDz)l%C_@hRlBd9SfF&|`fhwI zkhkltX-r|-K-t6$Oaa>o?xf@O<*kb1wx^||Jg=>sfjsf_iHh`T>QnVVKL}KtV}a{9 zbp7rjx12Lk!MuRcQ+~(Op@7w-T^P6>8AS4Ybb2UII1M^lpwe`GeL1{q>+nXAE;kNH zyQM;x{q(R9_uNRJ(fltaDU`Z8zF<_#uK$Lmc$CJM?BC&fOQ1{*Qec5)YLa=8GPU{6 zs@YjdNwe!<7&`jQ;id`R>7x@SBR%1 ztxA@|Y!}IzqXbx3B9G`%Bm1-X8O9?8a~Kz!nZ+wuO^c5cHWF#q0|jy70S6Yr%P5UBPnM-3>^UY;uhH`1vIUw8kju1U9Xi^BvN$z|Y!Jx`-V4 zUR!FarD`nM)s0jWr>*f$?S;@d90*jNv-dM8Rm$zQ-!AaRvKw8WnkQ-Lbl$s)1Uj{g zrPls${au+$eVZjxb+q67F3!#Q>dn9w)|qbn ob70&A0^SK*J(f|K;Wnx>+`;ZF{=%^u?*O_usG)>%h@g%Ns)R_|Wh|3Ld?zwDO;jvJl1znsi2I4^ zi%bnxnovF0M!O3_IciTrY!J@=D!wu^ErnZa5De^05gH?H)OEg`s`N&%C80I4Y&#LD z_Iecz++1gb&gefTJwnr(!g`!bsWNV|78?qk{Yw#E;CS%_YHLO8T$ zFc+ziPNh0?TCy_tYDTC;w|$>c8{0gUYN-80N8F&eMe%~2g?JLdF+%psjDmpp`q?m#(h$0q|kQ|x>_h;uI7aSjQY{YL-AyM!Fd=z32 z61hM^;)>auea-HEe7?N{ILDy}3$_c#M+b9Pr^Bd%U3qf2AMlEZZZqm65H0vE9iwk7Cc51Hn_#; Y|0J;81{}f;I^T8|dmQCMFBb6r2YKrzeWyS8aEo@ftgf1w<-BgQ2n7TNYV7Zq3~u(Vt~yV&M<)M;YG= zYK)0-i)Z1SfHUj|D531btD%A_A(Unw$z&EyL~i3mMN%Y5EaYv}NmNJV zs=LyJ>bXv}y&#ms=E%nyq4k$}V62`zeA~UQ87o4)uTwQB=CR7I1P2lteZ!$6k!hz_ zMbA!kPB`iRKcdaUO}dO77E-F52Ygj}LMKJWamV4Wnd)AuJF89VmcINH?dFJZXwvRf zWI|e%>D+3`D!ox-LM6QJxQ<|GicG4WcDo$#fS-$>&cs4^NAUUI-SNOyR2kPJ6ddmtmV^Yz1?V5#; z5D5uf%y{1Oc%J?G_WT0i1cL|;+z?&|J_3eVm{lV5GP&k;Q)rn8u64o1ZIWu4@>)*T znjtt`lxXqr PAKb?tb?I{m9UQy^D3fk| literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleRssiCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..e456b1a21f083f6fc207e43e1e4ded44c6d63723 GIT binary patch literal 445 zcmah_OHRWu6dWgR1EHmSdI5H6k;sN!5sOw-LW)>Wl)Yn&aB*W4C#ctAg~Wmba45tx z6sUv*Ud(u&J)Y6NQolklKUBg^QYkSbZVjKn9%&OGCiKT1w+K6*7l^w6XV^yX OgLkk?r!*VF0Q>KlS#IF~ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanAndConnectCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..a0bde2e5486c2c0a0f4245f6d4976f5d339d8867 GIT binary patch literal 614 zcmah`O;5r=5PbuMA|UvQH>2?a#@NK*31gxdj7eimFx;2z8Wzjew1xlW$;5*{z#nCt zrNo06xyS;UBKC}M4x6`qh3Fio%8wkXY;D=vb+*;)18S%P4q*eEoaHUD&q&TW&e_~=g36qr Skrgw7IdmI43?=N&fsJqY50#++ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/callback/BleScanCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..f1d6bd52af3d5ec485e497d5c1adf64fb540183e GIT binary patch literal 658 zcmah{O;5r=5Pbv1BJ!bt_;J#B0b=Y$P7n@aNK6_v!Ej&73X7#R?ZW@^Wa7ae;Eys+ z7fg&CxXkR#&b+s8X1~5aJ^@_gG=~(@Hmp1{*dgrC#8NoE2qwP*y*T1=`JB% zZwzf@33V@=JDxvto<*!jzH~g{`y=7KI5)l=cp~VnV;ecb<+kd_NX9bIGP;|;60BZ0 zmV}b40(rlfk7V>Dn1fJuL*^NZNG0()Y3Zqo2~Bq!$?ucegkl&ZkL_iEP*vu}DRwN)el)uwdmFBV61V<%75uDifI}gk zOA#O>gcma&Kac16y}mua064;K2oHV$-a`jnhDh3ZBF!wh7Ijk?l}KSsA>?h68kLG# zjh33Bd#p>{oG|!NoCjE8i2pKQRJ!@*<|BKh82Xtm)mb|)RCO*Wk6}Brl$nc4JH0&Q z&5f=Z2HC$8h723FT!cVVsjfFOCMX7`6*VF1js=G$p(tZ8(Qw*Iw zoZ7aMYOGzudsP1Mxx<;b7knQ9jn*w6%ng@tl~h8^h&u;QV2`x%5E8nw!!^R*#|7eb TfK#{VFL)DMRHYFSdf0gf_zZF3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleConnectStateParameter.class new file mode 100644 index 0000000000000000000000000000000000000000..16fb2aad7d1726208cbc2d99481cf1ab4dce20bb GIT binary patch literal 771 zcmb7?&r9P#9L3+XY1+ov`g>ig?s}^Q&BdD{xPnk9>w?mQw`m+TB~2ii_OJ4?u(GfR z{{a6e@y!_PD(hhr@|~GClb6r;k%z}W_W<_r)k6v8DjXjbxB_!SIgvpulk4DgFjS!y za1Wv+(uV@&_IAIH8tPSeK4#zx?1bqk2;*UJC38K9Rd6Y_48FzcI8741eWs;WKV&9H zN~?@sIfZd9AiBn>;iHK;fm)Owg*uujZd?dB?e2D;!*O~^rP+%T^?f`VsO((w8v+Zx zG?Z~)W|3JJqN8sj8V9}qLfRLoUn|RLu-IakO8!P6kx^a-GnZ%GnI=AAweSo$3hq@pzfis9qy%H;Ybi?Hi?k*Mm zRQjd`ML&QaN}NqX2}x)%a67lRGryVn?~p%#fBXjU1P{`PA#NgJAqj(!>4_6zyTa?* zZ`(cTLCrkp^ENFD`#e^deC>D;<5gPOQX*qCWZum**i&fy1yM9uF=!g51-^39;%mce`N zK*%<^@V!u(J-vuF~*#2 zos^r+fI(}xGXtueBKv#40myFXm?O#o8Z3(pu|s>&lcJ0Uk+v5H&Xuq+_?A4 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleDevice.class new file mode 100644 index 0000000000000000000000000000000000000000..bb58e6d6e8def7d672cdf3fa4f9fd25229885eac GIT binary patch literal 3253 zcma)8`BM{T7=Ato354Yc3J7>0A|_FcT6+n_5)=ytR6trwYr7;1E+)HlvuN#U?|-J9 zvC|S~>P)9U^@sjZoj&jG<{%svX7)SZ=Y8Ju%Rm4A@h5=G_$i78G)558(1fr;=Z5}B zPvv!MJ#}k!!^pY{;c?S4-3f)pcw)H)&1i`rs-YE{!ttzKNM-XIsWrXmuI7zYPIvWG zI&WMv9+_D~AyO#MPGxi}=h$X0wVK~DT-$aZ@M19YFO3O$yM_*QDzp|Bv%0llWNjy> z(6Ex0!!8Yna9E+Kuuv?T3Tj4ndo=Xoh(bqU$t)N}S1)YN>y};Q`D_IJ3MXHxI*Ow> z7Qt~1Coo8)svD;AdXY%&>xS!1Gq#>H9EHAkB2#zEKN^c-2&W<#)^Hjl3bC?syO_GI zJ6R)7G{?|${z9kQ6fVT~0ZUZeRuLBoPf1)u0!gyX63#W!Ph4Ztar7q&p?G2?Ej-R? z7{z(UK@`qd3@4*FBPSO$T*M`XW;w~&*1C5zD@T_#yo%R|``9sEqn74Cd>=Y9iDi*| zL&KZ6Li;?)8bVF+m9&3lT*F&nHZ^-!JW8Q>ApW+7Nu(88yfdFvC_XEKeYmFKI;Lp~ zBQdWR=(NK-La^vMrnOGT^x+*1GjcV`tCP8$V-$-K+*IhT2F$;m-ZJxyW)!n%l+V0| zTe!`f*Ecr}i+ML%8<#*sZQOUjQ1>hrG%SklX4m!)n{ihG5xlD~cyPH4UyNcIjgr#u zYgoYtG9dbKQ?>z3|rIrQ4(!9e4ggGr7} zj46y%^I-pKPAoGKr|cYcc4SP;nBOX_8qSi>s4HV<_58B#n6eHwL+%5UwKn)N3Jg## zXfVnD!(?V9%_Jfl$Lku=Vohghck6maPZhCJa$_RhU|I@?c6*QhX!86?L5!c5{hJxiN8xoNPvTR17V z)zhqja?tk=1!am=nKsJTHrFLJf6)5??rUc-eS9( zHl@L}S007)QiKZHjAa>)*HR5u=MM_U%63%TE~!yYaH$19)p3#q(g1}I`DQi9L&T@7 zL0%1SJ03DtUGrkzc)gS$^Bm$Zsb? zlxaa1a$NQJw_#w7E6QP=+WF29^Fe_5lyYI7^;a;HquXdp9^FPP*%R7EcU4Efck?iH zbW=wUb@uXsJ3`idp1#Y(B~nFSf1pqHOxh{j`>{cm!nGd{DI4N{6Y>F@EuP4&QJ+m$ zUkL*xocs%YG&Xs*gfqg8BaM&AnA(Hj03nZ3-7$WTW0-H`ISke~WVAwX6a`qGLu_mY z6gEjg=nb7s{*K7e5?+x>TM4hr7%O2+#_kfXRvpvh89q#>oTmFn=#DcCd)(7G=%ZD1 z4&f6|CpEzFoT5;~`9S+Qj|~%~@n>>qfP^;8JmCZJxzoIkt4SqXQZbuHD~GE0p&>F~K4jftJMj8Ma4e9EtsP>Q2yY!YNa zt99|68kDAri=R~LZ-TcaJHvIgC%;O8yG(**55cdyaDX5IEZ5yEf>GVB`e2Ix&LDSELSn(klfLSybpWj)tThTDKDHr o>kBM19pC#6_rx+)Q;fp(8;|0*_>N;2*UKE`?|XLoAHyyG0g2dvx&QzG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleMsg.class new file mode 100644 index 0000000000000000000000000000000000000000..4aae379e2bc61ac2ae7f58b3fb2cd796cfc3ac47 GIT binary patch literal 2053 zcmaKtYje{^6o${{LP8SAjRe9ygtkBn21>a!K&!|~5Rqk&WJB6gRklS?#<6E?8HS(L zPo3$9{(%0dPTyUxq!XvpFB(7RynFWDvlsvU&!2x0(F2NSXpF|EXkv~g>4cz#gXm*a zYDb;@QnhgqH&a0;o+h0neJ*JH#?AT^O$)lv>>iey?Ss<$sGm04aj6xhQE96kSNi*c z<}3bA=$nQcmaV#NT7rZv=#<&*^wX%5)}!_y9>?T_*`(C0x~^pg;kIErGA?wyZ2LN8 zm1TSkMWo)dbXW$*1+B=S64xy+^esdWMWpv5D}Y>G)iXO1NNnu#%L5SpMWX11!b zYG79^S#e4aG+!8@TMg{(z0eN~FOa##Y+#Y|EWhTcwbkG-c_IQc9;nb{Y`byB8 z7JrmmAZRr+WV>bCGy*l-a4qYobSzt}=9-|3$I>I~*}#gWnY{Rs6;0D!oRp-~N}5p` z=l0kBYlL3Fw}MXR1N0J>GZ$|>oBO}V_Gy?Z%-`2J|CM70;V|o3Z`C$o4%NY7bj0yf zbnsIzVRl!g-6LA<^#?(-L#Z~plo|Cbqg_(a~3 zSDDsn3QsT52CdOan!#&03mT(2@F~Wp!Sjq4z>AERz{`x!fL9o=g3mHO2VP@*9&~~6 zMerrYm%&#UUj?tzwcM}t{{`bO!8e%xCioWPufg9iz74*^#+ShN7~cm!VEXUC4;eoK zKW6*{{5>1L34X@-IrvAWH^5trO>mj%E$|NG7vPsnzYBI4SHLdQSHZ6td*FcSYv4NL zH{iESzX$%A@h|ASkblkksYt0NTRE7J(lZ}`sX-w`!Hf|~e_QR`m< C5{JtG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/data/BleScanState.class new file mode 100644 index 0000000000000000000000000000000000000000..3f02e220bc25f316ab371f85d8faac1fae2357f6 GIT binary patch literal 1309 zcma)5T~8B16g|^!zm{z&6+sYGKE$>tD+;2vA!4oCq!yD!65@jymZdD&Zj*M)vp>iO z1r?&v@a&H=-n&~vi6nNCnb|vY&bc3R_t)=lKLISE7(+;4%4{}t)7jT|W!u|!EPY3M zQh(}LhACaclb)4;fTAISsDNs0tZkIvRi0JL0yEYBatln3Ye+CT6_Ab6TCG;8z2K_> z4H}XHvDwYF>YK75F#EO-RTYCs$B@)8gp5GMbegUuFr3X*_vL}q9qHEf_3eGj^a?75 zaXE$&4Wqb1L7V}~Zl^)652Vwv)^`P#vpwvRBirpl&w=5!Y`0$M^}qtY{9U4lJ9!3YP(jg)7Z9J83{&sJudiFihTsVTHttHdIbPB=v z&^i19ooE3HI_{FSNHapT_Y9@xLD(02NxQ<}{QSf*#`2S2F!_n>KrThMzyO7z(V7Iy zj?f*8-}6)BFHSD(J4g~dO}9L0+@~3$c&X-iKr2VD)6UUH@}DvJ!3Ufrn)W>efky%l zX_b4pOV0VR0z;7>5L@9xgpDob5HW)*aK2)3tl(jnR-*UdG4q{RnW=E-7}G}x`_@fG h@vYbi=8m9p?txH{dlV_eFhPDp-EZf*mBC~>>O~GV@vj#|Dr;o-~;$5 z#M+{vqM6;9eQ0*SzCS(zT;jk*2bKf7k1l$IQ7T`h$YlO39^zCbhS0mxxi;4X>+~#g zuthjdij7FJR6NPb#F-LnX{5Nx)Uwn@1x6Z07~f9A>1z4th4WS5E$;m}fjq)sR^*kD zxrt;}D~nwa!JZXso*DW&SBrWRt1^_ln6T#;iOeEd>W2S{wt3MN;l%&n$AsVpMO`N9 zPPhC1xV&ht#St8S0{g%rw&8NzVb(#PGiu(#IABGz9O$0EgWlSfUB;%&B8H63NRy8+ L=E(LLJJ|mL$~;g6 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/BleException.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/BleException.class new file mode 100644 index 0000000000000000000000000000000000000000..81949045a898b421bce38b26110ed6ceb6238e72 GIT binary patch literal 1495 zcma)6+fEZv6kVscDWw-W6p)Kr6r?Sb@q*U^3Z-gIwMi*8Jdt5K;E-X4v{Pd={(+z3 zgCPRu z@w_zuHxs@T)RT)IY6&)ZXvl{7y6fANR=*jsd5a$u4*|c=x!FtZXVmSd|Vgii4xD6`z}U_=s(Be znHT562}0{;tD&e*H9n`f`?}8aS^6gFRd_(}2?2~Dg*2Tr)Lai{F^Vk0C-ywqlFPnH z_AQrvn=te=Z7e-9+5?33;|{G0WNq^IPJ1kK1eO^;gpip#MC7XtxJ#=DAFXj(Mf711 zQ6zAWJV^(J`*=VW5!h*%ed39@{D*kdNh8tDzxgxYAbh5S2b`R10Y+>>UK0g$2pMu% zBoEj4n4&$j3y!`obadeSX9bKCXu_r#cEV0H2^~!gOPKDExs^n^RF0D5nM#&P!D%J4 z)TB%o?kJfeCDZ39;XUC!pl977drfM2$=M%>ZysS#Otdk~`_smlc-c8eXd9Smyv|i68vXb=Of+T2k(eiSZx# zK@%B?CjJ0_l=0klY%oA1P43IN_dMsh&pD^R|NQs`;67FrBpBwMV8?R2ZR@?gCmJ5N z_(zBD3ODerHIKhI+@z3Xn0jRkq4#Y1hU2uukT;8Z1`H!A6r^ZgaeY@jV<;Ha+P3|{ zwmjQ!S(_qs{Z^%1Pa}g%3RD%N7-KNcCa@m(K6gYfAj4?GYjY6Kzd6BUdUiT294fXbhPaIc*ACwD%ZTRlzvJOTFMbI zxGCLB1A#Xh+oWUVUwF3|5}%_ymQ|QoU`UA|&KbkFandy+TV^O3=jNbVt}`UpgC=Ll z)?A;zZtpaB_{OGsW6)}WV|#TwbmhKlOo}a+lC)U+|LUkvd9=8YN*v~x5?3Yb-f^oX zmAw#dj&P5a6~i1!a$fCGiYWAe&K0zO~ zU9_T}pm~Js3YKVGrrkRX(Ff$s9M^^pFl;XDBW=#?Bl|6KvS`$hq)|nRpd^@vEN+uU zk6m#GcWFl;(WwlZmkmgv8Sc@aCk|!NEYF6`@5p|kMFJ9B@{u7Vpc-H30x~?nL$XMo z&!d+BiaAZx%&%mM-7_=;1q@>{f+$3LrN>E$n8?VF@VE<1l-Qcyw(2I*8f!rkhrSc$}1`3truTvz}A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/GattException.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/GattException.class new file mode 100644 index 0000000000000000000000000000000000000000..0d1a0684e1bde759718f930079e42fd9de8103b1 GIT binary patch literal 1020 zcma)4%Wl&^6g`ti?YK@;+>$;4w<)b1+L{Hs@Q{iC1x2t3L}KYWLvZEVkuyd}h(BTh z5+o8xd;lMXxZ}8POR3a_J#)|8d+wPt_xGP4zX06BT?GY(Z7(`@yx_=r>yE@>z#aa< z<3r&`p>q)MCntf562rL*nbSO}1z3+#cm_QOHT?p2^+R)MagiaCaz%LT}Gc{c`aKyg>NA{jBTwt{(vrGFb7B!1B6v4$E9 zDQJPAXxTj#*E9V&;m1?D2Qqz0$1+w(zdIcAu+Ok({YU-8 zo*Vlz&cKp*=aXS}=ZZ$R7^(vXilY?zSN9WO9dCRMlYTYP_J^s{Bm7aUseff&y zgd8K#SCFGYyAtgcY|;NVMbA;B6JV}6&yC^)<>uOVRK5~Yz_!Hc9H>Ago+@UsLs5NN z0Sh)oGDkAg_@Ie98LyMZAii&?e5Rx+-3-C9K+@>xzMRo8>|!q~eni<)l#+^Re#y(V z6gE)C!Wkt>u0+X|&;(>;uc<~hZTv*-%>>ts#WCtq)flVB4Y{A-7A<2mP8&_HO{0rd QB3eG9w~_1JPh~lO0WVJ1#{d8T literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/OtherException.class new file mode 100644 index 0000000000000000000000000000000000000000..09f48499c00775002c7826ac9361d223a3891349 GIT binary patch literal 436 zcma)&O-sW-5Qg7LKN8bwYm2>mkyydKc&msg3PR9BrT6W2+ipn{*=&n{%ah>2AK;G? zC-DPB1$SX)pJC>mnSFVEdIoTWt`Co}r?RC`$wEwJ?#780`d;ZfXR=hBCHmqMLJ+D= z)KDkXk4%QF-9EhX&iQjQd;{pvl~O&%-9Rn79Hh Lv`e*ZCJ&uAk8y5- literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/exception/TimeoutException.class new file mode 100644 index 0000000000000000000000000000000000000000..ee2989f41b334496ca5e18a3e1d3780ae56c32f5 GIT binary patch literal 413 zcma)2O-sW-5Pj1`)5d6PL@!?2i?l_|MetDZpeP7I4=uTGH*4LJ57}4X5VAjH#6@auWta3vE!jZIFMx?$!s3oiG`hJDpF5UJy=~9(RrpWe@GK9 zVSl1?RaUmUlDoH3R>r8b=Yy~wz(bSksV=lVBkc9BAD5Mp z>PpxD?*5+SsNM!Ww0PS(h||LcW5DbL&X?XAcGA#!!P+y64Qw*{Tv1<#bBkZWcO%;9 LFe7X;HV}RS^$ux3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b8b5cdb3d8e1512a845dc92701e00e590fc9e1bd GIT binary patch literal 893 zcma)4U2hUW6g|TtTeef#qOISG?bZSs*CsxR@uAoz8mvt*ybsF=ONQBGc9&=Wl1ZzH z5B>mul=05eq%kyUNtmy__ndR@J%9fG`VHVUnpKqGxF~bnK!ss9N@iiCrr}qSWz zG!i=8SF%t0v5~3NnKZ#3LnWKUY4D0tde_S7Sf&+@Dm;d@xljSYznAkkk_?R{jFHHM z7Q;NmVr{X)t~uC<`57(Om%U)spd)g%n%ZZaawS})e}D4z|b`LbZC z_mW7cfiSVXpFfuETo_tQ$d?KT_BzzfPcoY%qhn#jOwxEMz1ok*T4cE)V#nl~!Rsfv ziR58y>)W8o{O5?5whN^3Ku0P`V?AC#ay+yB=M$kvN}k9xS2QaAL2GHcN~Ebw(I8)N zFx)}O_pLnu+R2S%&=UP?xCaOK>D0AewJ+`GXJG9YXK>p;vHHCTd_Zf3V1Ru*q;>N= z`4Jw|&B9nnh9`8c67Dy@;Azmc1fM=UEmq6(hF&ZXZ=Vv)Dcm1ezaa4n-~+7UupqM9 cDHaPN2U`W=HUiqq01c; z6khm)7e0UwC4RFhDJU#1?0hrBIcLtC`F{QW@e{y9w3bjp*+V730;&Q#aW;wKbR4~v z#tu@7Oe|IOG^HNbBTa^sCEeH+sM_PiG#)Ue`(K=nk3}qb@B`Ek2!vyKDx*}YQS@ps zrr5IN<3uHPPoUgv^?fX3#X}h2BI*JgMTaQT0<{s@17)mKF$runTZO)u!j6`4Il!v3 z;~Sfubn|O^xFS$LxA%Igl;kV~+RZ}Ec|M(1U!by|4VkmjO%xqYCj-)NW-9e=7R$6R zb>h}%n-v$QK(Xoh0gc@bC-{==aW*`XT26>xh3REIReYCTHq|k`NSx=@zaQ_uyBYg> zuHrN^i5kshJTwHhi&CDS9^fu^1lHqBYks(AbehEUL=6w=o$XmVaq0gP)KFUK8fk{k z6ABI#Kf``1jUj_g?!-k1tU-jK>qc(S68|-N?N7O`BQWet Zw~S3*m2ew(xK^-*Z8Ul2Gs?N-?+>ml(ro|$ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..c9d1602df373ad995085c0b8ebc6cafccd6b6a48 GIT binary patch literal 907 zcma)4U279T6g`uTS+m`mZES1(j_uYaQCy)u84)xpD6uV#Gf(v} z7C{qS!RWYeKg zp9+?GF9~@(;3_ir)5o%z3`1)U`CI}1c8B`;QRstYw8s^n3K}q_SNqXea-At6wp1pm zJN+b6p?DXW`c`N*|9Rqx=>lndE5kTRse=Wii-%?cYhj`k&8ZmYD>>Q`UvyuKLk9P~ zltOi5o~9y2gIwZ*;RZ^cXUqc7PTnNDmgrx@O<1@^r>=3Xd1*g70c$@#f!+Rzg`+(1 zHmwzc0lwi5t*fWWcX5wy2F5@#+^2JuaKCyvPlK){c=X{xz8aqA^kRVA_A${M!~TJ# nGZH5U{*DD4fgc6r4@cxOGhHrnG$1LR0Dl33CXipdP3|suZ9iRSw)X&Ng-AtSfti#Erki zfe#^p;L49e%sN#nafqlfdGp@B-+#XS0MJHr1tpXnR6H!9DzG1=lQ2rg;i=5c zAW>l+NgX~*RFCmEQ@PScWsSB#)ttq7<1s1S|KfC9EMvui>!Aiuz#q$ZGEAf%g|7!= z6&XrCjdg4e1j<3P?_w2e4tx*ms0(Z_N}^RJP#Y<8q;n&6qy%<@=0abj(9tTcdf2pf z+}xz+-J(nf*97X9_TEgjmh6Qgx8ZTMvQHQ-+4+hqpRsYN=@vRasr{?awFJU0bj#S`sf2sD&sf1O_7HIA J5@lWT`wM>B#Nz+} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanPresenter$5.class new file mode 100644 index 0000000000000000000000000000000000000000..69ea040e9653dd0d94432c64489d61fd14945c2c GIT binary patch literal 808 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanRuleConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..0c1232b9a3b66d97c22b3ca36a2d326ae83ce216 GIT binary patch literal 2173 zcmb7F+fLg+5IvilLog6-DTM+8aY+Kj;nrIyEre2m0#xPlK-C9hmej~jq}WE3Z)&Ah zDyr0nen3B}>Z}PN*p3Q$*x6mrIkR(SXY=RpuipR`@U{gZge62|L=j_{&?=^)8K=sL zYS~8yS1e5}E2{?ICHvknc%f20(Mt@nDR%aBlkYe-1KSitaTzU0FvQGt=i=fsZ6Atl zSw@@KmdzE%t`I|+Yqt2%AtQ-ShJ?As&vcD%sTxC9@l-ui6+PmUwR{2tcqCy^#t?=X zk~h(Jj!x;Il+Kb~*6n46a5{4!VT7UID-$WSrIytauSQ8%`b{PoB8AE^XXq&EWxnm0 zN4&bHlBOcXil!O|YE>8O+GfQ5q|*V@MK5=73Gzf-;`Z(Ay3-k7ehls8cT2S1x?7{l zq;1{Ntwc{c;}@4C)vbm)x~d#9NV-)kx(Ijca*%ABRAg1txMhvya&rvDJE!T(Cn&?v zd5$4;K6?{oRz!Js-zbf8T*qnLyWyV`{M&ct_v;ua?X^bpf_?hV?1vdDz%_P3V6PX8 z_aoYL3$>UxRzcJ*U|&yT6(U?wt_F(i9?7K@dPU8?H8smr%bqiY24jJ7<-AA)QbYOzM%2&jgM4DC%8Dwig z6|y2|H2VXoZ!`%(kjC82t_EJpD0Rl3$cekQpb2})tpFN{t#B&+ODENmd=PZ+FM70tsbR}c~eS}LVnE#-OREQy1&mh4TR`AbNY z>jCl1k3!5ksnW&>EO}>-nfbn%o!MW%zyAQRiOLufFia#ZoWlsivg3Db$7|c~c&O^0 zutSGS`>`kXNlFpq%lR_Hh-$f^o-Eh?s~;hZS{Or$Vf2W5dCv_ML$=oDN8Iiz*RyN1 z6X{tN#xcQQX+4K~UY$Gd88%}uCub+r9?3@4CxVWu_N^)@WO3d^&cY<72rq*3xNO=l z>TOb_Fdn$lRSy}ALh&$#8C)|br%mAl2yM!n3UDoJsjHY_ zC59Fwm@ikTfcAuH`Hh!6;2ohvK&E5+Zc}pA4G7c-x{@Ka?{@=7Y`Z%44Bb(`Z#Hyp zXy>VPJU?`0v**mjZHA@c`;FmSxQlyKI=QBc? F-ybh>L45!K literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5fa79ffe0c8c6cf14d797c4a633bc68b0ee0ee6b GIT binary patch literal 2810 zcma)7T~iZR7=BIyEQIA#jn+@7LGz^n1X~S40R=(>qF7W~+b)|G7MER`-8e%pO8-W0 zd*gLyTGTqz@yd(-q>j_+b2cAfR!B3G-E;Q5pU?Ze@A>=RKmP(Sf*;xtLRdkQie|J3 z^y|)6Mz=OIPc_$Dvy6&Au#8RLAsVUUR< zC2C>$$sAX40#SkJy5Ut&sR`t^wgm>`L36rhS!ynpYHjPt}6IcV7QT|NxP~w zT}dE$oEM!}$pAq+FYP3^gsDS4)q$(t?{Y;w&X4L{GEjCVxEsI<^owlG6xxf@17 zTKP=H=eR*p7E|CvJeSD(#w^WV&)i+xBwkqsS%LHQaetVef?EQ;nq4S5W+CIanK`a4 zqZq*izECi!VhYm&JqIN6j2C8{1s#_cU3Imoer%cdtNSK=H!{pm+5i}BtIg{ zPN}FHGp6K3*HrD+yDG;5zud8P%W*k_%EcB?bMjK0wlvo@T=elSZ6(J=celJvxst4J z$5;Hm!qqt6A-*HY)E^MZmr#D=E`*1Cwm|UNk4Jn)%TjoZRqiP7TNC)2>t>4m+)ZKL z7JN#x4#mTKpG^J^@d_P#IJS^}he-O&Yn%*0`Uv|zdeOx703*7DF7{Lu3Ey8|S-s}( zB)-8D8t0vjZ}AK^p_r7|N)> zTH^{FzEuDxprgQmWg5*0$3jtVc&}7)I26FtYb1jJ-XbvL1aN`?P96fF;rlxrK+ZD8 z$m)rkEWIqtZVed%_@uV+0ZhF^2V=Ry?)nv7g!5)v?BUuA40GL+PK96NdI)cElOI!y zZ!q@w6~|rnZPJ3@K3d=cC_m;IrVV?w&+1>X3WkgPX) z87vWY78JEmK$c*%!+|0cJ6@nJCZoQJt^_YZD0M<9{GNzBZO=eseCNf4!$lMS+qp@w zgp?|dYp&}Os`bXA8k}Obq(9rs>V}g@s#8zTR-Ds!pt&IA&o$L;U&OKE0quFfH|N;p zqnUg^!nQseYe`0!PDX6D9G1i~wLeAXk(C6N`A>g=Wt3Rgp&Wn}tOB-)HLNqDlPg~y xz<2^ZuuXq*O>F$Msd8QYa<3>{Pf>gZ>1MwZDjc%OSOQx-D`2rV!N)4Y`UDzlkAwgK literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/scan/BleScanner.class new file mode 100644 index 0000000000000000000000000000000000000000..4a533777b67610625f299ef2385582c7ac4ab6cf GIT binary patch literal 3552 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class b/FastBleLib/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/com/clj/fastble/utils/HexUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..6cd82ab41254e62935bafbf09ed2a98bbdde94ce GIT binary patch literal 3772 zcmbtXTT@io75+BooW6OGLu-2hblPOZrbU}eizsLU4JZ-C2(7ke;vBjU(Aab{P2(_^ zI3_WZ`^DVN)$(Ot@-UfHAvI%}hg2n1sXXQ-PpSNaJf&)^$&hcI(*grzUgm+_`|Q2f z?fceRd-K;1-+clgi3cInK=VU4VZf(g&Dgi>M8PgjB}OM^oNPtG*PAcqE2kB-Sj*)Q z0tosMGO-P&!oF;2HjypNBqr_o%0$6QEL8G^`NUagG0llW&?#n1Ifvg0{@C^YYc1DP zL8{npq7IgVIWT-?czo=}$mo^9OA0mKZrH?*^}Fed7Y8qi<%pQwr4XR1>nZAz#XTnW zqJg?rZH-mR3cFo%BWv++HD8?S5s@Yl*{86_)3f=IAJ2UR3r{wL{Wu^%eM-TI(E%5Z z=S>_G`*oA0@~mB9tlnuq4$+H^_WKv|g`86kp&42TaUAxe)x;4TRj6M(J6xTv`f~o7)hEqhAwW{b8}8Hr_dBjZProsir_S( zTO>{>9Eoi<_3@HDCVFv-^i)b71PVK2n?-s8_>6*zir;-E`b9)1IkSEYC^W30aA~1f z$GW~c44ovk?K`J*AEa8~FU7NoXt-lglD zi4mMkNnR1yGhspr5-~ zR$I`{lPNX>R?0}e=v;6q9Jkpu6v88=tX;Tlm-F&nUDPYnd1`xZ*C*gTJmm8b2vy7l-euBBV>CiJ)*$SB>&srfJX7{3#ituSHS;}Www2Cnp zF0KThW<5h5F)pr~^!K=Gw7C+ugR2tsjB{aJB4N?1ECF#AD^e;0E=JNGx5z@G8KAPf zlpCkL*+RAXhsH_^<*YN57rM-|UV}d>nBV}Zui*;l53l02 zsNOd3rZ$&iV1i zim2o-spII!9Xij;scP_F49myEL-D`BP;bYdoNCe+9~&36E?w&~B6`z9v>u5VcMWy8 z9{-L<^v>J<*OTe$l2zxfB-3|w_14PYkE}V_Oi+NG&=H~jUHsZjl=q;K7ur$cewyJuOA-d7)_&Qs)tAN$60>)OiDSB-gpWdkF=$6s*$>2#V$xI<-D*k5#<4^R5k}&U~ zIr9jy^V;cs@h1Q1jP(L=4_ z(_FoBS7R2v+sfS~e0B}e4rVNvA0c#dmSk2PW9D=r#tdjjH_qTBE})0^VJ|Y=yTR;| zB2CiW7*Bj1-yn{=FzjZSCLyfCG=*=v1+x=l_!hp+5WUjzh17rL0oklRK${=?pQ8RL z)dle#e7B0`f2dSS=SuuZZ=-(uzOaH$Fs?b&`y*BYe)k z*k!OYt6?19=PvIC%Du_PYg-FHb90|8b5?P##9Wn4JbRPz9b1coZ*;W6^sK-$A;P8yeRh2#oAO}}%E zN?#3A2XGaBl4s%?JLn6p`%zCbet>)2mjw8s>!2TpNwu^9p^EiJhNLn42tTfRwZc_l z<|;GQjEAo+;S2ZO?#8q_7hl4QG9-*bFMqP<8y^Rx-MKs+is;64mvJPbw?>TQGN$~C zoaisg^bV%-}MLtJHL} z1^$F_7-;4D+G~D-!%vy6poVUeCxjei+W(9s)lgdkKPNTMTAp63R#*uJ^HUn0+vM?- z$Aa=)s)Er$L3Tm}!Z%68>^%W~{gqU99r7-;0PeeB2k{I1vMS$42i+c|KMrKHcw^`I zGG5x)J8rp3yxVAf5BilGK>)uNp4=PmpDx?LpDgRKkP$ESuvtYl5R`WjWSbIgZ;chhv>Jnf?Q6Kbe6( uD%xiCb2P0K$69NE<92J1W1Tfb1NHJWQ0|p1|D5u@0Glrih2OXc|Mq`&!O5op literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt b/FastBleLib/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt new file mode 100644 index 0000000..78ac5b8 --- /dev/null +++ b/FastBleLib/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt @@ -0,0 +1,2 @@ +R_DEF: Internal format may change without notice +local diff --git a/FastBleLib/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt b/FastBleLib/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt new file mode 100644 index 0000000..78ac5b8 --- /dev/null +++ b/FastBleLib/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt @@ -0,0 +1,2 @@ +R_DEF: Internal format may change without notice +local diff --git a/FastBleLib/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt b/FastBleLib/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt new file mode 100644 index 0000000..9530167 --- /dev/null +++ b/FastBleLib/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt @@ -0,0 +1,20 @@ +1 +2 +4 +5 +6 +7 +7-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:5-68 +7-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:22-65 +8 +8-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:5-74 +8-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:22-71 +9 +9-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:5-81 +9-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:22-78 +10 +10-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:5-79 +10-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:22-76 +11 +12 diff --git a/FastBleLib/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt b/FastBleLib/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt new file mode 100644 index 0000000..9530167 --- /dev/null +++ b/FastBleLib/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt @@ -0,0 +1,20 @@ +1 +2 +4 +5 +6 +7 +7-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:5-68 +7-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:22-65 +8 +8-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:5-74 +8-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:22-71 +9 +9-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:5-81 +9-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:22-78 +10 +10-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:5-79 +10-->E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:22-76 +11 +12 diff --git a/FastBleLib/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml b/FastBleLib/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml new file mode 100644 index 0000000..e00e686 --- /dev/null +++ b/FastBleLib/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml b/FastBleLib/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml new file mode 100644 index 0000000..e00e686 --- /dev/null +++ b/FastBleLib/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/FastBleLib/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json b/FastBleLib/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/FastBleLib/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/FastBleLib/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json b/FastBleLib/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/FastBleLib/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/FastBleLib/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt b/FastBleLib/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt new file mode 100644 index 0000000..08f4ebe --- /dev/null +++ b/FastBleLib/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt @@ -0,0 +1 @@ +0 Warning/Error \ No newline at end of file diff --git a/FastBleLib/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt b/FastBleLib/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt new file mode 100644 index 0000000..08f4ebe --- /dev/null +++ b/FastBleLib/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt @@ -0,0 +1 @@ +0 Warning/Error \ No newline at end of file diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager$BleManagerHolder.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager$BleManagerHolder.class new file mode 100644 index 0000000000000000000000000000000000000000..95ac447e07aabcfcbf77863e527820d2f3606681 GIT binary patch literal 619 zcmaJ;O;5r=5Peg=N&%_(t;Cqf0W?|;-XI<%K}}E(8WN97S+QhkleYM~{5X(k;t%jg z8K+1@V_*-vGjHG9eKYg%`T7pv2*ors#8QZ7kwB8LZ+ipFR(>qN;5;fkL0 zOVjYoQ(fs3GQkuh6kD^!H3K@*DHvH~kR_OX@gOWE+@5vS=}S8#B@Q3*U+I2^bIWoq%vK$LGHyYXn2s zwhV$&wOS=?mn(DR%+~9+niOJOdqdxrO($}cpSJ2SDxQ!%cU|c>ln4UJw#+HvyT91s z+2}kb?nE>lj$({({}?ejv-l)F6MG}1o;c93$a``OHc{X>qA~$XSO!cTD_CVD5*Noe xK>Qi>$T|Jd>R9{vW|!ZMR^|=4+Y$0Fpy;#Tf>WlfGp1pKy#fZ`YCNJX7+)1ehB5#E literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/BleManager.class new file mode 100644 index 0000000000000000000000000000000000000000..9c16ab82bba4624b245caa70523827d57b2fb72b GIT binary patch literal 21430 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleBluetooth$MainHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..6601ed86151ae1d18452afb895e5b69c026bcfd2 GIT binary patch literal 5337 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleConnector.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/BleConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..b95be0afaea0d3248e6136c1b434e46109b61e08 GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..773a59d979649b353cce8427832891488a497e63 GIT binary patch literal 1397 zcmbVM-%k@k5dO9;94!Z&{PMR}t8S{~%v{ z5ECDa&;C)yxx1nT!o_&W?(ELZeDlrh?Ed`q?K^-+SkEJatbv?~F^n^8xIy1>WzTuf zL*16bY0H7oL7=X8ylMA@t0}~$=X-jKAzQZh3Yf->0n5Y%%rY#UA9QR#XXR+)?fl7SE z#8q5lFou2%t#V48Mk&|+)y{4hxIr1k=?t_doq9}?>p(F)NsE_qwl#Z?Ay*IfDZiPf z=Zn{aep{$rPTj#U+YDST_qg(+{ZN^UT7ltl3h|VHrL`KBd`IYRu>Y1T-WOUZg3HP- z&1qSjs2Vw_$YFW(Op;Ejjhxa@V>cM`EwAHqJy4X_yR#;V=2TrbQ*t~(XN!_5w1R^!y_!9~195VZ zj>wt~-xsPbc^HZiMe5-RFkA<-tmvtr*CR_~5;y5jkycwIGb9U@>KCxeR~VmZm%%NX z$H^1u;Wo{Si52dkL_4yN(HQR1dW_6IT4YRjh2|ouUXpnf$gCb=YK6uT=04GW6u2J) z7ZbZbz$TWk90xX0rd7szO1L(8Mz|Yf9pO$@sy{HjLgNURPXi~6%@|~A2psXuQ=%40 d8aY&GkwFzJvAl;>k~uh7qvthBkI~=w`wdNaZsY&} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/MultipleBluetoothController.class new file mode 100644 index 0000000000000000000000000000000000000000..9507406f549fb390768c6952e4874edf06fa83e0 GIT binary patch literal 5689 zcmbtYi+>bX75*l>bdt@4Jb)x1kAw|rl1)gVAV>fS36($+gkaLpS~}Ss!op@Z?ru^- zwJj}bt?##>qV+{pRH$V`h*o@2#dm$bs`c%kV1FonXJ&SGb~mKyukd4b=FYw6JLfy! zId?AC{&)Fl0PFB?9}3`6;ngq?w51e}#AqE$h9imA?Gd9pKDJX&9PZIaeej`Jg{Gkd^A#+~UBbyd zdQ=}a;tGm~jbv9ek<_C>L&5Tf#_pTXZWF_08p=_jpn?l~^kW^dXq2vY#KxlZmu`0X zpkkqfv`B%sp{udK2vw+7u~@?ryh6eHT!5j-n30Udl80M+#v;k^XvEl_9-;MQJQj(F zrzMOw6QhDvd7jQdMVpFc3d&7p<#nq=(NcKCu^J7vSgBw>t?xHRM(y_s7Ifz=qOm#! z^*8sQ#5%6~;77gCa4VD6kmqYiPwJAjPGdYAG};>bWqzZECIl2{!&=wiiSsQ1VH^a*O zAu+XH!z;0Y3XK~hv2jYLegI-v;vj3d-V}R)^};x zh26x{M@NllNI{D`JUa#M@T?)*116^vJsNri+DEhPp-|jNB*gM-HSCq)!eq=^BRuqJ z*e`5)IM+v2_G=ixoeE0B2`K@lHtpmbq{LKL;edv_a5pW`qFa^Bl`94odg(g~AESP?~{6q-z*LkYO6E;E6tidMi)M*epa2wH3p_Ar-?K4kOG8&s3bb zpfH>?;(9X1;;+nF+hvc_z)?h0jA)1=#-5ZhkeugpM@o^3J3lZ~z5ksd4{dkjx2V_JI z840$r38@=hF2_|ooMpW|9@i(j!wHkRlN#QPw@`cIVwy13S;2QmKMW?ru_*aJfk&ms zyiLJkTc9Snt~s)Ayj{VD+{((Nbe67L$0~gc?-Yo4DcF>+oH0bZo}b|Eknz{bk{^$2_!K^^porGe#krC;a(T|~ zU{vfGd{)Efq-}fjP^bt`;PWcJpy7)+$5f~LRE&GNw6nVY9sBya_ViLkeVw}xcJ=O8 zpmeGDGMnYi<{s?W)48Khkj`tkAe*%}5k79nz*nWwJjDcXW1gw8`;gKwDXpj2Y&{l{ z!rqjI%a|rlR>RNkDS_FP;hxHrk+Qz-w*xHrt= z^DH&U04jz=3bwAf`7=VYNPx8PYVu6y$d2C>oW4E%U8P{o31eICOX|U+Y=Cw+3oHfX zxKm0o(=QhUzX;L_btlLE*t1;chY4wPUZ>;n&tWACIkV-oM8;F8+Qeu&aeHT4@G_-S=FWrFddgfdX5(S2%^BL9mtco8`HFNRZ4dX3IlF6;E^E zzY00#K*86{r?2yw2Mp)=Y0T$6&wIRngEI!;R-len1*yieW+TxqzKg5GD#9{6 zgYS`q?{iiml3fM(#+Gk0g2c0qLOq0s~B%R z?;5ZGjr1j8dQxfGay+Rq@f8!_i-LKJiTwiyJ4TCwU7NNe@LC7FHV1qO!MSJNEbuhA6}bJhDGz%Cu{RQX6S3PE_!bv-je|W?;5pAC;ExH7cDUxQ3+-e7-+D@}1cOD8VxA9y>0sqhj zIcl@pOprzanZ`DXcRR59UL$3(G#n@nIHZ*1U*9i5-R zHCfSBWS;h2f&aXctL>d6w~IR8#YlQw*nS7w?+V%jrIr&9;#M2E-$pKPVsx)Ng<|;~ zOyTtz_0BhIWiP8?AIkXgl_9p=!6?thC?m#CoDOk@SW>(jB$gEJodS=e-GM0_QE&=N zdBd)C1<9V~DU8dVpZI5QJa0{(5Kp{jHCuHwK>6N@W(-o$2Y80R%kij&9ptC@8ABqN z?c1}wm%d`X`#Il94vJB59VIG`zCcfF<&b0Xq43+(^mXJV`1;0-uUxevg$L&np}mUJ zAId~n&kh9KLvIferZVRP9uP7GR0wW9k literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$1.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..21762b3463721fb3702f4d120abc1a4b099c7e82 GIT binary patch literal 1022 zcma)5U2hUW6g@)`%Cc=&+M>38pi;|6?Lzbo^}$9X2{a}cd^E!{!q#P%>@NE1Pw_99 z)YSOk5Aa7B&p>Tx!vmY_?47yy+;ivNvw!~n`VHVI>KP=kl19?RHKYXgonT};-iiHD zMsd$mcF&urI0)jQ-5Gms{62JJ6&C9Psd(r{#Tp^4r7#TxtH`8bn8?Bu$VtB+25#RD zBKr+(PlZhS%=O*)g+RX4n)A1UV64JMxvO)mo7jLQur{2c+A50VKndKq1UWw@CW9O{ z)7Ubxjr?Wa3vBYsP{snHnZ`|l-K!Vs%UIekJ=Kl|26nKU#%&XKa93dOYUsj#2^i9G zSZJ|UW5+6`C0kbR3Orvncwxf?l1D+G-PvflzB-S+$M0JYYKwvBRt?*n1$gXirncGI-T}svB#JM z_GxFB{i~(@bWyNe3$#Dbt$Fj6>KWFmr?_rC`39qM3h@)SG~vpWFoz`VGE-Nujw-eL ncuJn1p)bhuC^3qfnj*zE;Z>Rm91s8|*})-dv%IxwO literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$2.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/bluetooth/SplitWriter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1ee64997ee4a910304564597b4949f1d419169d4 GIT binary patch literal 2344 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 AUjP6A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleBaseCallback.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleBaseCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..7d5c8010b32a32b44669b1d1bc9fbb7a476b8bb8 GIT binary patch literal 832 zcma))%SyvQ6o&ulEn1`18m;%sF0J5f+$k;;M6l>W>3*7yZQ7VXk_x_+f+D!^0emR& zoHSUh5hQSC&Ya8t&6#|BzP$rDz)l%C_@hRlBd9SfF&|`fhwI zkhkltX-r|-K-t6$Oaa>o?xf@O<*kb1wx^||Jg=>sfjsf_iHh`T>QnVVKL}KtV}a{9 zbp7rjx12Lk!MuRcQ+~(Op@7w-T^P6>8AS4Ybb2UII1M^lpwe`GeL1{q>+nXAE;kNH zyQM;x{q(R9_uNRJ(fltaDU`Z8zF<_#uK$Lmc$CJM?BC&fOQ1{*Qec5)YLa=8GPU{6 zs@YjdNwe!<7&`jQ;id`R>7x@SBR%1 ztxA@|Y!}IzqXbx3B9G`%Bm1-X8O9?8a~Kz!nZ+wuO^c5cHWF#q0|jy70S6Yr%P5UBPnM-3>^UY;uhH`1vIUw8kju1U9Xi^BvN$z|Y!Jx`-V4 zUR!FarD`nM)s0jWr>*f$?S;@d90*jNv-dM8Rm$zQ-!AaRvKw8WnkQ-Lbl$s)1Uj{g zrPls${au+$eVZjxb+q67F3!#Q>dn9w)|qbn ob70&A0^SK*J(f|K;Wnx>+`;ZF{=%^u?*O_usG)>%h@g%Ns)R_|Wh|3Ld?zwDO;jvJl1znsi2I4^ zi%bnxnovF0M!O3_IciTrY!J@=D!wu^ErnZa5De^05gH?H)OEg`s`N&%C80I4Y&#LD z_Iecz++1gb&gefTJwnr(!g`!bsWNV|78?qk{Yw#E;CS%_YHLO8T$ zFc+ziPNh0?TCy_tYDTC;w|$>c8{0gUYN-80N8F&eMe%~2g?JLdF+%psjDmpp`q?m#(h$0q|kQ|x>_h;uI7aSjQY{YL-AyM!Fd=z32 z61hM^;)>auea-HEe7?N{ILDy}3$_c#M+b9Pr^Bd%U3qf2AMlEZZZqm65H0vE9iwk7Cc51Hn_#; Y|0J;81{}f;I^T8|dmQCMFBb6r2YKrzeWyS8aEo@ftgf1w<-BgQ2n7TNYV7Zq3~u(Vt~yV&M<)M;YG= zYK)0-i)Z1SfHUj|D531btD%A_A(Unw$z&EyL~i3mMN%Y5EaYv}NmNJV zs=LyJ>bXv}y&#ms=E%nyq4k$}V62`zeA~UQ87o4)uTwQB=CR7I1P2lteZ!$6k!hz_ zMbA!kPB`iRKcdaUO}dO77E-F52Ygj}LMKJWamV4Wnd)AuJF89VmcINH?dFJZXwvRf zWI|e%>D+3`D!ox-LM6QJxQ<|GicG4WcDo$#fS-$>&cs4^NAUUI-SNOyR2kPJ6ddmtmV^Yz1?V5#; z5D5uf%y{1Oc%J?G_WT0i1cL|;+z?&|J_3eVm{lV5GP&k;Q)rn8u64o1ZIWu4@>)*T znjtt`lxXqr PAKb?tb?I{m9UQy^D3fk| literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleRssiCallback.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleRssiCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..e456b1a21f083f6fc207e43e1e4ded44c6d63723 GIT binary patch literal 445 zcmah_OHRWu6dWgR1EHmSdI5H6k;sN!5sOw-LW)>Wl)Yn&aB*W4C#ctAg~Wmba45tx z6sUv*Ud(u&J)Y6NQolklKUBg^QYkSbZVjKn9%&OGCiKT1w+K6*7l^w6XV^yX OgLkk?r!*VF0Q>KlS#IF~ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanAndConnectCallback.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanAndConnectCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..a0bde2e5486c2c0a0f4245f6d4976f5d339d8867 GIT binary patch literal 614 zcmah`O;5r=5PbuMA|UvQH>2?a#@NK*31gxdj7eimFx;2z8Wzjew1xlW$;5*{z#nCt zrNo06xyS;UBKC}M4x6`qh3Fio%8wkXY;D=vb+*;)18S%P4q*eEoaHUD&q&TW&e_~=g36qr Skrgw7IdmI43?=N&fsJqY50#++ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanCallback.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/callback/BleScanCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..f1d6bd52af3d5ec485e497d5c1adf64fb540183e GIT binary patch literal 658 zcmah{O;5r=5Pbv1BJ!bt_;J#B0b=Y$P7n@aNK6_v!Ej&73X7#R?ZW@^Wa7ae;Eys+ z7fg&CxXkR#&b+s8X1~5aJ^@_gG=~(@Hmp1{*dgrC#8NoE2qwP*y*T1=`JB% zZwzf@33V@=JDxvto<*!jzH~g{`y=7KI5)l=cp~VnV;ecb<+kd_NX9bIGP;|;60BZ0 zmV}b40(rlfk7V>Dn1fJuL*^NZNG0()Y3Zqo2~Bq!$?ucegkl&ZkL_iEP*vu}DRwN)el)uwdmFBV61V<%75uDifI}gk zOA#O>gcma&Kac16y}mua064;K2oHV$-a`jnhDh3ZBF!wh7Ijk?l}KSsA>?h68kLG# zjh33Bd#p>{oG|!NoCjE8i2pKQRJ!@*<|BKh82Xtm)mb|)RCO*Wk6}Brl$nc4JH0&Q z&5f=Z2HC$8h723FT!cVVsjfFOCMX7`6*VF1js=G$p(tZ8(Qw*Iw zoZ7aMYOGzudsP1Mxx<;b7knQ9jn*w6%ng@tl~h8^h&u;QV2`x%5E8nw!!^R*#|7eb TfK#{VFL)DMRHYFSdf0gf_zZF3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleConnectStateParameter.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleConnectStateParameter.class new file mode 100644 index 0000000000000000000000000000000000000000..16fb2aad7d1726208cbc2d99481cf1ab4dce20bb GIT binary patch literal 771 zcmb7?&r9P#9L3+XY1+ov`g>ig?s}^Q&BdD{xPnk9>w?mQw`m+TB~2ii_OJ4?u(GfR z{{a6e@y!_PD(hhr@|~GClb6r;k%z}W_W<_r)k6v8DjXjbxB_!SIgvpulk4DgFjS!y za1Wv+(uV@&_IAIH8tPSeK4#zx?1bqk2;*UJC38K9Rd6Y_48FzcI8741eWs;WKV&9H zN~?@sIfZd9AiBn>;iHK;fm)Owg*uujZd?dB?e2D;!*O~^rP+%T^?f`VsO((w8v+Zx zG?Z~)W|3JJqN8sj8V9}qLfRLoUn|RLu-IakO8!P6kx^a-GnZ%GnI=AAweSo$3hq@pzfis9qy%H;Ybi?Hi?k*Mm zRQjd`ML&QaN}NqX2}x)%a67lRGryVn?~p%#fBXjU1P{`PA#NgJAqj(!>4_6zyTa?* zZ`(cTLCrkp^ENFD`#e^deC>D;<5gPOQX*qCWZum**i&fy1yM9uF=!g51-^39;%mce`N zK*%<^@V!u(J-vuF~*#2 zos^r+fI(}xGXtueBKv#40myFXm?O#o8Z3(pu|s>&lcJ0Uk+v5H&Xuq+_?A4 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleDevice.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleDevice.class new file mode 100644 index 0000000000000000000000000000000000000000..bb58e6d6e8def7d672cdf3fa4f9fd25229885eac GIT binary patch literal 3253 zcma)8`BM{T7=Ato354Yc3J7>0A|_FcT6+n_5)=ytR6trwYr7;1E+)HlvuN#U?|-J9 zvC|S~>P)9U^@sjZoj&jG<{%svX7)SZ=Y8Ju%Rm4A@h5=G_$i78G)558(1fr;=Z5}B zPvv!MJ#}k!!^pY{;c?S4-3f)pcw)H)&1i`rs-YE{!ttzKNM-XIsWrXmuI7zYPIvWG zI&WMv9+_D~AyO#MPGxi}=h$X0wVK~DT-$aZ@M19YFO3O$yM_*QDzp|Bv%0llWNjy> z(6Ex0!!8Yna9E+Kuuv?T3Tj4ndo=Xoh(bqU$t)N}S1)YN>y};Q`D_IJ3MXHxI*Ow> z7Qt~1Coo8)svD;AdXY%&>xS!1Gq#>H9EHAkB2#zEKN^c-2&W<#)^Hjl3bC?syO_GI zJ6R)7G{?|${z9kQ6fVT~0ZUZeRuLBoPf1)u0!gyX63#W!Ph4Ztar7q&p?G2?Ej-R? z7{z(UK@`qd3@4*FBPSO$T*M`XW;w~&*1C5zD@T_#yo%R|``9sEqn74Cd>=Y9iDi*| zL&KZ6Li;?)8bVF+m9&3lT*F&nHZ^-!JW8Q>ApW+7Nu(88yfdFvC_XEKeYmFKI;Lp~ zBQdWR=(NK-La^vMrnOGT^x+*1GjcV`tCP8$V-$-K+*IhT2F$;m-ZJxyW)!n%l+V0| zTe!`f*Ecr}i+ML%8<#*sZQOUjQ1>hrG%SklX4m!)n{ihG5xlD~cyPH4UyNcIjgr#u zYgoYtG9dbKQ?>z3|rIrQ4(!9e4ggGr7} zj46y%^I-pKPAoGKr|cYcc4SP;nBOX_8qSi>s4HV<_58B#n6eHwL+%5UwKn)N3Jg## zXfVnD!(?V9%_Jfl$Lku=Vohghck6maPZhCJa$_RhU|I@?c6*QhX!86?L5!c5{hJxiN8xoNPvTR17V z)zhqja?tk=1!am=nKsJTHrFLJf6)5??rUc-eS9( zHl@L}S007)QiKZHjAa>)*HR5u=MM_U%63%TE~!yYaH$19)p3#q(g1}I`DQi9L&T@7 zL0%1SJ03DtUGrkzc)gS$^Bm$Zsb? zlxaa1a$NQJw_#w7E6QP=+WF29^Fe_5lyYI7^;a;HquXdp9^FPP*%R7EcU4Efck?iH zbW=wUb@uXsJ3`idp1#Y(B~nFSf1pqHOxh{j`>{cm!nGd{DI4N{6Y>F@EuP4&QJ+m$ zUkL*xocs%YG&Xs*gfqg8BaM&AnA(Hj03nZ3-7$WTW0-H`ISke~WVAwX6a`qGLu_mY z6gEjg=nb7s{*K7e5?+x>TM4hr7%O2+#_kfXRvpvh89q#>oTmFn=#DcCd)(7G=%ZD1 z4&f6|CpEzFoT5;~`9S+Qj|~%~@n>>qfP^;8JmCZJxzoIkt4SqXQZbuHD~GE0p&>F~K4jftJMj8Ma4e9EtsP>Q2yY!YNa zt99|68kDAri=R~LZ-TcaJHvIgC%;O8yG(**55cdyaDX5IEZ5yEf>GVB`e2Ix&LDSELSn(klfLSybpWj)tThTDKDHr o>kBM19pC#6_rx+)Q;fp(8;|0*_>N;2*UKE`?|XLoAHyyG0g2dvx&QzG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleMsg.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleMsg.class new file mode 100644 index 0000000000000000000000000000000000000000..4aae379e2bc61ac2ae7f58b3fb2cd796cfc3ac47 GIT binary patch literal 2053 zcmaKtYje{^6o${{LP8SAjRe9ygtkBn21>a!K&!|~5Rqk&WJB6gRklS?#<6E?8HS(L zPo3$9{(%0dPTyUxq!XvpFB(7RynFWDvlsvU&!2x0(F2NSXpF|EXkv~g>4cz#gXm*a zYDb;@QnhgqH&a0;o+h0neJ*JH#?AT^O$)lv>>iey?Ss<$sGm04aj6xhQE96kSNi*c z<}3bA=$nQcmaV#NT7rZv=#<&*^wX%5)}!_y9>?T_*`(C0x~^pg;kIErGA?wyZ2LN8 zm1TSkMWo)dbXW$*1+B=S64xy+^esdWMWpv5D}Y>G)iXO1NNnu#%L5SpMWX11!b zYG79^S#e4aG+!8@TMg{(z0eN~FOa##Y+#Y|EWhTcwbkG-c_IQc9;nb{Y`byB8 z7JrmmAZRr+WV>bCGy*l-a4qYobSzt}=9-|3$I>I~*}#gWnY{Rs6;0D!oRp-~N}5p` z=l0kBYlL3Fw}MXR1N0J>GZ$|>oBO}V_Gy?Z%-`2J|CM70;V|o3Z`C$o4%NY7bj0yf zbnsIzVRl!g-6LA<^#?(-L#Z~plo|Cbqg_(a~3 zSDDsn3QsT52CdOan!#&03mT(2@F~Wp!Sjq4z>AERz{`x!fL9o=g3mHO2VP@*9&~~6 zMerrYm%&#UUj?tzwcM}t{{`bO!8e%xCioWPufg9iz74*^#+ShN7~cm!VEXUC4;eoK zKW6*{{5>1L34X@-IrvAWH^5trO>mj%E$|NG7vPsnzYBI4SHLdQSHZ6td*FcSYv4NL zH{iESzX$%A@h|ASkblkksYt0NTRE7J(lZ}`sX-w`!Hf|~e_QR`m< C5{JtG literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleScanState.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/data/BleScanState.class new file mode 100644 index 0000000000000000000000000000000000000000..3f02e220bc25f316ab371f85d8faac1fae2357f6 GIT binary patch literal 1309 zcma)5T~8B16g|^!zm{z&6+sYGKE$>tD+;2vA!4oCq!yD!65@jymZdD&Zj*M)vp>iO z1r?&v@a&H=-n&~vi6nNCnb|vY&bc3R_t)=lKLISE7(+;4%4{}t)7jT|W!u|!EPY3M zQh(}LhACaclb)4;fTAISsDNs0tZkIvRi0JL0yEYBatln3Ye+CT6_Ab6TCG;8z2K_> z4H}XHvDwYF>YK75F#EO-RTYCs$B@)8gp5GMbegUuFr3X*_vL}q9qHEf_3eGj^a?75 zaXE$&4Wqb1L7V}~Zl^)652Vwv)^`P#vpwvRBirpl&w=5!Y`0$M^}qtY{9U4lJ9!3YP(jg)7Z9J83{&sJudiFihTsVTHttHdIbPB=v z&^i19ooE3HI_{FSNHapT_Y9@xLD(02NxQ<}{QSf*#`2S2F!_n>KrThMzyO7z(V7Iy zj?f*8-}6)BFHSD(J4g~dO}9L0+@~3$c&X-iKr2VD)6UUH@}DvJ!3Ufrn)W>efky%l zX_b4pOV0VR0z;7>5L@9xgpDob5HW)*aK2)3tl(jnR-*UdG4q{RnW=E-7}G}x`_@fG h@vYbi=8m9p?txH{dlV_eFhPDp-EZf*mBC~>>O~GV@vj#|Dr;o-~;$5 z#M+{vqM6;9eQ0*SzCS(zT;jk*2bKf7k1l$IQ7T`h$YlO39^zCbhS0mxxi;4X>+~#g zuthjdij7FJR6NPb#F-LnX{5Nx)Uwn@1x6Z07~f9A>1z4th4WS5E$;m}fjq)sR^*kD zxrt;}D~nwa!JZXso*DW&SBrWRt1^_ln6T#;iOeEd>W2S{wt3MN;l%&n$AsVpMO`N9 zPPhC1xV&ht#St8S0{g%rw&8NzVb(#PGiu(#IABGz9O$0EgWlSfUB;%&B8H63NRy8+ L=E(LLJJ|mL$~;g6 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/BleException.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/BleException.class new file mode 100644 index 0000000000000000000000000000000000000000..81949045a898b421bce38b26110ed6ceb6238e72 GIT binary patch literal 1495 zcma)6+fEZv6kVscDWw-W6p)Kr6r?Sb@q*U^3Z-gIwMi*8Jdt5K;E-X4v{Pd={(+z3 zgCPRu z@w_zuHxs@T)RT)IY6&)ZXvl{7y6fANR=*jsd5a$u4*|c=x!FtZXVmSd|Vgii4xD6`z}U_=s(Be znHT562}0{;tD&e*H9n`f`?}8aS^6gFRd_(}2?2~Dg*2Tr)Lai{F^Vk0C-ywqlFPnH z_AQrvn=te=Z7e-9+5?33;|{G0WNq^IPJ1kK1eO^;gpip#MC7XtxJ#=DAFXj(Mf711 zQ6zAWJV^(J`*=VW5!h*%ed39@{D*kdNh8tDzxgxYAbh5S2b`R10Y+>>UK0g$2pMu% zBoEj4n4&$j3y!`obadeSX9bKCXu_r#cEV0H2^~!gOPKDExs^n^RF0D5nM#&P!D%J4 z)TB%o?kJfeCDZ39;XUC!pl977drfM2$=M%>ZysS#Otdk~`_smlc-c8eXd9Smyv|i68vXb=Of+T2k(eiSZx# zK@%B?CjJ0_l=0klY%oA1P43IN_dMsh&pD^R|NQs`;67FrBpBwMV8?R2ZR@?gCmJ5N z_(zBD3ODerHIKhI+@z3Xn0jRkq4#Y1hU2uukT;8Z1`H!A6r^ZgaeY@jV<;Ha+P3|{ zwmjQ!S(_qs{Z^%1Pa}g%3RD%N7-KNcCa@m(K6gYfAj4?GYjY6Kzd6BUdUiT294fXbhPaIc*ACwD%ZTRlzvJOTFMbI zxGCLB1A#Xh+oWUVUwF3|5}%_ymQ|QoU`UA|&KbkFandy+TV^O3=jNbVt}`UpgC=Ll z)?A;zZtpaB_{OGsW6)}WV|#TwbmhKlOo}a+lC)U+|LUkvd9=8YN*v~x5?3Yb-f^oX zmAw#dj&P5a6~i1!a$fCGiYWAe&K0zO~ zU9_T}pm~Js3YKVGrrkRX(Ff$s9M^^pFl;XDBW=#?Bl|6KvS`$hq)|nRpd^@vEN+uU zk6m#GcWFl;(WwlZmkmgv8Sc@aCk|!NEYF6`@5p|kMFJ9B@{u7Vpc-H30x~?nL$XMo z&!d+BiaAZx%&%mM-7_=;1q@>{f+$3LrN>E$n8?VF@VE<1l-Qcyw(2I*8f!rkhrSc$}1`3truTvz}A literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/GattException.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/GattException.class new file mode 100644 index 0000000000000000000000000000000000000000..0d1a0684e1bde759718f930079e42fd9de8103b1 GIT binary patch literal 1020 zcma)4%Wl&^6g`ti?YK@;+>$;4w<)b1+L{Hs@Q{iC1x2t3L}KYWLvZEVkuyd}h(BTh z5+o8xd;lMXxZ}8POR3a_J#)|8d+wPt_xGP4zX06BT?GY(Z7(`@yx_=r>yE@>z#aa< z<3r&`p>q)MCntf562rL*nbSO}1z3+#cm_QOHT?p2^+R)MagiaCaz%LT}Gc{c`aKyg>NA{jBTwt{(vrGFb7B!1B6v4$E9 zDQJPAXxTj#*E9V&;m1?D2Qqz0$1+w(zdIcAu+Ok({YU-8 zo*Vlz&cKp*=aXS}=ZZ$R7^(vXilY?zSN9WO9dCRMlYTYP_J^s{Bm7aUseff&y zgd8K#SCFGYyAtgcY|;NVMbA;B6JV}6&yC^)<>uOVRK5~Yz_!Hc9H>Ago+@UsLs5NN z0Sh)oGDkAg_@Ie98LyMZAii&?e5Rx+-3-C9K+@>xzMRo8>|!q~eni<)l#+^Re#y(V z6gE)C!Wkt>u0+X|&;(>;uc<~hZTv*-%>>ts#WCtq)flVB4Y{A-7A<2mP8&_HO{0rd QB3eG9w~_1JPh~lO0WVJ1#{d8T literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/OtherException.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/OtherException.class new file mode 100644 index 0000000000000000000000000000000000000000..09f48499c00775002c7826ac9361d223a3891349 GIT binary patch literal 436 zcma)&O-sW-5Qg7LKN8bwYm2>mkyydKc&msg3PR9BrT6W2+ipn{*=&n{%ah>2AK;G? zC-DPB1$SX)pJC>mnSFVEdIoTWt`Co}r?RC`$wEwJ?#780`d;ZfXR=hBCHmqMLJ+D= z)KDkXk4%QF-9EhX&iQjQd;{pvl~O&%-9Rn79Hh Lv`e*ZCJ&uAk8y5- literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/TimeoutException.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/exception/TimeoutException.class new file mode 100644 index 0000000000000000000000000000000000000000..ee2989f41b334496ca5e18a3e1d3780ae56c32f5 GIT binary patch literal 413 zcma)2O-sW-5Pj1`)5d6PL@!?2i?l_|MetDZpeP7I4=uTGH*4LJ57}4X5VAjH#6@auWta3vE!jZIFMx?$!s3oiG`hJDpF5UJy=~9(RrpWe@GK9 zVSl1?RaUmUlDoH3R>r8b=Yy~wz(bSksV=lVBkc9BAD5Mp z>PpxD?*5+SsNM!Ww0PS(h||LcW5DbL&X?XAcGA#!!P+y64Qw*{Tv1<#bBkZWcO%;9 LFe7X;HV}RS^$ux3 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$1.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b8b5cdb3d8e1512a845dc92701e00e590fc9e1bd GIT binary patch literal 893 zcma)4U2hUW6g|TtTeef#qOISG?bZSs*CsxR@uAoz8mvt*ybsF=ONQBGc9&=Wl1ZzH z5B>mul=05eq%kyUNtmy__ndR@J%9fG`VHVUnpKqGxF~bnK!ss9N@iiCrr}qSWz zG!i=8SF%t0v5~3NnKZ#3LnWKUY4D0tde_S7Sf&+@Dm;d@xljSYznAkkk_?R{jFHHM z7Q;NmVr{X)t~uC<`57(Om%U)spd)g%n%ZZaawS})e}D4z|b`LbZC z_mW7cfiSVXpFfuETo_tQ$d?KT_BzzfPcoY%qhn#jOwxEMz1ok*T4cE)V#nl~!Rsfv ziR58y>)W8o{O5?5whN^3Ku0P`V?AC#ay+yB=M$kvN}k9xS2QaAL2GHcN~Ebw(I8)N zFx)}O_pLnu+R2S%&=UP?xCaOK>D0AewJ+`GXJG9YXK>p;vHHCTd_Zf3V1Ru*q;>N= z`4Jw|&B9nnh9`8c67Dy@;Azmc1fM=UEmq6(hF&ZXZ=Vv)Dcm1ezaa4n-~+7UupqM9 cDHaPN2U`W=HUiqq01c; z6khm)7e0UwC4RFhDJU#1?0hrBIcLtC`F{QW@e{y9w3bjp*+V730;&Q#aW;wKbR4~v z#tu@7Oe|IOG^HNbBTa^sCEeH+sM_PiG#)Ue`(K=nk3}qb@B`Ek2!vyKDx*}YQS@ps zrr5IN<3uHPPoUgv^?fX3#X}h2BI*JgMTaQT0<{s@17)mKF$runTZO)u!j6`4Il!v3 z;~Sfubn|O^xFS$LxA%Igl;kV~+RZ}Ec|M(1U!by|4VkmjO%xqYCj-)NW-9e=7R$6R zb>h}%n-v$QK(Xoh0gc@bC-{==aW*`XT26>xh3REIReYCTHq|k`NSx=@zaQ_uyBYg> zuHrN^i5kshJTwHhi&CDS9^fu^1lHqBYks(AbehEUL=6w=o$XmVaq0gP)KFUK8fk{k z6ABI#Kf``1jUj_g?!-k1tU-jK>qc(S68|-N?N7O`BQWet Zw~S3*m2ew(xK^-*Z8Ul2Gs?N-?+>ml(ro|$ literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$3.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$3.class new file mode 100644 index 0000000000000000000000000000000000000000..c9d1602df373ad995085c0b8ebc6cafccd6b6a48 GIT binary patch literal 907 zcma)4U279T6g`uTS+m`mZES1(j_uYaQCy)u84)xpD6uV#Gf(v} z7C{qS!RWYeKg zp9+?GF9~@(;3_ir)5o%z3`1)U`CI}1c8B`;QRstYw8s^n3K}q_SNqXea-At6wp1pm zJN+b6p?DXW`c`N*|9Rqx=>lndE5kTRse=Wii-%?cYhj`k&8ZmYD>>Q`UvyuKLk9P~ zltOi5o~9y2gIwZ*;RZ^cXUqc7PTnNDmgrx@O<1@^r>=3Xd1*g70c$@#f!+Rzg`+(1 zHmwzc0lwi5t*fWWcX5wy2F5@#+^2JuaKCyvPlK){c=X{xz8aqA^kRVA_A${M!~TJ# nGZH5U{*DD4fgc6r4@cxOGhHrnG$1LR0Dl33CXipdP3|suZ9iRSw)X&Ng-AtSfti#Erki zfe#^p;L49e%sN#nafqlfdGp@B-+#XS0MJHr1tpXnR6H!9DzG1=lQ2rg;i=5c zAW>l+NgX~*RFCmEQ@PScWsSB#)ttq7<1s1S|KfC9EMvui>!Aiuz#q$ZGEAf%g|7!= z6&XrCjdg4e1j<3P?_w2e4tx*ms0(Z_N}^RJP#Y<8q;n&6qy%<@=0abj(9tTcdf2pf z+}xz+-J(nf*97X9_TEgjmh6Qgx8ZTMvQHQ-+4+hqpRsYN=@vRasr{?awFJU0bj#S`sf2sD&sf1O_7HIA J5@lWT`wM>B#Nz+} literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$5.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanPresenter$5.class new file mode 100644 index 0000000000000000000000000000000000000000..69ea040e9653dd0d94432c64489d61fd14945c2c GIT binary patch literal 808 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanRuleConfig.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanRuleConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..0c1232b9a3b66d97c22b3ca36a2d326ae83ce216 GIT binary patch literal 2173 zcmb7F+fLg+5IvilLog6-DTM+8aY+Kj;nrIyEre2m0#xPlK-C9hmej~jq}WE3Z)&Ah zDyr0nen3B}>Z}PN*p3Q$*x6mrIkR(SXY=RpuipR`@U{gZge62|L=j_{&?=^)8K=sL zYS~8yS1e5}E2{?ICHvknc%f20(Mt@nDR%aBlkYe-1KSitaTzU0FvQGt=i=fsZ6Atl zSw@@KmdzE%t`I|+Yqt2%AtQ-ShJ?As&vcD%sTxC9@l-ui6+PmUwR{2tcqCy^#t?=X zk~h(Jj!x;Il+Kb~*6n46a5{4!VT7UID-$WSrIytauSQ8%`b{PoB8AE^XXq&EWxnm0 zN4&bHlBOcXil!O|YE>8O+GfQ5q|*V@MK5=73Gzf-;`Z(Ay3-k7ehls8cT2S1x?7{l zq;1{Ntwc{c;}@4C)vbm)x~d#9NV-)kx(Ijca*%ABRAg1txMhvya&rvDJE!T(Cn&?v zd5$4;K6?{oRz!Js-zbf8T*qnLyWyV`{M&ct_v;ua?X^bpf_?hV?1vdDz%_P3V6PX8 z_aoYL3$>UxRzcJ*U|&yT6(U?wt_F(i9?7K@dPU8?H8smr%bqiY24jJ7<-AA)QbYOzM%2&jgM4DC%8Dwig z6|y2|H2VXoZ!`%(kjC82t_EJpD0Rl3$cekQpb2})tpFN{t#B&+ODENmd=PZ+FM70tsbR}c~eS}LVnE#-OREQy1&mh4TR`AbNY z>jCl1k3!5ksnW&>EO}>-nfbn%o!MW%zyAQRiOLufFia#ZoWlsivg3Db$7|c~c&O^0 zutSGS`>`kXNlFpq%lR_Hh-$f^o-Eh?s~;hZS{Or$Vf2W5dCv_ML$=oDN8Iiz*RyN1 z6X{tN#xcQQX+4K~UY$Gd88%}uCub+r9?3@4CxVWu_N^)@WO3d^&cY<72rq*3xNO=l z>TOb_Fdn$lRSy}ALh&$#8C)|br%mAl2yM!n3UDoJsjHY_ zC59Fwm@ikTfcAuH`Hh!6;2ohvK&E5+Zc}pA4G7c-x{@Ka?{@=7Y`Z%44Bb(`Z#Hyp zXy>VPJU?`0v**mjZHA@c`;FmSxQlyKI=QBc? F-ybh>L45!K literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner$1.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5fa79ffe0c8c6cf14d797c4a633bc68b0ee0ee6b GIT binary patch literal 2810 zcma)7T~iZR7=BIyEQIA#jn+@7LGz^n1X~S40R=(>qF7W~+b)|G7MER`-8e%pO8-W0 zd*gLyTGTqz@yd(-q>j_+b2cAfR!B3G-E;Q5pU?Ze@A>=RKmP(Sf*;xtLRdkQie|J3 z^y|)6Mz=OIPc_$Dvy6&Au#8RLAsVUUR< zC2C>$$sAX40#SkJy5Ut&sR`t^wgm>`L36rhS!ynpYHjPt}6IcV7QT|NxP~w zT}dE$oEM!}$pAq+FYP3^gsDS4)q$(t?{Y;w&X4L{GEjCVxEsI<^owlG6xxf@17 zTKP=H=eR*p7E|CvJeSD(#w^WV&)i+xBwkqsS%LHQaetVef?EQ;nq4S5W+CIanK`a4 zqZq*izECi!VhYm&JqIN6j2C8{1s#_cU3Imoer%cdtNSK=H!{pm+5i}BtIg{ zPN}FHGp6K3*HrD+yDG;5zud8P%W*k_%EcB?bMjK0wlvo@T=elSZ6(J=celJvxst4J z$5;Hm!qqt6A-*HY)E^MZmr#D=E`*1Cwm|UNk4Jn)%TjoZRqiP7TNC)2>t>4m+)ZKL z7JN#x4#mTKpG^J^@d_P#IJS^}he-O&Yn%*0`Uv|zdeOx703*7DF7{Lu3Ey8|S-s}( zB)-8D8t0vjZ}AK^p_r7|N)> zTH^{FzEuDxprgQmWg5*0$3jtVc&}7)I26FtYb1jJ-XbvL1aN`?P96fF;rlxrK+ZD8 z$m)rkEWIqtZVed%_@uV+0ZhF^2V=Ry?)nv7g!5)v?BUuA40GL+PK96NdI)cElOI!y zZ!q@w6~|rnZPJ3@K3d=cC_m;IrVV?w&+1>X3WkgPX) z87vWY78JEmK$c*%!+|0cJ6@nJCZoQJt^_YZD0M<9{GNzBZO=eseCNf4!$lMS+qp@w zgp?|dYp&}Os`bXA8k}Obq(9rs>V}g@s#8zTR-Ds!pt&IA&o$L;U&OKE0quFfH|N;p zqnUg^!nQseYe`0!PDX6D9G1i~wLeAXk(C6N`A>g=Wt3Rgp&Wn}tOB-)HLNqDlPg~y xz<2^ZuuXq*O>F$Msd8QYa<3>{Pf>gZ>1MwZDjc%OSOQx-D`2rV!N)4Y`UDzlkAwgK literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/scan/BleScanner.class new file mode 100644 index 0000000000000000000000000000000000000000..4a533777b67610625f299ef2385582c7ac4ab6cf GIT binary patch literal 3552 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/utils/HexUtil.class b/FastBleLib/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/clj/fastble/utils/HexUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..6cd82ab41254e62935bafbf09ed2a98bbdde94ce GIT binary patch literal 3772 zcmbtXTT@io75+BooW6OGLu-2hblPOZrbU}eizsLU4JZ-C2(7ke;vBjU(Aab{P2(_^ zI3_WZ`^DVN)$(Ot@-UfHAvI%}hg2n1sXXQ-PpSNaJf&)^$&hcI(*grzUgm+_`|Q2f z?fceRd-K;1-+clgi3cInK=VU4VZf(g&Dgi>M8PgjB}OM^oNPtG*PAcqE2kB-Sj*)Q z0tosMGO-P&!oF;2HjypNBqr_o%0$6QEL8G^`NUagG0llW&?#n1Ifvg0{@C^YYc1DP zL8{npq7IgVIWT-?czo=}$mo^9OA0mKZrH?*^}Fed7Y8qi<%pQwr4XR1>nZAz#XTnW zqJg?rZH-mR3cFo%BWv++HD8?S5s@Yl*{86_)3f=IAJ2UR3r{wL{Wu^%eM-TI(E%5Z z=S>_G`*oA0@~mB9tlnuq4$+H^_WKv|g`86kp&42TaUAxe)x;4TRj6M(J6xTv`f~o7)hEqhAwW{b8}8Hr_dBjZProsir_S( zTO>{>9Eoi<_3@HDCVFv-^i)b71PVK2n?-s8_>6*zir;-E`b9)1IkSEYC^W30aA~1f z$GW~c44ovk?K`J*AEa8~FU7NoXt-lglD zi4mMkNnR1yGhspr5-~ zR$I`{lPNX>R?0}e=v;6q9Jkpu6v88=tX;Tlm-F&nUDPYnd1`xZ*C*gTJmm8b2vy7l-euBBV>CiJ)*$SB>&srfJX7{3#ituSHS;}Www2Cnp zF0KThW<5h5F)pr~^!K=Gw7C+ugR2tsjB{aJB4N?1ECF#AD^e;0E=JNGx5z@G8KAPf zlpCkL*+RAXhsH_^<*YN57rM-|UV}d>nBV}Zui*;l53l02 zsNOd3rZ$&iV1i zim2o-spII!9Xij;scP_F49myEL-D`BP;bYdoNCe+9~&36E?w&~B6`z9v>u5VcMWy8 z9{-L<^v>J<*OTe$l2zxfB-3|w_14PYkE}V_Oi+NG&=H~jUHsZjl=q;K7ur$cewyJuOA-d7)_&Qs)tAN$60>)OiDSB-gpWdkF=$6s*$>2#V$xI<-D*k5#<4^R5k}&U~ zIr9jy^V;cs@h1Q1jP(L=4_ z(_FoBS7R2v+sfS~e0B}e4rVNvA0c#dmSk2PW9D=r#tdjjH_qTBE})0^VJ|Y=yTR;| zB2CiW7*Bj1-yn{=FzjZSCLyfCG=*=v1+x=l_!hp+5WUjzh17rL0oklRK${=?pQ8RL z)dle#e7B0`f2dSS=SuuZZ=-(uzOaH$Fs?b&`y*BYe)k z*k!OYt6?19=PvIC%Du_PYg-FHb90|8b5?P##9Wn4JbRPz9b1coZ*;W6^sK-$A;P8yeRh2#oAO}}%E zN?#3A2XGaBl4s%?JLn6p`%zCbet>)2mjw8s>!2TpNwu^9p^EiJhNLn42tTfRwZc_l z<|;GQjEAo+;S2ZO?#8q_7hl4QG9-*bFMqP<8y^Rx-MKs+is;64mvJPbw?>TQGN$~C zoaisg^bV%-}MLtJHL} z1^$F_7-;4D+G~D-!%vy6poVUeCxjei+W(9s)lgdkKPNTMTAp63R#*uJ^HUn0+vM?- z$Aa=)s)Er$L3Tm}!Z%68>^%W~{gqU99r7-;0PeeB2k{I1vMS$42i+c|KMrKHcw^`I zGG5x)J8rp3yxVAf5BilGK>)uNp4=PmpDx?LpDgRKkP$ESuvtYl5R`WjWSbIgZ;chhv>Jnf?Q6Kbe6( uD%xiCb2P0K$69NE<92J1W1Tfb1NHJWQ0|p1|D5u@0Glrih2OXc|Mq`&!O5op literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar b/FastBleLib/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar new file mode 100644 index 0000000000000000000000000000000000000000..2bdaa48fa95f5b9995c8cee22f71c4c157872999 GIT binary patch literal 144576 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar b/FastBleLib/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar new file mode 100644 index 0000000000000000000000000000000000000000..2bdaa48fa95f5b9995c8cee22f71c4c157872999 GIT binary patch literal 144576 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 literal 0 HcmV?d00001 diff --git a/FastBleLib/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt b/FastBleLib/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt new file mode 100644 index 0000000..48a4452 --- /dev/null +++ b/FastBleLib/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt @@ -0,0 +1 @@ +com.clj.fastble diff --git a/FastBleLib/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt b/FastBleLib/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt new file mode 100644 index 0000000..48a4452 --- /dev/null +++ b/FastBleLib/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt @@ -0,0 +1 @@ +com.clj.fastble diff --git a/FastBleLib/build/outputs/logs/manifest-merger-debug-report.txt b/FastBleLib/build/outputs/logs/manifest-merger-debug-report.txt new file mode 100644 index 0000000..187eac0 --- /dev/null +++ b/FastBleLib/build/outputs/logs/manifest-merger-debug-report.txt @@ -0,0 +1,33 @@ +-- Merging decision tree log --- +manifest +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:1-9:12 +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:1-9:12 + package + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:2:5-30 + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + xmlns:android + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:11-69 +uses-permission#android.permission.BLUETOOTH +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:5-68 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:22-65 +uses-permission#android.permission.BLUETOOTH_ADMIN +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:5-74 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:22-71 +uses-permission#android.permission.ACCESS_COARSE_LOCATION +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:5-81 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:22-78 +uses-permission#android.permission.ACCESS_FINE_LOCATION +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:5-79 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:22-76 +uses-sdk +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml reason: use-sdk injection requested +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + android:targetSdkVersion + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + android:minSdkVersion + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml diff --git a/FastBleLib/build/outputs/logs/manifest-merger-release-report.txt b/FastBleLib/build/outputs/logs/manifest-merger-release-report.txt new file mode 100644 index 0000000..187eac0 --- /dev/null +++ b/FastBleLib/build/outputs/logs/manifest-merger-release-report.txt @@ -0,0 +1,33 @@ +-- Merging decision tree log --- +manifest +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:1-9:12 +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:1-9:12 + package + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:2:5-30 + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + xmlns:android + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:1:11-69 +uses-permission#android.permission.BLUETOOTH +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:5-68 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:4:22-65 +uses-permission#android.permission.BLUETOOTH_ADMIN +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:5-74 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:5:22-71 +uses-permission#android.permission.ACCESS_COARSE_LOCATION +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:5-81 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:6:22-78 +uses-permission#android.permission.ACCESS_FINE_LOCATION +ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:5-79 + android:name + ADDED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml:7:22-76 +uses-sdk +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml reason: use-sdk injection requested +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml +INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + android:targetSdkVersion + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml + android:minSdkVersion + INJECTED from E:\AndroidProject\LatestSdkProject\Tracker\FastBleLib\src\main\AndroidManifest.xml diff --git a/FastBleLib/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin b/FastBleLib/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..cd4b51345f7d0d0f4ace3f2e3234be01cf3fe436 GIT binary patch literal 4197 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 XV=>U-RW}WI)lS>GNNkFX{g|G-J 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 XV=>U-RW}WI)lS>G + + + + + + + diff --git a/FastBleLib/src/main/java/com/clj/fastble/BleManager.java b/FastBleLib/src/main/java/com/clj/fastble/BleManager.java new file mode 100644 index 0000000..a961b8c --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/BleManager.java @@ -0,0 +1,906 @@ +package com.clj.fastble; + +import android.annotation.TargetApi; +import android.app.Application; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattService; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.bluetooth.le.ScanRecord; +import android.bluetooth.le.ScanResult; +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Looper; + +import com.clj.fastble.bluetooth.BleBluetooth; +import com.clj.fastble.bluetooth.MultipleBluetoothController; +import com.clj.fastble.bluetooth.SplitWriter; +import com.clj.fastble.callback.BleGattCallback; +import com.clj.fastble.callback.BleIndicateCallback; +import com.clj.fastble.callback.BleMtuChangedCallback; +import com.clj.fastble.callback.BleNotifyCallback; +import com.clj.fastble.callback.BleReadCallback; +import com.clj.fastble.callback.BleRssiCallback; +import com.clj.fastble.callback.BleScanAndConnectCallback; +import com.clj.fastble.callback.BleScanCallback; +import com.clj.fastble.callback.BleWriteCallback; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.data.BleScanState; +import com.clj.fastble.exception.OtherException; +import com.clj.fastble.scan.BleScanRuleConfig; +import com.clj.fastble.scan.BleScanner; +import com.clj.fastble.utils.BleLog; + +import java.util.List; +import java.util.UUID; + +public class BleManager { + + private Application context; + private BleScanRuleConfig bleScanRuleConfig; + private BluetoothAdapter bluetoothAdapter; + private MultipleBluetoothController multipleBluetoothController; + private BluetoothManager bluetoothManager; + + public static final int DEFAULT_SCAN_TIME = 10000; + private static final int DEFAULT_MAX_MULTIPLE_DEVICE = 7; + private static final int DEFAULT_OPERATE_TIME = 5000; + private static final int DEFAULT_CONNECT_RETRY_COUNT = 0; + private static final int DEFAULT_CONNECT_RETRY_INTERVAL = 5000; + private static final int DEFAULT_MTU = 23; + private static final int DEFAULT_MAX_MTU = 512; + private static final int DEFAULT_WRITE_DATA_SPLIT_COUNT = 20; + private static final int DEFAULT_CONNECT_OVER_TIME = 10000; + + private int maxConnectCount = DEFAULT_MAX_MULTIPLE_DEVICE; + private int operateTimeout = DEFAULT_OPERATE_TIME; + private int reConnectCount = DEFAULT_CONNECT_RETRY_COUNT; + private long reConnectInterval = DEFAULT_CONNECT_RETRY_INTERVAL; + private int splitWriteNum = DEFAULT_WRITE_DATA_SPLIT_COUNT; + private long connectOverTime = DEFAULT_CONNECT_OVER_TIME; + + public static BleManager getInstance() { + return BleManagerHolder.sBleManager; + } + + private static class BleManagerHolder { + private static final BleManager sBleManager = new BleManager(); + } + + public void init(Application app) { + if (context == null && app != null) { + context = app; + if (isSupportBle()) { + bluetoothManager = + (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); + bluetoothAdapter = bluetoothManager.getAdapter(); + } else { + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + } + multipleBluetoothController = new MultipleBluetoothController(); + bleScanRuleConfig = new BleScanRuleConfig(); + } + } + + /** + * Get the Context + * + * @return + */ + public Context getContext() { + return context; + } + + /** + * Get the BluetoothManager + * + * @return + */ + public BluetoothManager getBluetoothManager() { + return bluetoothManager; + } + + /** + * Get the BluetoothAdapter + * + * @return + */ + public BluetoothAdapter getBluetoothAdapter() { + return bluetoothAdapter; + } + + /** + * get the ScanRuleConfig + * + * @return + */ + public BleScanRuleConfig getScanRuleConfig() { + return bleScanRuleConfig; + } + + /** + * Get the multiple Bluetooth Controller + * + * @return + */ + public MultipleBluetoothController getMultipleBluetoothController() { + return multipleBluetoothController; + } + + /** + * Configure scan and connection properties + * + * @param config + */ + public void initScanRule(BleScanRuleConfig config) { + this.bleScanRuleConfig = config; + } + + /** + * Get the maximum number of connections + * + * @return + */ + public int getMaxConnectCount() { + return maxConnectCount; + } + + /** + * Set the maximum number of connections + * + * @param count + * @return BleManager + */ + public BleManager setMaxConnectCount(int count) { + if (count > DEFAULT_MAX_MULTIPLE_DEVICE) + count = DEFAULT_MAX_MULTIPLE_DEVICE; + this.maxConnectCount = count; + return this; + } + + /** + * Get operate timeout + * + * @return + */ + public int getOperateTimeout() { + return operateTimeout; + } + + /** + * Set operate timeout + * + * @param count + * @return BleManager + */ + public BleManager setOperateTimeout(int count) { + this.operateTimeout = count; + return this; + } + + /** + * Get connect retry count + * + * @return + */ + public int getReConnectCount() { + return reConnectCount; + } + + /** + * Get connect retry interval + * + * @return + */ + public long getReConnectInterval() { + return reConnectInterval; + } + + /** + * Set connect retry count and interval + * + * @param count + * @return BleManager + */ + public BleManager setReConnectCount(int count) { + return setReConnectCount(count, DEFAULT_CONNECT_RETRY_INTERVAL); + } + + /** + * Set connect retry count and interval + * + * @param count + * @return BleManager + */ + public BleManager setReConnectCount(int count, long interval) { + if (count > 10) + count = 10; + if (interval < 0) + interval = 0; + this.reConnectCount = count; + this.reConnectInterval = interval; + return this; + } + + + /** + * Get operate split Write Num + * + * @return + */ + public int getSplitWriteNum() { + return splitWriteNum; + } + + /** + * Set split Writ eNum + * + * @param num + * @return BleManager + */ + public BleManager setSplitWriteNum(int num) { + if (num > 0) { + this.splitWriteNum = num; + } + return this; + } + + /** + * Get operate connect Over Time + * + * @return + */ + public long getConnectOverTime() { + return connectOverTime; + } + + /** + * Set connect Over Time + * + * @param time + * @return BleManager + */ + public BleManager setConnectOverTime(long time) { + if (time <= 0) { + time = 100; + } + this.connectOverTime = time; + return this; + } + + /** + * print log? + * + * @param enable + * @return BleManager + */ + public BleManager enableLog(boolean enable) { + BleLog.isPrint = enable; + return this; + } + + /** + * scan device around + * + * @param callback + */ + public void scan(BleScanCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleScanCallback can not be Null!"); + } + + if (!isBlueEnable()) { + BleLog.e("Bluetooth not enable!"); + callback.onScanStarted(false); + return; + } + + UUID[] serviceUuids = bleScanRuleConfig.getServiceUuids(); + String[] deviceNames = bleScanRuleConfig.getDeviceNames(); + String deviceMac = bleScanRuleConfig.getDeviceMac(); + boolean fuzzy = bleScanRuleConfig.isFuzzy(); + long timeOut = bleScanRuleConfig.getScanTimeOut(); + + BleScanner.getInstance() + .scan(serviceUuids, deviceNames, deviceMac, fuzzy, timeOut, callback); + } + + /** + * scan device then connect + * + * @param callback + */ + public void scanAndConnect(BleScanAndConnectCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleScanAndConnectCallback can not be Null!"); + } + + if (!isBlueEnable()) { + BleLog.e("Bluetooth not enable!"); + callback.onScanStarted(false); + return; + } + + UUID[] serviceUuids = bleScanRuleConfig.getServiceUuids(); + String[] deviceNames = bleScanRuleConfig.getDeviceNames(); + String deviceMac = bleScanRuleConfig.getDeviceMac(); + boolean fuzzy = bleScanRuleConfig.isFuzzy(); + long timeOut = bleScanRuleConfig.getScanTimeOut(); + + BleScanner.getInstance() + .scanAndConnect(serviceUuids, deviceNames, deviceMac, fuzzy, timeOut, callback); + } + + /** + * connect a known device + * + * @param bleDevice + * @param bleGattCallback + * @return + */ + public BluetoothGatt connect(BleDevice bleDevice, BleGattCallback bleGattCallback) { + if (bleGattCallback == null) { + throw new IllegalArgumentException("BleGattCallback can not be Null!"); + } + + if (!isBlueEnable()) { + BleLog.e("Bluetooth not enable!"); + bleGattCallback.onConnectFail(bleDevice, new OtherException("Bluetooth not enable!")); + return null; + } + + if (Looper.myLooper() == null || Looper.myLooper() != Looper.getMainLooper()) { + BleLog.w("Be careful: currentThread is not MainThread!"); + } + + if (bleDevice == null || bleDevice.getDevice() == null) { + bleGattCallback.onConnectFail(bleDevice, new OtherException("Not Found Device " + + "Exception Occurred!")); + } else { + BleBluetooth bleBluetooth = multipleBluetoothController.buildConnectingBle(bleDevice); + boolean autoConnect = bleScanRuleConfig.isAutoConnect(); + return bleBluetooth.connect(bleDevice, autoConnect, bleGattCallback); + } + + return null; + } + + /** + * connect a device through its mac without scan,whether or not it has been connected + * + * @param mac + * @param bleGattCallback + * @return + */ + public BluetoothGatt connect(String mac, BleGattCallback bleGattCallback) { + BluetoothDevice bluetoothDevice = getBluetoothAdapter().getRemoteDevice(mac); + BleDevice bleDevice = new BleDevice(bluetoothDevice, 0, null, 0); + return connect(bleDevice, bleGattCallback); + } + + + /** + * Cancel scan + */ + public void cancelScan() { + BleScanner.getInstance().stopLeScan(); + } + + /** + * notify + * + * @param bleDevice + * @param uuid_service + * @param uuid_notify + * @param callback + */ + public void notify(BleDevice bleDevice, String uuid_service, String uuid_notify, + BleNotifyCallback callback) { + notify(bleDevice, uuid_service, uuid_notify, false, callback); + } + + /** + * notify + * + * @param bleDevice + * @param uuid_service + * @param uuid_notify + * @param useCharacteristicDescriptor + * @param callback + */ + public void notify(BleDevice bleDevice, String uuid_service, String uuid_notify, + boolean useCharacteristicDescriptor, BleNotifyCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleNotifyCallback can not be Null!"); + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onNotifyFailure(new OtherException("This device not connect!")); + } else { + bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_notify) + .enableCharacteristicNotify(callback, uuid_notify, useCharacteristicDescriptor); + } + } + + /** + * indicate + * + * @param bleDevice + * @param uuid_service + * @param uuid_indicate + * @param callback + */ + public void indicate(BleDevice bleDevice, String uuid_service, String uuid_indicate, + BleIndicateCallback callback) { + indicate(bleDevice, uuid_service, uuid_indicate, false, callback); + } + + /** + * indicate + * + * @param bleDevice + * @param uuid_service + * @param uuid_indicate + * @param useCharacteristicDescriptor + * @param callback + */ + public void indicate(BleDevice bleDevice, String uuid_service, String uuid_indicate, + boolean useCharacteristicDescriptor, BleIndicateCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleIndicateCallback can not be Null!"); + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onIndicateFailure(new OtherException("This device not connect!")); + } else { + bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_indicate) + .enableCharacteristicIndicate(callback, uuid_indicate, + useCharacteristicDescriptor); + } + } + + /** + * stop notify, remove callback + * + * @param bleDevice + * @param uuid_service + * @param uuid_notify + * @return + */ + public boolean stopNotify(BleDevice bleDevice, String uuid_service, String uuid_notify) { + return stopNotify(bleDevice, uuid_service, uuid_notify, false); + } + + /** + * stop notify, remove callback + * + * @param bleDevice + * @param uuid_service + * @param uuid_notify + * @param useCharacteristicDescriptor + * @return + */ + public boolean stopNotify(BleDevice bleDevice, String uuid_service, String uuid_notify, + boolean useCharacteristicDescriptor) { + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + return false; + } + boolean success = bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_notify) + .disableCharacteristicNotify(useCharacteristicDescriptor); + if (success) { + bleBluetooth.removeNotifyCallback(uuid_notify); + } + return success; + } + + /** + * stop indicate, remove callback + * + * @param bleDevice + * @param uuid_service + * @param uuid_indicate + * @return + */ + public boolean stopIndicate(BleDevice bleDevice, String uuid_service, String uuid_indicate) { + return stopIndicate(bleDevice, uuid_service, uuid_indicate, false); + } + + /** + * stop indicate, remove callback + * + * @param bleDevice + * @param uuid_service + * @param uuid_indicate + * @param useCharacteristicDescriptor + * @return + */ + public boolean stopIndicate(BleDevice bleDevice, String uuid_service, String uuid_indicate, + boolean useCharacteristicDescriptor) { + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + return false; + } + boolean success = bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_indicate) + .disableCharacteristicIndicate(useCharacteristicDescriptor); + if (success) { + bleBluetooth.removeIndicateCallback(uuid_indicate); + } + return success; + } + + /** + * write + * + * @param bleDevice + * @param uuid_service + * @param uuid_write + * @param data + * @param callback + */ + public void write(BleDevice bleDevice, String uuid_service, String uuid_write, byte[] data, + BleWriteCallback callback) { + write(bleDevice, uuid_service, uuid_write, data, true, callback); + } + + /** + * write + * + * @param bleDevice + * @param uuid_service + * @param uuid_write + * @param data + * @param split + * @param callback + */ + public void write(BleDevice bleDevice, String uuid_service, String uuid_write, byte[] data, + boolean split, BleWriteCallback callback) { + + write(bleDevice, uuid_service, uuid_write, data, split, true, 0, callback); + } + + /** + * write + * + * @param bleDevice + * @param uuid_service + * @param uuid_write + * @param data + * @param split + * @param sendNextWhenLastSuccess + * @param intervalBetweenTwoPackage + * @param callback + */ + public void write(BleDevice bleDevice, String uuid_service, String uuid_write, byte[] data, + boolean split, boolean sendNextWhenLastSuccess, + long intervalBetweenTwoPackage, BleWriteCallback callback) { + + if (callback == null) { + throw new IllegalArgumentException("BleWriteCallback can not be Null!"); + } + + if (data == null) { + BleLog.e("data is Null!"); + callback.onWriteFailure(new OtherException("data is Null!")); + return; + } + + if (data.length > 20 && !split) { + BleLog.w("Be careful: data's length beyond 20! Ensure MTU higher than 23, or use " + + "spilt write!"); + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onWriteFailure(new OtherException("This device not connect!")); + } else { + if (split && data.length > getSplitWriteNum()) { + new SplitWriter().splitWrite(bleBluetooth, uuid_service, uuid_write, data, + sendNextWhenLastSuccess, intervalBetweenTwoPackage, callback); + } else { + bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_write) + .writeCharacteristic(data, callback, uuid_write); + } + } + } + + /** + * read + * + * @param bleDevice + * @param uuid_service + * @param uuid_read + * @param callback + */ + public void read(BleDevice bleDevice, String uuid_service, String uuid_read, + BleReadCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleReadCallback can not be Null!"); + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onReadFailure(new OtherException("This device is not connected!")); + } else { + bleBluetooth.newBleConnector().withUUIDString(uuid_service, uuid_read) + .readCharacteristic(callback, uuid_read); + } + } + + /** + * read Rssi + * + * @param bleDevice + * @param callback + */ + public void readRssi(BleDevice bleDevice, BleRssiCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleRssiCallback can not be Null!"); + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onRssiFailure(new OtherException("This device is not connected!")); + } else { + bleBluetooth.newBleConnector().readRemoteRssi(callback); + } + } + + /** + * set Mtu + * + * @param bleDevice + * @param mtu + * @param callback + */ + public void setMtu(BleDevice bleDevice, int mtu, BleMtuChangedCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("BleMtuChangedCallback can not be Null!"); + } + + if (mtu > DEFAULT_MAX_MTU) { + BleLog.e("requiredMtu should lower than 512 !"); + callback.onSetMTUFailure(new OtherException("requiredMtu should lower than 512 !")); + return; + } + + if (mtu < DEFAULT_MTU) { + BleLog.e("requiredMtu should higher than 23 !"); + callback.onSetMTUFailure(new OtherException("requiredMtu should higher than 23 !")); + return; + } + + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + callback.onSetMTUFailure(new OtherException("This device is not connected!")); + } else { + bleBluetooth.newBleConnector().setMtu(mtu, callback); + } + } + + /** + * requestConnectionPriority + * + * @param connectionPriority Request a specific connection priority. Must be one of + * {@link BluetoothGatt#CONNECTION_PRIORITY_BALANCED}, + * {@link BluetoothGatt#CONNECTION_PRIORITY_HIGH} + * or {@link BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER}. + * @throws IllegalArgumentException If the parameters are outside of their + * specified range. + */ + public boolean requestConnectionPriority(BleDevice bleDevice, int connectionPriority) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + BleBluetooth bleBluetooth = multipleBluetoothController.getBleBluetooth(bleDevice); + if (bleBluetooth == null) { + return false; + } else { + return bleBluetooth.newBleConnector().requestConnectionPriority(connectionPriority); + } + } + return false; + } + + /** + * is support ble? + * + * @return + */ + public boolean isSupportBle() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && context.getApplicationContext() + .getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE); + } + + /** + * Open bluetooth + */ + public void enableBluetooth() { + if (bluetoothAdapter != null) { + bluetoothAdapter.enable(); + } + } + + /** + * Disable bluetooth + */ + public void disableBluetooth() { + if (bluetoothAdapter != null) { + if (bluetoothAdapter.isEnabled()) + bluetoothAdapter.disable(); + } + } + + /** + * judge Bluetooth is enable + * + * @return + */ + public boolean isBlueEnable() { + return bluetoothAdapter != null && bluetoothAdapter.isEnabled(); + } + + + public BleDevice convertBleDevice(BluetoothDevice bluetoothDevice) { + return new BleDevice(bluetoothDevice); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public BleDevice convertBleDevice(ScanResult scanResult) { + if (scanResult == null) { + throw new IllegalArgumentException("scanResult can not be Null!"); + } + BluetoothDevice bluetoothDevice = scanResult.getDevice(); + int rssi = scanResult.getRssi(); + ScanRecord scanRecord = scanResult.getScanRecord(); + byte[] bytes = null; + if (scanRecord != null) + bytes = scanRecord.getBytes(); + long timestampNanos = scanResult.getTimestampNanos(); + return new BleDevice(bluetoothDevice, rssi, bytes, timestampNanos); + } + + public BleBluetooth getBleBluetooth(BleDevice bleDevice) { + if (multipleBluetoothController != null) { + return multipleBluetoothController.getBleBluetooth(bleDevice); + } + return null; + } + + public BluetoothGatt getBluetoothGatt(BleDevice bleDevice) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + return bleBluetooth.getBluetoothGatt(); + return null; + } + + public List getBluetoothGattServices(BleDevice bleDevice) { + BluetoothGatt gatt = getBluetoothGatt(bleDevice); + if (gatt != null) { + return gatt.getServices(); + } + return null; + } + + public List getBluetoothGattCharacteristics(BluetoothGattService service) { + return service.getCharacteristics(); + } + + public void removeConnectGattCallback(BleDevice bleDevice) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeConnectGattCallback(); + } + + public void removeRssiCallback(BleDevice bleDevice) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeRssiCallback(); + } + + public void removeMtuChangedCallback(BleDevice bleDevice) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeMtuChangedCallback(); + } + + public void removeNotifyCallback(BleDevice bleDevice, String uuid_notify) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeNotifyCallback(uuid_notify); + } + + public void removeIndicateCallback(BleDevice bleDevice, String uuid_indicate) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeIndicateCallback(uuid_indicate); + } + + public void removeWriteCallback(BleDevice bleDevice, String uuid_write) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeWriteCallback(uuid_write); + } + + public void removeReadCallback(BleDevice bleDevice, String uuid_read) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.removeReadCallback(uuid_read); + } + + public void clearCharacterCallback(BleDevice bleDevice) { + BleBluetooth bleBluetooth = getBleBluetooth(bleDevice); + if (bleBluetooth != null) + bleBluetooth.clearCharacterCallback(); + } + + public BleScanState getScanSate() { + return BleScanner.getInstance().getScanState(); + } + + public List getAllConnectedDevice() { + if (multipleBluetoothController == null) + return null; + return multipleBluetoothController.getDeviceList(); + } + + /** + * @param bleDevice + * @return State of the profile connection. One of + * {@link BluetoothProfile#STATE_CONNECTED}, + * {@link BluetoothProfile#STATE_CONNECTING}, + * {@link BluetoothProfile#STATE_DISCONNECTED}, + * {@link BluetoothProfile#STATE_DISCONNECTING} + */ + public int getConnectState(BleDevice bleDevice) { + if (bleDevice != null) { + return bluetoothManager.getConnectionState(bleDevice.getDevice(), + BluetoothProfile.GATT); + } else { + return BluetoothProfile.STATE_DISCONNECTED; + } + } + + public boolean isConnected(BleDevice bleDevice) { + if (!isBlueEnable()) + return false; + return getConnectState(bleDevice) == BluetoothProfile.STATE_CONNECTED; + } + + public boolean isConnected(String mac) { + if (!isBlueEnable()) + return false; + List list = getAllConnectedDevice(); + for (BleDevice bleDevice : list) { + if (bleDevice != null) { + if (bleDevice.getMac().equals(mac)) { + return true; + } + } + } + return false; + } + + public void disconnect(BleDevice bleDevice) { + if (multipleBluetoothController != null) { + multipleBluetoothController.disconnect(bleDevice); + } + } + + public void disconnectAllDevice() { + if (multipleBluetoothController != null) { + multipleBluetoothController.disconnectAllDevice(); + } + } + + public void destroy() { + if (multipleBluetoothController != null) { + multipleBluetoothController.destroy(); + } + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java new file mode 100644 index 0000000..8c13ff4 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleBluetooth.java @@ -0,0 +1,612 @@ +package com.clj.fastble.bluetooth; + +import android.annotation.TargetApi; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattDescriptor; +import android.bluetooth.BluetoothProfile; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +import com.clj.fastble.BleManager; +import com.clj.fastble.callback.BleGattCallback; +import com.clj.fastble.callback.BleIndicateCallback; +import com.clj.fastble.callback.BleMtuChangedCallback; +import com.clj.fastble.callback.BleNotifyCallback; +import com.clj.fastble.callback.BleReadCallback; +import com.clj.fastble.callback.BleRssiCallback; +import com.clj.fastble.callback.BleWriteCallback; +import com.clj.fastble.data.BleConnectStateParameter; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.data.BleMsg; +import com.clj.fastble.exception.ConnectException; +import com.clj.fastble.exception.OtherException; +import com.clj.fastble.exception.TimeoutException; +import com.clj.fastble.utils.BleLog; + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import static android.bluetooth.BluetoothDevice.TRANSPORT_LE; + +@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) +public class BleBluetooth { + + private BleGattCallback bleGattCallback; + private BleRssiCallback bleRssiCallback; + private BleMtuChangedCallback bleMtuChangedCallback; + private final HashMap bleNotifyCallbackHashMap = new HashMap<>(); + private final HashMap bleIndicateCallbackHashMap = new HashMap<>(); + private final HashMap bleWriteCallbackHashMap = new HashMap<>(); + private final HashMap bleReadCallbackHashMap = new HashMap<>(); + + private LastState lastState; + private boolean isActiveDisconnect = false; + private final BleDevice bleDevice; + private BluetoothGatt bluetoothGatt; + private final MainHandler mainHandler = new MainHandler(Looper.getMainLooper()); + private int connectRetryCount = 0; + + public BleBluetooth(BleDevice bleDevice) { + this.bleDevice = bleDevice; + } + + public BleConnector newBleConnector() { + return new BleConnector(this); + } + + public synchronized void addConnectGattCallback(BleGattCallback callback) { + bleGattCallback = callback; + } + + public synchronized void removeConnectGattCallback() { + bleGattCallback = null; + } + + public synchronized void addNotifyCallback(String uuid, BleNotifyCallback bleNotifyCallback) { + bleNotifyCallbackHashMap.put(uuid, bleNotifyCallback); + } + + public synchronized void addIndicateCallback(String uuid, BleIndicateCallback bleIndicateCallback) { + bleIndicateCallbackHashMap.put(uuid, bleIndicateCallback); + } + + public synchronized void addWriteCallback(String uuid, BleWriteCallback bleWriteCallback) { + bleWriteCallbackHashMap.put(uuid, bleWriteCallback); + } + + public synchronized void addReadCallback(String uuid, BleReadCallback bleReadCallback) { + bleReadCallbackHashMap.put(uuid, bleReadCallback); + } + + public synchronized void removeNotifyCallback(String uuid) { + if (bleNotifyCallbackHashMap.containsKey(uuid)) + bleNotifyCallbackHashMap.remove(uuid); + } + + public synchronized void removeIndicateCallback(String uuid) { + if (bleIndicateCallbackHashMap.containsKey(uuid)) + bleIndicateCallbackHashMap.remove(uuid); + } + + public synchronized void removeWriteCallback(String uuid) { + if (bleWriteCallbackHashMap.containsKey(uuid)) + bleWriteCallbackHashMap.remove(uuid); + } + + public synchronized void removeReadCallback(String uuid) { + if (bleReadCallbackHashMap.containsKey(uuid)) + bleReadCallbackHashMap.remove(uuid); + } + + public synchronized void clearCharacterCallback() { + bleNotifyCallbackHashMap.clear(); + bleIndicateCallbackHashMap.clear(); + bleWriteCallbackHashMap.clear(); + bleReadCallbackHashMap.clear(); + } + + public synchronized void addRssiCallback(BleRssiCallback callback) { + bleRssiCallback = callback; + } + + public synchronized void removeRssiCallback() { + bleRssiCallback = null; + } + + public synchronized void addMtuChangedCallback(BleMtuChangedCallback callback) { + bleMtuChangedCallback = callback; + } + + public synchronized void removeMtuChangedCallback() { + bleMtuChangedCallback = null; + } + + + public String getDeviceKey() { + return bleDevice.getKey(); + } + + public BleDevice getDevice() { + return bleDevice; + } + + public BluetoothGatt getBluetoothGatt() { + return bluetoothGatt; + } + + public synchronized BluetoothGatt connect(BleDevice bleDevice, + boolean autoConnect, + BleGattCallback callback) { + return connect(bleDevice, autoConnect, callback, 0); + } + + public synchronized BluetoothGatt connect(BleDevice bleDevice, + boolean autoConnect, + BleGattCallback callback, + int connectRetryCount) { + BleLog.i("connect device: " + bleDevice.getName() + + "\nmac: " + bleDevice.getMac() + + "\nautoConnect: " + autoConnect + + "\ncurrentThread: " + Thread.currentThread().getId() + + "\nconnectCount:" + (connectRetryCount + 1)); + if (connectRetryCount == 0) { + this.connectRetryCount = 0; + } + + addConnectGattCallback(callback); + + lastState = LastState.CONNECT_CONNECTING; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + bluetoothGatt = bleDevice.getDevice().connectGatt(BleManager.getInstance().getContext(), + autoConnect, coreGattCallback, TRANSPORT_LE); + } else { + bluetoothGatt = bleDevice.getDevice().connectGatt(BleManager.getInstance().getContext(), + autoConnect, coreGattCallback); + } + if (bluetoothGatt != null) { + if (bleGattCallback != null) { + bleGattCallback.onStartConnect(); + } + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_CONNECT_OVER_TIME; + mainHandler.sendMessageDelayed(message, BleManager.getInstance().getConnectOverTime()); + + } else { + disconnectGatt(); + refreshDeviceCache(); + closeBluetoothGatt(); + lastState = LastState.CONNECT_FAILURE; + BleManager.getInstance().getMultipleBluetoothController().removeConnectingBle(BleBluetooth.this); + if (bleGattCallback != null) + bleGattCallback.onConnectFail(bleDevice, new OtherException("GATT connect exception occurred!")); + + } + return bluetoothGatt; + } + + public synchronized void disconnect() { + isActiveDisconnect = true; + disconnectGatt(); + } + + public synchronized void destroy() { + lastState = LastState.CONNECT_IDLE; + disconnectGatt(); + refreshDeviceCache(); + closeBluetoothGatt(); + removeConnectGattCallback(); + removeRssiCallback(); + removeMtuChangedCallback(); + clearCharacterCallback(); + mainHandler.removeCallbacksAndMessages(null); + } + + private synchronized void disconnectGatt() { + if (bluetoothGatt != null) { + bluetoothGatt.disconnect(); + } + } + + private synchronized void refreshDeviceCache() { + try { + final Method refresh = BluetoothGatt.class.getMethod("refresh"); + if (refresh != null && bluetoothGatt != null) { + boolean success = (Boolean) refresh.invoke(bluetoothGatt); + BleLog.i("refreshDeviceCache, is success: " + success); + } + } catch (Exception e) { + BleLog.i("exception occur while refreshing device: " + e.getMessage()); + e.printStackTrace(); + } + } + + private synchronized void closeBluetoothGatt() { + if (bluetoothGatt != null) { + bluetoothGatt.close(); + } + } + + private final class MainHandler extends Handler { + + MainHandler(Looper looper) { + super(looper); + } + + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case BleMsg.MSG_CONNECT_FAIL: { + disconnectGatt(); + refreshDeviceCache(); + closeBluetoothGatt(); + + if (connectRetryCount < BleManager.getInstance().getReConnectCount()) { + BleLog.e("Connect fail, try reconnect " + BleManager.getInstance().getReConnectInterval() + " millisecond later"); + ++connectRetryCount; + + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_RECONNECT; + mainHandler.sendMessageDelayed(message, BleManager.getInstance().getReConnectInterval()); + } else { + lastState = LastState.CONNECT_FAILURE; + BleManager.getInstance().getMultipleBluetoothController().removeConnectingBle(BleBluetooth.this); + + BleConnectStateParameter para = (BleConnectStateParameter) msg.obj; + int status = para.getStatus(); + if (bleGattCallback != null) + bleGattCallback.onConnectFail(bleDevice, new ConnectException(bluetoothGatt, status)); + } + } + break; + + case BleMsg.MSG_DISCONNECTED: { + lastState = LastState.CONNECT_DISCONNECT; + BleManager.getInstance().getMultipleBluetoothController().removeBleBluetooth(BleBluetooth.this); + + disconnect(); + refreshDeviceCache(); + closeBluetoothGatt(); + removeRssiCallback(); + removeMtuChangedCallback(); + clearCharacterCallback(); + mainHandler.removeCallbacksAndMessages(null); + + BleConnectStateParameter para = (BleConnectStateParameter) msg.obj; + boolean isActive = para.isActive(); + int status = para.getStatus(); + if (bleGattCallback != null) + bleGattCallback.onDisConnected(isActive, bleDevice, bluetoothGatt, status); + } + break; + + case BleMsg.MSG_RECONNECT: { + connect(bleDevice, false, bleGattCallback, connectRetryCount); + } + break; + + case BleMsg.MSG_CONNECT_OVER_TIME: { + disconnectGatt(); + refreshDeviceCache(); + closeBluetoothGatt(); + + lastState = LastState.CONNECT_FAILURE; + BleManager.getInstance().getMultipleBluetoothController().removeConnectingBle(BleBluetooth.this); + + if (bleGattCallback != null) + bleGattCallback.onConnectFail(bleDevice, new TimeoutException()); + } + break; + + case BleMsg.MSG_DISCOVER_SERVICES: { + if (bluetoothGatt != null) { + boolean discoverServiceResult = bluetoothGatt.discoverServices(); + if (!discoverServiceResult) { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCOVER_FAIL; + mainHandler.sendMessage(message); + } + } else { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCOVER_FAIL; + mainHandler.sendMessage(message); + } + } + break; + + case BleMsg.MSG_DISCOVER_FAIL: { + disconnectGatt(); + refreshDeviceCache(); + closeBluetoothGatt(); + + lastState = LastState.CONNECT_FAILURE; + BleManager.getInstance().getMultipleBluetoothController().removeConnectingBle(BleBluetooth.this); + + if (bleGattCallback != null) + bleGattCallback.onConnectFail(bleDevice, + new OtherException("GATT discover services exception occurred!")); + } + break; + + case BleMsg.MSG_DISCOVER_SUCCESS: { + lastState = LastState.CONNECT_CONNECTED; + isActiveDisconnect = false; + BleManager.getInstance().getMultipleBluetoothController().removeConnectingBle(BleBluetooth.this); + BleManager.getInstance().getMultipleBluetoothController().addBleBluetooth(BleBluetooth.this); + + BleConnectStateParameter para = (BleConnectStateParameter) msg.obj; + int status = para.getStatus(); + if (bleGattCallback != null) + bleGattCallback.onConnectSuccess(bleDevice, bluetoothGatt, status); + } + break; + + default: + super.handleMessage(msg); + break; + } + } + } + + private BluetoothGattCallback coreGattCallback = new BluetoothGattCallback() { + + @Override + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { + super.onConnectionStateChange(gatt, status, newState); + BleLog.i("BluetoothGattCallback:onConnectionStateChange " + + '\n' + "status: " + status + + '\n' + "newState: " + newState + + '\n' + "currentThread: " + Thread.currentThread().getId()); + + bluetoothGatt = gatt; + + mainHandler.removeMessages(BleMsg.MSG_CONNECT_OVER_TIME); + + if (newState == BluetoothProfile.STATE_CONNECTED) { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCOVER_SERVICES; + mainHandler.sendMessageDelayed(message, 500); + + } else if (newState == BluetoothProfile.STATE_DISCONNECTED) { + if (lastState == LastState.CONNECT_CONNECTING) { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_CONNECT_FAIL; + message.obj = new BleConnectStateParameter(status); + mainHandler.sendMessage(message); + + } else if (lastState == LastState.CONNECT_CONNECTED) { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCONNECTED; + BleConnectStateParameter para = new BleConnectStateParameter(status); + para.setActive(isActiveDisconnect); + message.obj = para; + mainHandler.sendMessage(message); + } + } + } + + @Override + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + super.onServicesDiscovered(gatt, status); + BleLog.i("BluetoothGattCallback:onServicesDiscovered " + + '\n' + "status: " + status + + '\n' + "currentThread: " + Thread.currentThread().getId()); + + bluetoothGatt = gatt; + + if (status == BluetoothGatt.GATT_SUCCESS) { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCOVER_SUCCESS; + message.obj = new BleConnectStateParameter(status); + mainHandler.sendMessage(message); + + } else { + Message message = mainHandler.obtainMessage(); + message.what = BleMsg.MSG_DISCOVER_FAIL; + mainHandler.sendMessage(message); + } + } + + @Override + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + super.onCharacteristicChanged(gatt, characteristic); + + Iterator iterator = bleNotifyCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleNotifyCallback) { + BleNotifyCallback bleNotifyCallback = (BleNotifyCallback) callback; + if (characteristic.getUuid().toString().equalsIgnoreCase(bleNotifyCallback.getKey())) { + Handler handler = bleNotifyCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_NOTIFY_DATA_CHANGE; + message.obj = bleNotifyCallback; + Bundle bundle = new Bundle(); + bundle.putByteArray(BleMsg.KEY_NOTIFY_BUNDLE_VALUE, characteristic.getValue()); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + + iterator = bleIndicateCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleIndicateCallback) { + BleIndicateCallback bleIndicateCallback = (BleIndicateCallback) callback; + if (characteristic.getUuid().toString().equalsIgnoreCase(bleIndicateCallback.getKey())) { + Handler handler = bleIndicateCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_INDICATE_DATA_CHANGE; + message.obj = bleIndicateCallback; + Bundle bundle = new Bundle(); + bundle.putByteArray(BleMsg.KEY_INDICATE_BUNDLE_VALUE, characteristic.getValue()); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + } + + @Override + public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { + super.onDescriptorWrite(gatt, descriptor, status); + + Iterator iterator = bleNotifyCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleNotifyCallback) { + BleNotifyCallback bleNotifyCallback = (BleNotifyCallback) callback; + if (descriptor.getCharacteristic().getUuid().toString().equalsIgnoreCase(bleNotifyCallback.getKey())) { + Handler handler = bleNotifyCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_NOTIFY_RESULT; + message.obj = bleNotifyCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_NOTIFY_BUNDLE_STATUS, status); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + + iterator = bleIndicateCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleIndicateCallback) { + BleIndicateCallback bleIndicateCallback = (BleIndicateCallback) callback; + if (descriptor.getCharacteristic().getUuid().toString().equalsIgnoreCase(bleIndicateCallback.getKey())) { + Handler handler = bleIndicateCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_INDICATE_RESULT; + message.obj = bleIndicateCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_INDICATE_BUNDLE_STATUS, status); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + } + + @Override + public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + super.onCharacteristicWrite(gatt, characteristic, status); + + Iterator iterator = bleWriteCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleWriteCallback) { + BleWriteCallback bleWriteCallback = (BleWriteCallback) callback; + if (characteristic.getUuid().toString().equalsIgnoreCase(bleWriteCallback.getKey())) { + Handler handler = bleWriteCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_WRITE_RESULT; + message.obj = bleWriteCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_WRITE_BUNDLE_STATUS, status); + bundle.putByteArray(BleMsg.KEY_WRITE_BUNDLE_VALUE, characteristic.getValue()); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + } + + @Override + public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + super.onCharacteristicRead(gatt, characteristic, status); + + Iterator iterator = bleReadCallbackHashMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + Object callback = entry.getValue(); + if (callback instanceof BleReadCallback) { + BleReadCallback bleReadCallback = (BleReadCallback) callback; + if (characteristic.getUuid().toString().equalsIgnoreCase(bleReadCallback.getKey())) { + Handler handler = bleReadCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_CHA_READ_RESULT; + message.obj = bleReadCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_READ_BUNDLE_STATUS, status); + bundle.putByteArray(BleMsg.KEY_READ_BUNDLE_VALUE, characteristic.getValue()); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + } + } + + @Override + public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { + super.onReadRemoteRssi(gatt, rssi, status); + + if (bleRssiCallback != null) { + Handler handler = bleRssiCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_READ_RSSI_RESULT; + message.obj = bleRssiCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_READ_RSSI_BUNDLE_STATUS, status); + bundle.putInt(BleMsg.KEY_READ_RSSI_BUNDLE_VALUE, rssi); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + + @Override + public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { + super.onMtuChanged(gatt, mtu, status); + + if (bleMtuChangedCallback != null) { + Handler handler = bleMtuChangedCallback.getHandler(); + if (handler != null) { + Message message = handler.obtainMessage(); + message.what = BleMsg.MSG_SET_MTU_RESULT; + message.obj = bleMtuChangedCallback; + Bundle bundle = new Bundle(); + bundle.putInt(BleMsg.KEY_SET_MTU_BUNDLE_STATUS, status); + bundle.putInt(BleMsg.KEY_SET_MTU_BUNDLE_VALUE, mtu); + message.setData(bundle); + handler.sendMessage(message); + } + } + } + }; + + enum LastState { + CONNECT_IDLE, + CONNECT_CONNECTING, + CONNECT_CONNECTED, + CONNECT_FAILURE, + CONNECT_DISCONNECT + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleConnector.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleConnector.java new file mode 100644 index 0000000..13f29c2 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/BleConnector.java @@ -0,0 +1,608 @@ + +package com.clj.fastble.bluetooth; + +import android.annotation.TargetApi; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattDescriptor; +import android.bluetooth.BluetoothGattService; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +import com.clj.fastble.BleManager; +import com.clj.fastble.callback.BleIndicateCallback; +import com.clj.fastble.callback.BleMtuChangedCallback; +import com.clj.fastble.callback.BleNotifyCallback; +import com.clj.fastble.callback.BleReadCallback; +import com.clj.fastble.callback.BleRssiCallback; +import com.clj.fastble.callback.BleWriteCallback; +import com.clj.fastble.data.BleMsg; +import com.clj.fastble.data.BleWriteState; +import com.clj.fastble.exception.GattException; +import com.clj.fastble.exception.OtherException; +import com.clj.fastble.exception.TimeoutException; + +import java.util.UUID; + + +@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) +public class BleConnector { + + private static final String UUID_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR = "00002902-0000-1000-8000-00805f9b34fb"; + + private BluetoothGatt mBluetoothGatt; + private BluetoothGattService mGattService; + private BluetoothGattCharacteristic mCharacteristic; + private BleBluetooth mBleBluetooth; + private Handler mHandler; + + BleConnector(BleBluetooth bleBluetooth) { + this.mBleBluetooth = bleBluetooth; + this.mBluetoothGatt = bleBluetooth.getBluetoothGatt(); + this.mHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + + case BleMsg.MSG_CHA_NOTIFY_START: { + BleNotifyCallback notifyCallback = (BleNotifyCallback) msg.obj; + if (notifyCallback != null) + notifyCallback.onNotifyFailure(new TimeoutException()); + break; + } + + case BleMsg.MSG_CHA_NOTIFY_RESULT: { + notifyMsgInit(); + + BleNotifyCallback notifyCallback = (BleNotifyCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_NOTIFY_BUNDLE_STATUS); + if (notifyCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + notifyCallback.onNotifySuccess(); + } else { + notifyCallback.onNotifyFailure(new GattException(status)); + } + } + break; + } + + case BleMsg.MSG_CHA_NOTIFY_DATA_CHANGE: { + BleNotifyCallback notifyCallback = (BleNotifyCallback) msg.obj; + Bundle bundle = msg.getData(); + byte[] value = bundle.getByteArray(BleMsg.KEY_NOTIFY_BUNDLE_VALUE); + if (notifyCallback != null) { + notifyCallback.onCharacteristicChanged(value); + } + break; + } + + case BleMsg.MSG_CHA_INDICATE_START: { + BleIndicateCallback indicateCallback = (BleIndicateCallback) msg.obj; + if (indicateCallback != null) + indicateCallback.onIndicateFailure(new TimeoutException()); + break; + } + + case BleMsg.MSG_CHA_INDICATE_RESULT: { + indicateMsgInit(); + + BleIndicateCallback indicateCallback = (BleIndicateCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_INDICATE_BUNDLE_STATUS); + if (indicateCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + indicateCallback.onIndicateSuccess(); + } else { + indicateCallback.onIndicateFailure(new GattException(status)); + } + } + break; + } + + case BleMsg.MSG_CHA_INDICATE_DATA_CHANGE: { + BleIndicateCallback indicateCallback = (BleIndicateCallback) msg.obj; + Bundle bundle = msg.getData(); + byte[] value = bundle.getByteArray(BleMsg.KEY_INDICATE_BUNDLE_VALUE); + if (indicateCallback != null) { + indicateCallback.onCharacteristicChanged(value); + } + break; + } + + case BleMsg.MSG_CHA_WRITE_START: { + BleWriteCallback writeCallback = (BleWriteCallback) msg.obj; + if (writeCallback != null) { + writeCallback.onWriteFailure(new TimeoutException()); + } + break; + } + + case BleMsg.MSG_CHA_WRITE_RESULT: { + writeMsgInit(); + + BleWriteCallback writeCallback = (BleWriteCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_WRITE_BUNDLE_STATUS); + byte[] value = bundle.getByteArray(BleMsg.KEY_WRITE_BUNDLE_VALUE); + if (writeCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + writeCallback.onWriteSuccess(BleWriteState.DATA_WRITE_SINGLE, BleWriteState.DATA_WRITE_SINGLE, value); + } else { + writeCallback.onWriteFailure(new GattException(status)); + } + } + break; + } + + case BleMsg.MSG_CHA_READ_START: { + BleReadCallback readCallback = (BleReadCallback) msg.obj; + if (readCallback != null) + readCallback.onReadFailure(new TimeoutException()); + break; + } + + case BleMsg.MSG_CHA_READ_RESULT: { + readMsgInit(); + + BleReadCallback readCallback = (BleReadCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_READ_BUNDLE_STATUS); + byte[] value = bundle.getByteArray(BleMsg.KEY_READ_BUNDLE_VALUE); + if (readCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + readCallback.onReadSuccess(value); + } else { + readCallback.onReadFailure(new GattException(status)); + } + } + break; + } + + case BleMsg.MSG_READ_RSSI_START: { + BleRssiCallback rssiCallback = (BleRssiCallback) msg.obj; + if (rssiCallback != null) + rssiCallback.onRssiFailure(new TimeoutException()); + break; + } + + case BleMsg.MSG_READ_RSSI_RESULT: { + rssiMsgInit(); + + BleRssiCallback rssiCallback = (BleRssiCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_READ_RSSI_BUNDLE_STATUS); + int value = bundle.getInt(BleMsg.KEY_READ_RSSI_BUNDLE_VALUE); + if (rssiCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + rssiCallback.onRssiSuccess(value); + } else { + rssiCallback.onRssiFailure(new GattException(status)); + } + } + break; + } + + case BleMsg.MSG_SET_MTU_START: { + BleMtuChangedCallback mtuChangedCallback = (BleMtuChangedCallback) msg.obj; + if (mtuChangedCallback != null) + mtuChangedCallback.onSetMTUFailure(new TimeoutException()); + break; + } + + case BleMsg.MSG_SET_MTU_RESULT: { + mtuChangedMsgInit(); + + BleMtuChangedCallback mtuChangedCallback = (BleMtuChangedCallback) msg.obj; + Bundle bundle = msg.getData(); + int status = bundle.getInt(BleMsg.KEY_SET_MTU_BUNDLE_STATUS); + int value = bundle.getInt(BleMsg.KEY_SET_MTU_BUNDLE_VALUE); + if (mtuChangedCallback != null) { + if (status == BluetoothGatt.GATT_SUCCESS) { + mtuChangedCallback.onMtuChanged(value); + } else { + mtuChangedCallback.onSetMTUFailure(new GattException(status)); + } + } + break; + } + } + } + }; + + } + + private BleConnector withUUID(UUID serviceUUID, UUID characteristicUUID) { + if (serviceUUID != null && mBluetoothGatt != null) { + mGattService = mBluetoothGatt.getService(serviceUUID); + } + if (mGattService != null && characteristicUUID != null) { + mCharacteristic = mGattService.getCharacteristic(characteristicUUID); + } + return this; + } + + public BleConnector withUUIDString(String serviceUUID, String characteristicUUID) { + return withUUID(formUUID(serviceUUID), formUUID(characteristicUUID)); + } + + private UUID formUUID(String uuid) { + return uuid == null ? null : UUID.fromString(uuid); + } + + + /*------------------------------- main operation ----------------------------------- */ + + + /** + * notify + */ + public void enableCharacteristicNotify(BleNotifyCallback bleNotifyCallback, String uuid_notify, + boolean userCharacteristicDescriptor) { + if (mCharacteristic != null + && (mCharacteristic.getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { + + handleCharacteristicNotifyCallback(bleNotifyCallback, uuid_notify); + setCharacteristicNotification(mBluetoothGatt, mCharacteristic, userCharacteristicDescriptor, true, bleNotifyCallback); + } else { + if (bleNotifyCallback != null) + bleNotifyCallback.onNotifyFailure(new OtherException("this characteristic not support notify!")); + } + } + + /** + * stop notify + */ + public boolean disableCharacteristicNotify(boolean useCharacteristicDescriptor) { + if (mCharacteristic != null + && (mCharacteristic.getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { + return setCharacteristicNotification(mBluetoothGatt, mCharacteristic, + useCharacteristicDescriptor, false, null); + } else { + return false; + } + } + + /** + * notify setting + */ + private boolean setCharacteristicNotification(BluetoothGatt gatt, + BluetoothGattCharacteristic characteristic, + boolean useCharacteristicDescriptor, + boolean enable, + BleNotifyCallback bleNotifyCallback) { + if (gatt == null || characteristic == null) { + notifyMsgInit(); + if (bleNotifyCallback != null) + bleNotifyCallback.onNotifyFailure(new OtherException("gatt or characteristic equal null")); + return false; + } + + boolean success1 = gatt.setCharacteristicNotification(characteristic, enable); + if (!success1) { + notifyMsgInit(); + if (bleNotifyCallback != null) + bleNotifyCallback.onNotifyFailure(new OtherException("gatt setCharacteristicNotification fail")); + return false; + } + + BluetoothGattDescriptor descriptor; + if (useCharacteristicDescriptor) { + descriptor = characteristic.getDescriptor(characteristic.getUuid()); + } else { + descriptor = characteristic.getDescriptor(formUUID(UUID_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR)); + } + if (descriptor == null) { + notifyMsgInit(); + if (bleNotifyCallback != null) + bleNotifyCallback.onNotifyFailure(new OtherException("descriptor equals null")); + return false; + } else { + descriptor.setValue(enable ? BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE : + BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE); + boolean success2 = gatt.writeDescriptor(descriptor); + if (!success2) { + notifyMsgInit(); + if (bleNotifyCallback != null) + bleNotifyCallback.onNotifyFailure(new OtherException("gatt writeDescriptor fail")); + } + return success2; + } + } + + /** + * indicate + */ + public void enableCharacteristicIndicate(BleIndicateCallback bleIndicateCallback, String uuid_indicate, + boolean useCharacteristicDescriptor) { + if (mCharacteristic != null + && (mCharacteristic.getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { + handleCharacteristicIndicateCallback(bleIndicateCallback, uuid_indicate); + setCharacteristicIndication(mBluetoothGatt, mCharacteristic, + useCharacteristicDescriptor, true, bleIndicateCallback); + } else { + if (bleIndicateCallback != null) + bleIndicateCallback.onIndicateFailure(new OtherException("this characteristic not support indicate!")); + } + } + + + /** + * stop indicate + */ + public boolean disableCharacteristicIndicate(boolean userCharacteristicDescriptor) { + if (mCharacteristic != null + && (mCharacteristic.getProperties() | BluetoothGattCharacteristic.PROPERTY_NOTIFY) > 0) { + return setCharacteristicIndication(mBluetoothGatt, mCharacteristic, + userCharacteristicDescriptor, false, null); + } else { + return false; + } + } + + /** + * indicate setting + */ + private boolean setCharacteristicIndication(BluetoothGatt gatt, + BluetoothGattCharacteristic characteristic, + boolean useCharacteristicDescriptor, + boolean enable, + BleIndicateCallback bleIndicateCallback) { + if (gatt == null || characteristic == null) { + indicateMsgInit(); + if (bleIndicateCallback != null) + bleIndicateCallback.onIndicateFailure(new OtherException("gatt or characteristic equal null")); + return false; + } + + boolean success1 = gatt.setCharacteristicNotification(characteristic, enable); + if (!success1) { + indicateMsgInit(); + if (bleIndicateCallback != null) + bleIndicateCallback.onIndicateFailure(new OtherException("gatt setCharacteristicNotification fail")); + return false; + } + + BluetoothGattDescriptor descriptor; + if (useCharacteristicDescriptor) { + descriptor = characteristic.getDescriptor(characteristic.getUuid()); + } else { + descriptor = characteristic.getDescriptor(formUUID(UUID_CLIENT_CHARACTERISTIC_CONFIG_DESCRIPTOR)); + } + if (descriptor == null) { + indicateMsgInit(); + if (bleIndicateCallback != null) + bleIndicateCallback.onIndicateFailure(new OtherException("descriptor equals null")); + return false; + } else { + descriptor.setValue(enable ? BluetoothGattDescriptor.ENABLE_INDICATION_VALUE : + BluetoothGattDescriptor.DISABLE_NOTIFICATION_VALUE); + boolean success2 = gatt.writeDescriptor(descriptor); + if (!success2) { + indicateMsgInit(); + if (bleIndicateCallback != null) + bleIndicateCallback.onIndicateFailure(new OtherException("gatt writeDescriptor fail")); + } + return success2; + } + } + + /** + * write + */ + public void writeCharacteristic(byte[] data, BleWriteCallback bleWriteCallback, String uuid_write) { + if (data == null || data.length <= 0) { + if (bleWriteCallback != null) + bleWriteCallback.onWriteFailure(new OtherException("the data to be written is empty")); + return; + } + + if (mCharacteristic == null + || (mCharacteristic.getProperties() & (BluetoothGattCharacteristic.PROPERTY_WRITE | BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)) == 0) { + if (bleWriteCallback != null) + bleWriteCallback.onWriteFailure(new OtherException("this characteristic not support write!")); + return; + } + + if (mCharacteristic.setValue(data)) { + handleCharacteristicWriteCallback(bleWriteCallback, uuid_write); + if (!mBluetoothGatt.writeCharacteristic(mCharacteristic)) { + writeMsgInit(); + if (bleWriteCallback != null) + bleWriteCallback.onWriteFailure(new OtherException("gatt writeCharacteristic fail")); + } + } else { + if (bleWriteCallback != null) + bleWriteCallback.onWriteFailure(new OtherException("Updates the locally stored value of this characteristic fail")); + } + } + + /** + * read + */ + public void readCharacteristic(BleReadCallback bleReadCallback, String uuid_read) { + if (mCharacteristic != null + && (mCharacteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_READ) > 0) { + + handleCharacteristicReadCallback(bleReadCallback, uuid_read); + if (!mBluetoothGatt.readCharacteristic(mCharacteristic)) { + readMsgInit(); + if (bleReadCallback != null) + bleReadCallback.onReadFailure(new OtherException("gatt readCharacteristic fail")); + } + } else { + if (bleReadCallback != null) + bleReadCallback.onReadFailure(new OtherException("this characteristic not support read!")); + } + } + + /** + * rssi + */ + public void readRemoteRssi(BleRssiCallback bleRssiCallback) { + handleRSSIReadCallback(bleRssiCallback); + if (!mBluetoothGatt.readRemoteRssi()) { + rssiMsgInit(); + if (bleRssiCallback != null) + bleRssiCallback.onRssiFailure(new OtherException("gatt readRemoteRssi fail")); + } + } + + /** + * set mtu + */ + public void setMtu(int requiredMtu, BleMtuChangedCallback bleMtuChangedCallback) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + handleSetMtuCallback(bleMtuChangedCallback); + if (!mBluetoothGatt.requestMtu(requiredMtu)) { + mtuChangedMsgInit(); + if (bleMtuChangedCallback != null) + bleMtuChangedCallback.onSetMTUFailure(new OtherException("gatt requestMtu fail")); + } + } else { + if (bleMtuChangedCallback != null) + bleMtuChangedCallback.onSetMTUFailure(new OtherException("API level lower than 21")); + } + } + + /** + * requestConnectionPriority + * + * @param connectionPriority Request a specific connection priority. Must be one of + * {@link BluetoothGatt#CONNECTION_PRIORITY_BALANCED}, + * {@link BluetoothGatt#CONNECTION_PRIORITY_HIGH} + * or {@link BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER}. + * @throws IllegalArgumentException If the parameters are outside of their + * specified range. + */ + public boolean requestConnectionPriority(int connectionPriority) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return mBluetoothGatt.requestConnectionPriority(connectionPriority); + } + return false; + } + + + /**************************************** Handle call back ******************************************/ + + /** + * notify + */ + private void handleCharacteristicNotifyCallback(BleNotifyCallback bleNotifyCallback, + String uuid_notify) { + if (bleNotifyCallback != null) { + notifyMsgInit(); + bleNotifyCallback.setKey(uuid_notify); + bleNotifyCallback.setHandler(mHandler); + mBleBluetooth.addNotifyCallback(uuid_notify, bleNotifyCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_CHA_NOTIFY_START, bleNotifyCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + /** + * indicate + */ + private void handleCharacteristicIndicateCallback(BleIndicateCallback bleIndicateCallback, + String uuid_indicate) { + if (bleIndicateCallback != null) { + indicateMsgInit(); + bleIndicateCallback.setKey(uuid_indicate); + bleIndicateCallback.setHandler(mHandler); + mBleBluetooth.addIndicateCallback(uuid_indicate, bleIndicateCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_CHA_INDICATE_START, bleIndicateCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + /** + * write + */ + private void handleCharacteristicWriteCallback(BleWriteCallback bleWriteCallback, + String uuid_write) { + if (bleWriteCallback != null) { + writeMsgInit(); + bleWriteCallback.setKey(uuid_write); + bleWriteCallback.setHandler(mHandler); + mBleBluetooth.addWriteCallback(uuid_write, bleWriteCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_CHA_WRITE_START, bleWriteCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + /** + * read + */ + private void handleCharacteristicReadCallback(BleReadCallback bleReadCallback, + String uuid_read) { + if (bleReadCallback != null) { + readMsgInit(); + bleReadCallback.setKey(uuid_read); + bleReadCallback.setHandler(mHandler); + mBleBluetooth.addReadCallback(uuid_read, bleReadCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_CHA_READ_START, bleReadCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + /** + * rssi + */ + private void handleRSSIReadCallback(BleRssiCallback bleRssiCallback) { + if (bleRssiCallback != null) { + rssiMsgInit(); + bleRssiCallback.setHandler(mHandler); + mBleBluetooth.addRssiCallback(bleRssiCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_READ_RSSI_START, bleRssiCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + /** + * set mtu + */ + private void handleSetMtuCallback(BleMtuChangedCallback bleMtuChangedCallback) { + if (bleMtuChangedCallback != null) { + mtuChangedMsgInit(); + bleMtuChangedCallback.setHandler(mHandler); + mBleBluetooth.addMtuChangedCallback(bleMtuChangedCallback); + mHandler.sendMessageDelayed( + mHandler.obtainMessage(BleMsg.MSG_SET_MTU_START, bleMtuChangedCallback), + BleManager.getInstance().getOperateTimeout()); + } + } + + public void notifyMsgInit() { + mHandler.removeMessages(BleMsg.MSG_CHA_NOTIFY_START); + } + + public void indicateMsgInit() { + mHandler.removeMessages(BleMsg.MSG_CHA_INDICATE_START); + } + + public void writeMsgInit() { + mHandler.removeMessages(BleMsg.MSG_CHA_WRITE_START); + } + + public void readMsgInit() { + mHandler.removeMessages(BleMsg.MSG_CHA_READ_START); + } + + public void rssiMsgInit() { + mHandler.removeMessages(BleMsg.MSG_READ_RSSI_START); + } + + public void mtuChangedMsgInit() { + mHandler.removeMessages(BleMsg.MSG_SET_MTU_START); + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/MultipleBluetoothController.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/MultipleBluetoothController.java new file mode 100644 index 0000000..2f8fe6d --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/MultipleBluetoothController.java @@ -0,0 +1,139 @@ +package com.clj.fastble.bluetooth; + + +import android.bluetooth.BluetoothDevice; +import android.os.Build; + +import com.clj.fastble.BleManager; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.utils.BleLruHashMap; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class MultipleBluetoothController { + + private final BleLruHashMap bleLruHashMap; + private final HashMap bleTempHashMap; + + public MultipleBluetoothController() { + bleLruHashMap = new BleLruHashMap<>(BleManager.getInstance().getMaxConnectCount()); + bleTempHashMap = new HashMap<>(); + } + + public synchronized BleBluetooth buildConnectingBle(BleDevice bleDevice) { + BleBluetooth bleBluetooth = new BleBluetooth(bleDevice); + if (!bleTempHashMap.containsKey(bleBluetooth.getDeviceKey())) { + bleTempHashMap.put(bleBluetooth.getDeviceKey(), bleBluetooth); + } + return bleBluetooth; + } + + public synchronized void removeConnectingBle(BleBluetooth bleBluetooth) { + if (bleBluetooth == null) { + return; + } + if (bleTempHashMap.containsKey(bleBluetooth.getDeviceKey())) { + bleTempHashMap.remove(bleBluetooth.getDeviceKey()); + } + } + + public synchronized void addBleBluetooth(BleBluetooth bleBluetooth) { + if (bleBluetooth == null) { + return; + } + if (!bleLruHashMap.containsKey(bleBluetooth.getDeviceKey())) { + bleLruHashMap.put(bleBluetooth.getDeviceKey(), bleBluetooth); + } + } + + public synchronized void removeBleBluetooth(BleBluetooth bleBluetooth) { + if (bleBluetooth == null) { + return; + } + if (bleLruHashMap.containsKey(bleBluetooth.getDeviceKey())) { + bleLruHashMap.remove(bleBluetooth.getDeviceKey()); + } + } + + public synchronized boolean isContainDevice(BleDevice bleDevice) { + return bleDevice != null && bleLruHashMap.containsKey(bleDevice.getKey()); + } + + public synchronized boolean isContainDevice(BluetoothDevice bluetoothDevice) { + return bluetoothDevice != null && bleLruHashMap.containsKey(bluetoothDevice.getName() + bluetoothDevice.getAddress()); + } + + public synchronized BleBluetooth getBleBluetooth(BleDevice bleDevice) { + if (bleDevice != null) { + if (bleLruHashMap.containsKey(bleDevice.getKey())) { + return bleLruHashMap.get(bleDevice.getKey()); + } + } + return null; + } + + public synchronized void disconnect(BleDevice bleDevice) { + if (isContainDevice(bleDevice)) { + getBleBluetooth(bleDevice).disconnect(); + } + } + + public synchronized void disconnectAllDevice() { + for (Map.Entry stringBleBluetoothEntry : bleLruHashMap.entrySet()) { + stringBleBluetoothEntry.getValue().disconnect(); + } + bleLruHashMap.clear(); + } + + public synchronized void destroy() { + for (Map.Entry stringBleBluetoothEntry : bleLruHashMap.entrySet()) { + stringBleBluetoothEntry.getValue().destroy(); + } + bleLruHashMap.clear(); + for (Map.Entry stringBleBluetoothEntry : bleTempHashMap.entrySet()) { + stringBleBluetoothEntry.getValue().destroy(); + } + bleTempHashMap.clear(); + } + + public synchronized List getBleBluetoothList() { + List bleBluetoothList = new ArrayList<>(bleLruHashMap.values()); + Collections.sort(bleBluetoothList, new Comparator() { + @Override + public int compare(BleBluetooth lhs, BleBluetooth rhs) { + return lhs.getDeviceKey().compareToIgnoreCase(rhs.getDeviceKey()); + } + }); + return bleBluetoothList; + } + + public synchronized List getDeviceList() { + refreshConnectedDevice(); + List deviceList = new ArrayList<>(); + for (BleBluetooth BleBluetooth : getBleBluetoothList()) { + if (BleBluetooth != null) { + deviceList.add(BleBluetooth.getDevice()); + } + } + return deviceList; + } + + public void refreshConnectedDevice() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + List bluetoothList = getBleBluetoothList(); + for (int i = 0; bluetoothList != null && i < bluetoothList.size(); i++) { + BleBluetooth bleBluetooth = bluetoothList.get(i); + if (!BleManager.getInstance().isConnected(bleBluetooth.getDevice())) { + removeBleBluetooth(bleBluetooth); + } + } + } + } + + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/bluetooth/SplitWriter.java b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/SplitWriter.java new file mode 100644 index 0000000..f567e75 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/bluetooth/SplitWriter.java @@ -0,0 +1,158 @@ +package com.clj.fastble.bluetooth; + + +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Message; + +import com.clj.fastble.BleManager; +import com.clj.fastble.callback.BleWriteCallback; +import com.clj.fastble.data.BleMsg; +import com.clj.fastble.exception.BleException; +import com.clj.fastble.exception.OtherException; +import com.clj.fastble.utils.BleLog; + +import java.util.LinkedList; +import java.util.Queue; + +public class SplitWriter { + + private HandlerThread mHandlerThread; + private Handler mHandler; + + private BleBluetooth mBleBluetooth; + private String mUuid_service; + private String mUuid_write; + private byte[] mData; + private int mCount; + private boolean mSendNextWhenLastSuccess; + private long mIntervalBetweenTwoPackage; + private BleWriteCallback mCallback; + private Queue mDataQueue; + private int mTotalNum; + + public SplitWriter() { + mHandlerThread = new HandlerThread("splitWriter"); + mHandlerThread.start(); + + mHandler = new Handler(mHandlerThread.getLooper()) { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (msg.what == BleMsg.MSG_SPLIT_WRITE_NEXT) { + write(); + } + } + }; + } + + public void splitWrite(BleBluetooth bleBluetooth, + String uuid_service, + String uuid_write, + byte[] data, + boolean sendNextWhenLastSuccess, + long intervalBetweenTwoPackage, + BleWriteCallback callback) { + mBleBluetooth = bleBluetooth; + mUuid_service = uuid_service; + mUuid_write = uuid_write; + mData = data; + mSendNextWhenLastSuccess = sendNextWhenLastSuccess; + mIntervalBetweenTwoPackage = intervalBetweenTwoPackage; + mCount = BleManager.getInstance().getSplitWriteNum(); + mCallback = callback; + + splitWrite(); + } + + private void splitWrite() { + if (mData == null) { + throw new IllegalArgumentException("data is Null!"); + } + if (mCount < 1) { + throw new IllegalArgumentException("split count should higher than 0!"); + } + mDataQueue = splitByte(mData, mCount); + mTotalNum = mDataQueue.size(); + write(); + } + + private void write() { + if (mDataQueue.peek() == null) { + release(); + return; + } + + byte[] data = mDataQueue.poll(); + mBleBluetooth.newBleConnector() + .withUUIDString(mUuid_service, mUuid_write) + .writeCharacteristic( + data, + new BleWriteCallback() { + @Override + public void onWriteSuccess(int current, int total, byte[] justWrite) { + int position = mTotalNum - mDataQueue.size(); + if (mCallback != null) { + mCallback.onWriteSuccess(position, mTotalNum, justWrite); + } + if (mSendNextWhenLastSuccess) { + Message message = mHandler.obtainMessage(BleMsg.MSG_SPLIT_WRITE_NEXT); + mHandler.sendMessageDelayed(message, mIntervalBetweenTwoPackage); + } + } + + @Override + public void onWriteFailure(BleException exception) { + if (mCallback != null) { + mCallback.onWriteFailure(new OtherException("exception occur while writing: " + exception.getDescription())); + } + if (mSendNextWhenLastSuccess) { + Message message = mHandler.obtainMessage(BleMsg.MSG_SPLIT_WRITE_NEXT); + mHandler.sendMessageDelayed(message, mIntervalBetweenTwoPackage); + } + } + }, + mUuid_write); + + if (!mSendNextWhenLastSuccess) { + Message message = mHandler.obtainMessage(BleMsg.MSG_SPLIT_WRITE_NEXT); + mHandler.sendMessageDelayed(message, mIntervalBetweenTwoPackage); + } + } + + private void release() { + mHandlerThread.quit(); + mHandler.removeCallbacksAndMessages(null); + } + + private static Queue splitByte(byte[] data, int count) { + if (count > 20) { + BleLog.w("Be careful: split count beyond 20! Ensure MTU higher than 23!"); + } + Queue byteQueue = new LinkedList<>(); + int pkgCount; + if (data.length % count == 0) { + pkgCount = data.length / count; + } else { + pkgCount = Math.round(data.length / count + 1); + } + + if (pkgCount > 0) { + for (int i = 0; i < pkgCount; i++) { + byte[] dataPkg; + int j; + if (pkgCount == 1 || i == pkgCount - 1) { + j = data.length % count == 0 ? count : data.length % count; + System.arraycopy(data, i * count, dataPkg = new byte[j], 0, j); + } else { + System.arraycopy(data, i * count, dataPkg = new byte[count], 0, count); + } + byteQueue.offer(dataPkg); + } + } + + return byteQueue; + } + + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleBaseCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleBaseCallback.java new file mode 100644 index 0000000..cec9551 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleBaseCallback.java @@ -0,0 +1,27 @@ +package com.clj.fastble.callback; + + +import android.os.Handler; + +public abstract class BleBaseCallback { + + private String key; + private Handler handler; + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public Handler getHandler() { + return handler; + } + + public void setHandler(Handler handler) { + this.handler = handler; + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleGattCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleGattCallback.java new file mode 100644 index 0000000..f98d39c --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleGattCallback.java @@ -0,0 +1,24 @@ + +package com.clj.fastble.callback; + +import android.annotation.TargetApi; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.os.Build; + +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.exception.BleException; + + +@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) +public abstract class BleGattCallback extends BluetoothGattCallback { + + public abstract void onStartConnect(); + + public abstract void onConnectFail(BleDevice bleDevice, BleException exception); + + public abstract void onConnectSuccess(BleDevice bleDevice, BluetoothGatt gatt, int status); + + public abstract void onDisConnected(boolean isActiveDisConnected, BleDevice device, BluetoothGatt gatt, int status); + +} \ No newline at end of file diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleIndicateCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleIndicateCallback.java new file mode 100644 index 0000000..7265152 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleIndicateCallback.java @@ -0,0 +1,13 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleIndicateCallback extends BleBaseCallback{ + + public abstract void onIndicateSuccess(); + + public abstract void onIndicateFailure(BleException exception); + + public abstract void onCharacteristicChanged(byte[] data); +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleMtuChangedCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleMtuChangedCallback.java new file mode 100644 index 0000000..4e83dc5 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleMtuChangedCallback.java @@ -0,0 +1,12 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleMtuChangedCallback extends BleBaseCallback { + + public abstract void onSetMTUFailure(BleException exception); + + public abstract void onMtuChanged(int mtu); + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleNotifyCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleNotifyCallback.java new file mode 100644 index 0000000..98012f1 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleNotifyCallback.java @@ -0,0 +1,14 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleNotifyCallback extends BleBaseCallback { + + public abstract void onNotifySuccess(); + + public abstract void onNotifyFailure(BleException exception); + + public abstract void onCharacteristicChanged(byte[] data); + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleReadCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleReadCallback.java new file mode 100644 index 0000000..06a4aed --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleReadCallback.java @@ -0,0 +1,12 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleReadCallback extends BleBaseCallback { + + public abstract void onReadSuccess(byte[] data); + + public abstract void onReadFailure(BleException exception); + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleRssiCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleRssiCallback.java new file mode 100644 index 0000000..6bcea1b --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleRssiCallback.java @@ -0,0 +1,12 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleRssiCallback extends BleBaseCallback{ + + public abstract void onRssiFailure(BleException exception); + + public abstract void onRssiSuccess(int rssi); + +} \ No newline at end of file diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanAndConnectCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanAndConnectCallback.java new file mode 100644 index 0000000..9e0b08b --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanAndConnectCallback.java @@ -0,0 +1,13 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.data.BleDevice; + +public abstract class BleScanAndConnectCallback extends BleGattCallback implements BleScanPresenterImp { + + public abstract void onScanFinished(BleDevice scanResult); + + public void onLeScan(BleDevice bleDevice) { + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanCallback.java new file mode 100644 index 0000000..cf8c2b8 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanCallback.java @@ -0,0 +1,14 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.data.BleDevice; + +import java.util.List; + +public abstract class BleScanCallback implements BleScanPresenterImp { + + public abstract void onScanFinished(List scanResultList); + + public void onLeScan(BleDevice bleDevice) { + } +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanPresenterImp.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanPresenterImp.java new file mode 100644 index 0000000..03cc2b5 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleScanPresenterImp.java @@ -0,0 +1,11 @@ +package com.clj.fastble.callback; + +import com.clj.fastble.data.BleDevice; + +public interface BleScanPresenterImp { + + void onScanStarted(boolean success); + + void onScanning(BleDevice bleDevice); + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/callback/BleWriteCallback.java b/FastBleLib/src/main/java/com/clj/fastble/callback/BleWriteCallback.java new file mode 100644 index 0000000..decf690 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/callback/BleWriteCallback.java @@ -0,0 +1,12 @@ +package com.clj.fastble.callback; + + +import com.clj.fastble.exception.BleException; + +public abstract class BleWriteCallback extends BleBaseCallback{ + + public abstract void onWriteSuccess(int current, int total, byte[] justWrite); + + public abstract void onWriteFailure(BleException exception); + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/data/BleConnectStateParameter.java b/FastBleLib/src/main/java/com/clj/fastble/data/BleConnectStateParameter.java new file mode 100644 index 0000000..880cd6d --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/data/BleConnectStateParameter.java @@ -0,0 +1,29 @@ +package com.clj.fastble.data; + + +public class BleConnectStateParameter { + + private int status; + private boolean isActive; + + public BleConnectStateParameter(int status) { + this.status = status; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public boolean isActive() { + return isActive; + } + + public void setActive(boolean active) { + isActive = active; + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/data/BleDevice.java b/FastBleLib/src/main/java/com/clj/fastble/data/BleDevice.java new file mode 100644 index 0000000..03fcd0e --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/data/BleDevice.java @@ -0,0 +1,112 @@ +package com.clj.fastble.data; + + +import android.bluetooth.BluetoothDevice; +import android.os.Parcel; +import android.os.Parcelable; + + +public class BleDevice implements Parcelable { + + private BluetoothDevice mDevice; + private byte[] mScanRecord; + private int mRssi; + private long mTimestampNanos; + + public BleDevice(BluetoothDevice device) { + mDevice = device; + } + + public BleDevice(BluetoothDevice device, int rssi, byte[] scanRecord, long timestampNanos) { + mDevice = device; + mScanRecord = scanRecord; + mRssi = rssi; + mTimestampNanos = timestampNanos; + } + + protected BleDevice(Parcel in) { + mDevice = in.readParcelable(BluetoothDevice.class.getClassLoader()); + mScanRecord = in.createByteArray(); + mRssi = in.readInt(); + mTimestampNanos = in.readLong(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(mDevice, flags); + dest.writeByteArray(mScanRecord); + dest.writeInt(mRssi); + dest.writeLong(mTimestampNanos); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public BleDevice createFromParcel(Parcel in) { + return new BleDevice(in); + } + + @Override + public BleDevice[] newArray(int size) { + return new BleDevice[size]; + } + }; + + public String getName() { + if (mDevice != null) { + return mDevice.getName(); + } + return null; + } + + public String getMac() { + if (mDevice != null) { + return mDevice.getAddress(); + } + return null; + } + + public String getKey() { + if (mDevice != null) { + return mDevice.getName() + mDevice.getAddress(); + } + return ""; + } + + public BluetoothDevice getDevice() { + return mDevice; + } + + public void setDevice(BluetoothDevice device) { + this.mDevice = device; + } + + public byte[] getScanRecord() { + return mScanRecord; + } + + public void setScanRecord(byte[] scanRecord) { + this.mScanRecord = scanRecord; + } + + public int getRssi() { + return mRssi; + } + + public void setRssi(int rssi) { + this.mRssi = rssi; + } + + public long getTimestampNanos() { + return mTimestampNanos; + } + + public void setTimestampNanos(long timestampNanos) { + this.mTimestampNanos = timestampNanos; + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/data/BleMsg.java b/FastBleLib/src/main/java/com/clj/fastble/data/BleMsg.java new file mode 100644 index 0000000..c7b533c --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/data/BleMsg.java @@ -0,0 +1,60 @@ +package com.clj.fastble.data; + + + +public class BleMsg { + + // Scan + public static final int MSG_SCAN_DEVICE = 0X00; + + // Connect + public static final int MSG_CONNECT_FAIL = 0x01; + public static final int MSG_DISCONNECTED = 0x02; + public static final int MSG_RECONNECT = 0x03; + public static final int MSG_DISCOVER_SERVICES = 0x04; + public static final int MSG_DISCOVER_FAIL = 0x05; + public static final int MSG_DISCOVER_SUCCESS = 0x06; + public static final int MSG_CONNECT_OVER_TIME = 0x07; + + // Notify + public static final int MSG_CHA_NOTIFY_START = 0x11; + public static final int MSG_CHA_NOTIFY_RESULT = 0x12; + public static final int MSG_CHA_NOTIFY_DATA_CHANGE = 0x13; + public static final String KEY_NOTIFY_BUNDLE_STATUS = "notify_status"; + public static final String KEY_NOTIFY_BUNDLE_VALUE = "notify_value"; + + // Indicate + public static final int MSG_CHA_INDICATE_START = 0x21; + public static final int MSG_CHA_INDICATE_RESULT = 0x22; + public static final int MSG_CHA_INDICATE_DATA_CHANGE = 0x23; + public static final String KEY_INDICATE_BUNDLE_STATUS = "indicate_status"; + public static final String KEY_INDICATE_BUNDLE_VALUE = "indicate_value"; + + // Write + public static final int MSG_CHA_WRITE_START = 0x31; + public static final int MSG_CHA_WRITE_RESULT = 0x32; + public static final int MSG_SPLIT_WRITE_NEXT = 0x33; + public static final String KEY_WRITE_BUNDLE_STATUS = "write_status"; + public static final String KEY_WRITE_BUNDLE_VALUE = "write_value"; + + // Read + public static final int MSG_CHA_READ_START = 0x41; + public static final int MSG_CHA_READ_RESULT = 0x42; + public static final String KEY_READ_BUNDLE_STATUS = "read_status"; + public static final String KEY_READ_BUNDLE_VALUE = "read_value"; + + // Rssi + public static final int MSG_READ_RSSI_START = 0x51; + public static final int MSG_READ_RSSI_RESULT = 0x52; + public static final String KEY_READ_RSSI_BUNDLE_STATUS = "rssi_status"; + public static final String KEY_READ_RSSI_BUNDLE_VALUE = "rssi_value"; + + // Mtu + public static final int MSG_SET_MTU_START = 0x61; + public static final int MSG_SET_MTU_RESULT = 0x62; + public static final String KEY_SET_MTU_BUNDLE_STATUS = "mtu_status"; + public static final String KEY_SET_MTU_BUNDLE_VALUE = "mtu_value"; + + + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/data/BleScanState.java b/FastBleLib/src/main/java/com/clj/fastble/data/BleScanState.java new file mode 100644 index 0000000..149d080 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/data/BleScanState.java @@ -0,0 +1,18 @@ +package com.clj.fastble.data; + + +public enum BleScanState { + + STATE_IDLE(-1), + STATE_SCANNING(0X01); + + private int code; + + BleScanState(int code) { + this.code = code; + } + + public int getCode() { + return code; + } +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/data/BleWriteState.java b/FastBleLib/src/main/java/com/clj/fastble/data/BleWriteState.java new file mode 100644 index 0000000..adae319 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/data/BleWriteState.java @@ -0,0 +1,8 @@ +package com.clj.fastble.data; + + + +public class BleWriteState { + + public static final int DATA_WRITE_SINGLE = 1; +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/exception/BleException.java b/FastBleLib/src/main/java/com/clj/fastble/exception/BleException.java new file mode 100644 index 0000000..c9caf4d --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/exception/BleException.java @@ -0,0 +1,47 @@ +package com.clj.fastble.exception; + +import java.io.Serializable; + + +public abstract class BleException implements Serializable { + + private static final long serialVersionUID = 8004414918500865564L; + + public static final int ERROR_CODE_TIMEOUT = 100; + public static final int ERROR_CODE_GATT = 101; + public static final int ERROR_CODE_OTHER = 102; + + private int code; + private String description; + + public BleException(int code, String description) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public BleException setCode(int code) { + this.code = code; + return this; + } + + public String getDescription() { + return description; + } + + public BleException setDescription(String description) { + this.description = description; + return this; + } + + @Override + public String toString() { + return "BleException { " + + "code=" + code + + ", description='" + description + '\'' + + '}'; + } +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/exception/ConnectException.java b/FastBleLib/src/main/java/com/clj/fastble/exception/ConnectException.java new file mode 100644 index 0000000..d1244d9 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/exception/ConnectException.java @@ -0,0 +1,42 @@ +package com.clj.fastble.exception; + +import android.bluetooth.BluetoothGatt; + + +public class ConnectException extends BleException { + + private BluetoothGatt bluetoothGatt; + private int gattStatus; + + public ConnectException(BluetoothGatt bluetoothGatt, int gattStatus) { + super(ERROR_CODE_GATT, "Gatt Exception Occurred! "); + this.bluetoothGatt = bluetoothGatt; + this.gattStatus = gattStatus; + } + + public int getGattStatus() { + return gattStatus; + } + + public ConnectException setGattStatus(int gattStatus) { + this.gattStatus = gattStatus; + return this; + } + + public BluetoothGatt getBluetoothGatt() { + return bluetoothGatt; + } + + public ConnectException setBluetoothGatt(BluetoothGatt bluetoothGatt) { + this.bluetoothGatt = bluetoothGatt; + return this; + } + + @Override + public String toString() { + return "ConnectException{" + + "gattStatus=" + gattStatus + + ", bluetoothGatt=" + bluetoothGatt + + "} " + super.toString(); + } +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/exception/GattException.java b/FastBleLib/src/main/java/com/clj/fastble/exception/GattException.java new file mode 100644 index 0000000..7e77f6c --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/exception/GattException.java @@ -0,0 +1,28 @@ +package com.clj.fastble.exception; + + +public class GattException extends BleException { + + private int gattStatus; + + public GattException(int gattStatus) { + super(ERROR_CODE_GATT, "Gatt Exception Occurred! "); + this.gattStatus = gattStatus; + } + + public int getGattStatus() { + return gattStatus; + } + + public GattException setGattStatus(int gattStatus) { + this.gattStatus = gattStatus; + return this; + } + + @Override + public String toString() { + return "GattException{" + + "gattStatus=" + gattStatus + + "} " + super.toString(); + } +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/exception/OtherException.java b/FastBleLib/src/main/java/com/clj/fastble/exception/OtherException.java new file mode 100644 index 0000000..63cc5b2 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/exception/OtherException.java @@ -0,0 +1,10 @@ +package com.clj.fastble.exception; + + +public class OtherException extends BleException { + + public OtherException(String description) { + super(ERROR_CODE_OTHER, description); + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/exception/TimeoutException.java b/FastBleLib/src/main/java/com/clj/fastble/exception/TimeoutException.java new file mode 100644 index 0000000..668bdc2 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/exception/TimeoutException.java @@ -0,0 +1,10 @@ +package com.clj.fastble.exception; + + +public class TimeoutException extends BleException { + + public TimeoutException() { + super(ERROR_CODE_TIMEOUT, "Timeout Exception Occurred!"); + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanPresenter.java b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanPresenter.java new file mode 100644 index 0000000..c788a5e --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanPresenter.java @@ -0,0 +1,229 @@ +package com.clj.fastble.scan; + + +import android.annotation.TargetApi; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.os.Build; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Message; +import android.text.TextUtils; + +import com.clj.fastble.callback.BleScanPresenterImp; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.data.BleMsg; +import com.clj.fastble.utils.BleLog; +import com.clj.fastble.utils.HexUtil; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) +public abstract class BleScanPresenter implements BluetoothAdapter.LeScanCallback { + + private String[] mDeviceNames; + private String mDeviceMac; + private boolean mFuzzy; + private boolean mNeedConnect; + private long mScanTimeout; + private BleScanPresenterImp mBleScanPresenterImp; + + private final List mBleDeviceList = new ArrayList<>(); + + private final Handler mMainHandler = new Handler(Looper.getMainLooper()); + private HandlerThread mHandlerThread; + private Handler mHandler; + private boolean mHandling; + + private static final class ScanHandler extends Handler { + + private final WeakReference mBleScanPresenter; + + ScanHandler(Looper looper, BleScanPresenter bleScanPresenter) { + super(looper); + mBleScanPresenter = new WeakReference<>(bleScanPresenter); + } + + @Override + public void handleMessage(Message msg) { + BleScanPresenter bleScanPresenter = mBleScanPresenter.get(); + if (bleScanPresenter != null) { + if (msg.what == BleMsg.MSG_SCAN_DEVICE) { + final BleDevice bleDevice = (BleDevice) msg.obj; + if (bleDevice != null) { + bleScanPresenter.handleResult(bleDevice); + } + } + } + } + } + + private void handleResult(final BleDevice bleDevice) { + mMainHandler.post(new Runnable() { + @Override + public void run() { + onLeScan(bleDevice); + } + }); + checkDevice(bleDevice); + } + + public void prepare(String[] names, String mac, boolean fuzzy, boolean needConnect, + long timeOut, BleScanPresenterImp bleScanPresenterImp) { + mDeviceNames = names; + mDeviceMac = mac; + mFuzzy = fuzzy; + mNeedConnect = needConnect; + mScanTimeout = timeOut; + mBleScanPresenterImp = bleScanPresenterImp; + + mHandlerThread = new HandlerThread(BleScanPresenter.class.getSimpleName()); + mHandlerThread.start(); + mHandler = new ScanHandler(mHandlerThread.getLooper(), this); + mHandling = true; + } + + public boolean ismNeedConnect() { + return mNeedConnect; + } + + public BleScanPresenterImp getBleScanPresenterImp() { + return mBleScanPresenterImp; + } + + @Override + public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { + if (device == null) + return; + + if (!mHandling) + return; + + Message message = mHandler.obtainMessage(); + message.what = BleMsg.MSG_SCAN_DEVICE; + message.obj = new BleDevice(device, rssi, scanRecord, System.currentTimeMillis()); + mHandler.sendMessage(message); + } + + private void checkDevice(BleDevice bleDevice) { + if (TextUtils.isEmpty(mDeviceMac) && (mDeviceNames == null || mDeviceNames.length < 1)) { + correctDeviceAndNextStep(bleDevice); + return; + } + + if (!TextUtils.isEmpty(mDeviceMac)) { + if (!mDeviceMac.equalsIgnoreCase(bleDevice.getMac())) + return; + } + + if (mDeviceNames != null && mDeviceNames.length > 0) { + AtomicBoolean equal = new AtomicBoolean(false); + for (String name : mDeviceNames) { + String remoteName = bleDevice.getName(); + if (remoteName == null) + remoteName = ""; + if (mFuzzy ? remoteName.contains(name) : remoteName.equals(name)) { + equal.set(true); + } + } + if (!equal.get()) { + return; + } + } + + correctDeviceAndNextStep(bleDevice); + } + + + private void correctDeviceAndNextStep(final BleDevice bleDevice) { + if (mNeedConnect) { + BleLog.i("devices detected ------" + + " name:" + bleDevice.getName() + + " mac:" + bleDevice.getMac() + + " Rssi:" + bleDevice.getRssi() + + " scanRecord:" + HexUtil.formatHexString(bleDevice.getScanRecord())); + + mBleDeviceList.add(bleDevice); + mMainHandler.post(new Runnable() { + @Override + public void run() { + BleScanner.getInstance().stopLeScan(); + } + }); + + } else { + AtomicBoolean hasFound = new AtomicBoolean(false); + for (BleDevice result : mBleDeviceList) { + if (result.getDevice().equals(bleDevice.getDevice())) { + hasFound.set(true); + } + } + if (!hasFound.get()) { + BleLog.i("device detected ------" + + " name: " + bleDevice.getName() + + " mac: " + bleDevice.getMac() + + " Rssi: " + bleDevice.getRssi() + + " scanRecord: " + HexUtil.formatHexString(bleDevice.getScanRecord(), true)); + + mBleDeviceList.add(bleDevice); + mMainHandler.post(new Runnable() { + @Override + public void run() { + onScanning(bleDevice); + } + }); + } + } + } + + public final void notifyScanStarted(final boolean success) { + mBleDeviceList.clear(); + + removeHandlerMsg(); + + if (success && mScanTimeout > 0) { + mMainHandler.postDelayed(new Runnable() { + @Override + public void run() { + BleScanner.getInstance().stopLeScan(); + } + }, mScanTimeout); + } + + mMainHandler.post(new Runnable() { + @Override + public void run() { + onScanStarted(success); + } + }); + } + + public final void notifyScanStopped() { + mHandling = false; + mHandlerThread.quit(); + removeHandlerMsg(); + mMainHandler.post(new Runnable() { + @Override + public void run() { + onScanFinished(mBleDeviceList); + } + }); + } + + public final void removeHandlerMsg() { + mMainHandler.removeCallbacksAndMessages(null); + mHandler.removeCallbacksAndMessages(null); + } + + public abstract void onScanStarted(boolean success); + + public abstract void onLeScan(BleDevice bleDevice); + + public abstract void onScanning(BleDevice bleDevice); + + public abstract void onScanFinished(List bleDeviceList); +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanRuleConfig.java b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanRuleConfig.java new file mode 100644 index 0000000..e6d0eeb --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanRuleConfig.java @@ -0,0 +1,94 @@ +package com.clj.fastble.scan; + + +import com.clj.fastble.BleManager; + +import java.util.UUID; + +public class BleScanRuleConfig { + + private UUID[] mServiceUuids = null; + private String[] mDeviceNames = null; + private String mDeviceMac = null; + private boolean mAutoConnect = false; + private boolean mFuzzy = false; + private long mScanTimeOut = BleManager.DEFAULT_SCAN_TIME; + + public UUID[] getServiceUuids() { + return mServiceUuids; + } + + public String[] getDeviceNames() { + return mDeviceNames; + } + + public String getDeviceMac() { + return mDeviceMac; + } + + public boolean isAutoConnect() { + return mAutoConnect; + } + + public boolean isFuzzy() { + return mFuzzy; + } + + public long getScanTimeOut() { + return mScanTimeOut; + } + + public static class Builder { + + private UUID[] mServiceUuids = null; + private String[] mDeviceNames = null; + private String mDeviceMac = null; + private boolean mAutoConnect = false; + private boolean mFuzzy = false; + private long mTimeOut = BleManager.DEFAULT_SCAN_TIME; + + public Builder setServiceUuids(UUID[] uuids) { + this.mServiceUuids = uuids; + return this; + } + + public Builder setDeviceName(boolean fuzzy, String... name) { + this.mFuzzy = fuzzy; + this.mDeviceNames = name; + return this; + } + + public Builder setDeviceMac(String mac) { + this.mDeviceMac = mac; + return this; + } + + public Builder setAutoConnect(boolean autoConnect) { + this.mAutoConnect = autoConnect; + return this; + } + + public Builder setScanTimeOut(long timeOut) { + this.mTimeOut = timeOut; + return this; + } + + void applyConfig(BleScanRuleConfig config) { + config.mServiceUuids = this.mServiceUuids; + config.mDeviceNames = this.mDeviceNames; + config.mDeviceMac = this.mDeviceMac; + config.mAutoConnect = this.mAutoConnect; + config.mFuzzy = this.mFuzzy; + config.mScanTimeOut = this.mTimeOut; + } + + public BleScanRuleConfig build() { + BleScanRuleConfig config = new BleScanRuleConfig(); + applyConfig(config); + return config; + } + + } + + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanner.java b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanner.java new file mode 100644 index 0000000..d9d47b9 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/scan/BleScanner.java @@ -0,0 +1,139 @@ +package com.clj.fastble.scan; + + +import android.annotation.TargetApi; +import android.os.Build; +import android.os.Handler; +import android.os.Looper; + +import com.clj.fastble.BleManager; +import com.clj.fastble.callback.BleScanAndConnectCallback; +import com.clj.fastble.callback.BleScanCallback; +import com.clj.fastble.callback.BleScanPresenterImp; +import com.clj.fastble.data.BleDevice; +import com.clj.fastble.data.BleScanState; +import com.clj.fastble.utils.BleLog; + +import java.util.List; +import java.util.UUID; + +@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) +public class BleScanner { + + public static BleScanner getInstance() { + return BleScannerHolder.sBleScanner; + } + + private static class BleScannerHolder { + private static final BleScanner sBleScanner = new BleScanner(); + } + + private BleScanState mBleScanState = BleScanState.STATE_IDLE; + + private final BleScanPresenter mBleScanPresenter = new BleScanPresenter() { + + @Override + public void onScanStarted(boolean success) { + BleScanPresenterImp callback = mBleScanPresenter.getBleScanPresenterImp(); + if (callback != null) { + callback.onScanStarted(success); + } + } + + @Override + public void onLeScan(BleDevice bleDevice) { + if (mBleScanPresenter.ismNeedConnect()) { + BleScanAndConnectCallback callback = (BleScanAndConnectCallback) + mBleScanPresenter.getBleScanPresenterImp(); + if (callback != null) { + callback.onLeScan(bleDevice); + } + } else { + BleScanCallback callback = (BleScanCallback) mBleScanPresenter.getBleScanPresenterImp(); + if (callback != null) { + callback.onLeScan(bleDevice); + } + } + } + + @Override + public void onScanning(BleDevice result) { + BleScanPresenterImp callback = mBleScanPresenter.getBleScanPresenterImp(); + if (callback != null) { + callback.onScanning(result); + } + } + + @Override + public void onScanFinished(List bleDeviceList) { + if (mBleScanPresenter.ismNeedConnect()) { + final BleScanAndConnectCallback callback = (BleScanAndConnectCallback) + mBleScanPresenter.getBleScanPresenterImp(); + if (bleDeviceList == null || bleDeviceList.size() < 1) { + if (callback != null) { + callback.onScanFinished(null); + } + } else { + if (callback != null) { + callback.onScanFinished(bleDeviceList.get(0)); + } + final List list = bleDeviceList; + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + BleManager.getInstance().connect(list.get(0), callback); + } + }, 100); + } + } else { + BleScanCallback callback = (BleScanCallback) mBleScanPresenter.getBleScanPresenterImp(); + if (callback != null) { + callback.onScanFinished(bleDeviceList); + } + } + } + }; + + public void scan(UUID[] serviceUuids, String[] names, String mac, boolean fuzzy, + long timeOut, final BleScanCallback callback) { + + startLeScan(serviceUuids, names, mac, fuzzy, false, timeOut, callback); + } + + public void scanAndConnect(UUID[] serviceUuids, String[] names, String mac, boolean fuzzy, + long timeOut, BleScanAndConnectCallback callback) { + + startLeScan(serviceUuids, names, mac, fuzzy, true, timeOut, callback); + } + + private synchronized void startLeScan(UUID[] serviceUuids, String[] names, String mac, boolean fuzzy, + boolean needConnect, long timeOut, BleScanPresenterImp imp) { + + if (mBleScanState != BleScanState.STATE_IDLE) { + BleLog.w("scan action already exists, complete the previous scan action first"); + if (imp != null) { + imp.onScanStarted(false); + } + return; + } + + mBleScanPresenter.prepare(names, mac, fuzzy, needConnect, timeOut, imp); + + boolean success = BleManager.getInstance().getBluetoothAdapter() + .startLeScan(serviceUuids, mBleScanPresenter); + mBleScanState = success ? BleScanState.STATE_SCANNING : BleScanState.STATE_IDLE; + mBleScanPresenter.notifyScanStarted(success); + } + + public synchronized void stopLeScan() { + BleManager.getInstance().getBluetoothAdapter().stopLeScan(mBleScanPresenter); + mBleScanState = BleScanState.STATE_IDLE; + mBleScanPresenter.notifyScanStopped(); + } + + public BleScanState getScanState() { + return mBleScanState; + } + + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/utils/BleLog.java b/FastBleLib/src/main/java/com/clj/fastble/utils/BleLog.java new file mode 100644 index 0000000..38f17d6 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/utils/BleLog.java @@ -0,0 +1,31 @@ +package com.clj.fastble.utils; + + +import android.util.Log; + +public final class BleLog { + + public static boolean isPrint = true; + private static final String defaultTag = "FastBle"; + + public static void d(String msg) { + if (isPrint && msg != null) + Log.d(defaultTag, msg); + } + + public static void i(String msg) { + if (isPrint && msg != null) + Log.i(defaultTag, msg); + } + + public static void w(String msg) { + if (isPrint && msg != null) + Log.w(defaultTag, msg); + } + + public static void e(String msg) { + if (isPrint && msg != null) + Log.e(defaultTag, msg); + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/utils/BleLruHashMap.java b/FastBleLib/src/main/java/com/clj/fastble/utils/BleLruHashMap.java new file mode 100644 index 0000000..c273192 --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/utils/BleLruHashMap.java @@ -0,0 +1,34 @@ +package com.clj.fastble.utils; + + +import com.clj.fastble.bluetooth.BleBluetooth; + +import java.util.LinkedHashMap; + +public class BleLruHashMap extends LinkedHashMap { + + private final int MAX_SIZE; + + public BleLruHashMap(int saveSize) { + super((int) Math.ceil(saveSize / 0.75) + 1, 0.75f, true); + MAX_SIZE = saveSize; + } + + @Override + protected boolean removeEldestEntry(java.util.Map.Entry eldest) { + if (size() > MAX_SIZE && eldest.getValue() instanceof BleBluetooth) { + ((BleBluetooth) eldest.getValue()).disconnect(); + } + return size() > MAX_SIZE; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + for (Entry entry : entrySet()) { + sb.append(String.format("%s:%s ", entry.getKey(), entry.getValue())); + } + return sb.toString(); + } + +} diff --git a/FastBleLib/src/main/java/com/clj/fastble/utils/HexUtil.java b/FastBleLib/src/main/java/com/clj/fastble/utils/HexUtil.java new file mode 100644 index 0000000..b4cd41c --- /dev/null +++ b/FastBleLib/src/main/java/com/clj/fastble/utils/HexUtil.java @@ -0,0 +1,121 @@ +package com.clj.fastble.utils; + +public class HexUtil { + + private static final char[] DIGITS_LOWER = {'0', '1', '2', '3', '4', '5', + '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + private static final char[] DIGITS_UPPER = {'0', '1', '2', '3', '4', '5', + '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + + public static char[] encodeHex(byte[] data) { + return encodeHex(data, true); + } + + public static char[] encodeHex(byte[] data, boolean toLowerCase) { + return encodeHex(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER); + } + + protected static char[] encodeHex(byte[] data, char[] toDigits) { + if (data == null) + return null; + int l = data.length; + char[] out = new char[l << 1]; + for (int i = 0, j = 0; i < l; i++) { + out[j++] = toDigits[(0xF0 & data[i]) >>> 4]; + out[j++] = toDigits[0x0F & data[i]]; + } + return out; + } + + + public static String encodeHexStr(byte[] data) { + return encodeHexStr(data, true); + } + + public static String encodeHexStr(byte[] data, boolean toLowerCase) { + return encodeHexStr(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER); + } + + + protected static String encodeHexStr(byte[] data, char[] toDigits) { + return new String(encodeHex(data, toDigits)); + } + + public static String formatHexString(byte[] data) { + return formatHexString(data, false); + } + + public static String formatHexString(byte[] data, boolean addSpace) { + if (data == null || data.length < 1) + return null; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < data.length; i++) { + String hex = Integer.toHexString(data[i] & 0xFF); + if (hex.length() == 1) { + hex = '0' + hex; + } + sb.append(hex); + if (addSpace) + sb.append(" "); + } + return sb.toString().trim(); + } + + public static byte[] decodeHex(char[] data) { + int len = data.length; + + if ((len & 0x01) != 0) { + throw new RuntimeException("Odd number of characters."); + } + + byte[] out = new byte[len >> 1]; + + // two characters form the hex value. + for (int i = 0, j = 0; j < len; i++) { + int f = toDigit(data[j], j) << 4; + j++; + f = f | toDigit(data[j], j); + j++; + out[i] = (byte) (f & 0xFF); + } + + return out; + } + + + protected static int toDigit(char ch, int index) { + int digit = Character.digit(ch, 16); + if (digit == -1) { + throw new RuntimeException("Illegal hexadecimal character " + ch + + " at index " + index); + } + return digit; + } + + + public static byte[] hexStringToBytes(String hexString) { + if (hexString == null || hexString.equals("")) { + return null; + } + hexString = hexString.trim(); + hexString = hexString.toUpperCase(); + int length = hexString.length() / 2; + char[] hexChars = hexString.toCharArray(); + byte[] d = new byte[length]; + for (int i = 0; i < length; i++) { + int pos = i * 2; + d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return d; + } + + public static byte charToByte(char c) { + return (byte) "0123456789ABCDEF".indexOf(c); + } + + public static String extractData(byte[] data, int position) { + return HexUtil.formatHexString(new byte[]{data[position]}); + } + +} diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/agconnect-services.json b/app/agconnect-services.json new file mode 100644 index 0000000..e69de29 diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..25b99c4 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,335 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-kapt' + id 'kotlin-parcelize' + id 'dagger.hilt.android.plugin' + //æžå…‰æŽ¨é€start +// id 'com.google.gms.google-services' +// id 'com.huawei.agconnect' + //æžå…‰æŽ¨é€end +} + +// Read values from gradle.properties or system environment variable(从gradle.properties里读å–值) +def getStripeReleaseKey() { + return findProperty('STRIPE_RELEASE_KEY') ?: "" +} + +def getKey(def key) { + return findProperty(key) ?: "" +} + +android { + + compileSdkVersion 35 +// buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "com.abbidot.tracker" + minSdkVersion 23 + targetSdkVersion 35 + versionCode 2020 +// versionName "2.0.20" + versionName "2.0.20-Beta2" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + ndk { + //é€‰æ‹©è¦æ·»åŠ çš„å¯¹åº” cpu 类型的 .so 库。 + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64' + } + + manifestPlaceholders = [ + GOOGLE_MAP_KEY : getKey("GOOGLE_MAP_KEY"), + BAIDU_MAP_KEY : getKey("BAIDU_MAP_KEY"), + STRIPE_RELEASE_KEY : getStripeReleaseKey(), + STRIPE_TEST_KEY : getKey("STRIPE_TEST_KEY"), + BUGLY_KEY : getKey("BUGLY_KEY"), + MAPBOX_ACCESS_TOKEN: getKey("MAPBOX_ACCESS_TOKEN"), + HTTP_REQUEST_KEY : getKey("HTTP_REQUEST_KEY"), + + JPUSH_PKGNAME : "${applicationId}", + JPUSH_APPKEY : "c968a96f76fc4f52e0f764ee", //JPush 上注册的包å对应的 Appkey. + JPUSH_CHANNEL : "developer-default", //暂时填写默认值å³å¯. +// MEIZU_APPKEY : "MZ-é­…æ—çš„APPKEY", +// MEIZU_APPID : "MZ-é­…æ—çš„APPID", +// XIAOMI_APPID : "MI-å°ç±³çš„APPID", +// XIAOMI_APPKEY : "MI-å°ç±³çš„APPKEY", +// OPPO_APPKEY : "OP-oppoçš„APPKEY", +// OPPO_APPID : "OP-oppoçš„APPID", +// OPPO_APPSECRET: "OP-oppoçš„APPSECRET", +// VIVO_APPKEY : "vivoçš„APPKEY", +// VIVO_APPID : "vivoçš„APPID" + ] + } + + // 读å–local.properties文件 + Properties properties = new Properties() + InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream() + properties.load(inputStream) + // 读å–ç­¾åæ–‡ä»¶ + def keyKeyStoreFile = file(properties.getProperty('keyStoreFile')) + // 读å–ç­¾åæ–‡ä»¶åˆ«åã€å¯†ç ç­‰ä¿¡æ¯ + def keyKeyStorePassword = properties.getProperty('keyStorePassword') + def keyKeyAlias = properties.getProperty('keyAlias') + def keyKeyAliasPassword = properties.getProperty('keyAliasPassword') + signingConfigs { + release { + storeFile keyKeyStoreFile + storePassword keyKeyStorePassword + keyAlias keyKeyAlias + keyPassword keyKeyAliasPassword + } + debug { + storeFile keyKeyStoreFile + storePassword keyKeyStorePassword + keyAlias keyKeyAlias + keyPassword keyKeyAliasPassword + } + } + buildTypes { +// release { +// minifyEnabled false +// proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' +// } + debug { +// multiDexKeepProguard file('multidex-config.pro') + debuggable true + jniDebuggable true + // ç§»é™¤æ— ç”¨çš„èµ„æºæ–‡ä»¶ + shrinkResources false + // ZipAlign 优化 + zipAlignEnabled false + // 设置混淆 + minifyEnabled false + signingConfig signingConfigs.debug + } + + release { +// multiDexKeepProguard file('multidex-config.pro') + debuggable false + jniDebuggable false + // ç§»é™¤æ— ç”¨çš„èµ„æºæ–‡ä»¶ + shrinkResources false + // ZipAlign 优化 + zipAlignEnabled true + // 设置混淆 + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = '17' + } + + applicationVariants.all { variant -> + + // Apk 输出文件åé…ç½® + variant.outputs.all { output -> + outputFileName = 'Tracker_V' + variant.versionName + '_' + new Date().format('yyyyMMddhhmmss') + '_' + variant.buildType.name +// if (variant.buildType.name == buildTypes.release.getName()) { +// outputFileName += '_' + new Date().format('yyyyMMddhhmmss') + '_' + variant.buildType.name +// } + outputFileName += '.apk' + } + } + + viewBinding { + enabled = true + } + lint { + abortOnError false + checkReleaseBuilds false + } + namespace 'com.abbidot.tracker' + buildFeatures { + viewBinding true + buildConfig = true + } + + //å‡å°‘apk包的体积 + packagingOptions { + //压缩动æ€åº“(对应iniLibsçš„é…ç½®) + jniLibs { + useLegacyPackaging = true + } + //压缩dex(对应dexçš„é…ç½®) + dex { + useLegacyPackaging = true + } + } +} + +dependencies { + // 基类库 + implementation project(':baselibrary') + implementation project(':easyPhotos') + //è“牙架包https://github.com/Jasonchenlijian/FastBle +// implementation 'com.github.Jasonchenlijian:FastBle:2.4.0' + implementation project(':FastBleLib') + //è½»é‡çº§çš„Android端Socket框架https://github.com/jiusetian/EasySocket + implementation project(':easysocket') + +// implementation 'androidx.legacy:legacy-support-v4:1.0.0' +// implementation 'androidx.appcompat:appcompat:1.7.0' +// implementation 'com.google.android.material:material:1.10.0' +// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' + + // Android官方库 + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.arch.core:core-common:2.2.0' + implementation 'androidx.arch.core:core-runtime:2.2.0' + implementation 'androidx.activity:activity-ktx:1.9.3' + implementation 'androidx.fragment:fragment-ktx:1.5.6' + implementation 'androidx.annotation:annotation:1.9.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.7' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7' + + implementation 'androidx.room:room-runtime:2.5.2' +// implementation 'androidx.room:room-rxjava2:2.3.0' + implementation 'androidx.room:room-ktx:2.5.2' + kapt 'androidx.room:room-compiler:2.5.2' + //hiltä¾èµ–注入https://mvnrepository.com/artifact/com.google.dagger/hilt-android-gradle-plugin + implementation "com.google.dagger:hilt-android:2.57" + kapt "com.google.dagger:hilt-android-compiler:2.57" + + //Android UI 开呿•ˆçŽ‡çš„ UI 库https://github.com/Tencent/QMUI_Android + implementation 'com.qmuiteam:qmui:2.1.0' + implementation 'com.qmuiteam:arch:2.1.0' + kapt 'com.qmuiteam:arch-compiler:2.1.0' + + // å程 + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2' + + // 图片框架 https://github.com/coil-kt/coil/blob/main/README-zh.md + implementation "io.coil-kt:coil:1.4.0" + //选择添加 + implementation "io.coil-kt:coil-gif:1.4.0"//支æŒGIF + + //lottie动画https://github.com/airbnb/lottie-android + implementation 'com.airbnb.android:lottie:6.6.7' + //https://github.com/CymChad/BaseRecyclerViewAdapterHelper + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.11' + //å‡çº§recyclerview,因BaseRecyclerViewAdapterHelper item点击事件是使用1.2.0 + implementation 'androidx.recyclerview:recyclerview:1.3.1' + + //谷歌地图 + implementation 'com.google.android.gms:play-services-maps:19.2.0' + //地图æ“作工具类,添加标记等https://github.com/googlemaps/android-maps-utils +// implementation 'com.google.maps.android:android-maps-utils:2.3.0' +// implementation 'com.google.maps.android:maps-utils-ktx:3.2.1' + //谷歌地图places +// implementation 'com.google.android.libraries.places:places:2.5.0' + //连接谷歌æœåŠ¡å®šä½,登录谷歌 +// implementation 'com.google.android.gms:play-services-auth:19.2.0' + //å®šä½ + implementation 'com.google.android.gms:play-services-location:21.3.0' + + //动画https://github.com/daimajia/AndroidViewAnimations + implementation 'com.daimajia.androidanimations:library:2.4@aar' + + //mapbox地图https://github.com/mapbox/mapbox-maps-android +// implementation 'com.mapbox.maps:android:10.2.0' + //https://github.com/mapbox/mapbox-search-android + //用mapboxæœç´¢SDK,地ç†ç¼–ç  æœ‰æœç´¢ui组件,已包括mapbox-search-android架包 + implementation "com.mapbox.search:mapbox-search-android-ui:2.5.1" +// mapboxæœç´¢SDK,地ç†ç¼–ç  æ²¡æœ‰æœç´¢ui组件 +// implementation "com.mapbox.search:mapbox-search-android:1.0.0-beta.25" + //用于计算è·ç¦»https://docs.mapbox.com/android/java/guides/turf/#available-methods + implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:6.15.0' + //用于计算路线规划信æ¯https://docs.mapbox.com/android/java/examples/dashed-directions-line/ + implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:6.3.0' + + // æƒé™è¯·æ±‚框架:https://github.com/getActivity/XXPermissions + implementation 'com.github.getActivity:XXPermissions:25.2' + // å叿¡†æž¶ï¼šhttps://github.com/getActivity/ToastUtils + implementation 'com.github.getActivity:Toaster:13.2' + // 日志调试框架:https://github.com/getActivity/Logcat ,在debug模å¼ä¸‹é›†æˆ + debugImplementation 'com.github.getActivity:Logcat:12.3' + + // PictureSelector图片选择器,需è¦compileSdkVersion=31 https://github.com/LuckSiege/PictureSelector +// implementation 'io.github.lucksiege:pictureselector:v3.0.3' + //æ‹ç…§ç›¸å†Œé€‰æ‹©å™¨ã€ç›¸å†Œç¼–è¾‘æ·»åŠ æ°´å° https://github.com/HuanTanSheng/EasyPhotos(没有适é…Android13 相册) +// implementation 'com.github.HuanTanSheng:EasyPhotos:3.1.5' + //压缩图片 https://github.com/zetbaitsu/Compressor + implementation 'id.zelory:compressor:3.0.1' + //图片è£å‰ªåŠŸèƒ½https://github.com/CanHub/Android-Image-Cropper + implementation 'com.vanniktech:android-image-cropper:4.6.0' + + //******************************************æžå…‰æŽ¨é€start***************************************************** +// https://docs.jiguang.cn/jpush/client/Android/android_guide +// implementation 'cn.jiguang.sdk:jcore:3.1.2' // 此处以JCore 2.7.2 版本为例。 +// implementation 'cn.jiguang.sdk:jpush:4.6.0' // 此处以JPush 4.0.0 版本为例 + implementation 'cn.jiguang.sdk:jcore-google:5.1.0' // 此处以JCore 2.7.2 版本为例。 + implementation 'cn.jiguang.sdk:jpush-google:5.8.0' // 此处以JPush 4.0.0 版本为例 + // 接入åŽä¸ºåނ商 +// implementation 'com.huawei.hms:push:6.1.0.300' +// implementation 'cn.jiguang.sdk.plugin:huawei:4.0.0'// æžå…‰åނ商æ’件版本与接入 JPush ç‰ˆæœ¬ä¿æŒä¸€è‡´ï¼Œä¸‹åŒ + // 接入 FCM 厂商 +// implementation 'com.google.firebase:firebase-messaging:23.0.0' +// implementation 'cn.jiguang.sdk.plugin:fcm:4.6.6' + // 接入魅æ—厂商 +// implementation 'cn.jiguang.sdk.plugin:meizu:4.6.0' + // 接入 VIVO 厂商 +// implementation 'cn.jiguang.sdk.plugin:vivo:4.6.0' + // 接入 OPPO 厂商 +// implementation 'cn.jiguang.sdk.plugin:oppo:4.6.0' + // 接入å°ç±³åނ商 +// implementation 'cn.jiguang.sdk.plugin:xiaomi:4.6.0' + + //******************************************æžå…‰æŽ¨é€end******************************************************* + + //其中指代最新Bugly SDK版本å·ï¼Œä¹Ÿå¯ä»¥æŒ‡å®šæ˜Žç¡®çš„版本å·ï¼Œä¾‹å¦‚4.0.0 + implementation 'com.tencent.bugly:crashreport:4.1.9.3' + //其中latest.release指代最新Bugly NDK版本å·ï¼Œä¹Ÿå¯ä»¥æŒ‡å®šæ˜Žç¡®çš„版本å·ï¼Œä¾‹å¦‚3.9.2 +// implementation 'com.tencent.bugly:nativecrashreport:3.9.2' + + //braintree ä¿¡ç”¨å¡æ”¯ä»˜https://github.com/braintree/braintree_android + implementation 'com.braintreepayments.api:card:4.31.0' + //braintree PayPal支付https://developer.paypal.com/braintree/docs/guides/client-sdk/migration/android/v4 + implementation 'com.braintreepayments.api:paypal:4.31.0' + //Stripe 支付https://github.com/stripe/stripe-android + implementation 'com.stripe:stripe-android:20.27.0' + + //百度地图基础定ä½ç»„ä»¶ + implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.6.5.1' + //地图组件 + implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.2' + //检索组件 + implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.2' + //工具组件 + implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.2' + + //å¾®ä¿¡ç™»å½•ã€æ”¯ä»˜ + implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+' + //æ”¯ä»˜å®æ”¯ä»˜ + implementation 'com.alipay.sdk:alipaysdk-android:+@aar' + + //dfuå‡çº§https://github.com/NordicSemiconductor/Android-DFU-Library + implementation 'no.nordicsemi.android:dfu:2.9.0' + + //适é…Android 12以下SplashScreenå¯åŠ¨åŠ¨ç”»ï¼Œé—ªå±å›¾ç‰‡ + implementation 'androidx.core:core-splashscreen:1.0.1' + //优雅ã€ä¸‡èƒ½è‡ªå®šä¹‰æ—¥åކhttps://github.com/huanghaibin-dev/CalendarView +// implementation 'com.haibin:calendarview:3.7.1' + //https://github.com/angcyo/CalendarView + implementation 'com.github.angcyo:CalendarView:3.7.1.43' + //Google出å“çš„æµå¼å¸ƒå±€ flexbox-layout 支æŒRecyclerView https://gitcode.com/google/flexbox-layout?utm_source=csdn_github_accelerator + implementation 'com.google.android.flexbox:flexbox:3.0.0' + //facebook分享sdk +// implementation 'com.facebook.android:facebook-android-sdk:latest.release' + +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..e69de29 diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/com/abbidot/tracker/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/abbidot/tracker/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..2da2670 --- /dev/null +++ b/app/src/androidTest/java/com/abbidot/tracker/ExampleInstrumentedTest.kt @@ -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) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..487038a --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,610 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/annual_protection_plan_en.html b/app/src/main/assets/annual_protection_plan_en.html new file mode 100644 index 0000000..41bcca3 --- /dev/null +++ b/app/src/main/assets/annual_protection_plan_en.html @@ -0,0 +1,42 @@ + + +

+ +

Annual Replacement Protection Plan - Terms & Conditions

+

1. Plan Coverage & Pricing

+

Annual Fee: $12.90 per year

+

Coverage: Provides one free replacement per year for a damaged ABBIDOT Tracker

+

Multi-Year Coverage:

+

Purchasing 1 year entitles you to 1 replacement claim.

+

Purchasing 2 years entitles you to 2 replacement claims (one per year).

+

This pattern continues for longer plans (e.g., 3 years = 3 claims, one per year).

+ +

2. Claim Process

+

To file a claim, submit the following via the ABBIDOT Support Portal:

+

Proof of damage/loss (e.g., photos, police report for lost devices).

+

Original purchase receipt and protection plan confirmation.

+

All claims are subject to verification. Fraudulent claims will result in plan termination without refund.

+ +

3.Cases Not Covered:

+

Intentional Damage - Verified cases of deliberate destruction

+

Unauthorized Modifications - Damage caused by self-disassembly or non-official alterations

+ +

4. Replacement Terms

+

Replacements may include refurbished or new devices (same or equivalent model).

+

Customer covers any applicable shipping fees unless otherwise stated.

+

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.

+ +

5. Cancellation & Refunds

+

Full refunds available within 48 hours of purchase.

+

By purchasing this plan, you agree to these terms.

+ +

For claims, contact: support@abbidot.com.

+ + +
+ + + + + + \ No newline at end of file diff --git a/app/src/main/assets/find_device.mp3 b/app/src/main/assets/find_device.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dcc4eed3702333be4fc7c667d290c2113afdd0c2 GIT binary patch literal 16568 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 literal 0 HcmV?d00001 diff --git a/app/src/main/assets/fonts/Credit.ttf b/app/src/main/assets/fonts/Credit.ttf new file mode 100644 index 0000000000000000000000000000000000000000..00abec8468d1f53d3f51a6da0f086334f517fdab GIT binary patch literal 70136 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 literal 0 HcmV?d00001 diff --git a/app/src/main/assets/fonts/DinCond_Bold.otf b/app/src/main/assets/fonts/DinCond_Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..9b6cd9d3d7b8efe20e0e4ad007c4f714d4c2caf5 GIT binary patch literal 31380 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 literal 0 HcmV?d00001 diff --git a/app/src/main/assets/fonts/Roboto_Regular.ttf b/app/src/main/assets/fonts/Roboto_Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7d9a6c4c32d7e920b549caf531e390733496b6e0 GIT binary patch literal 158604 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
v%Q*Qgy;tdJj4ZONjTx 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

sDMz7$^SDZV4x`K*fov0l~+M89O^^Om^v{t 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 literal 0 HcmV?d00001 diff --git a/app/src/main/assets/lottie/active_dog.json b/app/src/main/assets/lottie/active_dog.json new file mode 100644 index 0000000..957744b --- /dev/null +++ b/app/src/main/assets/lottie/active_dog.json @@ -0,0 +1 @@ +{"v":"5.7.8","fr":50,"ip":0,"op":25,"w":900,"h":900,"nm":"dog","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[423.50000000000006,667,0],"ix":2,"l":2},"a":{"a":0,"k":[-42.5,230,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-265,230],[180,230]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.2901960784313726,0.2901960784313726,0.2901960784313726,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":13,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.280000095741,0.280000095741,0.280000095741,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":[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":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.001,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[0]},{"t":25,"s":[10]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.001,"s":[90]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100]},{"t":25,"s":[90]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":455,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"ear","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[-14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":13.001,"s":[-14]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[0]},{"t":25,"s":[-14]}],"ix":10},"p":{"a":0,"k":[356.247,24.591,0],"ix":2,"l":2},"a":{"a":0,"k":[86.762,16.905,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.047,30.334],[6.448,-4.934],[10.079,-11.171],[-24.71,-24.977],[-15.609,17.99]],"o":[[-2.904,-14.527],[-12.074,9.24],[-19.879,22.036],[20.808,21.034],[23.082,-26.608]],"v":[[40.358,-57.369],[10.962,-59.197],[-22.458,-26.687],[-33.818,50.862],[35.446,37.976]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.2901960784313726,0.2901960784313726,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":[58.778,72.146],"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":455,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"l 4","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[316.531,353.859,0],"ix":2,"l":2},"a":{"a":0,"k":[20.132,95.184,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":3.001,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":31.001,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":39,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":55,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":58.999,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":65,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":79,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"t":85,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.678431372549,0.011764706817,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[20.131,95.184],"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":455,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"l 3","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[37.531,349.898,0],"ix":2,"l":2},"a":{"a":0,"k":[20.132,95.184,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":3.001,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":19,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":31.001,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":39,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":55,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":58.999,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":65,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":71,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":75,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":79,"s":[{"i":[[13.707,-39.589],[-21.812,-30.118],[27.944,-1.871]],"o":[[-6.105,17.632],[14.221,19.637],[-45.697,-11.74]],"v":[[0.757,-68.684],[62.79,19.37],[52.868,56.184]],"c":false}]},{"t":85,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.937254961799,0.678431372549,0.011764706817,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[20.131,95.184],"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":455,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"body","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[472.81700000000006,392.929,0],"to":[0,2.333,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[472.81700000000006,406.929,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":13.001,"s":[472.81700000000006,392.929,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[472.81700000000006,406.929,0],"to":[0,0,0],"ti":[0,2.333,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":25,"s":[472.81700000000006,392.929,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":33.001,"s":[472.81700000000006,392.929,0],"to":[0,2.333,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[472.81700000000006,406.929,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[472.81700000000006,392.929,0],"to":[0,0,0],"ti":[0,-2.333,0]},{"t":46.0009765625,"s":[472.81700000000006,406.929,0]}],"ix":2,"l":2},"a":{"a":0,"k":[267.02,184.77,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[8.555,0],[0,8.325]],"o":[[0,8.325],[-8.548,0],[0,0]],"v":[[15.488,-7.533],[-0.001,7.533],[-15.488,-7.533]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.092349317962,0.075073608698,0.078402522966,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[415.17,77.396],"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":[[-2.421,-3.502],[-4.835,-2.281],[-0.136,0.299],[-1.231,9.972],[-21.503,0],[22.783,-0.837],[4.539,-9.943],[0.084,-0.129],[3.291,1.014],[4.926,7.141]],"o":[[3.1,4.497],[0.051,-0.293],[4.11,-9.001],[-17.676,-5.407],[23.326,0],[-1.53,10.963],[-0.071,0.155],[1.521,2.249],[-8.328,-2.567],[-2.446,-3.542]],"v":[[-22.248,18.173],[-10.232,28.441],[-10.029,27.57],[1.125,-1.66],[6.857,-37.428],[7.656,-0.868],[-4.284,30.93],[-4.554,31.293],[-8.039,36.414],[-27.994,21.533]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.2901960784313726,0.2901960784313726,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":[503.35,96.036],"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},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-87.495,-9.771],[-16.843,0.916],[10.453,-1.794],[0,0],[5.137,8.279],[-7.464,-12.46]],"o":[[10.186,1.137],[16.851,-0.93],[-1.716,4.068],[-94.107,4.76],[-5.127,-8.314],[7.45,12.475]],"v":[[27.892,52.422],[83.377,52.124],[85.177,12.003],[82.043,25.516],[-74.066,-45.245],[-92.765,-24.181]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2901960784313726,0.2901960784313726,0.2901960784313726,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":[336.116,158.467],"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 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[26.417,2.651],[-89.601,18.369],[-22.648,-0.436],[-7.509,1.867],[-1.047,13.715],[-29.532,9.413],[-18.615,-17.337],[0,0],[98.273,-0.709],[25.429,-17.466],[4.244,0.605],[29.493,9.692]],"o":[[-49.64,-13.417],[21.621,-4.888],[7.736,0.149],[24.926,-6.195],[4.432,-57.988],[29.532,-9.416],[47.504,57.771],[0,0],[-19.611,125.548],[-54.196,29.538],[-30.727,-4.405],[-33.152,-10.891]],"v":[[-210.894,149.753],[-168.846,-1.502],[-69.847,-5.473],[-46.879,-8.056],[-4.482,-37.078],[76.472,-171.462],[135.534,-167.183],[257.081,-112.404],[162.26,-22.147],[81.781,154.982],[-39.346,174.857],[-130.154,153.813]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.935686178768,0.677187452129,0.012475915049,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":[260.784,184.77],"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 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":455,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"l 2","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[346.531,353.859,0],"ix":2,"l":2},"a":{"a":0,"k":[20.132,95.184,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":-10,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":-6.999,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3.999,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":8.999,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":15,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":17.999,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":21,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"t":40,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8901960784313725,0.5882352941176471,0.08627450980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[20.131,95.184],"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":436,"st":-20,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"l","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75.531,349.898,0],"ix":2,"l":2},"a":{"a":0,"k":[20.132,95.184,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":-20,"s":[{"i":[[-0.54,-20.628],[-16.404,-26.858],[-18.849,0.38]],"o":[[-2.23,27.314],[16.404,26.858],[29.767,-0.6]],"v":[[0.132,-75.184],[25.441,12.77],[82.368,59.184]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":-10,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":-6.999,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":-3.999,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":8.999,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":15,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":17.999,"s":[{"i":[[-0.27,-10.314],[-10.025,-30.105],[-7.439,0.15]],"o":[[-1.35,16.534],[6.761,20.302],[14.884,-0.3]],"v":[[0.132,-75.184],[18.197,26.052],[41.118,67.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":21,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[0.132,-75.184],[-0.041,23.407],[-0.132,75.184]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[{"i":[[0,0],[9.466,-36.43],[16.992,2.263]],"o":[[0,0],[-6.172,23.752],[-43.154,-5.748]],"v":[[0.882,-73.309],[-8.478,10.886],[-41.882,51.309]],"c":false}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[{"i":[[6.845,-41.332],[-31.078,-20.171],[23.303,-11.608]],"o":[[-6.585,39.76],[22.699,14.732],[-45.697,-11.74]],"v":[[0.757,-68.684],[63.973,0.344],[65.868,50.184]],"c":false}]},{"t":40,"s":[{"i":[[-0.54,-20.628],[-22.114,-28.266],[-14.878,0.3]],"o":[[-2.7,33.068],[14.418,18.429],[29.767,-0.6]],"v":[[0.132,-75.184],[36.435,28.698],[82.368,59.184]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8901960784313725,0.5882352941176471,0.08627450980392157,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":40,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[20.131,95.184],"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":436,"st":-20,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"tail","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-17]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[10]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13.001,"s":[-17]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[10]},{"t":25,"s":[-17]}],"ix":10},"p":{"a":0,"k":[40.937,218.761,0],"ix":2,"l":2},"a":{"a":0,"k":[65.863,31.09,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-9.156,7.505],[-16.639,-7.872],[5.377,-6.122],[4.79,-0.871],[1.446,-0.978],[0.731,-0.835],[8.103,1.145],[7.288,6.21]],"o":[[15.08,-12.354],[8.114,3.844],[-2.411,2.742],[-0.845,1.215],[-0.413,1],[-4.334,4.932],[-11.063,-1.553],[-8.806,-7.506]],"v":[[-32.706,-11.486],[29.921,-11.431],[36.486,5.261],[24.912,10.96],[21.523,14.3],[19.85,17.091],[-0.816,22.695],[-32.553,12.168]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8901960784313725,0.5882352941176471,0.08627450980392157,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":[42.112,24.09],"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":455,"st":0,"bm":0}],"markers":[{"tm":0,"cm":"1","dr":0}]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/cat_and_ball.json b/app/src/main/assets/lottie/cat_and_ball.json new file mode 100644 index 0000000..29ccd9e --- /dev/null +++ b/app/src/main/assets/lottie/cat_and_ball.json @@ -0,0 +1 @@ +{"nm":"Lurking_áat","ddd":0,"h":512,"w":512,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"Balls","sr":1,"st":0,"op":300,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":true,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,256,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"masksProperties":[{"nm":"Mask 1","inv":false,"mode":"a","x":{"a":0,"k":0,"ix":4},"o":{"a":0,"k":100,"ix":3},"pt":{"a":0,"k":{"c":true,"i":[[141.385,0],[0,-39],[-12.348,-0.061],[-4.405,3.601],[-16.41,0],[-23.383,-0.074],[-8.519,-0.13],[0,5.211]],"o":[[-141.385,0],[0,4.625],[10.781,0.053],[25.845,0.226],[15.087,0],[5.492,3.426],[9.606,0.146],[0,-38]],"v":[[72,147],[-68,198],[-40.652,204.936],[-15.47,200.149],[70,200.375],[148.383,200.324],[173.144,205.104],[201,198]]},"ix":1}}],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ball_1","ix":1,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 2","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":[14,14],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7843,0.7843,0.7843],"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":[2,172],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 3","ix":2,"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":[33,33],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.651,0.651,0.651],"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":[1,176.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":3,"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":[40,40],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5216,0.5216,0.5216],"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":[0,180],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,180],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-39.25,226.5],"t":0,"ti":[-0.583,4.708],"to":[0.208,-2.083]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-38,214],"t":1,"ti":[-1.25,4.667],"to":[0.583,-4.708]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-35.75,198.25],"t":2,"ti":[-2.042,2.875],"to":[1.25,-4.667]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-30.5,186],"t":3,"ti":[-3.083,1],"to":[2.042,-2.875]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":1},"s":[-23.5,181],"t":4,"ti":[-28.25,0.167],"to":[3.083,-1]},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":0.833},"s":[-12,180],"t":5,"ti":[-27.833,0],"to":[28.25,-0.167]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[146,180],"t":34,"ti":[-2.291,0],"to":[4.721,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[158,183],"t":35,"ti":[0,0],"to":[11.216,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[167.5,193],"t":36,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[169.75,204.625],"t":37,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[170.875,216],"t":38,"ti":[0,0],"to":[0,0]},{"s":[172,227.75],"t":39}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ball_2","ix":2,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 2","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":[14,14],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7843,0.7843,0.7843],"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":[2,172],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 3","ix":2,"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":[33,33],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.651,0.651,0.651],"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":[1,176.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":3,"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":[40,40],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5216,0.5216,0.5216],"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":[0,180],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,180],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.419,"y":0.448},"i":{"x":0.833,"y":0.833},"s":[111.745,179.975],"t":0,"ti":[-7.256,0],"to":[14.708,0.014]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[146,180],"t":5,"ti":[-2.291,0],"to":[4.721,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[158,183],"t":6,"ti":[0,0],"to":[11.216,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[167.5,193],"t":7,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[169.75,204.625],"t":8,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[170.875,216],"t":9,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[172,227.75],"t":10,"ti":[35,2.292],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-39.25,226.5],"t":11,"ti":[-0.583,4.708],"to":[-35,-2.292]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-38,214],"t":12,"ti":[-1.25,4.667],"to":[0.583,-4.708]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-35.75,198.25],"t":13,"ti":[-2.042,2.875],"to":[1.25,-4.667]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-30.5,186],"t":14,"ti":[-3.083,1],"to":[2.042,-2.875]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":1},"s":[-23.5,181],"t":15,"ti":[-28.25,0.167],"to":[3.083,-1]},{"o":{"x":0.305,"y":0},"i":{"x":0.726,"y":0.611},"s":[-12,180],"t":16,"ti":[-41.71,-0.039],"to":[20.885,-0.123]},{"o":{"x":0.419,"y":0.448},"i":{"x":0.833,"y":0.833},"s":[111.745,179.975],"t":40,"ti":[-7.256,0],"to":[14.708,0.014]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[146,180],"t":45,"ti":[-2.291,0],"to":[4.721,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[158,183],"t":46,"ti":[0,0],"to":[11.216,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[167.5,193],"t":47,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[169.75,204.625],"t":48,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[170.875,216],"t":49,"ti":[0,0],"to":[0,0]},{"s":[172,227.75],"t":50}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ball_3","ix":3,"cix":2,"np":3,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 2","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":[14,14],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.7843,0.7843,0.7843],"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":[2,172],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 3","ix":2,"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":[33,33],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.651,0.651,0.651],"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":[1,176.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":3,"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":[40,40],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5216,0.5216,0.5216],"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":[0,180],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[0,180],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.42,"y":0.368},"i":{"x":0.833,"y":0.833},"s":[36.081,179.926],"t":0,"ti":[-18.442,0],"to":[40.511,0.001]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[146,180],"t":16,"ti":[-2.291,0],"to":[4.721,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[158,183],"t":17,"ti":[0,0],"to":[11.216,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[167.5,193],"t":18,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[169.75,204.625],"t":19,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[170.875,216],"t":20,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[172,227.75],"t":21,"ti":[35,2.292],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-39.25,226.5],"t":22,"ti":[-0.583,4.708],"to":[-35,-2.292]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-38,214],"t":23,"ti":[-1.25,4.667],"to":[0.583,-4.708]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-35.75,198.25],"t":24,"ti":[-2.042,2.875],"to":[1.25,-4.667]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[-30.5,186],"t":25,"ti":[-3.083,1],"to":[2.042,-2.875]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":1},"s":[-23.5,181],"t":26,"ti":[-28.25,0.167],"to":[3.083,-1]},{"o":{"x":0.298,"y":0},"i":{"x":0.655,"y":0.439},"s":[-12,180],"t":27,"ti":[-20.63,0],"to":[9.532,-0.056]},{"o":{"x":0.42,"y":0.368},"i":{"x":0.833,"y":0.833},"s":[36.081,179.926],"t":40,"ti":[-18.442,0],"to":[40.511,0.001]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[146,180],"t":56,"ti":[-2.291,0],"to":[4.721,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[158,183],"t":57,"ti":[0,0],"to":[11.216,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[167.5,193],"t":58,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[169.75,204.625],"t":59,"ti":[0,0],"to":[0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[170.875,216],"t":60,"ti":[0,0],"to":[0,0]},{"s":[172,227.75],"t":61}],"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":"Burrow","sr":1,"st":0,"op":300,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,256,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 2","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":[54,14],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4157,0.4157,0.4157],"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":[174,198],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":2,"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":[54,14],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4157,0.4157,0.4157],"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":[-41,198],"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":"Cat_M","sr":1,"st":0,"op":300,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[253.625,248.625,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 1","ix":1,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 3","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.25,145.922],[116.375,157.625]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[-23.75,-1],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.375,144],[118.25,158.25]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[-9.75,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":3,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.75,145.625],[120.375,157.375]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[3,-0.375],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Paw_L","ix":4,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-18,0],[0,-8.284],[13.807,0],[0,8.284]],"o":[[17.5,0],[0,8.284],[-13.807,0],[0,-8.284]],"v":[[-13,130.125],[12,150],[-13,158.875],[-38,150]]},"ix":2}},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[-12,150],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9019607843137255,0.9019607843137255,0.9019607843137255,0.5,0.615686274509804,0.615686274509804,0.615686274509804,1,0.5372549019607843,0.5372549019607843,0.5372549019607843],"ix":9}},"t":2,"a":{"a":0,"k":0,"ix":8},"h":{"a":0,"k":0,"ix":7},"s":{"a":0,"k":[-12,120.5],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"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":[122,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[109,144.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[109,144.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Group 2","ix":2,"cix":2,"np":4,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 3","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.25,145.922],[116.375,157.625]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[-145.25,-1],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 2","ix":2,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.375,144],[118.25,158.25]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[-131.25,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":3,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":false,"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[118.75,145.625],[120.375,157.375]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"c":{"a":0,"k":[0.4235,0.4235,0.4235],"ix":3}},{"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":[-118.5,-0.375],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Paw_R","ix":4,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-18,0],[0,-8.284],[13.807,0],[0,8.284]],"o":[[17.5,0],[0,8.284],[-13.807,0],[0,-8.284]],"v":[[-13,130.125],[12,150],[-13,158.875],[-38,150]]},"ix":2}},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[-12,150],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9019607843137255,0.9019607843137255,0.9019607843137255,0.5,0.615686274509804,0.615686274509804,0.615686274509804,1,0.5372549019607843,0.5372549019607843,0.5372549019607843],"ix":9}},"t":2,"a":{"a":0,"k":0,"ix":8},"h":{"a":0,"k":0,"ix":7},"s":{"a":0,"k":[-12,120.5],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"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":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[-13,144.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-13,144.5],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Head","ix":3,"cix":2,"np":8,"it":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Pupil_R","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":[16,16],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1725,0.1725,0.1176],"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":[119.617,119.617],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[12.674,117.014],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Pupil_L","ix":2,"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":[16,16],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.1725,0.1725,0.1176],"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":[119.617,119.617],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[58.424,117.014],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Eye_R","ix":3,"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":[26,26],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"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":[12.038,112.761],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Eye_L","ix":4,"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":[26,26],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,1,1],"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":[59.038,112.761],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Nous","ix":5,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.5,0],[-1.402,-1.816],[-1.275,-0.083],[-1.626,2.328]],"o":[[-3.5,0],[1.854,2.401],[1.138,0.074],[1.252,-1.793]],"v":[[51.25,124.375],[46.335,126.969],[51,131.125],[55.665,126.969]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5137,0.5137,0.5137],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[51.032,127.445],"ix":1},"s":{"a":0,"k":[146.102,146.102],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[38.782,130.235],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ear_R","ix":6,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[6.019,3.225],[2.204,-6.427],[-8.575,-8.229],[-0.608,4.024]],"o":[[-4.063,-2.177],[-1.76,5.131],[6.787,6.513],[2.085,-13.805]],"v":[[61.573,58.281],[43.159,80.708],[56.204,93.339],[69.825,103.702]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6471,0.6471,0.6471],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[58.12,89.316],"ix":1},"s":{"a":0,"k":[-100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[8.179,72.393],"ix":2},"r":{"a":0,"k":21.311,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ear_L","ix":7,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[6.019,3.225],[2.016,-6.488],[-8.515,-6.092],[-0.422,4.048]],"o":[[-4.063,-2.177],[-1.471,4.733],[8.391,6.002],[1.47,-14.115]],"v":[[60.805,57.44],[45.306,81.747],[56.107,91.948],[70.96,105.058]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6471,0.6471,0.6471],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[57.265,86.752],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[50.449,70.288],"ix":2},"r":{"a":0,"k":-19.904,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Head_cont","ix":8,"cix":2,"np":5,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-31.127,-0.321],[-10.5,-19.5],[41.517,0.511],[0.221,27.321]],"o":[[28.215,0.291],[0.873,20.012],[-33.054,-0.407],[14.5,-21.5]],"v":[[-0.343,-39.62],[49,0],[0,36.5],[-52,0]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.4235,0.4235,0.4235],"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":[124.608,114.002],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[31,107],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"tr","a":{"a":0,"k":[29.5,112.007],"ix":1},"s":{"a":0,"k":[120,120],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[42,112.007],"t":0,"ti":[0,0],"to":[-0.833,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[37,112.007],"t":20,"ti":[-0.833,0],"to":[0,0]},{"s":[42,112.007],"t":40}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Paw_2L","ix":4,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[-2.621,13.477],[0,0],[0,0]],"o":[[1.75,-9],[0,0],[0,0]],"v":[[-20.875,143.125],[-23.375,120.875],[-71.875,60.875]]}],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[-2.621,13.477],[0,0],[0,0]],"o":[[1.75,-9],[0,0],[0,0]],"v":[[-20.875,143.125],[-21.125,119.875],[-37.625,61.375]]}],"t":20},{"s":[{"c":false,"i":[[-2.621,13.477],[0,0],[0,0]],"o":[[1.75,-9],[0,0],[0,0]],"v":[[-20.875,143.125],[-23.375,120.875],[-71.875,60.875]]}],"t":40}],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"c":{"a":0,"k":[0.2902,0.2902,0.2627],"ix":3}},{"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":[136,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Paw_2R","ix":5,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[13.336,3.263],[0,0],[0,0]],"o":[[-23.5,-5.75],[0,0],[0,0]],"v":[[-22.375,143.375],[-55.875,129.875],[-51.375,79.875]]}],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[{"c":false,"i":[[13.336,3.263],[0,0],[0,0]],"o":[[-23.5,-5.75],[0,0],[0,0]],"v":[[-22.375,143.375],[-54.375,125.375],[-28.375,71.375]]}],"t":20},{"s":[{"c":false,"i":[[13.336,3.263],[0,0],[0,0]],"o":[[-23.5,-5.75],[0,0],[0,0]],"v":[[-22.375,143.375],[-55.875,129.875],[-51.375,79.875]]}],"t":40}],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":30,"ix":5},"c":{"a":0,"k":[0.2902,0.2902,0.2627],"ix":3}},{"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":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Body","ix":6,"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,42],"ix":3},"s":{"a":0,"k":[132,132],"ix":2}},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[5.82,46.333],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9019607843137255,0.9019607843137255,0.9019607843137255,0.5,0.7254901960784313,0.7254901960784313,0.7254901960784313,1,0.2901960784313726,0.2901960784313726,0.2627450980392157],"ix":9}},"t":2,"a":{"a":0,"k":0,"ix":8},"h":{"a":0,"k":0,"ix":7},"s":{"a":0,"k":[-5.908,-34.167],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,107.75],"ix":1},"s":{"a":0,"k":[120,120],"ix":3},"sk":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-10],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[10],"t":20},{"s":[-10],"t":40}],"ix":4},"p":{"a":0,"k":[19.996,150],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ass 2","ix":7,"cix":2,"np":4,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[30.074,30.511],[-0.096,-45.043],[59.647,0],[0,59.647],[-15.943,6.605],[-6.201,-28.189],[-30.218,20.85],[-21.128,-14.372],[-17.54,27.841],[21.248,27.859],[-1.256,4.178]],"o":[[4.602,1.255],[0.127,59.647],[-59.647,0],[0,-38.576],[-27.264,31.073],[1.062,4.828],[-24.086,46.914],[28.268,19.228],[11.304,-17.942],[33.512,24.136],[5.756,-19.152]],"v":[[50.943,-78.213],[108,0],[0,108],[-108,0],[-52.568,-78.243],[-85.423,19.317],[-43.954,-53.659],[-38.42,47.521],[58.865,34.07],[46.562,-53.753],[88.469,4.429]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2902,0.2902,0.2627],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,107.75],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[95.8,104.2],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[94,106],"t":3},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[106,94],"t":13},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[94,106],"t":23},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[106,94],"t":33},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[95.8,104.2],"t":40},{"s":[94,106],"t":43}],"ix":3},"sk":{"a":1,"k":[{"o":{"x":0.333,"y":0.63},"i":{"x":0.833,"y":1},"s":[-8.785],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-10],"t":3},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[10],"t":23},{"o":{"x":0.333,"y":0.63},"i":{"x":0.667,"y":1},"s":[-8.785],"t":40},{"s":[-10],"t":43}],"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0.22},"i":{"x":0.833,"y":1},"s":[-8.781,150],"t":0,"ti":[-3.13,0],"to":[0,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-10,150],"t":3,"ti":[0,0],"to":[3.13,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[10,150],"t":23,"ti":[0,0],"to":[0,0]},{"o":{"x":0.333,"y":0.628},"i":{"x":0.667,"y":1},"s":[-8.781,150],"t":40,"ti":[0,0],"to":[0,0]},{"s":[-10,150],"t":43}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ass","ix":8,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-59.647,0],[0,-59.647],[59.647,0],[0,59.647]],"o":[[59.647,0],[0,59.647],[-59.647,0],[0,-59.647]],"v":[[0,-108],[108,0],[0,108],[-108,0]]},"ix":2}},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[90,-14],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.9019607843137255,0.9019607843137255,0.9019607843137255,0.5,0.7254901960784313,0.7254901960784313,0.7254901960784313,1,0.2901960784313726,0.2901960784313726,0.2627450980392157],"ix":9}},"t":2,"a":{"a":0,"k":0,"ix":8},"h":{"a":0,"k":0,"ix":7},"s":{"a":0,"k":[4,-82],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,107.75],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[95.8,104.2],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[94,106],"t":3},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[106,94],"t":13},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[94,106],"t":23},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[106,94],"t":33},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[95.8,104.2],"t":40},{"s":[94,106],"t":43}],"ix":3},"sk":{"a":1,"k":[{"o":{"x":0.333,"y":0.63},"i":{"x":0.833,"y":1},"s":[-8.785],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-10],"t":3},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[10],"t":23},{"o":{"x":0.333,"y":0.63},"i":{"x":0.667,"y":1},"s":[-8.785],"t":40},{"s":[-10],"t":43}],"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0.22},"i":{"x":0.833,"y":1},"s":[-8.781,150],"t":0,"ti":[-3.13,0],"to":[0,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-10,150],"t":3,"ti":[0,0],"to":[3.13,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[10,150],"t":23,"ti":[0,0],"to":[0,0]},{"o":{"x":0.333,"y":0.628},"i":{"x":0.667,"y":1},"s":[-8.781,150],"t":40,"ti":[0,0],"to":[0,0]},{"s":[-10,150],"t":43}],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Tail","ix":9,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[2.63,27.876],[12,17.5],[-27.5,-4]],"o":[[-2.5,-26.5],[-16.1,-23.479],[19.792,2.879]],"v":[[-1,-49],[-32.5,-107],[-2.5,-165.5]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[4.94,27.059],[7,16.75],[-19.25,18.25]],"o":[[-5,-27],[-8.022,-19.219],[-8.75,-8.25]],"v":[[-1,-49],[-17.25,-105.25],[-24.75,-180.25]]}],"t":5},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[-0.5,28],[8,23],[-6,28.5]],"o":[[-0.5,-25],[-9.143,-26.285],[2.763,-13.125]],"v":[[-1,-49],[-2.5,-108.5],[-42,-168]]}],"t":10},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[-1.089,27.485],[-6.418,18.866],[27.5,-7.75]],"o":[[1,-27],[8.25,-24.25],[-7.876,-11.679]],"v":[[-1,-49],[12.25,-106.75],[-26,-152.25]]}],"t":15},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[-2.786,27.861],[-10.35,20.344],[29,-6.5]],"o":[[3,-30],[14.5,-28.5],[-19.516,4.374]],"v":[[-1,-49],[27,-107.5],[-3,-166]]}],"t":20},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[0.5,29.5],[-10.75,21.75],[26,1.125]],"o":[[0,-27],[10.868,-21.989],[-11.809,-1.27]],"v":[[-1,-49],[14.75,-113.25],[13.5,-178.625]]}],"t":25},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[1.926,27.272],[-9.765,20.227],[6,26.917]],"o":[[-0.5,-27.5],[14,-29],[-3.965,-6.248]],"v":[[-1,-49],[-4,-106],[32.5,-165.417]]}],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":false,"i":[[4.94,27.059],[7.75,22.25],[-26.75,-10.042]],"o":[[-2,-27.5],[-9.269,-26.612],[9.75,3.958]],"v":[[-1,-49],[-19.25,-107.25],[16.25,-152.958]]}],"t":35},{"s":[{"c":false,"i":[[2.63,27.876],[12,17.5],[-27.5,-4]],"o":[[-2.5,-26.5],[-16.1,-23.479],[19.792,2.879]],"v":[[-1,-49],[-32.5,-107],[-2.5,-165.5]]}],"t":40}],"ix":2}},{"ty":"gs","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Stroke","nm":"Gradient Stroke 1","e":{"a":0,"k":[100,0],"ix":5},"g":{"p":3,"k":{"a":0,"k":[0,0.37254901960784315,0.37254901960784315,0.37254901960784315,0.5,0.6666666666666666,0.6666666666666666,0.6666666666666666,1,0.7647058823529411,0.7647058823529411,0.7647058823529411],"ix":8}},"t":2,"a":{"a":0,"k":0,"ix":7},"h":{"a":0,"k":0,"ix":6},"s":{"a":0,"k":[0,0],"ix":4},"lc":2,"lj":2,"ml":1,"o":{"a":0,"k":100,"ix":9},"w":{"a":0,"k":40,"ix":10}},{"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":1,"k":[{"o":{"x":0.333,"y":0.297},"i":{"x":0.833,"y":1},"s":[-64.519,0],"t":0,"ti":[-17.92,0],"to":[-7.598,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[-77,0],"t":4,"ti":[0,0],"to":[17.92,0]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.714},"s":[43,0],"t":24,"ti":[30.722,0],"to":[0,0]},{"o":{"x":0.333,"y":0.615},"i":{"x":0.667,"y":1},"s":[-64.519,0],"t":40,"ti":[0.103,0],"to":[-7.598,0]},{"s":[-77,0],"t":44}],"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},{"ty":4,"nm":"BG","sr":1,"st":0,"op":300,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[256,256,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 2","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":[382,110],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6784,0.6784,0.6784],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0.63},"i":{"x":0.667,"y":1},"s":[64.751,70.383],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[65.104,70.383],"t":3},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[59.286,70.383],"t":23},{"o":{"x":0.333,"y":0.63},"i":{"x":0.667,"y":1},"s":[64.751,70.383],"t":40},{"s":[65.104,70.383],"t":43}],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0.21},"i":{"x":0.667,"y":1},"s":[10.607,119.621],"t":0,"ti":[-1.565,-0.313],"to":[-0.25,-0.05]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[10,119.5],"t":3,"ti":[0,0],"to":[1.565,0.313]},{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":0.769},"s":[20,121.5],"t":23,"ti":[2.503,0.501],"to":[0,0]},{"o":{"x":0.333,"y":0.63},"i":{"x":0.667,"y":1},"s":[10.607,119.621],"t":40,"ti":[0.151,0.03],"to":[-0.25,-0.05]},{"s":[10,119.5],"t":43}],"ix":2},"r":{"a":0,"k":4.95,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]},{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":2,"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,3],"ix":3},"s":{"a":0,"k":[430,123.822],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.8353,0.8353,0.8353],"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":[8,122],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4}],"v":"5.7.5","fr":30,"op":40,"ip":0,"assets":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/dfu_loading.json b/app/src/main/assets/lottie/dfu_loading.json new file mode 100644 index 0000000..8c0132b --- /dev/null +++ b/app/src/main/assets/lottie/dfu_loading.json @@ -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":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/fail_anim.json b/app/src/main/assets/lottie/fail_anim.json new file mode 100644 index 0000000..91e39a2 --- /dev/null +++ b/app/src/main/assets/lottie/fail_anim.json @@ -0,0 +1 @@ +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.20","a":"","k":"","d":"","tc":""},"fr":24,"ip":0,"op":36,"w":64,"h":64,"nm":"Failed","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Dash-2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[32.5,33,0],"ix":2},"a":{"a":0,"k":[-3.156,5.437,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[13,5.5],[-29.191,5.379]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.698039215686,0.141176470588,0.235294117647,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0.698039215686,0.141176470588,0.235294117647,1]},{"t":24,"s":[1,1,1,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"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":"Vector 35","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[100]},{"t":28,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[100]},{"t":28,"s":[78]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Dash-1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-45,"ix":10},"p":{"a":0,"k":[32.5,33,0],"ix":2},"a":{"a":0,"k":[-3.156,5.437,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[13,5.5],[-29.191,5.379]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0.698039215686,0.141176470588,0.235294117647,1]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0.698039215686,0.141176470588,0.235294117647,1]},{"t":24,"s":[1,1,1,1]}],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":2,"lj":1,"ml":4,"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":"Vector 35","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100]},{"t":28,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":24,"s":[100]},{"t":28,"s":[78]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Outline","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32,32,0],"ix":2},"a":{"a":0,"k":[16.383,-9.633,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.9568627450980393,0.2627450980392157,0.21176470588235294,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[16.383,-9.633],"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"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":8,"s":[49]},{"t":16,"s":[87]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[0]},{"t":24,"s":[87]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Solid","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":16,"s":[0]},{"t":24,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[32,32,0],"ix":2},"a":{"a":0,"k":[16.383,-9.633,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":24,"s":[110,110,100]},{"t":28,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[56,56],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[16.383,-9.633],"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":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.9568627450980393,0.2627450980392157,0.21176470588235294,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":720,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/loading_dog.json b/app/src/main/assets/lottie/loading_dog.json new file mode 100644 index 0000000..2c1be45 --- /dev/null +++ b/app/src/main/assets/lottie/loading_dog.json @@ -0,0 +1 @@ +{"v":"5.7.5","fr":30,"ip":0,"op":21,"w":512,"h":512,"nm":"Dog","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Ear","parent":11,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-37,"ix":10},"p":{"a":0,"k":[51.418,-85.546,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-2,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-67.5,-5.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":-1,"s":[{"i":[[0,0],[0,0]],"o":[[-8.5,-38.434],[0,0]],"v":[[-78,59.5],[-114.75,38.95]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[-28.5,-34.5],[0,0]],"v":[[-78,59.5],[-124,67.4]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0]],"o":[[-25.375,-29.625],[0,0]],"v":[[-78,59.5],[-124.211,46.487]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0]],"o":[[-33,-17.5],[0,0]],"v":[[-78,59.5],[-108.75,20.95]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,0],[0,0]],"o":[[-20.688,-22.312],[0,0]],"v":[[-78,59.5],[-100.938,8.088]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-67.5,-5.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-41.619,12.027]],"c":false}]},{"t":20,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-125.832,17.436]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":12,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[5,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":"Shape 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":57,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Tail","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-67.5,-5.5]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":1,"s":[{"i":[[0,0],[0,0]],"o":[[-8.5,-38.434],[0,0]],"v":[[-78,59.5],[-114.75,38.95]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0]],"o":[[-28.5,-34.5],[0,0]],"v":[[-78,59.5],[-124,67.4]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0]],"o":[[-25.375,-29.625],[0,0]],"v":[[-78,59.5],[-124.375,46.675]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[0,0]],"o":[[-33,-17.5],[0,0]],"v":[[-78,59.5],[-108.75,20.95]],"c":false}]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":7,"s":[{"i":[[0,0],[0,0]],"o":[[-20.688,-22.312],[0,0]],"v":[[-78,59.5],[-100.938,8.088]],"c":false}]},{"t":13,"s":[{"i":[[0,0],[0,0]],"o":[[-16,-15],[0,0]],"v":[[-78,59.5],[-67.5,-5.5]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"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":"Shape 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Hose 2","parent":9,"sr":1,"ks":{"o":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[-256,-256,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-241.934,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-180.066,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-166,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-166,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-168.52,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-175.361,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-185.444,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-197.69,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-224.319,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-236.558,0],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-246.64,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-253.48,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-256,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"k":[{"s":[100,100,100],"t":0,"i":{"x":[1,1,1],"y":[1,1,1]},"o":{"x":[0,0,0],"y":[0,0,0]}},{"s":[100,100,100],"t":20,"i":{"x":[1,1,1],"y":[1,1,1]},"o":{"x":[0,0,0],"y":[0,0,0]}}],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"k":[{"s":[4],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ir":{"k":[{"s":[30],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"is":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"or":{"k":[{"s":[34.22],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.775],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.608],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.715],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.018],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.273],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.961],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.961],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.964],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.273],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.018],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30.334],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.832],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.522],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.08],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.694],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.419],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.624],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.277],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.032],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.22],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"os":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ix":1,"nm":"LineForCurve","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"tm","s":{"k":[{"s":[0.01],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.01],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"e":{"k":[{"s":[24.99],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.99],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[-90],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-90],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"m":1,"ix":2,"nm":"Line Halfer","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"a":{"k":[{"s":[-34.22,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.775,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.608,0],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-27.715,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.018,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.273,0],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.961,0],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.961,0],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.964,0],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.273,0],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.018,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-30.334,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-25.832,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.522,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.08,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.694,0],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.419,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-22.624,0],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.277,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.032,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.22,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"s":{"k":[{"s":[-100,100],"t":0,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}},{"s":[-100,100],"t":20,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}}]},"r":{"k":[{"s":[6.691],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.284],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.181],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[123.769],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.627],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-217.52],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-214.839],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-211.517],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-214.829],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-217.521],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.627],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-219.684],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.289],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[128.326],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[107.576],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.346],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.449],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.793],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.184],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4.198],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.691],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"sk":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"sa":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"nm":"Transform"}],"nm":"Arc","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[19],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"k":[{"s":[227,376.474],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[212.714,361.971],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[183.041,320.691],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[158.555,270.2],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[152,243.474],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.747,242.558],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.117,240.277],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[150.296,237.302],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.115,240.268],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.748,242.559],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[152,243.474],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[154.286,247.046],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[160.484,256.77],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[169.579,271.153],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[180.581,288.71],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[192.491,307.944],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.297,327.367],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[214.987,345.518],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[223.512,360.942],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[228.45,372.412],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[227,376.474],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"BaseHose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","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":"Style","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"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":"Hose 2::Ankle","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[135,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":"A","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[200,200],"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":"Hose 2::Hip","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","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":"B","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"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":"2.07","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"cl":"07"},{"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":"Version","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"k":[{"s":[4],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ir":{"k":[{"s":[30],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"is":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"or":{"k":[{"s":[34.22],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.775],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[21.608],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.715],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.018],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.273],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.961],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.961],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.964],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.273],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[32.018],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30.334],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.832],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19.522],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.08],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.694],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.419],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.624],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.277],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.032],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.22],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"os":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ix":1,"nm":"LineForCurve","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"tm","s":{"k":[{"s":[0.01],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.01],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"e":{"k":[{"s":[24.99],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.99],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[-90],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-90],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"m":1,"ix":2,"nm":"Line Halfer","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"a":{"k":[{"s":[-34.22,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.775,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-21.608,0],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-27.715,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.018,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.273,0],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.961,0],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.961,0],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.964,0],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.273,0],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-32.018,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-30.334,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-25.832,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-19.522,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.08,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-10.694,0],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-15.419,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-22.624,0],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.277,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.032,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.22,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"s":{"k":[{"s":[-100,100],"t":0,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}},{"s":[-100,100],"t":20,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}}]},"r":{"k":[{"s":[6.691],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[22.284],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[72.181],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[123.769],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.627],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-217.52],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-214.839],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-211.517],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-214.829],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-217.521],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-218.627],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-219.684],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-223.289],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[128.326],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[107.576],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[62.346],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[25.449],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.793],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[5.184],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4.198],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6.691],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ArcMath","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"k":[{"s":[227,376.474],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[212.714,361.971],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[183.041,320.691],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[158.555,270.2],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[152,243.474],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.747,242.558],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.117,240.277],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[150.296,237.302],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.115,240.268],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[151.748,242.559],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[152,243.474],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[154.286,247.046],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[160.484,256.77],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[169.579,271.153],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[180.581,288.71],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[192.491,307.944],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[204.297,327.367],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[214.987,345.518],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[223.512,360.942],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[228.45,372.412],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[227,376.474],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Admin","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Hose 1","parent":9,"sr":1,"ks":{"o":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[-256,-256,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-241.934,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-180.066,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-166,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-166,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-168.52,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-175.361,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-185.444,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-197.69,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-224.319,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-236.558,0],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-246.64,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-253.48,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-256,-256,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"a":{"k":[{"s":[0,0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"k":[{"s":[100,100,100],"t":0,"i":{"x":[1,1,1],"y":[1,1,1]},"o":{"x":[0,0,0],"y":[0,0,0]}},{"s":[100,100,100],"t":20,"i":{"x":[1,1,1],"y":[1,1,1]},"o":{"x":[0,0,0],"y":[0,0,0]}}],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"k":[{"s":[4],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ir":{"k":[{"s":[30],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"is":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"or":{"k":[{"s":[34.237],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.107],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.524],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.886],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.418],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.45],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.592],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.903],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.593],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.45],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.418],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.694],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30.098],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.681],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.055],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.542],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.458],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.364],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.146],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.237],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"os":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ix":1,"nm":"LineForCurve","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"tm","s":{"k":[{"s":[0.01],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.01],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"e":{"k":[{"s":[24.99],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.99],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[-90],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-90],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"m":1,"ix":2,"nm":"Line Halfer","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"a":{"k":[{"s":[-34.237,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.107,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-24.524,0],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.886,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.418,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.45,0],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.592,0],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.903,0],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.593,0],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.45,0],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.418,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.694,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-30.098,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-23.681,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.055,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.542,0],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.458,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.364,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.146,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.237,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"s":{"k":[{"s":[-100,100],"t":0,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}},{"s":[-100,100],"t":20,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}}]},"r":{"k":[{"s":[84.81],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.487],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.783],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-27.715],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.444],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.558],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.322],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.882],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.332],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.556],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.444],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.336],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.67],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.682],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.22],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.836],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.365],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.994],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.074],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.868],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.81],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"sk":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"sa":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"nm":"Transform"}],"nm":"Arc","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[19],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[19],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"k":[{"s":[257,375.694],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[272.158,360.89],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[304.929,323.777],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[333.758,276.805],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.5,249],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.546,247.998],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.662,245.501],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.812,242.247],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.662,245.492],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.546,247.999],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.5,249],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[337.044,252.445],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[330.381,261.815],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[320.59,275.659],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[308.722,292.533],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[295.839,310.98],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[283.016,329.554],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[271.317,346.829],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[261.825,361.378],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[255.77,371.941],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[257,375.694],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"BaseHose","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","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":"Style","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"gr","it":[{"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":"Hose 1::Ankle","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[135,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":"A","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[200,200],"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":"Hose 1::Hip","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","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":"B","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"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":"2.07","np":0,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false,"cl":"07"},{"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":"Version","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"sr","sy":1,"d":1,"pt":{"k":[{"s":[4],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[4],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"r":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ir":{"k":[{"s":[30],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"is":{"k":[{"s":[100],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[100],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"or":{"k":[{"s":[34.237],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[28.107],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.524],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[33.886],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.418],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.45],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.592],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.903],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.593],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.45],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[36.418],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.694],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[30.098],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[23.681],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[17.055],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[13.542],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[16.458],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[29.364],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.146],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[34.237],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"os":{"k":[{"s":[0],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"ix":1,"nm":"LineForCurve","mn":"ADBE Vector Shape - Star","hd":false},{"ty":"tm","s":{"k":[{"s":[0.01],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.01],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"e":{"k":[{"s":[24.99],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[24.99],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"k":[{"s":[-90],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-90],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"m":1,"ix":2,"nm":"Line Halfer","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tr","p":{"k":[{"s":[0,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[0,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"a":{"k":[{"s":[-34.237,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-28.107,0],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-24.524,0],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-33.886,0],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.418,0],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.45,0],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.592,0],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.903,0],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.593,0],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.45,0],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-36.418,0],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.694,0],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-30.098,0],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-23.681,0],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-17.055,0],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-13.542,0],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-16.458,0],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-29.364,0],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.146,0],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[-34.237,0],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"s":{"k":[{"s":[-100,100],"t":0,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}},{"s":[-100,100],"t":20,"i":{"x":[1,1],"y":[1,1]},"o":{"x":[0,0],"y":[0,0]}}]},"r":{"k":[{"s":[84.81],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[68.487],"t":1,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[15.783],"t":2,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-27.715],"t":3,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.444],"t":4,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.558],"t":5,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.322],"t":6,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-51.882],"t":7,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-48.332],"t":8,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-45.556],"t":9,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-44.444],"t":10,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-43.336],"t":11,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-39.67],"t":12,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-31.682],"t":13,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[-14.22],"t":14,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[20.836],"t":15,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[57.365],"t":16,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[75.994],"t":17,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.074],"t":18,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[86.868],"t":19,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[84.81],"t":20,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"ArcMath","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"k":[{"s":[257,375.694],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[272.158,360.89],"t":1,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[304.929,323.777],"t":2,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[333.758,276.805],"t":3,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.5,249],"t":4,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.546,247.998],"t":5,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.662,245.501],"t":6,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.812,242.247],"t":7,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.662,245.492],"t":8,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.546,247.999],"t":9,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[339.5,249],"t":10,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[337.044,252.445],"t":11,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[330.381,261.815],"t":12,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[320.59,275.659],"t":13,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[308.722,292.533],"t":14,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[295.839,310.98],"t":15,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[283.016,329.554],"t":16,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[271.317,346.829],"t":17,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[261.825,361.378],"t":18,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[255.77,371.941],"t":19,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[257,375.694],"t":20,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}]},"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":"Admin","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Body","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[256,256,0],"to":[0,-15,0],"ti":[0,15,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":4,"s":[256,166,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[256,166,0],"to":[0,15,0],"ti":[0,-15,0]},{"t":20,"s":[256,256,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[130.039,52.867],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":74,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,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":[-13.98,65.434],"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":"Body","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Neck","parent":9,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[-25]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[30.5,48,0],"ix":2,"l":2},"a":{"a":0,"k":[30.5,48,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[21.223,63.195],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":74,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,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":[30.611,29.598],"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":"Neck","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Head","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[18]},{"t":20,"s":[0]}],"ix":10},"p":{"a":0,"k":[30,5.5,0],"ix":2,"l":2},"a":{"a":0,"k":[30,8,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2.313,3.227],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.2196078431372549,0.2901960784313726,0.8274509803921568,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.2901960784313726,0.8274509803921568,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":[50.539,7.052],"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":"Ellipse 1","np":3,"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],[0,0],[-7.886,10.149],[0,0]],"o":[[0,0],[0,0],[0,0],[4.335,-5.58],[0,0]],"v":[[29,-0.5],[29,29],[71.5,29],[89.386,18.851],[93.5,-0.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0,0,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,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":[0.156,0.299],"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":"Head","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Square Solid","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[45]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[90]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[135]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[180]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[225]},{"t":60,"s":[270]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[256,276,0],"to":[0,-8.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":10,"s":[256,224,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":20,"s":[256,276,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":30,"s":[256,224,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":40,"s":[256,276,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":50,"s":[256,224,0],"to":[0,0,0],"ti":[0,-8.667,0]},{"t":60,"s":[256,276,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[242.574,242.574],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":8,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","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":"Rectangle 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2196078431372549,0.2901960784313726,0.8274509803921568,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":21,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Square","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[45]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[90]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[135]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[180]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[225]},{"t":60,"s":[270]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[256,276,0],"to":[0,-8.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":10,"s":[256,224,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":20,"s":[256,276,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":30,"s":[256,224,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":40,"s":[256,276,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":50,"s":[256,224,0],"to":[0,0,0],"ti":[0,-8.667,0]},{"t":60,"s":[256,276,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[255.574,255.574],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":14,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.2196078431372549,0.2901960784313726,0.8274509803921568,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":8,"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":"Rectangle 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":21,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/logo_loader.json b/app/src/main/assets/lottie/logo_loader.json new file mode 100644 index 0000000..8613365 --- /dev/null +++ b/app/src/main/assets/lottie/logo_loader.json @@ -0,0 +1 @@ +{"v":"5.5.7","meta":{"g":"LottieFiles AE 0.1.21","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":50,"w":600,"h":600,"nm":"Infinity","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Path 2c","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-39.09,0],[0,42.016]],"o":[[22.67,22.309],[42.017,0],[0,-43.441]],"v":[[25.726,26.124],[115.7,76.199],[191.899,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":28,"s":[30]},{"t":33,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[30]},{"t":32,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.6,1,0.941176470588,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[30]},{"t":33,"s":[25]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"Path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Path 2b","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":26,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":38,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[-42.016,0],[-22.67,-22.309],[0,0],[-39.09,0],[0,42.016],[42.329,0]],"o":[[-42.329,0],[0,-42.017],[39.088,0],[0,0],[22.67,22.309],[42.017,0],[0,-43.441],[0,0]],"v":[[-117.649,76.199],[-191.899,0],[-115.699,-76.199],[-25.728,-26.127],[25.726,26.124],[115.7,76.199],[191.899,0],[117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[30]},{"t":39,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[30]},{"t":38,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.4,0.944999964097,0.882000014361,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[30]},{"t":38,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"Path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Path 2a","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":36,"s":[100]},{"t":41,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[-42.016,0],[-22.67,-22.309],[0,0],[-39.09,0],[0,42.016],[42.329,0]],"o":[[-42.329,0],[0,-42.017],[39.088,0],[0,0],[22.67,22.309],[42.017,0],[0,-43.441],[0,0]],"v":[[-117.649,76.199],[-191.899,0],[-115.699,-76.199],[-25.728,-26.127],[25.726,26.124],[115.7,76.199],[191.899,0],[117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[30]},{"t":41,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[30]},{"t":38,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058823529,0.658823529412,0.674509803922,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":23,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":31,"s":[25]},{"t":37,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"Path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Path 1d","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":5,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[100]},{"t":24,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[42.016,0],[22.67,-22.309],[0,0],[39.09,0],[0,42.016],[-42.329,0]],"o":[[42.329,0],[0,-42.017],[-39.088,0],[0,0],[-22.67,22.309],[-42.017,0],[0,-43.441],[0,0]],"v":[[117.649,76.199],[191.899,0],[115.699,-76.199],[25.728,-26.127],[-25.726,26.124],[-115.7,76.199],[-191.899,0],[-117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[30]},{"t":24,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[30]},{"t":21,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.486274509804,0.329411764706,0.925490196078,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[30]},{"t":20,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Path 1c","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":19,"s":[100]},{"t":25,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[42.016,0],[22.67,-22.309],[0,0],[39.09,0],[0,42.016],[-42.329,0]],"o":[[42.329,0],[0,-42.017],[-39.088,0],[0,0],[-22.67,22.309],[-42.017,0],[0,-43.441],[0,0]],"v":[[117.649,76.199],[191.899,0],[115.699,-76.199],[25.728,-26.127],[-25.726,26.124],[-115.7,76.199],[-191.899,0],[-117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7,"s":[30]},{"t":25,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":2,"s":[30]},{"t":22,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.388235294118,0.490196078431,0.921568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[30]},{"t":20,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Path 1b","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100]},{"t":26,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[42.016,0],[22.67,-22.309],[0,0],[39.09,0],[0,42.016],[-42.329,0]],"o":[[42.329,0],[0,-42.017],[-39.088,0],[0,0],[-22.67,22.309],[-42.017,0],[0,-43.441],[0,0]],"v":[[117.649,76.199],[191.899,0],[115.699,-76.199],[25.728,-26.127],[-25.726,26.124],[-115.7,76.199],[-191.899,0],[-117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":8,"s":[30]},{"t":26,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[30]},{"t":23,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.682352941176,0.866666666667,0.976470588235,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":2,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[30]},{"t":20,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Path 1a","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100]},{"t":25,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[300,300,0],"ix":2},"a":{"a":0,"k":[266.899,151.199,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,43.44],[42.016,0],[22.67,-22.309],[0,0],[39.09,0],[0,42.016],[-42.329,0]],"o":[[42.329,0],[0,-42.017],[-39.088,0],[0,0],[-22.67,22.309],[-42.017,0],[0,-43.441],[0,0]],"v":[[117.649,76.199],[191.899,0],[115.699,-76.199],[25.728,-26.127],[-25.726,26.124],[-115.7,76.199],[-191.899,0],[-117.649,-76.199]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":18,"s":[30]},{"t":25,"s":[100]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[30]},{"t":21,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.321568627451,0.176470588235,0.501960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[25]},{"t":20,"s":[5]}],"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[266.899,151.199],"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":"path","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":50,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/map_lowpower.json b/app/src/main/assets/lottie/map_lowpower.json new file mode 100644 index 0000000..3ac78c5 --- /dev/null +++ b/app/src/main/assets/lottie/map_lowpower.json @@ -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":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/pic_map_lost.json b/app/src/main/assets/lottie/pic_map_lost.json new file mode 100644 index 0000000..67c4160 --- /dev/null +++ b/app/src/main/assets/lottie/pic_map_lost.json @@ -0,0 +1 @@ +{"v":"5.4.4","fr":30,"ip":0,"op":90,"w":100,"h":100,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Adjustment Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2},"a":{"a":0,"k":[250,250,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100],"e":[26,26,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6.333,"s":[26,26,100],"e":[20,20,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":11.833,"s":[20,20,100],"e":[24,24,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16.418,"s":[24,24,100],"e":[22,22,100]},{"t":19.1675007807083}],"ix":6}},"ao":0,"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"stroke","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":48,"s":[0],"e":[-4]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50.25,"s":[-4],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52.5,"s":[3],"e":[-2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":54.75,"s":[-2],"e":[4]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":57,"s":[4],"e":[0]},{"t":60.0000024438501}],"ix":10},"p":{"a":0,"k":[258.75,237,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[110,110,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.104,12.304],[0,0],[0,0],[-7.104,-12.304],[0,0],[0,0],[14.207,0]],"o":[[0,0],[-14.207,0],[0,0],[0,0],[7.104,-12.304],[0,0],[0,0],[7.104,12.304],[0,0]],"v":[[0,105.676],[-98.937,105.676],[-114.92,77.992],[-65.452,-7.69],[-15.983,-93.372],[15.983,-93.372],[65.452,-7.69],[114.921,77.992],[98.937,105.676]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":14,"ix":5},"lc":1,"lj":1,"ml":4,"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":"Shape 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[258.75,268.805,0],"e":[258.75,283.75,0],"to":[0,2.491,0],"ti":[0,-2.491,0]},{"t":23.0000009368092}],"ix":2},"a":{"a":0,"k":[16,38,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":16,"s":[91.667,0,100],"e":[91.667,99,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":23.555,"s":[91.667,99,100],"e":[91.667,93.5,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":29.223,"s":[91.667,93.5,100],"e":[91.667,91.63,100]},{"t":33.0000013441176}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-8.284,0],[0,-8.284],[8.284,0],[0,8.284]],"o":[[8.284,0],[0,8.284],[-8.284,0],[0,-8.284]],"v":[[0,-15],[15,0],[0,15],[-15,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,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":[16,53],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[258.75,271.1,0],"ix":2},"a":{"a":0,"k":[0,76.865,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":18,"s":[50.417,0,100],"e":[50.417,55,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":22,"s":[50.417,55,100],"e":[50.417,47.3,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":26,"s":[50.417,47.3,100],"e":[50.417,50.38,100]},{"t":30.0000012219251}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.327,29.458],[0,0],[2.522,-56],[-6.482,-25.766],[-4.199,16.689]],"o":[[-2.522,-56],[0,0],[-1.327,29.458],[4.199,16.689],[6.482,-25.766]],"v":[[23.327,-25.037],[0,-78.037],[-23.327,-25.037],[-11.647,64.349],[11.647,64.349]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,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":[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":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"body","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":27,"s":[0],"e":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":29.728,"s":[5],"e":[-3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32.455,"s":[-3],"e":[2]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":35.183,"s":[2],"e":[-5]},{"i":{"x":[0.4],"y":[0.4]},"o":{"x":[0.333],"y":[0]},"t":37.91,"s":[-5],"e":[0]},{"t":42.0000017106951}],"ix":10},"p":{"a":0,"k":[249.583,248.917,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[110,110,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.104,12.304],[0,0],[0,0],[-7.104,-12.304],[0,0],[0,0],[14.207,0]],"o":[[0,0],[-14.207,0],[0,0],[0,0],[7.104,-12.304],[0,0],[0,0],[7.104,12.304],[0,0]],"v":[[0,105.676],[-98.937,105.676],[-114.92,77.992],[-65.452,-7.69],[-15.983,-93.372],[15.983,-93.372],[65.452,-7.69],[114.921,77.992],[98.937,105.676]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,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":[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":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":900.000036657751,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/pic_map_nosignal.json b/app/src/main/assets/lottie/pic_map_nosignal.json new file mode 100644 index 0000000..1eae40c --- /dev/null +++ b/app/src/main/assets/lottie/pic_map_nosignal.json @@ -0,0 +1 @@ +{"v":"5.5.8","fr":30,"ip":0,"op":120,"w":100,"h":100,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Layer 85","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[64.47600000000001,75.76300000000002,0],"ix":2},"a":{"a":0,"k":[43.428,77.289,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.32,0.32,0.32],"y":[1.27,1.27,1]},"o":{"x":[0.54,0.54,0.54],"y":[0,0,0]},"t":41,"s":[0,0,100]},{"t":61,"s":[33.33333333333334,33.33333333333334,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.031],[5.031,0],[0,5.031],[-5.031,0]],"o":[[0,5.031],[-5.031,0],[0,-5.031],[5.031,0]],"v":[[52.734,51.625],[43.625,60.734],[34.516,51.625],[43.625,42.516]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,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":[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 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":[[43,-2],[43,29]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":16,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,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":[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":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-37.435,79],[43.428,-52.423],[124.292,79]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":16,"ix":5},"lc":1,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,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":[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 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":41,"op":201,"st":21,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Isolation Mode 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[37.21300000000001,45.867666666666686,0],"ix":2},"a":{"a":0,"k":[-38.361,-12.397,0],"ix":1},"s":{"a":0,"k":[33.33333333333334,33.33333333333334,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-80.779]],"o":[[80.779,0],[0,0]],"v":[[-111.492,-85.529],[34.771,60.734]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":1,"ml":10,"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 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":29,"s":[0]},{"t":49,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim In Path","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":29,"op":189,"st":9,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Isolation Mode 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[31.03933333333334,52.04133333333335,0],"ix":2},"a":{"a":0,"k":[-56.882,6.124,0],"ix":1},"s":{"a":0,"k":[33.33333333333334,33.33333333333334,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-60.321]],"o":[[60.321,0],[0,0]],"v":[[-111.492,-48.487],[-2.272,60.734]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":1,"ml":10,"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 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":25,"s":[0]},{"t":45,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim In Path","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":25,"op":185,"st":5,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Isolation Mode","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[25.122000000000007,60.75800000000002,0],"ix":2},"a":{"a":0,"k":[-74.634,32.274,0],"ix":1},"s":{"a":0,"k":[33.33333333333334,33.33333333333334,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-40.465],[0,0]],"o":[[40.465,0],[0,0],[0,0]],"v":[[-111.268,-12.451],[-38,60.734],[-38,77]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":18,"ix":5},"lc":2,"lj":1,"ml":10,"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 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.5],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"t":40,"s":[100]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim In Path","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":20,"op":180,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[16.575000000000006,66.50566666666668,0],"ix":2},"a":{"a":0,"k":[-100.275,49.517,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.32,0.32,0.32],"y":[1,1,1]},"o":{"x":[0.17,0.17,0.17],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":20,"s":[33.33333333333334,33.33333333333334,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-15.604],[15.604,0],[0,15.604],[-15.604,0]],"o":[[0,15.604],[-15.604,0],[0,-15.604],[15.604,0]],"v":[[-72.021,49.517],[-100.275,77.771],[-128.529,49.517],[-100.275,21.263]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.8274509803921568,1,0.3254901960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":12,"ix":5},"lc":1,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.07058823529411765,0.09803921568627451,0.11372549019607843,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":[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 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/searching_tracker.json b/app/src/main/assets/lottie/searching_tracker.json new file mode 100644 index 0000000..35eafb1 --- /dev/null +++ b/app/src/main/assets/lottie/searching_tracker.json @@ -0,0 +1 @@ +{"v":"5.4.4","fr":30,"ip":0,"op":61,"w":400,"h":400,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 18","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":60,"s":[50,50],"e":[400,400]},{"t":120}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[100],"e":[0]},{"t":120}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":60,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":90,"s":[3],"e":[0]},{"t":120}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":121,"st":60,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 17","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":50,"s":[50,50],"e":[400,400]},{"t":110}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":50,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[100],"e":[0]},{"t":110}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":50,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":80,"s":[3],"e":[0]},{"t":110}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":50,"op":111,"st":50,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 16","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":40,"s":[50,50],"e":[400,400]},{"t":100}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":40,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[100],"e":[0]},{"t":100}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":40,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":70,"s":[3],"e":[0]},{"t":100}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":101,"st":40,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 15","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":30,"s":[50,50],"e":[400,400]},{"t":90}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":30,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[100],"e":[0]},{"t":90}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":30,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[3],"e":[0]},{"t":90}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":91,"st":30,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 14","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":20,"s":[50,50],"e":[400,400]},{"t":80}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":20,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[100],"e":[0]},{"t":80}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":20,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":50,"s":[3],"e":[0]},{"t":80}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":81,"st":20,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 13","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":10,"s":[50,50],"e":[400,400]},{"t":70}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":10,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[100],"e":[0]},{"t":70}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":10,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[3],"e":[0]},{"t":70}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":71,"st":10,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Shape Layer 12","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":0,"s":[50,50],"e":[400,400]},{"t":60}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[100],"e":[0]},{"t":60}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":30,"s":[3],"e":[0]},{"t":60}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Shape Layer 11","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":-10,"s":[50,50],"e":[400,400]},{"t":50}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-10,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[100],"e":[0]},{"t":50}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-10,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20,"s":[3],"e":[0]},{"t":50}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-10,"op":51,"st":-10,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Shape Layer 10","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":-20,"s":[50,50],"e":[400,400]},{"t":40}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-20,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[100],"e":[0]},{"t":40}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-20,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10,"s":[3],"e":[0]},{"t":40}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-20,"op":41,"st":-20,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Shape Layer 9","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":-30,"s":[50,50],"e":[400,400]},{"t":30}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-30,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[100],"e":[0]},{"t":30}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-30,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[3],"e":[0]},{"t":30}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-30,"op":31,"st":-30,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Shape Layer 8","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":-40,"s":[50,50],"e":[400,400]},{"t":20}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-40,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-10,"s":[100],"e":[0]},{"t":20}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-40,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-10,"s":[3],"e":[0]},{"t":20}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-40,"op":21,"st":-40,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":80,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200.063,200,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0,0]},"t":-50,"s":[50,50],"e":[400,400]},{"t":10}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529422283,0.823529422283,0.823529422283,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-50,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-20,"s":[100],"e":[0]},{"t":10}],"ix":4,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":-50,"s":[0],"e":[3]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-20,"s":[3],"e":[0]},{"t":10}],"ix":5,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"lc":1,"lj":1,"ml":4,"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-50,"op":11,"st":-50,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.426},"o":{"x":0.333,"y":0},"t":0,"s":[200,190,0],"e":[210,200,0],"to":[5.523,0,0],"ti":[0,-5.523,0]},{"i":{"x":0.667,"y":0.653},"o":{"x":0.333,"y":0.305},"t":19.581,"s":[210,200,0],"e":[200,210,0],"to":[0,5.523,0],"ti":[5.523,0,0]},{"i":{"x":0.667,"y":0.695},"o":{"x":0.333,"y":0.347},"t":30,"s":[200,210,0],"e":[190,200,0],"to":[-5.523,0,0],"ti":[0,5.523,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.574},"t":40.419,"s":[190,200,0],"e":[200,190,0],"to":[0,-5.523,0],"ti":[-5.523,0,0]},{"t":60}],"ix":2,"x":"var $bm_rt;\n$bm_rt = loopOut('cycle', 0);"},"a":{"a":0,"k":[-3.25,-7.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[29,29],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529481888,0.823529481888,0.823529481888,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.25,-7.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":"Ellipse 2","np":3,"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":[[9.75,10.5],[21.25,22.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.823529481888,0.823529481888,0.823529481888,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.25,-7.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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/app/src/main/assets/lottie/success_anim.json b/app/src/main/assets/lottie/success_anim.json new file mode 100644 index 0000000..33fbb5d --- /dev/null +++ b/app/src/main/assets/lottie/success_anim.json @@ -0,0 +1 @@ +{"v": "5.5.7", "meta": {"g": "LottieFiles AE 0.1.21", "a": "", "k": "", "d": "", "tc": ""}, "fr": 29.9700012207031, "ip": 0, "op": 60.0000024438501, "w": 120, "h": 120, "nm": "sucess", "ddd": 0, "assets": [], "layers": [{"ddd": 0, "ind": 1, "ty": 3, "nm": "scale up null", "sr": 1, "ks": {"o": {"a": 0, "k": 0, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [60, 60, 0], "ix": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1}, "s": {"a": 1, "k": [{"i": {"x": [0.833, 0.833, 0.833], "y": [1, 1, 1]}, "o": {"x": [0.167, 0.167, 0.167], "y": [0, 0, 0]}, "t": 27, "s": [111, 111, 100]}, {"i": {"x": [0.833, 0.833, 0.833], "y": [1, 1, 1]}, "o": {"x": [0.167, 0.167, 0.167], "y": [0, 0, 0]}, "t": 36, "s": [101, 101, 100]}, {"t": 42.0000017106951, "s": [121, 121, 100]}], "ix": 6}}, "ao": 0, "ip": 0, "op": 300.00001221925, "st": 0, "bm": 0}, {"ddd": 0, "ind": 2, "ty": 4, "nm": "spark", "parent": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [0, 0.5, 0], "ix": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6}}, "ao": 0, "shapes": [{"ty": "gr", "it": [{"ty": "rc", "d": 1, "s": {"a": 1, "k": [{"i": {"x": [0.667, 0.667], "y": [1, 1]}, "o": {"x": [0.333, 0.976], "y": [0, 0]}, "t": 35, "s": [2, 0]}, {"i": {"x": [0.667, 0.13], "y": [1, 1]}, "o": {"x": [0.333, 0.333], "y": [0, 0]}, "t": 42, "s": [2, 8]}, {"t": 53.0000021587343, "s": [1.633, 0]}], "ix": 2}, "p": {"a": 1, "k": [{"i": {"x": 0.667, "y": 1}, "o": {"x": 0.333, "y": 0}, "t": 35, "s": [0, -21], "to": [0, -1.5], "ti": [0, 1.5]}, {"t": 53.0000021587343, "s": [0, -30]}], "ix": 3}, "r": {"a": 0, "k": 0, "ix": 4}, "nm": "Rectangle Path 1", "mn": "ADBE Vector Shape - Rect", "hd": false}, {"ty": "fl", "c": {"a": 0, "k": [0.258823529412, 0.878431432387, 0.541176470588, 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": [0, -8], "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": "Rectangle 1", "np": 3, "cix": 2, "bm": 0, "ix": 1, "mn": "ADBE Vector Group", "hd": false}, {"ty": "rp", "c": {"a": 0, "k": 8, "ix": 1}, "o": {"a": 0, "k": 0, "ix": 2}, "m": 1, "ix": 2, "tr": {"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": 45, "ix": 4}, "so": {"a": 0, "k": 100, "ix": 5}, "eo": {"a": 0, "k": 100, "ix": 6}, "nm": "Transform"}, "nm": "Repeater 1", "mn": "ADBE Vector Filter - Repeater", "hd": false}], "ip": 35.0000014255792, "op": 335.00001364483, "st": 35.0000014255792, "bm": 0}, {"ddd": 0, "ind": 3, "ty": 4, "nm": "check", "parent": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [0, 0, 0], "ix": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6}}, "ao": 0, "shapes": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[0, 0], [0, 0], [3.5, 3.75], [-12.973, 5.349], [-6.124, -9.992], [12.125, -7.431], [7.431, 12.125]], "o": [[0, 0], [0, 0], [-3.5, -3.75], [10.764, -2.941], [7.431, 12.125], [-12.125, 7.431], [-7.431, -12.125]], "v": [[15.25, -9.688], [-5.75, 10.062], [-16, 0.25], [-6.777, -24.849], [21.955, -13.456], [13.456, 21.955], [-21.955, 13.456]], "c": false}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "tm", "s": {"a": 1, "k": [{"i": {"x": [0.363], "y": [1]}, "o": {"x": [0.742], "y": [0]}, "t": 17, "s": [100]}, {"t": 45.0000018328876, "s": [0]}], "ix": 1}, "e": {"a": 1, "k": [{"i": {"x": [0.351], "y": [1]}, "o": {"x": [0.714], "y": [0]}, "t": 10, "s": [100]}, {"t": 40.0000016292334, "s": [23]}], "ix": 2}, "o": {"a": 0, "k": 0, "ix": 3}, "m": 1, "ix": 2, "nm": "Trim Paths 1", "mn": "ADBE Vector Filter - Trim", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [0.260781411564, 0.878829656863, 0.541459326651, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 4, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}], "ip": 22.0000008960784, "op": 310.000012626559, "st": 10.0000004073083, "bm": 0}, {"ddd": 0, "ind": 4, "ty": 4, "nm": "circle", "parent": 1, "sr": 1, "ks": {"o": {"a": 0, "k": 100, "ix": 11}, "r": {"a": 0, "k": 0, "ix": 10}, "p": {"a": 0, "k": [0, 0, 0], "ix": 2}, "a": {"a": 0, "k": [0, 0, 0], "ix": 1}, "s": {"a": 0, "k": [100, 100, 100], "ix": 6}}, "ao": 0, "shapes": [{"ind": 0, "ty": "sh", "ix": 1, "ks": {"a": 0, "k": {"i": [[-14.221, 0], [0, -14.221], [14.221, 0], [0, 14.221]], "o": [[14.221, 0], [0, 14.221], [-14.221, 0], [0, -14.221]], "v": [[0, -25.75], [25.75, 0], [0, 25.75], [-25.75, 0]], "c": true}, "ix": 2}, "nm": "Path 1", "mn": "ADBE Vector Shape - Group", "hd": false}, {"ty": "st", "c": {"a": 0, "k": [0.260781411564, 0.878829656863, 0.541459326651, 1], "ix": 3}, "o": {"a": 0, "k": 100, "ix": 4}, "w": {"a": 0, "k": 4, "ix": 5}, "lc": 1, "lj": 1, "ml": 4, "bm": 0, "nm": "Stroke 1", "mn": "ADBE Vector Graphic - Stroke", "hd": false}, {"ty": "tm", "s": {"a": 1, "k": [{"i": {"x": [0.363], "y": [1]}, "o": {"x": [0.742], "y": [0]}, "t": 7, "s": [100]}, {"t": 33.0000013441176, "s": [0]}], "ix": 1}, "e": {"a": 1, "k": [{"i": {"x": [0.351], "y": [1]}, "o": {"x": [0.714], "y": [0]}, "t": 0, "s": [100]}, {"t": 30.0000012219251, "s": [100]}], "ix": 2}, "o": {"a": 0, "k": 0, "ix": 3}, "m": 1, "ix": 3, "nm": "Trim Paths 1", "mn": "ADBE Vector Filter - Trim", "hd": false}], "ip": 0, "op": 300.00001221925, "st": 0, "bm": 0}], "markers": []} \ No newline at end of file diff --git a/app/src/main/assets/privacy_cn.html b/app/src/main/assets/privacy_cn.html new file mode 100644 index 0000000..886b6a9 --- /dev/null +++ b/app/src/main/assets/privacy_cn.html @@ -0,0 +1,469 @@ +

+ +

±¾Òþ˽Õþ²ßÃèÊöÁËÉîÛÚÕܶúÉúÃü¿Æ¼¼ÓÐÏÞ¹«Ë¾£¨ÏÂÎļò³ÆÎª¡°ÕܶúÉúÃü¿Æ¼¼¡°»ò¡°±¾¹«Ë¾¡±»ò¡°ÎÒÃÇ¡±)£¬ÈçºÎÀûÓöàÖÖÊý×Ö·½Ê½ÊÕ¼¯ºÍʹÓÃËùÓÐͨ¹ýÆäƽ̨Ìá½»µÄÓû§ÐÅÏ¢ºÍ£¯»òÊý¾Ý£¬¼°Æä²úÆ·²É¼¯µÄÓû§ÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£ÕܶúÉúÃü¿Æ¼¼½«È·±£×ñÊØÑϸñµÄ°²È«±£Ãܱê×¼£¬²»¾­Óû§Í¬Ò⣬ÕܶúÉúÃü¿Æ¼¼²»»áй¶ÈκθöÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý×ÊÁÏ£¬ÏÂÎĵÚ3µãËùÁС°µÚÈý·½ÊÚȨ¡±³ýÍâ¡£

+ +

±¾¹«Ë¾Ç¿ÁÒ½¨ÒéÓû§×ÐϸÔĶÁ±¾Òþ˽Õþ²ßÒÔ±ãÁ˽Ȿ¹«Ë¾¶ÔÓÚÓû§ÔÚÕܶúÉúÃü¿Æ¼¼Æ½Ì¨ÉÏÌṩµÄ¸öÈËÐÅÏ¢£¯»òÊý¾Ý¼°Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼²úÆ·Éϱ¨µÄÐÅÏ¢ºÍ£¯»òÊý¾ÝµÄÏà¹ØÕþ²ßºÍʵ¼ÊÓ¦Óᣱ¾Òþ˽Õþ²ßÊÊÓÃÓÚ×¢²áºÍ·Ç×¢²áÓû§£¬²¢ÇÒµ±ÎÒÃÇÈÏΪ±ØÒªÊ±¿É²»¶¨ÆÚ¸üС¢ÐÞ¶©¡¢¸ü¸ÄÏà¹ØÌõ¿îÄÚÈÝ¡£¸ü¸ÄºóµÄ°æ±¾£¬Ò»¾­·¢²¼Á¢¼´ÉúЧ¡£Èç¹ûÓû§¶Ô±¾Òþ˽Õþ²ßÓÐÈκÎÒÉÎÊ»ò¹ËÂÇ£¬¿ÉÖµçÕܶúÉúÃü¿Æ¼¼½øÐÐ×Éѯ£¬µç»°£º0755-86352225¡£

+ +

Èç¹ûÄú¶Ô±¾Òþ˽Õþ²ßµÄÌõ¿î´æÔÚÒìÒ飬ÇëÁ¢¼´Í£Ö¹Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£»Èç¹ûÄú¼ÌÐøÊ¹ÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£¬±íʾÄú½ÓÊܱ¾Òþ˽Õþ²ßËùÁи÷ÏîÌõ¿î¡£±¾Òþ˽Õþ²ß¹¹³É¡¶Ê¹ÓÃÌõ¿î¡·µÄÒ»²¿·Ö²¢ÊÜÆäÔ¼Êø¡£

+ +

ÕܶúÉúÃü¿Æ¼¼ÓÐȨÔÚÈκÎʱ¼äÐ޸ı¾Òþ˽Õþ²ß£¬²¢ÓÚ¹«²¼Ö®Ê±ÆðÉúЧ¡£

+ +

Ò»¡¢ÊÕ¼¯ÐÅÏ¢ºÍ£¯»òÊý¾Ý

+ +

(1£©ÕܶúÉúÃü¿Æ¼¼»áÊÕ¼¯²¢´æ´¢ÈκÎÓû§Ìṩ¸øÎÒÃÇ»òÔÊÐíÎÒÃÇʹÓõÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£¸ÃµÈÐÅÏ¢ºÍ£¯»òÊý¾Ý¿ÉÄܰüÀ¨µ«²»ÏÞÓÚ£¬Óû§Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼²úÆ·ËùÌá½»µÄÐÕÃû¡¢Ð¤Ïñ¡¢ÐÔ±ð¡¢ÉúÈÕ¡¢Éí¸ß¡¢ÌåÖØ¡¢ÊÖ»úºÅÂë¡¢µç×ÓÓÊÏ䵨ַ¡¢ÊµÌ嵨ַ¡¢ÁªÏµÈËÐÅÏ¢¡¢É罻ýÌåÐÅÏ¢¡¢ÓÐЧÉí·ÝÖ¤¼þºÅÂëºÍ¼ÒÍ¥³ÉÔ±¡¢³èÎï×ÊÁϵȸöÈË×ÊÁÏ£¬ÒÔ¼°ÒøÐп¨ºÍÖ§¸¶Æ½Ì¨µÈÏà¹Ø×ÊÁÏ£¨Èç±ØÒª£©¡£

+ +

(2£©ÕܶúÉúÃü¿Æ¼¼»á×Ô¶¯ÊÕ¼¯²¢´æ´¢Óû§ÓëÎÒÃǽøÐл¥¶¯»òʹÓÃÎÒÃǵķþÎñºÍ²úƷʱ²úÉúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£Óû§Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼·þÎñºÍ²úÆ·¿ÉÄܱ»²É¼¯µÄ£¬°üÀ¨µ«²»ÏÞÓÚÓ²¼þÐÅÏ¢¡¢ÏµÍ³ÀàÐÍ¡¢É豸ʶ±ð·û¡¢ IP µØÖ·¡¢ MAC µØÖ·¡¢µØÀí£¨ GPS £©Î»ÖᢻÊý¾Ý¡¢Ô˶¯Êý¾Ý¡¢ÐÐΪƫºÃ¡¢³èÎïÈÕ³£Êý¾Ý¡¢ÎÄ×Ö¡¢Í¼Æ¬¡¢Ó°Ïñ¡¢ÉùÒôµÈÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£

+ +

(3£©ÕܶúÉúÃü¿Æ¼¼»áÓëÆäËûÍøÕ¾¡¢Ã½Ì塢ƽ̨¡¢ÇþµÀ¡¢Òƶ¯Ó¦ÓÃÒÔ¼°ÆäËûÉÌÆ·»ò·þÎñ£¨¡°µÚÈý·½¡±)Á´½Ó»òºÏ×÷¡£ËùÓÐͨ¹ýÕܶúÉúÃü¿Æ¼¼Æ½Ì¨ºÍ²úÆ·ÓëµÚÈý·½£¨Î¢ÐÅ¡¢ÌÔ±¦¡¢¾©¶«µÈ£©½øÐл¥¶¯µÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¶¼¿ÉÄܱ»ÊÕ¼¯¡£ÎÒÃÇ¿ÉÄܽ«Äúͨ¹ýÕܶúÉúÃü¿Æ¼¼Æ½Ì¨Ìṩ¸øÎÒÃǵĻòÎÒÃÇÊÕ¼¯µÄÐÅÏ¢ºÍ£¯»òÊý¾Ý½øÐÐÕûºÏ£¬¿ÉÄܰüÀ¨µ«²»ÏÞÓÚ£¬À´×ÔÕܶúÉúÃü¿Æ¼¼µêÆÌ¡¢ÇþµÀ¡¢»î¶¯¡¢²úÆ·ºÍÓ¦ÓóÌÐòµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£´ËÀàÐÅÏ¢ºÍ£¯»òÊý¾Ý½«»á±»ÊÓΪ¸öÈË×ÊÁÏ£¬Ö»Òª´ËÀà×ÊÁϱ£³Ö¹ØÁªµÄ״̬¡£

+ +

(4£©²»Í¬¹ú¼Ò£¯µØÇø¿ÉÄܶÔÌØ¶¨Æ½Ì¨·þÎñÓÐÏàÓ¦ÄêÁäÏÞÖÆ£¬ÇëÄú×Ðϸ²éÔÄÄúËùÔÚ¹ú¼Ò£¯µØÇøµÄÏà¹Ø¹æ¶¨¡£Èç¹ûÄúδÂú18ÖÜË꣬ÄúÉùÃ÷²¢±£Ö¤ÄúÒÑÈ¡µÃÄú¼à»¤È˵ÄͬÒâʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·²¢Í¬Òâ±¾Òþ˽Õþ²ß¡£

+ +

¶þ¡¢Ê¹ÓÃÐÅÏ¢ºÍ£¯»òÊý¾Ý

+ +

ÕܶúÉúÃü¿Æ¼¼½«È·±£×ñÊØÑϸñµÄ°²È«±£Ãܱê×¼£¬ºÏ·¨Ê¹ÓÃÊÕ¼¯²¢´æ´¢µÄÐÅÏ¢ºÍ£¯»òÊý¾Ý£¬ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¿ÉÄܱ»Ê¹ÓÃÓÚ£º

+ +

(1£©ÎªÄúÌṩÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·¡£(2£©¸Ä½øºÍά»¤ÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·ÌåÑ飬°üÀ¨µ«²»ÏÞÓÚ·ÖÎöÓû§ÐÐΪºÍÇ÷ÊÆ¡£

+ +

(3)³öÓÚÕܶúÉúÃü¿Æ¼¼µÄ·þÎñ¡¢²úÆ·ºÍ»î¶¯ÒÔ¼°ÆäËû´ÙÏúÄ¿µÄÓëÄú½øÐйµÍ¨¡£

+ +

(4£©¸ù¾ÝÄúµÄÐí¿É£¬ÏòÄúÌṩ´ÙÏú¡¢²úÆ··¢²¼»î¶¯¡¢Îʾíµ÷²éºÍÆäËûÐÅÏ¢¡£

+ +

(5£©Í³¼ÆÐÅÏ¢ºÍ£¯»òÊý¾Ý²¢·ÖÎö·þÎñºÍ²úƷʹÓÃÇé¿öÒÔ¹©±¾¹«Ë¾»ò¹ØÁª¹«Ë¾£¨Óë±¾¹«Ë¾´æÔÚÖ±½Ó»ò¼ä½Ó¿ØÖƹØÏµ»òÖØ´óÓ°Ïì¹ØÏµµÄÆóÒµ£©ÄÚ²¿Ê¹Óá£

+ +

Èý¡¢µÚÈý·½ÊÚȨ

+ +

Ò»°ãÀ´Ëµ£¬ÎÒÃÇÈÏΪ±ØÒªÒÔά³ÖºÍ¸ÄÉÆÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£¬»á½«ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾ÝÌṩ¸øÕܶúÉúÃü¿Æ¼¼¼°Æä¹ØÁª¹«Ë¾ÄÚ²¿Ô±¹¤ÒÔ±ãΪÓû§Ìṩ·þÎñ¡£È»¶ø£¬ÔÚÏÂÁÐÇé¿öÏ£¬ÎÒÃÇ¿ÉÄܻὫÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý´«µÝ¸øµÚÈý·½£º

+ +

(1£©ÔÚ±£ÃܵÄÇé¿öÏ£¬ÎÒÃÇ¿ÉÄܻὫÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾ÝÅû¶ºÍ£¯»òתÈÃÓèÈκα¾¹«Ë¾ÊÚȨµÄµÚÈý·½¹©Ó¦ÉÌ»òÍⲿ¹©Ó¦ÉÌ£¬ÒÔ´Ù½øÇþµÀËùÌṩµÄ·þÎñ£¬ÆäÖÐһЩ¹«Ë¾¿ÉÄÜÔÚµÚÈý¹ú£¨¼´³ýÁËÄúËùÊô¹ú¼ÒºÍÖйúÖ®ÍâµÄ¹ú¼Ò£¯µØÇø£©Äú֪Ϥ²¢Í¬Ò⣬µÚÈý¹úµÄÊý¾Ý±£»¤·¨ÂÉ¿ÉÄܲ»·ûºÏÅ·ÃË¡¶Ò»°ãÊý¾Ý±£»¤·¨¡·¡£

+ +

(2£©ÎÒÃÇ¿ÉÄܽ«ÄúµÄÐÅÏ¢´«ÊäÖÁÕܶúÉúÃü¿Æ¼¼µÄ·þÎñÌṩÉÌÒԱ㿪չÎÒÃǵÄÒµÎñ£¬µ±ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾ÝÅû¶ºÍ£¯»òתÈÃÓèÕܶúÉúÃü¿Æ¼¼ÊÚȨµÄÈκδúÀíÈË»ò¹ØÁª¹«Ë¾£¬¾­±¾¹«Ë¾ÊÚȨʹÓøõÈ×ÊÁϺͣ¯»òÊý¾Ý¡£ËûÃǽö¿É·ÃÎÊËûÃÇÍê³ÉÆä¹¦ÄÜËù±ØÐëµÄ¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý£¬ÇÒ²»ÄÜΪÆäËûÄ¿µÄ¶øÊ¹Óá£

+ +

(3£©ÎÒÃÇ¿ÉÄÜ»á¸ù¾ÝÓйÜϽȨµÄ˾·¨²¿ÃŵÄÃüÁî¡¢×ñÕÕ·¨ÂÉÒªÇó£¬ÎªÖ´ÐÐÎÒÃǵÄÕþ²ß»òΪ±£»¤ÎÒÃÇ»òÆäËûÈ˵ÄȨÀû¡¢²Æ²úºÍ£¯»ò°²È«¶øÅû¶ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£ÎÒÃÇ¿ÉÄܹ²ÏíÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾ÝÒÔ×èÖ¹·Ç·¨Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·¡¢Î¥·´¡¶Ê¹ÓÃÌõ¿î¡·µÄÐÐΪ£¬»òÕë¶ÔµÚÈý·½ËßËϽøÐз¨ÂÉ¿¹±ç¡£

+ +

(4£©ÎÒÃÇ¿ÉÄÜÓëÆäËû°ïÖúÎÒÃǽøÐз´ÆÛÕ©»òµ÷²éµÄÒÀ·¨ÉèÁ¢ÇÒÒÀ·¨¾ßÓÐÐÅÏ¢¡¢Êý¾ÝÊÕ¼¯ºÍµ÷²éְȨµÄÐÐÕþ¡¢Ë¾·¨»ú¹Ø¹²ÏíÐÅÏ¢£¬°üÀ¨µ«²»ÏÞÓÚ˾·¨³ÌÐò¡¢·¨ÔºÃüÁî»òÇþµÀÉϵķ¨ÂɳÌÐò£¬ÇÒÓбØÒªÌṩ¡£

+ +

(5£©ÎÒÃÇͨ¹ýÕܶúÉúÃü¿Æ¼¼·þÎñºÍ²úÆ·ËùÊÕ¼¯µÄ¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý¿ÉÒÔÔÚÕܶúÉúÃü¿Æ¼¼¼°Æä¹ØÁª¹«Ë¾Ö®¼ä×ªÒÆ»ò´¢´æ¡£Èç¹ûÄúʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£¬½«ÊÓΪͬÒâ²¢ÊÚȨÕܶúÉúÃü¿Æ¼¼ÔÚÉÏÊöÇé¿öÏÂÅû¶ºÍ×ªÔØÄúµÄ¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£

+ +

(6£©ÄúµÄÐÅÏ¢¿ÉÄÜ×÷ΪÕܶúÉúÃü¿Æ¼¼È«²¿»ò²¿·Ö×ʲú³öÊÛ¡¢×ªÈá¢×ªÒÆÖÁµÚÈý·½¡£Èç¹û·¢ÉúÕâÖÖÇé¿ö£¬ÎÒÃǽ«Í¨¹ý¹«Ê¾¡¢Í¨Öª»òÆäËûµÄͨÐÅ·½Í¨ÖªÄú¡£

+ +

ËÄ¡¢¹²ÏíÐÅÏ¢ºÍ£¯»òÊý¾Ý

+ +

(1£©µ±Äú²ÎÓë»òʹÓÃÕܶúÉúÃü¿Æ¼¼Ìض¨µÄ·þÎñ»ò»î¶¯Ê±£¬ÄúͬÒ⹫¿ª·ÖÏíһЩ»ù±¾µÄÐÅÏ¢£¬¿ÉÄܰüÀ¨ÄúµÄÓû§Ãû¡¢ËùÔÚ³ÇÊкÍÍ·ÏñͼƬ¡£

+ +

(2£©Èç¹ûÄú²»Í¬Òâ¹²ÏíÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý£¬Äú¿ÉÄÜÐèÒªµ÷ÕûÄúµÄÒþ˽ÉèÖá£

+ +

(3£©Äú¿ÉÒÔÑ¡Ôñ½«ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ýͨ¹ýÕܶúÉúÃü¿Æ¼¼Æ½Ì¨¹²ÏíÖÁÆäËûƽ̨£¬µ«ÇëÔĶÁÆäËûƽ̨µÄÒþ˽Õþ²ß£¬ÎÒÃǶÔÓÚÄú¹²ÏíÖÁÆäËûƽ̨µÄÐÅÏ¢ºÍ£¯»òÊý¾ÝµÄ°²È«ÐÔ²»¸ºÈκÎÔðÈΡ£

+ +

(4£©ÄúͬÒâÎÒÃdzöÓÚÍÆ¹ã±¾¹«Ë¾²úÆ·µÄÄ¿µÄ¿ÉÄÜ»áʹÓÃÄú¹«¿ª¹²ÏíµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£

+ +

Îå¡¢±£»¤ÐÅÏ¢ºÍ£¯»òÊý¾Ý

+ +

(1£©±£ÕÏÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾ÝµÄ°²È«¶ÔÎÒÃǷdz£ÖØÒª¡£ÕܶúÉúÃü¿Æ¼¼ÖÂÁ¦ÓÚÈ·±£ÄúµÄ¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾ÝÃâÊÜδ¾­ÊÚȨµÄ½Ó´¥¡£ÎÒÃÇʹÓöàÖÖ±£»¤´ëÊ©£¬°üÀ¨¼ÓÃܺÍÑéÖ¤¹¤¾ßÀ´°ïÖú±£»¤ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý°²È«¡£

+ +

(2£©¾¡¹ÜÎÒÃÇ×ñÑ­¹«ÈϵÄÐÐÒµ±ê×¼±£ÕÏÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý°²È«¡£È»¶ø£¬ÓÉÓÚ»¥ÁªÍø´«ÊäºÍµç×Ó´æ´¢µÄÌØÊâÐÔ£¬ÎÒÃÇÎÞ·¨±£Ö¤ÄúÌṩµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý°Ù·ÖÖ®°Ù°²È«»ò±£ÃÜ¡£

+ +

(3£©Äú¿ÉÒÔͨ¹ý¹Ø±ÕÌØ¶¨µÄÐÅϢͨѶ·½Ê½£¨Èç¶Ï¿ªÍøÂçÁ¬½Ó¡¢¹Ø±Õ¶¨Î»¹¦Äܵȣ©ÖÐÖ¹£¯ÖÕÖ¹ÐÅÏ¢ºÍ£¯»òÊý¾ÝµÄÉÏ´«£¬µ«Òò´Ë¿ÉÄܵ¼ÖÂÄúÎÞ·¨Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£¬»òÕßÎÒÃǵÄһЩ·þÎñºÍ¹¦ÄÜ¿ÉÄÜÎÞ·¨Õý³£¹¤×÷¡£

+ +

(4£©ÇëÍ×ÉÆ±£´æÄúµÄÕË»§¡¢ÃÜÂëºÍÆäËûµÇ¼ÐÅÏ¢£¬ÇëÎðËæÒâÊÚȨºÍ£¯»òתÈÃËûÈËʹÓÃÄúµÄÕË»§¡£(5£©±¾¹«Ë¾¶ÔÔÚÏß½»ÒײÉÓõÚÈý·½Ö§¸¶Æ½Ì¨Ò×ÒÔ´Ù½øµç×Ó½»Ò×µÄÇþµÀ¡£

+ +

(6£©Äú¿ÉÒÔͨ¹ýµÇ¼ÕܶúÉúÃü¿Æ¼¼µÄÓ¦ÓóÌÐò¸ü¸Ä»òɾ³ýÄúµÄ²¿·ÖÐÅÏ¢ºÍ£¯»òÊý¾Ý×ÊÁÏ£¬µ«ÄúÒÔǰ·¢²¼µÄÐÅÏ¢¿ÉÄÜÈÔÈ»Êǹ«¿ª¿É¼ûµÄ¡£

+ +

(7£©Äú¶Ôͨ¹ýÄúµÄÕܶúÉúÃü¿Æ¼¼ÕË»§¶ø²úÉúµÄÈκκó¹û¸ºÔð£¬ÎÞÂÛÊÇ·ñ¾­¹ýÄúµÄͬÒâ¡£ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼²»¶ÔÈκλòÒòδ¾­ÊÚȨʹÓÃÄúÕË»§¶øµ¼ÖÂÐÅÏ¢ºÍ£¯»òÊý¾Ýй¶µÄÐÐΪ¼°ºó¹û¸ºÔð¡£

+ +

(8£©²»ÂÛÄú¾ÓסÔÚÈκιú¼Ò£¯µØÇø£¬ÄúͬÒâÎÒÃǽ«ÄúµÄÐÅÏ¢ºÍ£¯»òÊý¾Ý×ªÒÆ¡¢´¦ÀíºÍ´¢´æÔÚÕܶúÉúÃü¿Æ¼¼µÄÊý¾Ý¿âÀ²¢ÔÊÐíÕܶúÉúÃü¿Æ¼¼¸ù¾Ý±¾Òþ˽Õþ²ßÊÕ¼¯²¢Ê¹ÓÃÐÅÏ¢ºÍ£¯»òÊý¾Ý¡£¸ù¾Ý·¨Âɹ涨£¬ÄúµÄ¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý½«»áÓÉÕܶúÉúÃü¿Æ¼¼±£Áôµ½Ïà¹Ø·þÎñÍ£Óúó£¬Ö±ÖÁÓû§ÒÔÊéÃæÐÎʽҪÇóÎÒÃÇ´ÓÊý¾Ý¿âÖÐɾ³ýÆä¸öÈËÐÅÏ¢ºÍ£¯»òÊý¾Ý»òÖÕÖ¹Æä¸öÈËÔÚÕܶúÉúÃü¿Æ¼¼Ó¦ÓóÌÐòµÄÓû§×ʸñ¡£

+ +

Áù¡¢µÚÈý·½·þÎñÉÌÌṩµÄÈí¼þ·þÎñ¹¤¾ß°ü£¨¼ò³Æ¡°SDK¡±£©

+ +

Bugly(ÌÚѶBugly)

+

¹¦ÄÜ£º ΪÁË¿ìËÙ¶¨Î»Ó¦ÓòúÆ·ÎÊÌ⻹ԭCrash³¡¾°ºÍCrashÉ豸ͳ¼Æ

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£ºCrash»·¾³£ºCrashÐÅÏ¢¼°Ï̶߳ÑÕ»£¬ROM/RAM/SD¿¨ÈÝÁ¿¡¢ÍøÂç/ÓïÑÔµÈ״̬£»AppÐÅÏ¢£º°üÃû¡¢°æ±¾¡¢ËùÊô½ø³ÌÃû£»É豸ÐÅÏ¢£ºIMEIµÈÉ豸ʶ±ð¡£

+ +

Òþ˽Õþ²ßÁ´½Ó£ºhttps://privacy.qq.com/document/preview/fc748b3d96224fdb825ea79e132c1a56

+ + +

°Ù¶È¶¨Î»

+

¹¦ÄÜ£º ÓÃÓÚʵÏÖ¶¨Î»¹¦ÄÜ£¬µ¼º½¹¦ÄÜ

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IDFA¡¢IDFV£©¡¢¾­Î³¶ÈÐÅÏ¢£¬ÏµÍ³ÐÅÏ¢£¨²Ù×÷ϵͳ°æ±¾¡¢Éè±¸Æ·ÅÆ¼°Ðͺš¢É豸ÅäÖ㩺ÍÓ¦ÓÃÐÅÏ¢£¨Ó¦ÓÃÃû£©¡£

+

Òþ˽Õþ²ßÁ´½Ó£ºhttps://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-0

+ + +

°Ù¶ÈµØÍ¼

+

¹¦ÄÜ£º ÔÚµØÍ¼ÉÏÏÔʾ¹ì¼£»­Ïß

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IDFA¡¢IDFV£©¡¢¾­Î³¶ÈÐÅÏ¢£¬¶ÁдÊÖ»úÍâÖô洢ÐÅÏ¢¡£

+

Òþ˽Õþ²ßÁ´½Ó£ºhttps://lbs.baidu.com/index.php?title=openprivacy#service-page-anchor-0-1

+ + +

QQ»¥Áª

+

¹¦ÄÜ£º QQÊÚȨµÇ¼ºÍ·ÖÏí

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IDFA¡¢IDFV£©¡¢²Ù×÷ϵͳÐÅÏ¢£¬Äڴ濨ȨÏÞºÍÓ¦ÓÃÁбíÐÅÏ¢¡£

+

Òþ˽Õþ²ßÁ´½Ó£º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

+ + +

΢ÐÅ

+

¹¦ÄÜ£º ΢ÐÅÊÚȨµÇ¼ºÍ·ÖÏí

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IDFA¡¢IDFV£©£¬²Ù×÷ϵͳÐÅÏ¢£¬Äڴ濨ȨÏÞºÍÓ¦ÓÃÁбíÐÅÏ¢¡£

+ +

Òþ˽Õþ²ßÁ´½Ó£ºhttps://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ + +

mapbox

+

¹¦ÄÜ£º ¶¨Î»£¬µ¼º½ºÍ·Ï߹滮

+

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IDFA¡¢IDFV£©£¬²Ù×÷ϵͳÐÅÏ¢£¬Äڴ濨ȨÏÞ,¾­Î³¶ÈÐÅÏ¢¡£

+

Òþ˽Õþ²ßÁ´½Ó£ºhttps://www.mapbox.com/legal/privacy

+ + +

¼«¹âͳ¼Æ¡¢¼«¹âÍÆËÍ

+

¹¦ÄÜ£º»ñÈ¡Óû§É豸Ψһ±êʶ£¬ÏòÓû§ÍÆËÍÐÅÏ¢

+ +

ÊÕ¼¯¸öÈËÐÅÏ¢ÀàÐÍ£º°üÀ¨É豸±êʶÐÅÏ¢£¨Android ID¡¢IMEI¡¢IDFA¡¢IDFV¡¢É豸MACµØÖ·£©£¬²Ù×÷ϵͳÐÅÏ¢£¬ÒѰ²×°APPÐÅÏ¢£¬¶ÁдÊÖ»úÍâÖô洢ÐÅÏ¢¡£

+

Òþ˽Õþ²ßÁ´½Ó£ºhttps://www.jiguang.cn/license/privacy

+ + +

Æß¡¢¹ØÁªÌõ¿î

+ +

ÄúʹÓÃÎÒÃǵķþÎñºÍ²úÆ·£¬ÒÔ¼°Óɴ˲úÉúµÄÈκÎÕùÒ飬¾ùÊܱ¾Òþ˽Õþ²ßÒÔ¼°¡¶Ê¹ÓÃÌõ¿î¡·µÄÔ¼Êø£¬¸ÃÌõ¿î¹æ¶¨ÁËÆäËû¹ØÓÚʹÓÃÕܶúÉúÃü¿Æ¼¼·þÎñºÍ²úÆ·µÄ¹æÔò¡£

+ + +

¸ÐлÄúµÄÔĶÁ£¬ÈçÓÐÈκÎÒÉÎÊ£¬¿ÉÖµçÕܶúÉúÃü¿Æ¼¼½øÐÐ×Éѯ£¬µç»°£º0755-86352225 ¡£

+ + + + + +
\ No newline at end of file diff --git a/app/src/main/assets/privacy_en.html b/app/src/main/assets/privacy_en.html new file mode 100644 index 0000000..185be48 --- /dev/null +++ b/app/src/main/assets/privacy_en.html @@ -0,0 +1,72 @@ + + +
+

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").

+ +

1. Information We Collect

+
    +
  • Personal Information: When you create an account, we may collect personal information such as your name, email address, and phone number.
  • +
  • Pet Information: We collect information about your pets, including their name, age, breed, and weight, to provide tailored services.
  • +
  • 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.
  • +
  • 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.
  • +
  • Location Data: With your permission, we may collect and process information about your device¡¯s location and your pet's location to provide location-based services.
  • +
+ + +

2. How We Use Your Information

+
    +
  • To Provide and Improve Our Services: We use your information to operate and improve the App and our services.
  • +
  • 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.
  • +
  • To Personalize Your Experience: We use your information to tailor the content and services we offer to better meet your needs and preferences.
  • +
  • To Ensure Security and Compliance: We use your information to ensure the security of our App and compliance with applicable laws and regulations.
  • +
+ + +

3. Data Confidentiality and Security

+
    +
  • Data Encryption: We use industry-standard encryption protocols to protect your personal information during transmission and storage.
  • +
  • Access Controls: Access to your personal information is restricted to authorized personnel only, and we implement strict access controls to prevent unauthorized access.
  • +
  • Data Minimization: We only collect and retain the minimum amount of personal information necessary to provide our services.
  • +
  • Regular Audits: We conduct regular security audits and assessments to ensure our data protection measures are up to date and effective.
  • +
+

4. Sharing Your Information

+
    +
  • 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.
  • +
  • Legal Requirements: We may disclose your information if required by law or in response to a legal request.
  • +
  • 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.
  • +
+ +

5. Your Choices

+
    +
  • Account Information: You can update or delete your account information through the App's settings.
  • +
  • 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.
  • +
  • Location Data: You can disable location services through your device settings, but this may affect certain features of the App.
  • +
+ + +

6. Security

+ +

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.

+ +

7. Children's Privacy

+ +

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.

+ +

8. Changes to This Privacy Policy

+ +

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.

+ +

9. Contact Us

+

If you have any questions about this Privacy Policy, please contact us at:

+

ABBI PET INC

+

10700 Richmond Ave Suite 143

+

Houston, TX 77042

+

Email: support@abbidot.com

+ +
+ + + + + + \ No newline at end of file diff --git a/app/src/main/assets/subscription_terms_conditions_en.html b/app/src/main/assets/subscription_terms_conditions_en.html new file mode 100644 index 0000000..90afc2a --- /dev/null +++ b/app/src/main/assets/subscription_terms_conditions_en.html @@ -0,0 +1,24 @@ + + +
+ +

ABBIDOT Tracker Subscription Terms and Conditions +

+

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. + +

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.

+ +

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.

+ +

4.Modifications ABBIDOT reserves the right to update these terms. Users will be notified of changes. By subscribing, you agree to these terms.

+ +

For support contact:

+

support@abbidot.com

+ +
+ + + + + + \ No newline at end of file diff --git a/app/src/main/assets/terms_cn.html b/app/src/main/assets/terms_cn.html new file mode 100644 index 0000000..ce380d0 --- /dev/null +++ b/app/src/main/assets/terms_cn.html @@ -0,0 +1,476 @@ +

°®±Ë³èÎABBIDOT£©Èí¼þÐí¿É¼°Ê¹ÓÃÌõ¿î

¸ÐлʹÓÃÉîÛÚÕܶúÉúÃü¿Æ¼¼ÓÐÏÞ¹«Ë¾£¨ÏÂÎļò³Æ¡°ÕܶúÉúÃü¿Æ¼¼¡±»ò¡°±¾¹«Ë¾¡±»ò¡°ÎÒÃÇ¡±£©µÄ²úÆ·ºÍ·þÎñ£¬ÇëÔÚʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úƷǰ×ÐϸÔĶÁ¡¶Ê¹ÓÃÌõ¿î¡·£¨ÏÂÎļò³Æ¡°±¾Ìõ¿î£©¡£Ò»µ©ÄúʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ²úÆ·»ò·þÎñ»òÄú×¢²á³ÉΪÕܶúÉúÃü¿Æ¼¼µÄÓû§£¨ÒÔÏÈ·¢ÉúÕßΪ׼£©£¬¼´±íʾÄúͬÒâ±¾Ìõ¿îµÄÈ«²¿ÄÚÈÝ¡£±¾Ìõ¿îÊÊÓÃÓÚÖйúµØÇø£¨°üÀ¨¸Û°Ą̈µØÇø£©£¬Èç¹ûÄú¾ÓסÔÚÆäËûÈκιú¼Ò£¯µØÇø£¬Ôò¿ÉÄÜÊÊÓÃÆäËûÌØ±ðÌõ¿î£¬¸ÃµÈÌØ±ðÌõ¿îÔÚ±¾ÎÄÖв»×÷²¹³ä˵Ã÷£¬ÎÒÃÇ»áÔÚÊʵ±Ê±¼ÓÒÔ¸üÐÂÌáʾ¡£±¾Ìõ¿îΪÄúºÍÕܶúÉúÃü¿Æ¼¼Ö®¼ä¾Í·þÎñºÍ²úÆ·µÄʹÓöøµÞ½áµÄ¾ßÓз¨ÂÉÔ¼ÊøÁ¦µÄЭÒé¡£ÎÒÃÇ¿ÉÄܻ᲻¶¨Ê±¸üÐÂÕâЩÌõ¿î£¬Èç¹ûÌõ¿îÄÚÈÝ·¢ÉúÖØ´ó±ä¸ü£¬ÎÒ½«ÒÔ¹«¿ªµÄ·½Ê½¸æÖªÓÚÄú¡£Èç¹ûÄú¶ÔÌõ¿îµÄ±ä¸ü´æÔÚÒìÒ飬ÇëÁ¢¼´Í£Ö¹Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·£»Èç¹ûÔÚÎÒÃÇ֪ͨÄú±ä¸üºó£¬Äú¼ÌÐøÊ¹Óñ¾¹«Ë¾ÌṩµÄ·þÎñºÍ²úÆ·£¨°üÀ¨Ó¦ÓóÌÐò£¬Æ½Ì¨ºÍ²úÆ·£©£¬³ý·ÇÊÊÓ÷¨ÂɽûÖ¹£¬Äú½«±»ÊÓΪÒѽÓÊÜÁ˸üкóµÄÌõ¿î¡£

Ò»¡¢»ù±¾¹æÔò

Èç¹ûÄúδÂú18ÖÜË꣬ÔòÐèÔÚÈ¡µÃ¸¸Ä¸»ò¼à»¤È˵ÄͬÒâºó£¬²ÅÓÐ×ʸñʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·¡£²»Í¬¹ú¼Ò£¯µØÇø¿ÉÄܶÔÌØ¶¨Æ½Ì¨·þÎñÓÐÏàÓ¦ÄêÁäÏÞÖÆ£¬ÇëÄú×Ðϸ²éÔÄÄúËùÔÚ¹ú¼Ò£¯µØÇøµÄÏà¹Ø¹æ¶¨¡£Èç¹ûÄúÒÑÂú18ÖÜË꣬¿ÉÒÔÉêÇë×¢²á³ÉΪÕܶúÉúÃü¿Æ¼¼µÄÓû§£¬µ«ÇëÑϸñ×ñÊØÒÔϹæÔò£º

(1£©Ìá¹©ÕæÊµ¡¢ÓÐЧ¡¢×¼È·ºÍ×îеĸöÈË×ÊÁϽøÐÐ×¢²á¡£(2£©ÇëÎðίÍÐËûÈË×¢²áÕܶúÉúÃü¿Æ¼¼²úÆ·µÄÕË»§»òΪËûÈË×¢²áÕܶúÉúÃü¿Æ¼¼ÕË»§¡£

(3£©Í×ÉÆ±£´æÄúµÄÕË»§¡¢ÃÜÂëºÍÆäËûµÇ¼ÐÅÏ¢£¬ÇëÎðËæÒâÊÚȨºÍ£¯»òתÈÃËûÈËʹÓÃÄúµÄÕË»§¡£

(4£©ÈçÄú·¢ÏÖÈκÎδ¾­ÄúµÄÔÊÐí¶øÊ¹ÓÃÄúµÄÕܶúÉúÃü¿Æ¼¼²úÆ·µÄÕË»§ºÍ£¯»òÕܶúÉúÃü¿Æ¼¼ÌṩµÄ·þÎñºÍ²úÆ·µÄÐÐΪ£¬ÇëÁ¢¼´Í¨ÖªÎÒÃÇ¡£

(5£©Äú¶Ôͨ¹ýÄúµÄÕܶúÉúÃü¿Æ¼¼²úÆ·µÄÕË»§¶ø²úÉúµÄÈκκó¹û¸ºÔð£¬ÎÞÂÛÊÇ·ñ¾­¹ýÄúµÄͬÒâ¡£ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼²»¶ÔÈκÎËðʧ»òÒòδ¾­ÊÚȨʹÓÃÄúÕË»§µÄÐÐΪ¼°ºó¹û¸ºÔð¡£

¶þ¡¢ÄÚÈÝËùÓÐȨ

(1£©³ýÁËÄú×Ô¶¨ÒåµÄÄÚÈÝÍ⣬ÕܶúÉúÃü¿Æ¼¼²úÆ·ÄÚµÄËùÓÐÄÚÈÝ£¬°üÀ¨µ«²»ÏÞÓÚÎı¾¡¢Èí¼þ¡¢´úÂë¡¢½Å±¾¡¢Éè¼Æ¡¢Í¼ÐΡ¢Ó°Ïñ¡¢ÉùÒô¡¢ÒôÀÖ¡¢Â¼Ïñ¡¢Â¼Òô¡¢ÎÄÕ¡¢ÐÂÎű¨µÀ¡¢²Ýͼ¡¢¶¯»­¡¢²å»­¡¢Ó¦ÓóÌÐò¡¢½»»¥¹¦Äܼ°ÆäËûÄÚÈÝ£¬¾ùΪÕܶúÉúÃü¿Æ¼¼»òÊÚȨʹÓõĵÚÈý·½ËùÓУ¬²¢ÇÒÊÜÖø×÷Ȩ¡¢É̱ꡢרÀû¼°ÆäËû·¨Âɱ£»¤¡£³ýÔÚ±¾Ìõ¿îÖÐÃ÷ȷ˵Ã÷µÄÒÔÍ⣬ÕܶúÉúÃü¿Æ¼¼±£ÁôËùÓÐȨÀû¡£

(2£©ËùÓÐÉ̱ꡢ±êÖ¾¡¢Íâ¹Û¡¢°ü×°£¨ÀýÈ磬ÕܶúÉúÃü¿Æ¼¼µÄÃû³ÆºÍ±êÖ¾Éè¼Æ£©ÎªÕܶúÉúÃü¿Æ¼¼ËùÓС¢×¢²áºÍ£¯»òÐí¿É¡£Äú²»»áͨ¹ýʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñ»ò¹ºÂòÕܶúÉúÃü¿Æ¼¼µÄ²úÆ·¶ø»ñµÃÈκÎÉ̱ꡢ±êÖ¾¡¢Íâ¹Û¡¢°ü×°µÄÐí¿É»òÈκÎËùÓÐȨ¡£

(3£©ÄúͬÒâ²»»á±ä¸ü»òɾ³ýÈκδÓÕܶúÉúÃü¿Æ¼¼²úÆ·ÉÏÏÂÔØ»ò´òÓ¡µÄ²ÄÁÏÉϵÄËùÓÐȨÉùÃ÷¡£

(4£©°üº¬ÈκÎÖø×÷Ȩ»ò¿ÉÊÜÖø×÷Ȩ±£»¤µÄ×÷Æ·µÄÄÚÈÝ·¶Î§ÄÚ£¬ÕܶúÉúÃü¿Æ¼¼ÊÚÓèÄú¸öÈ˵ġ¢ÓÐÏ޵ġ¢²»¿ÉתÈõġ¢²»¿ÉתÐí¿ÉµÄ¡¢¿É³·ÏúµÄ½öΪÆäÔ¤ÆÚʹÓÃÄ¿µÄÇÒ½öÔÚÕܶúÉúÃü¿Æ¼¼½«´ËÀàÄÚÈÝÏò¹«ÖÚ¹«¿ªµÄÏÞ¶ÈÄÚ·ÃÎÊ¡¢ÏÂÔØ²¢Ê¹ÓôËÀàÄÚÈݵÄȨÀû¡£Äú²»»á»ñµÃÄÚÈÝ£¨°üÀ¨ÄÚÈÝÖаüº¬µÄÈκÎÉ̱ê»òÆäËû֪ʶ²úȨ£©µÄÈκÎËùÓÐȨȨÀû£¬ÇÒËùÓдËÀàÄÚÈݽöÏÞ¸öÈËʹÓ㬽ûÖ¹ÓÃÓÚÉÌÒµÓÃ;¡£

(5£©ÕܶúÉúÃü¿Æ¼¼±£Áô¼à¶½ÄúµÄʹÓò¢ÔÚÈκÎʱ¼äÒòÈκÎÀíÓɱä¸ü»ò³·ÏúÐí¿É»òÄú¶ÔÄÚÈݵķÃÎÊȨÏÞµÄȨÀû¡£ÕܶúÉúÃü¿Æ¼¼±£ÁôÒòÎ¥·´¸ÃµÈÌõ¿î»òÕܶúÉúÃü¿Æ¼¼µÄ֪ʶ²úȨ¶øÉ¾³ýÈκÎÄÚÈݵÄȨÀû¡£ÕܶúÉúÃü¿Æ¼¼Ðí¿ÉÄúÓÐÏÞµÄʹÓÃȨ£¬²¢²»¹¹³ÉÕܶúÉúÃü¿Æ¼¼¶ÔÄÚÈݰüÀ¨Öø×÷Ȩ¡¢ËùÓÐȨµÈÈκÎȨÀûµÄ·Å

Æú¡£

(6£©ÄúͬÒâÔÚÕܶúÉúÃü¿Æ¼¼ÊÚÓèÄúÓëÕܶúÉúÃü¿Æ¼¼Ïà¹ØµÄÌØ¶¨Ê¹ÓÃȨÀûÍ⣬δ¾­ÕܶúÉúÃü¿Æ¼¼ÊÂÏÈÊéÃæÍ¬Ò⣬²»Ê¹Óᢸ´ÖÆ¡¢±à¼­¡¢ÏÂÔØ¡¢·­Òë¡¢´«²¥¡¢³öÊÛ¡¢´´½¨ÑÜÉú×÷Æ·»òÒÔÈκη½Ê½ÀûÓÃÈκÎÄÚÈÝ£¬°üÀ¨³ýÄúºÏ·¨·¢²¼ÒÔÍâµÄÈκÎÄÚÈÝ¡£Î´¾­ÊÚȨʹÓÃÄÚÈÝ¿ÉÄÜʹÄúÊܵ½ÐÌÊ»òÃñÊÂÖ¸¿ØºÍ´¦·££¬ÕܶúÉúÃü¿Æ¼¼¶Ô´Ë²»³Ðµ£ÈκÎÔðÈΡ£

Èý¡¢ÄÚÈÝÐí¿É

ÕܶúÉúÃü¿Æ¼¼ÔÊÐíÄúÔÚÓ¦ÓóÌÐòƽ̨£¨ÏÂÎļò³Æ¡°Æ½Ì¨¡±£©ÉÏ·¢²¼ºÏ·¨µÄÎÄ×Ö¡¢ÕÕÆ¬¡¢ÊÓÆµ¡¢ÆÀÂÛºÍÆäËûÄÚÈÝ£¬´ËÀàÄÚÈÝÓÉÄú±¾ÈË»òÈκδ´×÷ÈËËùÓУ¬µ«ÄúͬÒâ¶ÔÕܶúÉúÃü¿Æ¼¼ÊÚÓèÒÔÏÂÐí¿É£º

(1£©Äú±íʾÄúÓÐȨ·¢²¼ÈκÎÄÚÈÝ£¬µ«ÕܶúÉúÃü¿Æ¼¼²»¶ÔÈκÎÓÉÓû§·¢²¼µ½Æ½Ì¨µÄÄÚÈݸºÔð¡£

(2£©ÄúͬÒâÕܶúÉúÃü¿Æ¼¼¿ÉËæÊ±×ÔÐÐɾ³ý¡¢ÐÞ¸ÄÈκη¢²¼ÔÚÆ½Ì¨»òÓëÆ½Ì¨Ïà¹ØµÄÎ¥¹æÄÚÈÝ£¬°üº¬µ«²»ÏÞÓÚÉæÏÓÇÖ·¸Ð¤ÏñȨ¡¢Öø×÷Ȩ¡¢ËùÓÐȨ£¬»òÓÃÓÚ°üÀ¨ÉÌÒµÓÃ;ÔÚÄÚµÄÈκÎÎ¥¹æÐÐΪµÄÄÚÈÝ£¨°üÀ¨Î¥·¨¸´ÖÆ¡¢Ð޸ġ¢·­Òë¡¢´´×÷ÑÜÉú×÷Æ·¡¢×ªÐí¿É¡¢·Ö·¢ºÍתÈõÈȨÀû£©¡£

(3£©ÄúÀí½âÒѱ»É¾³ýµÄÄÚÈÝ¿ÉÄÜÒѱ»×ªÔØ´«²¥£¬¿ÉÄܼÌÐøÁô´æÔÚÕܶúÉúÃü¿Æ¼¼Æ½Ì¨£¬³ý·ÇÄú»òÏà¹Ø¸öÈËÒªÇóÒÀ¾ÝÊÊÓ÷¨ÂÉɾ³ý»òÆÁ±Î¸öÈËÊý¾Ý×ÊÁÏ¡£

(4£©ÄúÀí½â·¢²¼ÔÚÕܶúÉúÃü¿Æ¼¼Æ½Ì¨ÉϵÄËùÓÐÄÚÈݾùÔڷDZ£ÃܵĻù´¡ÉÏÌṩ£¬²¢ÇÒÄúÊÚÓèÕܶúÉúÃü¿Æ¼¼ÓÀ¾ÃµÄ¡¢·Ç¶À¼ÒµÄ¡¢¿ÉתÈõġ¢¿ÉתÐí¿ÉµÄ¡¢Ãâ°æË°µÄ¡¢È«ÊÀ½ç·¶Î§µÄÐí¿É¡£¿ÉÒÔ²»¾­Í¨Öª¡¢²¹³¥»òÈÃÄúÈ·ÈϵÄÇé¿öÏÂΪÈκÎÄ¿µÄʹÓÃÄú·¢²¼ÖÁƽ̨ÉϵÄËùÓÐÄÚÈÝ£¬°üÀ¨µ«²»ÏÞÓÚ¿ª·¢¡¢Éú²úºÍÐû´«ÉÌÆ·¼°·þÎñÒÔ¼°´´×÷¡¢Ð޸Ļò¸Ä½øÊ¹ÓÃÉÌÆ·¼°·þÎñ¡£

ËÄ¡¢Óû§ÐÐΪ¹æ·¶

ÕܶúÉúÃü¿Æ¼¼×÷ΪרҵµÄƽ̨£¬¾ß±¸¹«¿ªµÄÉç½»¹¦ÄÜ£¬ÇëÄúÇå³þÁ˽ⲢÑϸñ×ñÊØÒÔϹæÔò£º

(1£©ÕܶúÉúÃü¿Æ¼¼ÓÐȨɸѡ¡¢¼à¶½»òɾ³ýÓû§·¢²¼µÄ²»µ±ÄÚÈÝ£¬µ«ÎÒÃÇûÓÐÒåÎñÕâÑù×ö£¬²¢±£Áô¾Ù±¨¡¢ÆðËß¡¢¾Ù֤Υ¹æÄÚÈݵÄȨÀû¡£

(2£©ÇëÎð·¢²¼ÈκÎÎ¥·¨µÄ¡¢¶ñÒâµÄ¡¢Î󵼵ġ¢É§Èŵġ¢É«ÇéµÄ¡¢±©Á¦µÄ¡¢µØÓòÆçÊӵġ¢ÖÖ×åÆçÊӵĻòÁîÈË·´¸ÐµÄ¡¢²»Ç¡µ±µÄ»òÎ¥·´ÊÊÓ÷¨ÂÉ·¨¹æµÄÄÚÈÝ¡¢Á´½Ó»ò×ö³öÈκξßÓÐÉÏÊöÌØÕ÷µÄÐÐΪ¡£

(3£©ÇëÎð·¢²¼ÈκÎÄúÉÐδӵÓÐÈ«²¿Ðí¿É¼°È¨ÀûµÄÄÚÈÝ£¬°üÀ¨ÔÚÄú·¢²¼µÄÄÚÈÝÖгöÏÖ»òÌáµ½µÄÈκÎÐí

¿É¡£

(4£©ÇëÎð·¢²¼ÈκοÉÄÜÉ˺¦ÆäËûÓû§µÄÐÐΪ£¬°üÀ¨µ«²»ÏÞÓÚÆäËûÓû§µÄÕÕÆ¬¡¢µç»°¡¢µØÖ·µÈÃô¸ÐÐÅ

Ï¢¡£

(5£©ÇëÎð·¢²¼ÈÎºÎ¹ã¸æ¡¢ÕÐÀ¿»òÉÌÒµÄÚÈÝ£¬»ò½ÓÊÜÈκεÚÈý·½µÄ³êÀͽøÐÐÉÌÒµ»î¶¯¡£³ý·ÇÕܶúÉúÃü¿Æ¼¼ÊÚȨ¡£

(6£©ÇëÎðÄ£·Â¡¢Î±×°³ÉÈκÎËûÈË»ò×éÖ¯£¬°üÀ¨ÕܶúÉúÃü¿Æ¼¼Ô±¹¤¡£

(7£©ÇëÎðʹÓÃ×Ô¶¯»¯¼¼ÊõÓëÕܶúÉúÃü¿Æ¼¼µÄƽ̨»ò²úÆ·»¥¶¯£¬°üÀ¨ÈκÎ×Ô¶¯×¥È¡¡¢ÍÚ¾ò»òÀàËÆµÄÊý¾Ý²É¼¯·½·¨¡£

(8£©ÇëÎð·¢²¼ÈκοÉÄܹæ±Ü¡¢ÇÔÈ¡¡¢´Û¸Äƽ̨°²È«ÏµÍ³µÄÈí¼þ²¡¶¾»òÆäËû¼ÆËã»ú´úÂ룬°üÀ¨ÈκοÉÄܸÉÈÅ¡¢Ë𻵡¢ÏÞÖÆ¡¢Ê¹ÎÞ·¨ÔËÐС¢³¬¸ººÉ»òËð»µÆ½Ì¨¹¦ÄܵÄÄÚÈÝ¡£

Îå¡¢·çÏÕÌáʾ

ÕܶúÉúÃü¿Æ¼¼»áÓëÆäËûÍøÕ¾¡¢Ã½Ì塢ƽ̨¡¢ÇþµÀ¡¢Òƶ¯Ó¦ÓÃÒÔ¼°ÆäËûÉÌÆ·»ò·þÎñ£¨¡°µÚÈý·½¡±£©Á´½Ó»òºÏ×÷¡£ÄúÄܹ»Í¨¹ýÕܶúÉúÃü¿Æ¼¼Æ½Ì¨ÓëµÚÈý·½½øÐл¥¶¯£¬µ«Õâ²¢²»±íʾÕܶúÉúÃü¿Æ¼¼ÈϿɡ¢¼à¶½»ò¿ÉÓÐЧ¿ØÖƵÚÈý·½»òÆäÐÐΪ¡£ÕܶúÉúÃü¿Æ¼¼²»¶ÔµÚÈý·½µÄÄÚÈÝ¡¢Õþ²ß»ò»î¶¯¸ºÔð£¬ÇÒÄúͬÒâ×ÔÐге£ÓëµÚÈý·½»¥¶¯µÄ·çÏÕ¡£

Áù¡¢ÃâÔðÉêÃ÷

(1£©ÇëÔÚ¹ºÂò»òʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ²úÆ·»ò·þÎñǰ¿¼ÂÇ¿ÉÄÜÉæ¼°µÄËùÓзçÏÕ¡£(2£©ÇëÎðÒòΪÄú¿´µ½µÄÈκÎÄÚÈÝ»ò½ÓÊÕµÄÈκÎÐÅÏ¢¶øºöÊÓ¿ÉÄÜÉæ¼°µÄËùÓзçÏÕ¡£

(3£©ÓÉÓÚ»¥ÁªÍøºÍµç×Ó²úÆ·µÄÌØÊâÐÔ£¬ÕܶúÉúÃü¿Æ¼¼²»±£Ö¤Æ½Ì¨»ò²úÆ·½«²»¼ä¶ÏµÄ¡¢ÎÞ²î´íµÄ¡¢ÈκδíÎó¶¼½«µÃµ½¾ÀÕýµÄ»òûÓÐÈÎºÎÆäËûÓк¦ÊÂÎïµÄ¡£

(4£©ÓÉÓÚ»¥ÁªÍøºÍµç×Ó²úÆ·µÄÌØÊâÐÔ£¬ÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·²»×÷ÈκÎÐÎʽµÄ³Ðŵ£¬°üÀ¨¹ØÓÚ·þÎñ¼°²úÆ·µÄ׼ȷÐÔ¡¢³ä·ÖÐÔ¡¢ÊµÓÃÐÔ¡¢¿É¿¿ÐÔ»òÆäËû·½ÃæµÄ³Ðŵ¡£

(5£©ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼¶ÔËùÓÐÉæ¼°·þÎñºÍ²úÆ·£¬ÒÔ¼°Äúͨ¹ýƽ̨¿ÉÄÜÈ¡µÃ»ò½Ó´¥µ½µÄÈκÎÉÌÆ·»ò·þÎñµÄËùÓб£Ö¤ÃâÔ𣬰üÀ¨µ«²»ÏÞÓÚËùÓÐȨ¡¢ÊµÓÃÐÔ¡¢¶ÔÌØ¶¨ÓÃ;µÄÊÊÓÃÐÔÒÔ¼°·ÇÇÖȨÐԵı£Ö¤¡£

(6£©ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼¶ÔÄúʹÓûò²»ÄÜʹÓ÷þÎñºÍ²úÆ·µÄ¹¦ÄÜ¿ÉÄÜÃÉÊܵÄÈκÎËðʧ»òÉ˺¦²»³Ðµ£ÈκÎÔðÈΡ£

(7£©ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼¶ÔÄúÓëÆäËûÓû§µÄ»¥¶¯»òÈκÎÄúÒòΪ´ËÀ໥¶¯¶ø¿ÉÄÜÃÉÊܵÄÈκÎËðʧ»òÉ˺¦²»³Ðµ£ÈκÎÔðÈΡ£

(8£©ÔÚÊÊÓ÷¨ÂÉÔÊÐíµÄ×î´óÏÞ¶ÈÄÚ£¬ÕܶúÉúÃü¿Æ¼¼¶ÔÓû§·¢²¼ÔÚÆ½Ì¨ÉϵÄÈκÎÄÚÈݾù²»³Ðµ£ÈκÎÔð

ÈΡ£

(9£©ÕܶúÉúÃü¿Æ¼¼Ã»ÓÐÒåÎñ²ÎÓëÈκÎÓû§Ö®¼äµÄÕùÒ飬µ«ÓÐȨ×ÔÐоö¶¨ÊÇ·ñ½éÈë¡£

(10£©ÔÚÊÊÓ÷¨ÂÉûÓÐÆäËû¹æ¶¨µÄ·¶Î§ÄÚ£¬ÒòʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñ»ò²úÆ·¶øÔì³ÉÄúµÄÈκÎËðʧÓÉÄú×ÔÐиºÔð¡£

(11£©ÕܶúÉúÃü¿Æ¼¼Ï£ÍûÄúÄܳä·ÖÏíÊÜÎÒÃǵķþÎñºÍ²úÆ·£»µ«ÊÇ£¬ÎÒÃDz»¶ÔÈκνá¹û×ö³ö±£Ö¤¡£

Æß¡¢Ìõ¿îÖÕÖ¹

(1£©ÕܶúÉúÃü¿Æ¼¼¿ÉÒÔÔÚÈκÎʱ¼ä²»¾­Í¨ÖªµÄÖÕÖ¹»òÐÞ¸ÄÈκÎÕܶúÉúÃü¿Æ¼¼Ó¦ÓóÌÐò¡¢ÏúÊۼƻ®¡¢ÉÌÆ·»ò·þÎñ¡£

(2£©¸ù¾ÝÊÊÓ÷¨ÂÉ£¬ÕܶúÉúÃü¿Æ¼¼¿ÉÒÔ²»³Ðµ£ÈκÎÔðÈεØÔÚÈκÎʱ¼äÒòÈκÎÔ­Òò¶³½á¡¢ÖÐÖ¹»òÖÕÖ¹ÄúµÄÕË»§¡¢É¾³ýÄúµÄµµ°¸»òÈκη¢²¼µÄÄÚÈÝ£¬»òÕßÏÞÖÆÄúʹÓÃÈ«²¿»ò²¿·Ö·þÎñºÍ¹¦ÄÜ¡£

(3£©ÄúÀí½â²¢Í¬Ò⣬ÄúÔÚÕܶúÉúÃü¿Æ¼¼Æ½Ì¨ÉÏ·¢²¼µÄijЩÄÚÈÝ£¬ÓÈÆäÊÇÔڻÌáÒªÖлòƽ̨ÉÏÆäËû¹«¹²ÇøÓòÖÐÏÔʾµÄÓû§ÄÚÈÝ£¬¼´Ê¹ÔÚÄúµÄÕÊ»§±»ÖÕÖ¹ºóÈÔ½«¼ÌÐø¹«¿ªÏÔʾ£¬µ«ÄúÓÐȨ¸ù¾ÝÊÊÓ÷¨ÂÉ£¬ÇëÇóɾ³ýÓëÄúÏà¹ØµÄÄÚÈÝ¡£

(4£©±¾Ìõ¿îÔÚÄúµÄÕË»§ÖÕÖ¹»òÄúֹͣʹÓÃÕܶúÉúÃü¿Æ¼¼µÄ·þÎñºÍ²úÆ·ºóÈÔÈ»ÓÐЧ¡£

°Ë¡¢Åâ³¥£¯ÔðÈÎÏÞÖÆ

(1£©ÕܶúÉúÃü¿Æ¼¼Ï£ÍûÄúÄÜÏíÊÜÎÒÃǵķþÎñºÍ²úÆ·£¬µ«ÕܶúÉúÃü¿Æ¼¼Ò²±ØÐë±£»¤×ÔÉíÃâÊÜÄú¿ÉÄÜÔì³ÉµÄÈκÎË𺦡£

(2£©ÄúͬÒâÅâ³¥¡¢ÎªÖ®Ìṩ±ç»¤²¢Ê¹ÕܶúÉúÃü¿Æ¼¼¡¢Æä¹ØÁª·½¡¢¸ß¼¶¹ÜÀíÈËÔ±¡¢¶­Ê¡¢¹ÍÔ±¡¢´úÀí¡¢ÊÚȨÉ̼°¹©Ó¦ÉÌÃâÊÜÒòÄú·¢²¼¡¢Ê¹ÓõÄÄÚÈÝ»ò¶ÔÄú¶Ôƽ̨ºÍ²úÆ·µÄʹÓá¢ÄúÓëÆ½Ì¨Ïà¹Ø»òÓëÆäËûƽ̨Óû§Ïà¹ØµÄÐÐΪ»òÈκÎÎ¥·´±¾Ê¹ÓÃÌõ¿î¡¢Èκη¨ÂÉ»òÈκεÚÈý·½È¨Àû¶ø²úÉúµÄ»òÒÔÈκη½Ê½ÓëÖ®Ïà¹ØµÄÔðÈΡ¢Ë÷Åâ¡¢Ëðʧ¡¢·ÑÓü°Ö§³ö£¬°üÀ¨µ«²»ÏÞÓÚÂÉʦ·Ñ¡£Äú£¬ÎªÄú×ÔÉí¼°ÒÔÄúµÄ¼Ì³ÐÈË¡¢¼ÌÈÎÕß¡¢³Ð°üÈË¡¢²Æ²ú¼ÌÊÜÈ˺ÍÊÜÈÃÈËÃûÒå£¬ÌØ´ËÍêÈ«ºÍÓÀ¾Ã·ÅÆú×·¾¿²¢Ãâ³ýÈκÎÄúÓëʹÓÃÆ½Ì¨ÓйصÄËðʧ¶øÏíÓеÄÕë¶ÔÕܶúÉúÃü¿Æ¼¼·½µÄÈκÎË÷Åâ»òËßȨ¡£

(3£©ÕܶúÉúÃü¿Æ¼¼²»¶ÔÈκÎÓÉÓÚʹÓûòÎÞ·¨Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼Æ½Ì¨»òͨ¹ýƽ̨¹ºÂòµÄÉÌÆ·¡¢±¾Æ½Ì¨ÆäËûÓû§µÄÐÐΪ£¨ÎÞÂÛÊÇÏßÉϵϹÊÇÏßÏµģ©¡¢»ò²Î¼ÓÕܶúÉúÃü¿Æ¼¼»î¶¯¡¢»ò²Î¼ÓÕܶúÉúÃü¿Æ¼¼ºÏ×÷»ï°é»î¶¯¡¢»òÓëÆ½Ì¨Ê¹ÓÃÏà¹ØµÄÈκÎÄÚÈÝ¡¢»ò²Î¼ÓÈÎºÎÆäËû»î¶¯¶øÒýÆðµÄÖ±½ÓµÄ¡¢¼ä½ÓµÄ¡¢Å¼È»µÄ¡¢ÌØÊâµÄ½á¹ûË𺦳е£ÔðÈΣ¬°üÀ¨ÈκÎÀûÒæËðʧ»òÊý¾ÝÒÅʧ£¬¼´Ê¹ÕܶúÉúÃü¿Æ¼¼ÒѾ­±»¸æÖª¿ÉÄÜÔì³É´ËÀàË𺦡£

(4£©Äú³Ðµ£Ê¹ÓÃÕܶúÉúÃü¿Æ¼¼·þÎñºÍ²úÆ·µÄÈ«²¿ÔðÈΡ£¶ÔÓÚÄúʹÓÃÕܶúÉúÃü¿Æ¼¼·þÎñºÍ²úÆ·»òÆäÄÚÈݶøÔì³ÉË𺦵ÄΨһ²¹³¥´ëÊ©ÊÇֹͣʹÓñ¾·þÎñºÍ²úÆ·¡£¶ÔÄúÓÉÓÚʹÓÃ¸ÃÆ½Ì¨»òÆäÄÚÈÝËùÔì³ÉµÄÈκÎË𺦻òËðʧ£¬ÕܶúÉúÃü¿Æ¼¼µÄÅâ³¥ÔðÈβ»³¬¹ý1ÔªÈËÃñ±Ò¡£

¾Å¡¢Ë¾·¨¹ÜϽȨ

±¾Ìõ¿îÊÊÓÃÓÚÖйúµØÇø£¨°üÀ¨¸Û°Ą̈µØÇø£©£¬Èç¹ûÄú¾ÓסÔÚÆäËûÈκιú¼Ò£¯µØÇø£¬Ôò¿ÉÄÜÊÊÓò»Í¬µÄÌõ

¿î¡£

(1£©ÄúͬÒ⣬ÕܶúÉúÃü¿Æ¼¼Î»ÓÚÖйú´ó½µØÇø£¬ÔÚÖйú´ó½µØÇøÒÔÍâµÄÆäËû˾·¨Ï½Çø²»¶ÔÕܶúÉúÃü¿Æ¼¼ÏíÓйÜϽȨ¡£

(2£©ÄúͬÒ⣬ƽ̨¡¢Ìõ¿î¡¢Òþ˽Õþ²ßÄúÓëÕܶúÉúÃü¿Æ¼¼Ö®¼äµÄÈκÎÕùÒéÓ¦Êܵ½Öйú´ó½µØÇøµÄ·¨ÂɹÜϽ¡£±¾Ìõ¿îµÄ¶©Á¢¡¢Ö´ÐкͽâÊͼ°ÕùÒéµÄ½â¾ö¾ùÓ¦ÊÊÓÃÖйú´ó½µØÇøµÄ·¨ÂÉ¡£

(3£©ÈçÄúºÍÕܶúÉúÃü¿Æ¼¼¾Í±¾Ìõ¿îÄÚÈÝ»òÆäÖ´Ðз¢ÉúÈκÎÕùÒ飬˫·½Ó¦¾¡Á¿ÓѺÃЭÉ̽â¾ö£»Ð­É̲»³Éʱ£¬ÈκÎÒ»·½¾ù¿ÉÏòÕܶúÉúÃü¿Æ¼¼×¡ËùµØµÄ·¨ÔºÌáÆðËßËÏ¡£

Ê®¡¢ÆäËû¹æ¶¨

(1£©ÄúͬÒâÕܶúÉúÃü¿Æ¼¼ÔÚ·¨ÂÉÔÊÐíµÄ·¶Î§ÄÚͨ¹ýµç×Ó·½Ê½·¢Ë͸øÄúµÄÈκÎ֪ͨ¡¢Ð­Òé¡¢Åû¶»òÆäËûͨОù¾ßÓз¨ÂÉЧÁ¦¡£

(2£©ÄúͬÒâÕܶúÉúÃü¿Æ¼¼¿ÉÒÔ²»¾­Í¨ÖªÄúµÄÇé¿öÏÂÓÚÈκÎʱ¼äÏòÈκÎÈËתÈÃÆäÔÚ±¾Ìõ¿îÏîϵÄȨÀû¼°ÒåÎñ£¬³ý·Ç·¨ÂÉÁíÓй涨£¬µ«Õ⽫²»»áÓ°ÏìÄúÔÚ±¾Ìõ¿îϵÄȨÀû¼°ÒåÎñ¡£

(3£©ÄúͬÒâÈç¹û±¾Ìõ¿îÖеÄÈκβ¿·Ö±»È϶¨ÎªÎÞЧ£¬ÔòÆäÓಿ·ÖÓ¦¼ÌÐø±£³ÖÓÐЧ¡£

¸ÐлÄúµÄÔĶÁ£¬ÈçÓÐÈκÎÒÉÎÊ£¬¿ÉÖµçÕܶúÉúÃü¿Æ¼¼½øÐÐ×Éѯ£¬µç»°£º0755-86352225¡£

 

\ No newline at end of file diff --git a/app/src/main/assets/terms_en.html b/app/src/main/assets/terms_en.html new file mode 100644 index 0000000..7870ac3 --- /dev/null +++ b/app/src/main/assets/terms_en.html @@ -0,0 +1,77 @@ + + + +
+

1. Acceptance of Terms

+ +

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.

+ + + +

2. Use of the App

+
    +
  • 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.
  • +
  • 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.
  • +
  • Restrictions: You agree not to:
  • +
+
    +
  • Modify, reverse engineer, decompile, or disassemble the App.
  • +
  • Use the App for any unlawful purpose or in any way that could harm ABBI PET INC or its users.
  • +
  • Access or use the App to build a competing service or product.
  • +
+ + + +

3. Accounts and Security

+
    +
  • 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.
  • +
  • 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.
  • +
+

4. Privacy

+ +

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.

+ +

5. User Content

+
    +
  • 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.
  • +
  • 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.
  • +
+ + +

6. Intellectual Property

+ +

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.

+ +

7. Termination

+ +

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.

+ +

8. Disclaimers and Limitation of Liability

+
    +
  • 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.
  • +
  • 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.
  • +
+ +

9. Governing Law

+

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.

+ +

10. Changes to Terms

+

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.

+ +

11. Data Confidentiality

+

We are committed to maintaining the confidentiality of your data. We employ the following measures to ensure data protection:

+
    +
  • Confidentiality Agreements: All employees and third-party service providers who have access to your data are required to sign confidentiality agreements.
  • +
  • Data Anonymization: Where possible, we anonymize your data to protect your privacy.
  • +
  • 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.
  • +
+ +

12. Contact Us

+

If you have any questions about these Terms, please contact us at:

+

ABBI PET INC

+

10700 Richmond Ave Suite 143

+

Houston, TX 77042

+

Email: support@abbidot.com

+ + +
\ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/MyApplication.kt b/app/src/main/java/com/abbidot/tracker/MyApplication.kt new file mode 100644 index 0000000..933dcdd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/MyApplication.kt @@ -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() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/AssignOptionsAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/AssignOptionsAdapter.kt new file mode 100644 index 0000000..9807e18 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/AssignOptionsAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/BaiduMapPoiSearchResultAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/BaiduMapPoiSearchResultAdapter.kt new file mode 100644 index 0000000..e9c700f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/BaiduMapPoiSearchResultAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/ChangePetListDialogAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/ChangePetListDialogAdapter.kt new file mode 100644 index 0000000..6ecb0bd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/ChangePetListDialogAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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(R.id.dialog_my_pet_current_btn) + val change = + holder.itemView.findViewById(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt new file mode 100644 index 0000000..e9ea3f1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/CreditCardAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/CreditCardAdapter.kt new file mode 100644 index 0000000..88da45d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/CreditCardAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/DFUStateAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/DFUStateAdapter.kt new file mode 100644 index 0000000..8c49e2f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/DFUStateAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/DurationSetAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/DurationSetAdapter.kt new file mode 100644 index 0000000..dfa8001 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/DurationSetAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FamilyAvatarAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FamilyAvatarAdapter.kt new file mode 100644 index 0000000..47db29f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FamilyAvatarAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FamilyMembersAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FamilyMembersAdapter.kt new file mode 100644 index 0000000..a6ffd9d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FamilyMembersAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FamilyRelationAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FamilyRelationAdapter.kt new file mode 100644 index 0000000..c6458b0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FamilyRelationAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FeedbackImageAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FeedbackImageAdapter.kt new file mode 100644 index 0000000..c52c591 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FeedbackImageAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FencesZoneAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FencesZoneAdapter.kt new file mode 100644 index 0000000..115c58e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FencesZoneAdapter.kt @@ -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?, isShowRightArrow: Boolean = true +) : BaseRecyclerAdapter(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 + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/FirstPermissionsAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/FirstPermissionsAdapter.kt new file mode 100644 index 0000000..c9cb3ff --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/FirstPermissionsAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/GridItemDecoration.kt b/app/src/main/java/com/abbidot/tracker/adapter/GridItemDecoration.kt new file mode 100644 index 0000000..7a1e683 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/GridItemDecoration.kt @@ -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 + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HelpTextImageTypeAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HelpTextImageTypeAdapter.kt new file mode 100644 index 0000000..adef564 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HelpTextImageTypeAdapter.kt @@ -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?) : + BaseMultiItemQuickAdapter(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(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(R.id.tv_help_title_one) + .apply { + text = item.menuName + setTextColor(ContextCompat.getColor(context, item.colorRedId)) + } + + MultipleEntity.IMG -> { + holder.getView(R.id.iv_help_image_type) + .setImageResource(item.imageId) + } + + MultipleEntity.IMG_IMG -> { + holder.getView(R.id.tv_help_title_one).text = item.menuName + holder.itemView.setPadding(0, AppUtils.dpToPx(20), 0, 0) + } + + MultipleEntity.IMG_TEXT_IMG -> { + holder.getView(R.id.tv_help_title_two).text = item.menuName + holder.itemView.setPadding(0, AppUtils.dpToPx(14), 0, 0) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomeAccountMenuAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomeAccountMenuAdapter.kt new file mode 100644 index 0000000..9e44fd6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomeAccountMenuAdapter.kt @@ -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? +) : BaseMultiItemQuickAdapter(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(R.id.tv_title_name) + typefaceTextView.text = item.menuName + } + + MultipleEntity.IMG_TEXT -> { + holder.getView(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceMsgAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceMsgAdapter.kt new file mode 100644 index 0000000..9375cd4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceMsgAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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)) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceStateAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceStateAdapter.kt new file mode 100644 index 0000000..136130c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomeMapDeviceStateAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomePetFamilyAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomePetFamilyAdapter.kt new file mode 100644 index 0000000..e8e8a13 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomePetFamilyAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt new file mode 100644 index 0000000..b262e80 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackMenuAdapter.kt @@ -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? +) : BaseMultiItemQuickAdapter(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(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(R.id.iv_dfu_red_dot).visibility = + if (item.isSwitch) View.VISIBLE else View.GONE + val firmwareName = view.findViewById(R.id.tv_custom_group_dfu_detail_text) + firmwareName.text = item.menuValue + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt new file mode 100644 index 0000000..880a721 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HomePetTrackStateAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/HowWorkAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/HowWorkAdapter.kt new file mode 100644 index 0000000..0c07328 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/HowWorkAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/LedLightColorAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/LedLightColorAdapter.kt new file mode 100644 index 0000000..d47f3eb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/LedLightColorAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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(R.id.show_current_color_select) + radiusImageView.setImageResource(item) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt new file mode 100644 index 0000000..0ecf5fd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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(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(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(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) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/MyTrackerV2Adapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/MyTrackerV2Adapter.kt new file mode 100644 index 0000000..a225529 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/MyTrackerV2Adapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/NotificationV2Adapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/NotificationV2Adapter.kt new file mode 100644 index 0000000..49af39b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/NotificationV2Adapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/PermissionsSetAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/PermissionsSetAdapter.kt new file mode 100644 index 0000000..3cc98ac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/PermissionsSetAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/PetLabelsAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/PetLabelsAdapter.kt new file mode 100644 index 0000000..17650ba --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/PetLabelsAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/PetsBadgesAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/PetsBadgesAdapter.kt new file mode 100644 index 0000000..b9f0c4f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/PetsBadgesAdapter.kt @@ -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?,itemViewWidthDp:Int=80) : + BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/PetsParentBadgesAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/PetsParentBadgesAdapter.kt new file mode 100644 index 0000000..7e15840 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/PetsParentBadgesAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SelectFencesTypeCardShadeAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SelectFencesTypeCardShadeAdapter.kt new file mode 100644 index 0000000..a28254a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SelectFencesTypeCardShadeAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SelectMapListDialogAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SelectMapListDialogAdapter.kt new file mode 100644 index 0000000..52dc62b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SelectMapListDialogAdapter.kt @@ -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?) : + BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SelectMapTypeCardShadeAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SelectMapTypeCardShadeAdapter.kt new file mode 100644 index 0000000..ee6aed2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SelectMapTypeCardShadeAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SpaceItemDecoration.kt b/app/src/main/java/com/abbidot/tracker/adapter/SpaceItemDecoration.kt new file mode 100644 index 0000000..86b23a6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SpaceItemDecoration.kt @@ -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 + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt new file mode 100644 index 0000000..a283407 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt new file mode 100644 index 0000000..ae672e4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt new file mode 100644 index 0000000..0369e71 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionPlanDetailAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SureSubscribeSummaryAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SureSubscribeSummaryAdapter.kt new file mode 100644 index 0000000..7d07159 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/SureSubscribeSummaryAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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)) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/TextViewAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/TextViewAdapter.kt new file mode 100644 index 0000000..8d3158b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/TextViewAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/ViewPagerAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/ViewPagerAdapter.kt new file mode 100644 index 0000000..18b04cf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/ViewPagerAdapter.kt @@ -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, fragmentActivity: FragmentActivity) : + FragmentStateAdapter(fragmentActivity) { + + private val mFragmentList = list + + override fun getItemCount() = mFragmentList.size + + override fun createFragment(position: Int) = mFragmentList[position] + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/VirtualFencesZoneShadeAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/VirtualFencesZoneShadeAdapter.kt new file mode 100644 index 0000000..564e274 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/VirtualFencesZoneShadeAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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 + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/WiFiListAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/WiFiListAdapter.kt new file mode 100644 index 0000000..93a3e17 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/WiFiListAdapter.kt @@ -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? +) : BaseRecyclerAdapter(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) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt new file mode 100644 index 0000000..260056d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/adapter/WiFiZoneAdapter.kt @@ -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?, isShowArrowRight: Boolean = true +) : BaseRecyclerAdapter(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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/alipay/PayResult.kt b/app/src/main/java/com/abbidot/tracker/alipay/PayResult.kt new file mode 100644 index 0000000..001d31b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/alipay/PayResult.kt @@ -0,0 +1 @@ +package com.abbidot.tracker.alipay import android.text.TextUtils /** * æ”¯ä»˜å®æ”¯ä»˜éªŒè¯æ¶ˆæ¯ */ class PayResult(rawResult: Map?) { /** * @return the resultStatus */ var resultStatus: String? = null /** * @return the result */ var result: String? = null /** * @return the memo */ var memo: String? = null override fun toString(): String { return "resultStatus={$resultStatus};memo={$memo};result={$result}" } init { rawResult?.let { for (key in it.keys) { when { TextUtils.equals(key, "resultStatus") -> { resultStatus = it[key] } TextUtils.equals(key, "result") -> { result = it[key] } TextUtils.equals(key, "memo") -> { memo = it[key] } } } } } } \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt new file mode 100644 index 0000000..70d199f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt @@ -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(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) { + activityResultLauncher.launch(intent) + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) + } + + /** + * 统一处ç†ç½‘络请求结果 + */ + fun dealRequestResult( + it: Result, + 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************************************/ +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt b/app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt new file mode 100644 index 0000000..0394f07 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseDialog.kt @@ -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 + ( + 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<*>) + } +} + diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt b/app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt new file mode 100644 index 0000000..ae739eb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseDiffBean.kt @@ -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 +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseDiffCallBack.kt b/app/src/main/java/com/abbidot/tracker/base/BaseDiffCallBack.kt new file mode 100644 index 0000000..c5cfff1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseDiffCallBack.kt @@ -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(oldList: MutableList?, newList: MutableList?) : + DiffUtil.Callback() { + + private var mOldList: MutableList? = oldList + private var mNewList: MutableList? = 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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt b/app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt new file mode 100644 index 0000000..5b0e8b8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseFragment.kt @@ -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( + 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 + ) { + (activity as BaseActivity<*>).launchActivity(activityResultLauncher, intent) + } + + /** + * 统一处ç†ç½‘络请求结果 + */ + fun dealRequestResult( + it: Result, + 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 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt b/app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt new file mode 100644 index 0000000..ed6b00f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseMapCommon.kt @@ -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)) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseQMUIRVItemSwipeAction.kt b/app/src/main/java/com/abbidot/tracker/base/BaseQMUIRVItemSwipeAction.kt new file mode 100644 index 0000000..694e39f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseQMUIRVItemSwipeAction.kt @@ -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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseSwipeMenuAdapter.kt b/app/src/main/java/com/abbidot/tracker/base/BaseSwipeMenuAdapter.kt new file mode 100644 index 0000000..ef6955f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseSwipeMenuAdapter.kt @@ -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(context: Context, list: MutableList) : + RecyclerView.Adapter() { + + private var mData: MutableList = 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?) { + if (list != null) { + mData = list + //出现没有数æ®å°±æ˜¾ç¤ºç©ºå¸ƒå±€ + if (mData.size == 0) { + showEmptyView(true) + } + } + } + + fun getData() = mData + + fun remove(oldList: MutableList, pos: Int): MutableList { + val newList: MutableList = oldList.toMutableList() + newList.removeAt(pos) + return newList + } + + fun getItem(pos: Int) = mData[pos] + + /** + * 设置显示空布局 等于0䏿˜¾ç¤ºç©ºå¸ƒå±€ + */ + abstract fun getEmptyLayoutId(viewType: Int): Int + + //èœå•é›†åˆ + abstract fun getSwipeActions(): MutableList + 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 + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseView.kt b/app/src/main/java/com/abbidot/tracker/base/BaseView.kt new file mode 100644 index 0000000..ef561ee --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/base/BaseView.kt @@ -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) { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt new file mode 100644 index 0000000..68f5651 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/ActiveTimeBean.kt @@ -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?, + var thirtyDatas: MutableList?, +) : Parcelable { + constructor() : this( + "", 0, 0, 0, 0.0, "", "", 0.0, 0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0.0, "", 0, null, null + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/AlipayOrderBean.kt b/app/src/main/java/com/abbidot/tracker/bean/AlipayOrderBean.kt new file mode 100644 index 0000000..d750436 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/AlipayOrderBean.kt @@ -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("") +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/BleReportDataBean.kt b/app/src/main/java/com/abbidot/tracker/bean/BleReportDataBean.kt new file mode 100644 index 0000000..c972358 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/BleReportDataBean.kt @@ -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?, + 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 + ) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/BleTrackDeviceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/BleTrackDeviceBean.kt new file mode 100644 index 0000000..d9e1bd2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/BleTrackDeviceBean.kt @@ -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) +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/CountryCodeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/CountryCodeBean.kt new file mode 100644 index 0000000..aae044f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/CountryCodeBean.kt @@ -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) diff --git a/app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt b/app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt new file mode 100644 index 0000000..08a4433 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/CreditCardBean.kt @@ -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) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt b/app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt new file mode 100644 index 0000000..475cf6c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/DFUStateBean.kt @@ -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, "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/DataBean.kt b/app/src/main/java/com/abbidot/tracker/bean/DataBean.kt new file mode 100644 index 0000000..e075f95 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/DataBean.kt @@ -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 +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt new file mode 100644 index 0000000..07bdbf4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/DeviceBean.kt @@ -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 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/DeviceDetailBean.kt b/app/src/main/java/com/abbidot/tracker/bean/DeviceDetailBean.kt new file mode 100644 index 0000000..349ecbd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/DeviceDetailBean.kt @@ -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) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt b/app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt new file mode 100644 index 0000000..b574afc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/DeviceInfoBean.kt @@ -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) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt b/app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt new file mode 100644 index 0000000..5b99359 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/FamilyBean.kt @@ -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 + } +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt b/app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt new file mode 100644 index 0000000..84bca9d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/FamilyPetBean.kt @@ -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?) { + constructor() : this("", "", "", null) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt b/app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt new file mode 100644 index 0000000..da62399 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/FencesBean.kt @@ -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 + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt b/app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt new file mode 100644 index 0000000..6821e4e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/FirmwareBean.kt @@ -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 +) \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt b/app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt new file mode 100644 index 0000000..99f061b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/GetFencesBean.kt @@ -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?, + var nogoFenceList: MutableList? +) : Parcelable { + constructor() : this(0.0, 0.0, null, null) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/HistoryDataBean.kt b/app/src/main/java/com/abbidot/tracker/bean/HistoryDataBean.kt new file mode 100644 index 0000000..3e56793 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/HistoryDataBean.kt @@ -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, "", + "") +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt b/app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt new file mode 100644 index 0000000..47fa20e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/HomeDataBean.kt @@ -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) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt b/app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt new file mode 100644 index 0000000..f2ce9a3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/InviteInfoBean.kt @@ -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, var inviteArray: MutableList +) diff --git a/app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt b/app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt new file mode 100644 index 0000000..ae32fac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/LKSimListBean.kt @@ -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? +) : Parcelable { + constructor() : this("", null) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt new file mode 100644 index 0000000..d1fb76c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/LKSimPriceBean.kt @@ -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, "", "", "", "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/LKSimSetMealBean.kt b/app/src/main/java/com/abbidot/tracker/bean/LKSimSetMealBean.kt new file mode 100644 index 0000000..6fd90ad --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/LKSimSetMealBean.kt @@ -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?, + var stripeCoupon: String +) : Parcelable { + constructor() : this("", "", "", "", "", "", "", "", "", "", null, "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/LabelBean.kt b/app/src/main/java/com/abbidot/tracker/bean/LabelBean.kt new file mode 100644 index 0000000..3f6cb8d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/LabelBean.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.bean + +import com.abbidot.tracker.base.BaseDiffBean + +/** + *Created by .yzq on 2021/12/21/021. + * @link + * @description:宠物标签 + */ +data class LabelBean(var name: String, var check: Boolean) : BaseDiffBean() { + + //设置空的构造方法 + constructor() : this("", false) + constructor(name: String) : this(name, false) + + override fun isSameObject(other: Any): Boolean { + val oldItem = other as LabelBean + return oldItem.name == name + } + + override fun hasSameContent(other: Any): Boolean { + val oldItem = other as LabelBean + return oldItem.name == name && oldItem.check == check + } +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/LiveDataBean.kt b/app/src/main/java/com/abbidot/tracker/bean/LiveDataBean.kt new file mode 100644 index 0000000..a84cd5c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/LiveDataBean.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/4/28/028. + * @link + * @description: + */ +data class LiveDataBean( + var livePoints: MutableList?, var deviceInfo: MapDeviceBean? +) { + constructor() : this(null, null) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/MapDeviceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/MapDeviceBean.kt new file mode 100644 index 0000000..96f1dab --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/MapDeviceBean.kt @@ -0,0 +1,70 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import com.abbidot.tracker.constant.ConstantInt +import kotlinx.parcelize.Parcelize + +@Parcelize +data class MapDeviceBean( + var deviceId: String, + var deviceOutId: String, + var baseId: String, + var inSafeZone: Int, + var gpsSignal: Int, + var batteryLevel: Int, + var longitude: Double, + var latitude: Double, + var ledSwitch: Int, + var gnssInterval: Int, + var liveTime: Int, + var liveFlag: Int, + var updateTime: Long, + var latLonUpdateTime: Long, + var lteSignal: Int, + var deviceMacId: String, + var deviceServerId: String, + var powerSwitch: Int, + var inNoGoZone: Int, + var speed: Float, + var inWifiZone: Int, + var ledMode: Int, + var ledRedValue: Int, + var ledGreenValue: Int, + var ledBlueValue: Int, + var fences: MutableList?, + var wifiZones: MutableList?, + var startTime: String, + var endTime: String +) : Parcelable { + constructor() : this( + "", + "", + "", + ConstantInt.GoodZone, + 0, + 0, + 0.0, + 0.0, + 0, + 0, + 0, + 0, + System.currentTimeMillis(), + System.currentTimeMillis(), + 0, + "", + "", + 0, + 0, + 0f, + 0, + 0, + 0, + 0, + 0, + null, + null, + "", + "" + ) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt b/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt new file mode 100644 index 0000000..63580d4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/MenuTxtBean.kt @@ -0,0 +1,39 @@ +package com.abbidot.tracker.bean + +import com.abbidot.tracker.constant.MultipleEntity +import com.chad.library.adapter.base.entity.MultiItemEntity + +/** + *Created by .yzq on 2021/12/20/020. + * @link + * @description: èœå•显示 + */ +data class MenuTxtBean( + var menuName: String, + var menuValue: String, + var imageId: Int, + var colorRedId: Int, + var imageUrl: String, + var isSwitch: Boolean, + @MultipleEntity val menuType: Int +) : MultiItemEntity { + + //设置空的构造方法 + constructor(@MultipleEntity menuType: Int) : this("", "", 0, 0, "", false, menuType) + + //设置多个构造方法 + constructor(menuName: String, menuValue: String, @MultipleEntity menuType: Int) : this( + menuName, menuValue, 0, 0, "", false, menuType + ) + + constructor(menuName: String, menuValue: String) : this( + menuName, menuValue, 0, 0, "", false, MultipleEntity.TEXT + ) + + constructor(menuName: String, imageId: Int, menuValue: String) : this( + menuName, menuValue, imageId, 0, "", false, MultipleEntity.TEXT + ) + + @MultipleEntity + override val itemType = menuType +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/MessageBean.kt b/app/src/main/java/com/abbidot/tracker/bean/MessageBean.kt new file mode 100644 index 0000000..4b8ce1f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/MessageBean.kt @@ -0,0 +1,28 @@ +package com.abbidot.tracker.bean + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.Ignore +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.database.MyDatabase + +/** + *Created by .yzq on 2022/2/24/024. + * @link + * @description:消æ¯åˆ—表 + */ +@Entity(tableName = MyDatabase.MessageTableName, primaryKeys = ["messageId"]) +data class MessageBean( + @ColumnInfo var messageId: String, + @ColumnInfo var title: String, + @ColumnInfo var message: String, + @ColumnInfo var sendTime: String, + @ColumnInfo var messageType: Int, + @ColumnInfo var imgUrl: String, + @ColumnInfo var isRead: Boolean, + @Ignore @MultipleEntity var isContainImg: Int, + @Ignore var isSelect: Boolean +) { + constructor() : this("", "", "", "", 1, "", false, MultipleEntity.TEXT, false) +} + diff --git a/app/src/main/java/com/abbidot/tracker/bean/NotificationBean.kt b/app/src/main/java/com/abbidot/tracker/bean/NotificationBean.kt new file mode 100644 index 0000000..0e81b68 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/NotificationBean.kt @@ -0,0 +1,11 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/9/26/026. + * @link + * @description: + */ + +data class NotificationBean( + var enabled: Int, var notificationType: Int, var status: Int, var userId: String +) \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/OrderBean.kt b/app/src/main/java/com/abbidot/tracker/bean/OrderBean.kt new file mode 100644 index 0000000..71d1718 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/OrderBean.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2022/3/31/031. + * @link + * @description: + * @param isCanRefund 是å¦å¯ä»¥é€€æ¬¾ 1 是å¯ä»¥ 0 是ä¸å¯ä»¥ + */ +data class OrderBean( + var orderId: String, var orderNo: String, var availableOrder: Int,//åˆ¤æ–­å¥—é¤æ˜¯å¦å¯ç”¨æˆ–过期,1是å¯ç”¨ 0ä¸å¯ç”¨ + var isCanRefund: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt new file mode 100644 index 0000000..0856c69 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PackageBean.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2024/9/5/005. + * @link + * @description: + */ +@Parcelize +data class PackageBean( + var mealId: String, + var planName: String, + var mealUnit: String, + var planCategory: String, + var period: Int, + var popularType: Int, + var discountedPrice: Double, + var autoRenewPrice: Double, + var planPrice: Double, + var discount: Int, + var active: Int, + var selected: Boolean +) : Parcelable diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt new file mode 100644 index 0000000..4484813 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PackageBenefitsBean.kt @@ -0,0 +1,8 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/9/5/005. + * @link + * @description: + */ +data class PackageBenefitsBean(var title: String, var status: Int) diff --git a/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt new file mode 100644 index 0000000..4ee7f82 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PackageTypeBean.kt @@ -0,0 +1,14 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/9/5/005. + * @link + * @description: + */ +data class PackageTypeBean( + var price: Double, + var name: String, + var packageId: String, + var list: MutableList?, + var selected: Boolean +) diff --git a/app/src/main/java/com/abbidot/tracker/bean/ParentBadgeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/ParentBadgeBean.kt new file mode 100644 index 0000000..946ec7d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/ParentBadgeBean.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/3/6/006. + * @link + * @description: + */ +data class ParentBadgeBean( + var parentName: String, var badgeList: MutableList?, var isExpand: Boolean = false +) { + constructor() : this("", null, false) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/PayResultBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PayResultBean.kt new file mode 100644 index 0000000..1fca3b0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PayResultBean.kt @@ -0,0 +1,25 @@ +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/28/028. + * @link + * @description:BraintreePal请求结果返回 + */ +@Parcelize +data class PayResultBean( + var orderId: String, + var tokenId: String, + var url: String, + var surplusDays: Long, + var expirationTime: String, + var deviceOutId: String, + var deviceId: String, + //设备充值类型,0=首次设备充值激活,1=å·²æ·»åŠ è®¾å¤‡å†æ¬¡æ·»åŠ è®¾å¤‡å……å€¼ï¼Œ2=给当å‰çš„设备续费或者å‡çº§å¥—é¤ + var rechargeType: Int +) : Parcelable { + constructor() : this("", "", "", 0L, "", "", "", ConstantInt.Type1) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/PetAllInfoBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PetAllInfoBean.kt new file mode 100644 index 0000000..70cefac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PetAllInfoBean.kt @@ -0,0 +1,15 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/5/28/028. + * @link + * @description: + */ +data class PetAllInfoBean( + var badges: MutableList?, + var activity: ActiveTimeBean?, + var petInfo: PetBean?, + var invites: MutableList? +) { + constructor() : this(null, null, null, null) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/PetBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PetBean.kt new file mode 100644 index 0000000..74f4141 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PetBean.kt @@ -0,0 +1,52 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.base.BaseDiffBean +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2022/2/28/028. + * @link + * @description: + */ +@Parcelize +data class PetBean( + var petId: String, + var deviceServiceId: String, + var petName: String, + var breed: String, + var shared: Int, //0=没有分享,1=是授æƒåˆ†äº«çš„ + var petType: Int, //宠物类别 0=å…¶ä»– 1是狗 2是猫 + var userId: String, + var imgurl: String, + var gender: Int, + var birthdayDate: String, + var createDate: String, + var weight: Float, + var height: Float, + var labels: String, + var deviceOutId: String, + var macID: String, + var mealType: Int, + var availableOrder: Int,//åˆ¤æ–­å¥—é¤æ˜¯å¦å¯ç”¨æˆ–过期,1是å¯ç”¨ 0ä¸å¯ç”¨ + var deviceId: String +) : Parcelable, BaseDiffBean() { + constructor() : this( + "", "", "", "", 0, 1, MMKVUtil.getString(MMKVKey.UserId), "", 0, Utils.formatTime( + System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_CN + ), "", 0f, 0f, "", "", "", 1, 1, "" + ) + + override fun isSameObject(other: Any): Boolean { + val oldItem = other as PetBean + return oldItem.petId == petId + } + + override fun hasSameContent(other: Any): Boolean { + val oldItem = other as PetBean + return oldItem.petName == petName && oldItem.imgurl == imgurl && oldItem.deviceOutId == deviceOutId && oldItem.breed == breed && oldItem.gender == gender && oldItem.birthdayDate == birthdayDate && oldItem.petType == petType && oldItem.weight == weight && oldItem.height == height && oldItem.labels == labels + } +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/PointBean.kt b/app/src/main/java/com/abbidot/tracker/bean/PointBean.kt new file mode 100644 index 0000000..b792724 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/PointBean.kt @@ -0,0 +1,14 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/1/26/026. + * @link + * @description: + */ +data class PointBean(var x: Float, var y: Float) { + constructor() : this(0f, 0f) + + override fun toString(): String { + return "x=$x,y=$y" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/ReceiveDeviceData.kt b/app/src/main/java/com/abbidot/tracker/bean/ReceiveDeviceData.kt new file mode 100644 index 0000000..390cfd6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/ReceiveDeviceData.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.bean + +import com.clj.fastble.data.BleDevice + +/** + *Created by .yzq on 2021/12/1/001. + * @link + * @description: + */ +data class ReceiveDeviceData(var bleDevice: BleDevice?, var data: ByteArray?, var mac: String) { + constructor() : this(null, null, "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/RechargeDeviceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/RechargeDeviceBean.kt new file mode 100644 index 0000000..a2f4c2c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/RechargeDeviceBean.kt @@ -0,0 +1,29 @@ +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/25/025. + * @link + * @description:my card + */ +@Parcelize +data class RechargeDeviceBean( + var deviceId: String, + var deviceOutId: String, + var payType: Int,//ä»˜æ¬¾æ¸ é“ 1 ä¿¡ç”¨å¡ 2Paypal + var orderId: String, + var subscriptionsId: String,//å–æ¶ˆè‡ªåŠ¨ç»­è´¹ç”¨çš„id + var overdueDate: String,//过期日期 + @ConstantInt var subscriptionStatus: Int,//è‡ªåŠ¨ç»­è´¹çŠ¶æ€ + var pet: PetBean?, + var surplusDays: Int, + var addStatus: Int, + var orderStatus: Int, + var period: String, + var iccid: String +) : Parcelable { + constructor() : this("", "", 0, "", "", "", ConstantInt.Close, null, 0, 0, 0, "0", "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/RechargeHistoryBean.kt b/app/src/main/java/com/abbidot/tracker/bean/RechargeHistoryBean.kt new file mode 100644 index 0000000..6b3571d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/RechargeHistoryBean.kt @@ -0,0 +1,14 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2022/3/26/026. + * @link + * @description: + */ +data class RechargeHistoryBean(var cost: Float, + var historyId: String, + var payTime: String, + var feePackage: String, + var deviceOutId: String) { + constructor() : this(0f, "", "", "", "") +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/SetMealBean.kt b/app/src/main/java/com/abbidot/tracker/bean/SetMealBean.kt new file mode 100644 index 0000000..75e3c6a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/SetMealBean.kt @@ -0,0 +1,24 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2022/3/26/026. + * @link + * @description:充值套é¤åˆ—表 + */ +@Parcelize +data class SetMealBean(var subscriptionFee: Double, + var hotType: Int,//1=hot 0=普通 + var mealId: String, + var name: String, + var createdDate: String, + var updateDate: String, + var days: Int, + var period: Float, + var planId: String, + var selected: Boolean, + var accountFee: Double) : Parcelable { + constructor() : this(0.0, 0, "", "", "", "", 0, 0f, "", false,0.0) +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/SleepTimeBean.kt b/app/src/main/java/com/abbidot/tracker/bean/SleepTimeBean.kt new file mode 100644 index 0000000..4f5add1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/SleepTimeBean.kt @@ -0,0 +1,20 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2022/3/15/015. + * @link + * @description: + */ +data class SleepTimeBean( + var dayTime: String, + var deviceId: String, + var sleepTime: Int, + var activeTime: Int, + var sleepId: String, + var sleepValue: String, + var avgSleepTime: Int, + var sevenDatas: MutableList? = null, + var thirtyDatas: MutableList? = null +) { + constructor() : this("", "", 0, 0, "", "", 0, null, null) +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/StripeSubscriptionPriceBean.kt b/app/src/main/java/com/abbidot/tracker/bean/StripeSubscriptionPriceBean.kt new file mode 100644 index 0000000..7bd8364 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/StripeSubscriptionPriceBean.kt @@ -0,0 +1,10 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2023/7/20/020. + * @link + * @description: + */ +data class StripeSubscriptionPriceBean(var customerId: String, var priceId: String) { + constructor() : this("", "") +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt b/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt new file mode 100644 index 0000000..b3d735f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/SubscriptionsOrderBean.kt @@ -0,0 +1,98 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2024/9/4/004. + * @link + * @description: + */ +@Parcelize +data class SubscriptionsOrderBean( + var annualCarePrice: Double, + var annualCareType: Int, + var couponCode: String, + var couponPrice: Double, + var createTime: String, + var customerId: String, + var deviceId: String, + var deviceOutId: String, + var enabled: Int, + var id: String, + var mealDesc: String, + var mealId: String, + var mealName: String, + var mealPeriod: Int, + var mealPrice: Double, + var mealDiscountPrice: Double, + var orderNum: String, + var orderStatus: Int,//0æ”¯ä»˜å–æ¶ˆ 1支付æˆåŠŸ 2支付失败 3待支付 4申请审核中 5退款中 6退款æˆåŠŸ 7退款失败 8审核失败 + var payTime: String, + var payType: Int, + var planCategory: String, + var planId: String, + var priceId: String, + var reactivatePrice: Double, + var reactivation: Int, + var simId: String, + var subscriptionId: String, + var subscriptionStatus: Int, + var surplusDays: Long, + var autoRenewPrice: Double, + var tax: Double, + var totalAmountWithTax: Double, + var transactionId: String, + var updateTime: String, + var useCoupon: Int, + var userId: String, + var mealUnit: String, + var username: String, + var iccid: String, + var endTime: Long, + var isUpdateOrder: Int = 0//æ˜¯å¦æ˜¯å‡çº§è®¢å• 1:是 0:å¦ +) : Parcelable { + constructor() : this( + 0.0, + 0, + "", + 0.0, + "", + "", + "", + "", + 0, + "", + "", + "", + "", + 0, + 0.0, + 0.0, + "", + 0, + "", + 0, + "", + "", + "", + 0.0, + 0, + "", + "", + 0, + 0L, + 0.0, + 0.0, + 0.0, + "", + "", + 0, + "", + "", + "", + "", + 0L, + 0 + ) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/UserBean.kt b/app/src/main/java/com/abbidot/tracker/bean/UserBean.kt new file mode 100644 index 0000000..c9f184c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/UserBean.kt @@ -0,0 +1,26 @@ +package com.abbidot.tracker.bean + +import com.abbidot.tracker.constant.ConstantInt + +/** + *Created by .yzq on 2022/2/18/018. + * @link + * @description:登录æˆåŠŸè¿”å›žç”¨æˆ·ä¿¡æ¯ + */ +data class UserBean( + var userId: String, + var email: String, + var token: String, + var userName: String, + var wxId: String, + //0æ²¡æœ‰ç»‘å®šæ‰‹æœºå· 1绑定了 + var status: Int, + var isBindDevice: Int, //是å¦ç»‘定了设备 0未绑定 1绑定 + var isBindPet: Int, //是å¦ç»‘定了宠物 0未绑定 1绑定 + var isExistNewInvite: Int, //æ˜¯å¦æœ‰è¢«é‚€è¯·çš„设备 0没有 1有 + var measurementUnitType: Int//1:Imperial 2:Metric +) { + + //设置空的构造方法 + constructor() : this("", "", "", "", "", 0, 0, 0, 0, ConstantInt.Type1) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/UserInfoBean.kt b/app/src/main/java/com/abbidot/tracker/bean/UserInfoBean.kt new file mode 100644 index 0000000..468bcce --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/UserInfoBean.kt @@ -0,0 +1,37 @@ +package com.abbidot.tracker.bean + +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil + +/** + *Created by .yzq on 2022/2/18/018. + * @link + * @description:ç”¨æˆ·ä¿¡æ¯ + */ +data class UserInfoBean( + var userId: String, + var email: String, + var userName: String, + var imgurl: String, + var phone: String, + var location: String, + var gender: Int, + var birthdayDate: String, + var deviceCount: Int, + val countryCode: String +// var pets: MutableList? +) { + + constructor() : this( + MMKVUtil.getString(MMKVKey.UserId), + MMKVUtil.getString(MMKVKey.Email), + "", + "", + "", + "", + 1, + "", + 0, + "" + ) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/WXPayOrderBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WXPayOrderBean.kt new file mode 100644 index 0000000..a40bae6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/WXPayOrderBean.kt @@ -0,0 +1,16 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2022/7/29/029. + * @link + * @description:å¾®ä¿¡æ”¯ä»˜é¢„æ”¯ä»˜è®¢å• + */ +data class WXPayOrderBean(val appid: String, + val noncestr: String, + val packageStr: String, + val partnerid: String, + val prepayid: String, + val sign: String, + val timestamp: String) { + constructor() : this("", "", "", "", "", "", "") +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/bean/WiFiBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WiFiBean.kt new file mode 100644 index 0000000..e3660a5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/WiFiBean.kt @@ -0,0 +1,14 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +@Parcelize +data class WiFiBean( + var id: Int, var name: String, var mac: String, var signal: Int, var auth_type: Int +) : Parcelable diff --git a/app/src/main/java/com/abbidot/tracker/bean/WiFiBleListBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WiFiBleListBean.kt new file mode 100644 index 0000000..71b9440 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/WiFiBleListBean.kt @@ -0,0 +1,8 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description:获å–设备è“牙返回json字符串 + */ +data class WiFiBleListBean(var wifi: MutableList) diff --git a/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneBean.kt new file mode 100644 index 0000000..3d9f238 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneBean.kt @@ -0,0 +1,24 @@ +package com.abbidot.tracker.bean + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +@Parcelize +data class WiFiZoneBean( + var wifiZoneId: String, + var deviceId: String, + var wifiZoneName: String, + var address: String, + var wifiMac: String, + var wifiName: String, + var longitude: Double, + var latitude: Double, + var type: Int //1是home 2是office +) : Parcelable { + constructor() : this("", "", "", "", "", "", 0.0, 0.0, 1) +} diff --git a/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt new file mode 100644 index 0000000..5c619f0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/bean/WiFiZoneListBean.kt @@ -0,0 +1,10 @@ +package com.abbidot.tracker.bean + +/** + *Created by .yzq on 2024/6/5/005. + * @link + * @description: + */ +data class WiFiZoneListBean( + var latitude: Double, var longitude: Double, var list: MutableList? +) diff --git a/app/src/main/java/com/abbidot/tracker/constant/ConstantInt.kt b/app/src/main/java/com/abbidot/tracker/constant/ConstantInt.kt new file mode 100644 index 0000000..ebdd91a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/constant/ConstantInt.kt @@ -0,0 +1,122 @@ +package com.abbidot.tracker.constant + +import android.annotation.SuppressLint +import androidx.annotation.IntDef + +/** + *Created by .yzq on 2022/4/8/008. + * @link + * @description:int å¸¸é‡ + */ +@SuppressLint("UniqueConstants") +@IntDef( + ConstantInt.Open, + ConstantInt.Close, + ConstantInt.BadZone, + ConstantInt.GoodZone, + ConstantInt.LowBattery20, + ConstantInt.LowBattery10, + ConstantInt.LowBattery30, + ConstantInt.NoSignal, + ConstantInt.Line, + ConstantInt.Point, + ConstantInt.CircleShapeType, + ConstantInt.RectangleShapeType, + ConstantInt.UserLocationType, + ConstantInt.PolygonShapeType, + ConstantInt.OtherLocationType, + ConstantInt.SafeZone, + ConstantInt.NoGoZone, + ConstantInt.OtherPetType, + ConstantInt.DogPetType, + ConstantInt.CatPetType, + ConstantInt.WoMan, + ConstantInt.Man, + ConstantInt.Type0, + ConstantInt.Type1, + ConstantInt.Type2, + ConstantInt.Type3, + ConstantInt.Type4, + ConstantInt.SpecialType, + ConstantInt.isBind, + ConstantInt.NoBind, + ConstantInt.WeakSignal, + ConstantInt.DefaultSportGoal, + ConstantInt.MaxType, + ConstantInt.MinType, + ConstantInt.HeightType, + ConstantInt.WeightType, + ConstantInt.BasicPackage, + ConstantInt.PremiumPackage, + ConstantInt.MinSportGoal, + ConstantInt.NoShare, + ConstantInt.ReportTimeOutTime, + ConstantInt.PetLocationType +) +@Retention(AnnotationRetention.RUNTIME) +annotation class ConstantInt { + companion object { + const val SpecialType = -1 + const val Type0 = 0 + const val Type1 = 1 + const val Type2 = 2 + const val Type3 = 3 + const val Type4 = 4 + + const val OtherPetType = 0 + const val DogPetType = 1 + const val CatPetType = 2 + + const val MaxType = 0 + const val MinType = 1 + const val HeightType = 0 + const val WeightType = 1 + + const val WoMan = 0 + const val Man = 1 + + const val isBind = 1 + const val NoBind = 0 + + const val Open = 1 + const val Close = 0 + const val BadZone = 1 + const val GoodZone = 0 + const val SafeZone = 1 + const val NoGoZone = 2 + const val LowBattery20 = 20 + const val LowBattery10 = 10 + const val LowBattery30 = 30 + const val NoSignal = 0 + const val WeakSignal = 50 + const val Line = 2 + const val Point = 3 + + //å›´æ æ ·å¼ 1=圆形,2=矩形,3=六边形 + const val CircleShapeType = 1 + const val RectangleShapeType = 2 + const val PolygonShapeType = 3 + + const val OtherLocationType = 2 + const val UserLocationType = 1 + const val PetLocationType = 0 + + //默认的è¿åŠ¨ç›®æ ‡æ—¶é—´(min) + const val DefaultSportGoal = 60 + + //æŽ¨èæœ€å°çš„è¿åŠ¨ç›®æ ‡æ—¶é—´(min) + const val MinSportGoal = 30 + + //åŸºç¡€å¥—é¤ + const val BasicPackage = 1 + + //é«˜çº§å¥—é¤ + const val PremiumPackage = 2 + + //䏿˜¯åˆ†äº«çš„ + const val NoShare = 0 + + //上报超时时间(min) + const val ReportTimeOutTime = 70 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt b/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt new file mode 100644 index 0000000..5a6153e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt @@ -0,0 +1,118 @@ +package com.abbidot.tracker.constant + +import androidx.annotation.StringDef + +/** + *Created by .yzq on 2022/4/8/008. + * @link + * @description:String å¸¸é‡ + */ +@StringDef( + ConstantString.isCheck, + ConstantString.Amount, + ConstantString.Card, + ConstantString.Title, + ConstantString.Url, + ConstantString.MapDeviceBean, + ConstantString.Type, + ConstantString.DeviceAuthorized, + ConstantString.PetAuthorized, + ConstantString.DeviceId, + ConstantString.DeviceOutId, + ConstantString.FenceId, + ConstantString.Fence, + ConstantString.CurrentFence, + ConstantString.Edit, + ConstantString.PetLabels, + ConstantString.Pet, + ConstantString.PetHeight, + ConstantString.Man, + ConstantString.WoMan, + ConstantString.PetId, + ConstantString.PetHeadUrl, + ConstantString.DeviceInfo, + ConstantString.RechargeDevice, + ConstantString.SetMeal, + ConstantString.HistoryDataBean, + ConstantString.Mac, + ConstantString.TodayActiveTime, + ConstantString.Index, + ConstantString.Photo, + ConstantString.OrderId, + ConstantString.LkSetMeal, + ConstantString.PartnerCode, + ConstantString.JumpActivity, + ConstantString.WiFi, + ConstantString.WiFiZone, + ConstantString.Latitude, + ConstantString.Longitude, + ConstantString.UserBean, + ConstantString.BleDevice, + ConstantString.isFirstBind, + ConstantString.RechargeType, + ConstantString.Id, + ConstantString.PetWeight, + ConstantString.Upgrade, + ConstantString.PackageUnitMonth, + ConstantString.PackageUnitYear, + ConstantString.SetMealIndex +) +@Retention(AnnotationRetention.SOURCE) +annotation class ConstantString { + companion object { + + const val DeviceAuthorized = "isDeviceAuthorized" + const val PetAuthorized = "isPetAuthorized" + const val DeviceId = "deviceId" + const val DeviceOutId = "deviceOutId" + const val Mac = "mac" + const val FenceId = "fenceId" + const val Fence = "fence" + const val WiFi = "wifi" + const val WiFiZone = "wifiZone" + const val CurrentFence = "currentFence" + const val Edit = "isEdit" + const val PetLabels = "petLabels" + const val Pet = "pet" + const val PetHeadUrl = "petHeadUrl" + const val PetId = "petId" + const val PetHeight = "petHeight" + const val PetWeight = "petWeight" + const val TodayActiveTime = "todayActiveTime" + const val Man = "1" + const val WoMan = "0" + const val DeviceInfo = "deviceInfo" + const val BleDevice = "bleDevice" + const val RechargeDevice = "rechargeDevice" + const val RechargeType = "rechargeType" + const val PartnerCode = "partnerCode" + const val SetMeal = "setMeal" + const val SetMealIndex = "setMealIndex" + const val LkSetMeal = "LksetMeal" + const val JumpActivity = "jumpActivity" + const val Latitude = "latitude" + const val Longitude = "longitude" + const val isFirstBind = "isFirstBind" + + const val isCheck = "isCheck" + const val Amount = "amount" + const val Card = "card" + const val Title = "title" + const val Id = "id" + const val Url = "url" + const val OrderId = "orderId" + const val MapDeviceBean = "mapDeviceBean" + const val UserBean = "userBean" + const val HistoryDataBean = "historyDataBean" + const val Upgrade = "upgrade" + + //套é¤å•ä½ + const val PackageUnitMonth = "MONTH" + const val PackageUnitYear = "YEAR" + + //åªæ˜¯ç”¨æ¥åŒºåˆ†ç±»åž‹ + const val Type = "type" + const val Photo = "photo" + const val Index = "index" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/constant/GetResultCallback.kt b/app/src/main/java/com/abbidot/tracker/constant/GetResultCallback.kt new file mode 100644 index 0000000..43ec746 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/constant/GetResultCallback.kt @@ -0,0 +1,13 @@ +package com.abbidot.tracker.constant + +/** + *Created by .yzq on 2022/2/7/007. + * @link + * @description: + */ +interface GetResultCallback { + fun onResult(any: Any) + + //默认å¯ä»¥ä¸é‡å†™ï¼Œç›¸å½“于java中的default修饰的 + fun onRequestError(exceptionCode:String?) {} +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/constant/KeyNames.kt b/app/src/main/java/com/abbidot/tracker/constant/KeyNames.kt new file mode 100644 index 0000000..3ce9de2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/constant/KeyNames.kt @@ -0,0 +1,17 @@ +package com.abbidot.tracker.constant + +/** + *Created by .yzq on 2023/7/13/013. + * @link + * @description: + */ +class KeyNames { + companion object { + private const val COMMON_PREFIX = "com.abbidot.metadata" + const val BUG_LY_KEY_NAME = "$COMMON_PREFIX.bugly.key" + const val MAPBOX_ACCESS_TOKEN = "$COMMON_PREFIX.mapbox.access.token" + const val HTTP_REQUEST_KEY = "$COMMON_PREFIX.http.request.key" + const val STRIPE_RELEASE_KEY = "$COMMON_PREFIX.stripe.release.key" + const val STRIPE_TEST_KEY = "$COMMON_PREFIX.stripe.test.key" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/constant/MultipleEntity.kt b/app/src/main/java/com/abbidot/tracker/constant/MultipleEntity.kt new file mode 100644 index 0000000..9dae90a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/constant/MultipleEntity.kt @@ -0,0 +1,23 @@ +package com.abbidot.tracker.constant + +import androidx.annotation.IntDef + +/** + *Created by .yzq on 2021/12/20/020. + * @link + * @description:多布局类型 + */ +@IntDef(MultipleEntity.IMG, MultipleEntity.TEXT, MultipleEntity.IMG_TEXT, MultipleEntity.IMG_IMG, + MultipleEntity.IMG_TEXT_IMG, MultipleEntity.TEXT_TEXT_IMG, MultipleEntity.TEXT_NAME) +@Retention(AnnotationRetention.SOURCE) +annotation class MultipleEntity { + companion object { + const val TEXT = 0 + const val IMG = 1 + const val IMG_TEXT = 2 + const val IMG_IMG = 3 + const val IMG_TEXT_IMG = 4 + const val TEXT_TEXT_IMG = 5 + const val TEXT_NAME = 6 + } +} diff --git a/app/src/main/java/com/abbidot/tracker/database/MyDatabase.kt b/app/src/main/java/com/abbidot/tracker/database/MyDatabase.kt new file mode 100644 index 0000000..660139e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/database/MyDatabase.kt @@ -0,0 +1,68 @@ +package com.abbidot.tracker.database + +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.abbidot.tracker.MyApplication +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.bean.MessageBean +import com.abbidot.tracker.database.dao.CreditCardDao +import com.abbidot.tracker.database.dao.DeviceDao +import com.abbidot.tracker.database.dao.MessageDao + +/** + *Created by .yzq on 2021/11/6/006. + * @link + * @description:RoomDatabase实例 + */ +//exportSchema = false,防止改数æ®åº“内容版本自动增加 +@Database( + entities = [DeviceBean::class, CreditCardBean::class, MessageBean::class], + version = 4, +// autoMigrations = [AutoMigration(from = 1, to = 2)], + exportSchema = false, +) +abstract class MyDatabase : RoomDatabase() { + abstract fun deviceDao(): DeviceDao + abstract fun creditCardDao(): CreditCardDao + abstract fun messageDao(): MessageDao + + companion object { + + //https://blog.csdn.net/shulianghan/article/details/131040728 +// val MIGRATION_1_2 = object : Migration(1, 2) { +// override fun migrate(database: SupportSQLiteDatabase) { +// // 执行从旧版本å‡çº§åˆ°æ–°ç‰ˆæœ¬çš„ SQL è¯­å¥ +//// database.execSQL("ALTER TABLE $DeviceTableName ADD COLUMN new_column INTEGER DEFAULT 0 NOT NULL") +//// database.execSQL("ALTER TABLE $CreditCardTableName ADD COLUMN new_column INTEGER DEFAULT 0 NOT NULL") +// database.execSQL("CREATE TABLE $MessageTableName(messageId TEXT NOT NULL PRIMARY KEY,title TEXT,message TEXT,sendTime TEXT,messageType INTEGER,imgUrl TEXT,isRead BIT)") +// } +// } + + //MyDatabaseå•ä¾‹æ¨¡å¼ + private val db: MyDatabase by lazy { + Room.databaseBuilder(MyApplication.instance, MyDatabase::class.java, "tracker_dp") +// .addMigrations(MIGRATION_1_2) + .fallbackToDestructiveMigration()//删除旧表格并创建新表格,的方å¼å‡çº§æ•°æ®åº“版本 + .build() + } + + //表å + const val CreditCardTableName = "creditCard" + const val DeviceTableName = "device" + const val MessageTableName = "message" + + fun deviceDao(): DeviceDao { + return db.deviceDao() + } + + fun creditCardDao(): CreditCardDao { + return db.creditCardDao() + } + + fun messageDao(): MessageDao { + return db.messageDao() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/database/dao/BaseDao.kt b/app/src/main/java/com/abbidot/tracker/database/dao/BaseDao.kt new file mode 100644 index 0000000..b134263 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/database/dao/BaseDao.kt @@ -0,0 +1,119 @@ +package com.abbidot.tracker.database.dao + +import android.util.Log +import androidx.room.* +import androidx.sqlite.db.SimpleSQLiteQuery +import androidx.sqlite.db.SupportSQLiteQuery + +/** + *Created by .yzq on 2022/4/1/001. + * @link + * @description:æ•°æ®åº“Dao基类 + */ +interface BaseDao { + /** + * 获å–表å + */ +// val tableName: String +// get() { +// val clazz = +// (javaClass.superclass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<*> +// val tableName = clazz.simpleName +// LogUtil.d("ez", "getTableName: -->$tableName") +// return tableName +// } + + /** + * 添加å•个对象 + * OnConflictStrategy.REPLACEæ–°æ•°æ®æ›¿æ¢æ—§æ•°æ® + */ + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(obj: T): Long + + /** + * æ·»åŠ æ•°ç»„å¯¹è±¡æ•°æ® + */ + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(vararg objs: T): LongArray? + + /** + * æ·»åŠ å¯¹è±¡é›†åˆ + */ + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(personList: List): List + + /** + * æ ¹æ®å¯¹è±¡ä¸­çš„主键删除(主键是自动增长的,无需手动赋值) + */ + @Delete + fun delete(obj: T) + + /** + * æ ¹æ®å¯¹è±¡ä¸­çš„主键更新(主键是自动增长的,无需手动赋值) + */ + @Update + fun update(vararg obj: T): Int + + fun deleteAll(tableName:String): Int { + val query = SimpleSQLiteQuery("delete from $tableName") + return doDeleteAll(query) + } + + fun findAll(tableName:String): List? { + val query = SimpleSQLiteQuery("select * from $tableName") + return doFindAll(query) + } + + fun find(id: Long,tableName:String): T? { + val query = SimpleSQLiteQuery("select * from $tableName where id = ?", arrayOf(id)) + return doFind(query) + } + + /** + * [params] 列å + * [value] 列的值 + */ + fun deleteByParams(params: String, value: String,tableName:String): Int { + val query = SimpleSQLiteQuery("delete from $tableName where $params='${value}'") + Log.d("ez", "deleteByParams: ${"delete from $tableName where $params='${value}'"}") + return doDeleteByParams(query) + } + + /** + * 分页查询,支æŒä¼ å…¥å¤šä¸ªå­—æ®µï¼Œä½†å¿…é¡»è¦æŒ‰ç…§é¡ºåºä¼ å…¥ + * key = value,key = value 的形å¼ï¼Œä¸€ä¸€å¯¹åº”(å¯ä»¥ä½¿ç”¨ stringbuilder åŽ»æž„é€ ä¸€ä¸‹ï¼Œè¿™é‡Œå°±ä¸æ¼”示了) + */ + fun doQueryByLimit(tableName:String,vararg string: String, limit: Int = 10, offset: Int = 0): List? { + val query = SimpleSQLiteQuery( + "SELECT * FROM $tableName WHERE ${string[0]} = '${string[1]}' limit $limit offset $offset") + return doQueryByLimit(query) + } + + /** + * é™åºåˆ†é¡µæŸ¥è¯¢ + */ + fun doQueryByOrder(tableName:String,vararg string: String, limit: Int = 10, offset: Int = 10): List? { + val query = SimpleSQLiteQuery( + "SELECT * FROM $tableName ORDER BY ${string[0]} desc limit '${limit}' offset '${offset}'") + return doQueryByOrder(query) + } + + + @RawQuery + fun doFindAll(query: SupportSQLiteQuery): List? + + @RawQuery + fun doFind(query: SupportSQLiteQuery): T + + @RawQuery + fun doDeleteAll(query: SupportSQLiteQuery): Int + + @RawQuery + fun doDeleteByParams(query: SupportSQLiteQuery): Int + + @RawQuery + fun doQueryByLimit(query: SupportSQLiteQuery): List? + + @RawQuery + fun doQueryByOrder(query: SupportSQLiteQuery): List? +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/database/dao/CreditCardDao.kt b/app/src/main/java/com/abbidot/tracker/database/dao/CreditCardDao.kt new file mode 100644 index 0000000..03131aa --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/database/dao/CreditCardDao.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.database.dao + +import androidx.room.Dao +import com.abbidot.tracker.bean.CreditCardBean + +/** + *Created by .yzq on 2022/4/1/001. + * @link + * @description: + */ +@Dao +interface CreditCardDao : BaseDao \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/database/dao/DeviceDao.kt b/app/src/main/java/com/abbidot/tracker/database/dao/DeviceDao.kt new file mode 100644 index 0000000..ff09513 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/database/dao/DeviceDao.kt @@ -0,0 +1,18 @@ +package com.abbidot.tracker.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.database.MyDatabase + +/** + *Created by .yzq on 2021/11/8/008. + * @link + * @description:DeviceBean表的dao + */ +@Dao +interface DeviceDao : BaseDao { + + @Query("SELECT * FROM ${MyDatabase.DeviceTableName} WHERE macId LIKE :mac LIMIT 1") + fun findByMac(mac: String): DeviceBean? +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/database/dao/MessageDao.kt b/app/src/main/java/com/abbidot/tracker/database/dao/MessageDao.kt new file mode 100644 index 0000000..ac8bfc5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/database/dao/MessageDao.kt @@ -0,0 +1,12 @@ +package com.abbidot.tracker.database.dao + +import androidx.room.Dao +import com.abbidot.tracker.bean.MessageBean + +/** + *Created by .yzq on 2024/7/19/019. + * @link + * @description: + */ +@Dao +interface MessageDao : BaseDao \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeAmountCNAdapter.kt b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeAmountCNAdapter.kt new file mode 100644 index 0000000..5d21f27 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeAmountCNAdapter.kt @@ -0,0 +1,62 @@ +package com.abbidot.tracker.deprecated.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.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2022/7/23/023. + * @link + * @description: + */ +class RechargeAmountCNAdapter(ctx: Context, list: MutableList?) : + BaseRecyclerAdapter(ctx, list) { + + private var mSelectIndex = -1 + + override fun getEmptyLayoutId(viewType: Int) = 0 + + override fun getItemLayoutId(viewType: Int) = R.layout.item_recharge_amount_cn + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: SetMealBean) { + val view = holder!!.itemView + if (position == mSelectIndex) { + view.background = ContextCompat.getDrawable(mContext, R.drawable.shape10_yellow_bg) + } else { + view.background = ContextCompat.getDrawable(mContext, R.drawable.shape12_gray_white_bg) + } + ViewUtil.instance.setShapeRadius(view, 6) + + if (item.hotType == ConstantInt.Type1) { + holder.getImageView(R.id.recharge_amount_cn_normal_hot_image).visibility = View.VISIBLE + } else { + holder.getImageView(R.id.recharge_amount_cn_normal_hot_image).visibility = View.GONE + } + val period = item.period + val perMonth = if (period < 2) { + String.format(mContext.getString(R.string.pet_managet_age), period) + } else { + String.format(mContext.getString(R.string.pet_managet_age), period) + } + holder.setText(R.id.recharge_amount_cn_two_time, perMonth) + holder.setText(R.id.recharge_amount_cn_two_money, item.accountFee.toString()) + + val averageMonth = Utils.formatDecimal(item.accountFee / (12 * period), 2) + val monthString = String.format(mContext.getString(R.string.txt_perMonth), averageMonth) + holder.setText(R.id.recharge_amount_cn_two_description, monthString) + } + + fun setSelectIndex(index: Int) { + mSelectIndex = index + notifyDataSetChanged() + } + + fun getSelectIndex() = mSelectIndex +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeHistoryCNAdapter.kt b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeHistoryCNAdapter.kt new file mode 100644 index 0000000..9c111f5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/RechargeHistoryCNAdapter.kt @@ -0,0 +1,31 @@ +package com.abbidot.tracker.deprecated.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.RechargeHistoryBean + +/** + *Created by .yzq on 2022/1/29/029. + * @link + * @description:充值记录适é…器 + */ +class RechargeHistoryCNAdapter(ctx: Context, list: MutableList?) : + BaseRecyclerAdapter(ctx, list) { + + override fun getEmptyLayoutId(viewType: Int) = 0 + + override fun getItemLayoutId(viewType: Int) = R.layout.item_recharge_history_cn + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: RechargeHistoryBean) { + holder!!.setText(R.id.recharge_history_cn_pay_time, item.payTime) + val totalString = String.format(mContext.getString(R.string.txt_total_money), + "+${mContext.getString(R.string.txt_month_until)}${item.cost}") + holder.setText(R.id.recharge_history_cn_pay_money, totalString) + holder.setText(R.id.recharge_history_cn_meal_name, item.feePackage) + val deviceName = String.format(mContext.getString(R.string.txt_tracker_name), + item.deviceOutId) + holder.setText(R.id.recharge_history_cn_device_name, deviceName) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/adapter/SelectPaymentMethodAdapter.kt b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/SelectPaymentMethodAdapter.kt new file mode 100644 index 0000000..4b852b4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/adapter/SelectPaymentMethodAdapter.kt @@ -0,0 +1,51 @@ +package com.abbidot.tracker.deprecated.adapter + +import android.content.Context +import androidx.appcompat.widget.AppCompatCheckedTextView +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.util.ViewUtil + + +/** + *Created by .yzq on 2022/3/29/029. + * @link + * @description: + */ +class SelectPaymentMethodAdapter( + ctx: Context, list: MutableList?, showPaypal: Boolean = true +) : BaseRecyclerAdapter(ctx, list) { + + private val mShowPaypal = showPaypal + + override fun getEmptyLayoutId(viewType: Int) = 0 + + override fun getItemLayoutId(viewType: Int) = R.layout.item_payment_method_layout + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: MenuTxtBean) { + ViewUtil.instance.setShapeRadius(holder!!.itemView, 6) + val textView = holder.getTextView(R.id.item_payment_method_text_view) + textView.setCompoundDrawablesWithIntrinsicBounds( + item.imageId, 0, 0, 0 + ) + (holder.getView(R.id.item_payment_method_checkbox) as AppCompatCheckedTextView).isChecked = + item.isSwitch + + if (mShowPaypal && (position == 0 || position == getData().size - 1)) { + textView.text = item.menuName + } else if (position == getData().size - 1) { + textView.text = item.menuName + } else { + val str = item.menuName + var cardFormat = str.substring(0, 4) + for (i in 0 until str.length - 8) { + cardFormat = "$cardFormat*" + } + cardFormat += str.substring(str.length - 4, str.length) + textView.text = cardFormat + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/DetailActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/DetailActivity.kt new file mode 100644 index 0000000..787db4b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/DetailActivity.kt @@ -0,0 +1,99 @@ +package com.abbidot.tracker.deprecated.ui.activity + +import android.widget.Toast +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +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.base.BaseDiffCallBack +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.databinding.ActivityDetailBinding +import com.abbidot.tracker.dialog.DialogUtils +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +class DetailActivity : BaseActivity(ActivityDetailBinding::inflate) { + + private lateinit var mAdapter: BaseRecyclerAdapter + private lateinit var list: MutableList + + override fun getTopBar() = mViewBinding.titleGg.titleTopBar + + override fun initData() { + super.initData() + //è®¾ç½®çŠ¶æ€æ é»‘色字体与图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + XEventBus.post(EventName.Test, "cccccccccccccccccccc") + + setTopBarTitle(R.string.app_name) + +// list = mutableListOf( +// DeviceBean(5, 4, "tesdfd", conState = ConState.CONNECTED, "7547sgdgdgy64e4r"), +// DeviceBean(3, 2, "65757", conState = ConState.DISCONNECTED, "gujghj")) + + mAdapter = object : BaseRecyclerAdapter(this, list) { + override fun getEmptyLayoutId(viewType: Int)=R.layout.layout_empty_view + + override fun getItemLayoutId(viewType: Int) = R.layout.layout_list_item + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: DeviceBean) { + holder!!.setText(R.id.sdagfdsgg, item.deviceName) + } + } + + ViewUtil.instance.setRecyclerViewVerticalLinearLayout(mContext,mViewBinding.recyclerView, mAdapter) + + Toast.makeText(application, AppUtils.isDebug().toString(), Toast.LENGTH_LONG).show() + +// val newList: MutableList = ArrayList() + mViewBinding.btnTest.setOnClickListener { + val newList: MutableList = ArrayList() + list = mAdapter.getData() + for (i in 0 until list.size) { + newList.add(list[i].copy()) + } + +// newList.add(DeviceBean(list.size, 4, Math.random().toString(), +// conState = ConState.CONNECTED, "7547sgdgdgy64e4r")) + onRefreshData(newList) + + showToast("add") + } + + mViewBinding.testRemove.setOnClickListener { + val newList: MutableList = ArrayList() + list = mAdapter.getData() + for (i in 0 until list.size) { + newList.add(list[i].copy()) + } + newList.removeAt(2) + onRefreshData(newList) + DialogUtils.showTipDialog(mActivity!!, mViewBinding.testRemove, "remove succes", + QMUITipDialog.Builder.ICON_TYPE_SUCCESS) + } + } + + private fun onRefreshData(newList: MutableList) { + mAdapter.setData(newList) + + + val diffResult = + DiffUtil.calculateDiff(object : BaseDiffCallBack(list, newList) { + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition].deviceId == newList[newItemPosition].deviceId + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition].deviceName == newList[newItemPosition].deviceName + + }, true) + + + diffResult.dispatchUpdatesTo(mAdapter) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/LoginRegisterCNActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/LoginRegisterCNActivity.kt new file mode 100644 index 0000000..0c93b1a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/LoginRegisterCNActivity.kt @@ -0,0 +1,126 @@ +package com.abbidot.tracker.deprecated.ui.activity + +import androidx.appcompat.widget.AppCompatCheckBox +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityLoginRegisterCnBinding +import com.abbidot.tracker.deprecated.ui.fragment.forgot.ForgetPasswordCNFinishFragment +import com.abbidot.tracker.deprecated.ui.fragment.forgot.ForgetPasswordCNStartFragment +import com.abbidot.tracker.deprecated.ui.fragment.login.BindPhoneCNFragment +import com.abbidot.tracker.deprecated.ui.fragment.login.LoginCNAccountFragment +import com.abbidot.tracker.deprecated.ui.fragment.login.LoginCNCodeFragment +import com.abbidot.tracker.deprecated.ui.fragment.login.LoginCNFirstFragment +import com.abbidot.tracker.deprecated.ui.fragment.register.RegisterCNFinishFragment +import com.abbidot.tracker.deprecated.ui.fragment.register.RegisterCNStartFragment + +/** + * å›½å†…ç™»å½•ç•Œé¢ + */ +class LoginRegisterCNActivity : + BaseActivity(ActivityLoginRegisterCnBinding::inflate) { + + var mWXId = "" + var mPhone = "" + + //åŒºåˆ†å¿˜è®°å¯†ç  å’Œæ‰¾å›žå¯†ç  + var mType = ConstantInt.Close + + companion object { + const val Fragment_First = 0 + const val Fragment_Account_Login = 1 + const val Fragment_Code_Login = 2 + const val Fragment_Register_Start = 3 + const val Fragment_Register_Finish = 4 + const val Fragment_Bind_Phone = 5 + const val Fragment_Forget_Password_Start = 6 + const val Fragment_Forget_Password_Finish = 7 + } + + + private lateinit var mFragmentList: MutableList + + override fun getTopBar() = mViewBinding.loginCnTopBar.titleTopBar + + override fun initData() { + super.initData() + setTranslucentTopBar() + mViewBinding.loginCnTopBar.titleTopBarLayout.setBackgroundResource(R.color.btn_yellow_color) + + mFragmentList = mutableListOf( + LoginCNFirstFragment.newInstance(mContext), + LoginCNAccountFragment.newInstance(mContext), + LoginCNCodeFragment.newInstance(mContext), + RegisterCNStartFragment.newInstance(mContext), + RegisterCNFinishFragment.newInstance(mContext), + BindPhoneCNFragment.newInstance(mContext), + ForgetPasswordCNStartFragment.newInstance(mContext), + ForgetPasswordCNFinishFragment.newInstance(mContext) + ) + + var index = 0 + intent.extras?.let { + index = it.getInt(ConstantString.Index, Fragment_First) + mType = it.getInt(ConstantString.Type, ConstantInt.Close) + } + switchFragment(index) + } + + fun switchFragment(index: Int) { + + setTopTitle(getString(R.string.login_txt_welcome)) + setTopContent(getString(R.string.login_txt_seeyou)) + + supportFragmentManager.commit { + + hideFragment(this, mFragmentList[Fragment_First]) + hideFragment(this, mFragmentList[Fragment_Account_Login]) + hideFragment(this, mFragmentList[Fragment_Code_Login]) + hideFragment(this, mFragmentList[Fragment_Register_Start]) + hideFragment(this, mFragmentList[Fragment_Register_Finish]) + hideFragment(this, mFragmentList[Fragment_Bind_Phone]) + hideFragment(this, mFragmentList[Fragment_Forget_Password_Start]) + hideFragment(this, mFragmentList[Fragment_Forget_Password_Finish]) + + //为FragmentTransaction添加指定的自定义属性动画 + setCustomAnimations( + R.anim.slide_in_right, + R.anim.slide_out_left, + R.anim.slide_still, + R.anim.slide_out_right + ) + + if (mFragmentList[index].isAdded) { + show(mFragmentList[index]) + } else { + add(R.id.login_cn_steps_frame, mFragmentList[index]) + } + } + } + + fun setTopTitle(title: String) { + mViewBinding.loginCnTopTitle.text = title + } + + fun setTopContent(content: String) { + mViewBinding.loginCnTopContent.text = content + } + + /** + * 是å¦åŒæ„åè®® + */ + fun isAgreePolicy(checkBox: AppCompatCheckBox): Boolean { + if (!checkBox.isChecked) { + val tips = getString(R.string.register_txt_agree1) + getString( + R.string.register_txt_policy + ) + getString(R.string.register_txt_agree2) + getString( + R.string.register_txt_terms + ) + showToast(tips) + } + return checkBox.isChecked + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/SwipeActionActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/SwipeActionActivity.kt new file mode 100644 index 0000000..653a3e4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/SwipeActionActivity.kt @@ -0,0 +1,158 @@ +package com.abbidot.tracker.deprecated.ui.activity + +import android.graphics.Color +import android.widget.TextView +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.base.BaseQMUIRVItemSwipeAction +import com.abbidot.tracker.base.BaseSwipeMenuAdapter +import com.abbidot.tracker.databinding.ActivitySwipeActionBinding +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.recyclerView.QMUIRVItemSwipeAction +import com.qmuiteam.qmui.recyclerView.QMUISwipeAction +import com.qmuiteam.qmui.recyclerView.QMUISwipeViewHolder +import com.qmuiteam.qmui.widget.pullRefreshLayout.QMUIPullRefreshLayout +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class SwipeActionActivity : + BaseActivity(ActivitySwipeActionBinding::inflate) { + + private lateinit var mAdapter: BaseSwipeMenuAdapter + private lateinit var list: MutableList + + override fun getTopBar() = mViewBinding.swipeTestBar.titleTopBar + + override fun initData() { + setTopBarTitle("滑动èœå•") + + list = mutableListOf() + + initMenu() + + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager(mContext!!, + mViewBinding.swipeTestPull.pullRefreshRv,mAdapter) + + mViewBinding.swipeTestPull.onlyPullToRefresh.setOnPullListener(object : + QMUIPullRefreshLayout.OnPullListener { + override fun onMoveTarget(offset: Int) { + } + + override fun onMoveRefreshView(offset: Int) { + } + + override fun onRefresh() { + mViewBinding.swipeTestPull.onlyPullToRefresh.postDelayed(Runnable { + list.clear() + onDataLoaded() + mViewBinding.swipeTestPull.onlyPullToRefresh.finishRefresh() + }, 1000) + } + }) + mAdapter.setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + showLoading(true) + mViewBinding.swipeTestPull.pullRefreshRv.postDelayed(Runnable { + onDataLoaded() + showLoading(false) + }, 1500) + } + }) + +// onDataLoaded() + } + + private fun initMenu() { + val menu: MutableList = mutableListOf() + mAdapter = object : BaseSwipeMenuAdapter(mContext!!, list) { + + override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_empty_view + override fun getItemLayoutId(viewType: Int) = R.layout.layout_list_item + + override fun getSwipeActions(): MutableList { + return menu + } + + override fun bindData(holder: QMUISwipeViewHolder?, position: Int, item: String) { + holder!!.itemView.findViewById(R.id.sdagfdsgg).text = item + } + + } + val deleteAction = mAdapter.mActionBuilder.text("删除").backgroundColor(Color.RED).build() + val writeReviewAction = + mAdapter.mActionBuilder.text("写想法").backgroundColor(Color.BLUE).build() + menu.add(deleteAction) +// menu.add(writeReviewAction) + + val itemSwipeAction = object : BaseQMUIRVItemSwipeAction(QMUIRVItemSwipeAction.SWIPE_LEFT) { + override fun removeItem(position: Int) { + val newList = mAdapter.remove(mAdapter.getData(), position) + updateAdapter(mAdapter.getData(), newList) + } + + override fun onClickAction(swipeAction: QMUIRVItemSwipeAction?, + selected: RecyclerView.ViewHolder?, + action: QMUISwipeAction?) { + super.onClickAction(swipeAction, selected, action) + if (action == deleteAction) { + removeItem(selected!!.adapterPosition) + } else { + swipeAction!!.clear() + } + } + } + val swipeAction = QMUIRVItemSwipeAction(true, itemSwipeAction) + swipeAction.attachToRecyclerView(mViewBinding.swipeTestPull.pullRefreshRv) + } + + private fun onDataLoaded() { + val data: MutableList = ArrayList( + listOf("Helps", "Maintain", "Liver", "Health", "Function", "Supports", "Healthy", + "Fat", "Metabolism", "Nuturally", "Bracket", "Refrigerator", "Bathtub", + "Wardrobe", "Comb", "Apron", "Carpet", "Bolster", "Pillow", "Cushion")) + data.shuffle() + list = mAdapter.getData() + + updateAdapter(list, data) + } + + private fun updateAdapter(oldList: MutableList, newList: MutableList) { + if (oldList.size == 0) { + mAdapter.setData(newList) + mAdapter.notifyDataSetChanged() + return + } + lifecycleScope.launch { + //å¼‚æ­¥æ–°æ—§æ•°æ®æ¯”较 + withContext(Dispatchers.Default) { + useDiffUtil(oldList, newList) + }.dispatchUpdatesTo(mAdapter) + + //刷新完æˆé‡æ–°å®šä½åˆ°ç¬¬ä¸€ä¸ªæ•°æ® + mViewBinding.swipeTestPull.pullRefreshRv.scrollToPosition(0) + } + + } + + /** + * æ•°æ®æ¯”较 + */ + private fun useDiffUtil(oldList: MutableList, + newList: MutableList): DiffUtil.DiffResult { + mAdapter.setData(newList) + return DiffUtil.calculateDiff(object : BaseDiffCallBack(oldList, newList) { + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + oldList[oldItemPosition] == newList[newItemPosition] + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + oldList[oldItemPosition] == newList[newItemPosition] + + }, true) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/data/HistoryDataActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/data/HistoryDataActivity.kt new file mode 100644 index 0000000..0479edf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/data/HistoryDataActivity.kt @@ -0,0 +1,186 @@ +package com.abbidot.tracker.deprecated.ui.activity.data + +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityHistoryDataBinding +import com.abbidot.tracker.ui.common.map.HistoryDataMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.DataDetailViewModel +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.MapMarkerInfoView +import com.abbidot.tracker.widget.VerticalTopToBottomSeekBar + +/** + * åŽ†å²æ•°æ® + */ +class HistoryDataActivity : + BaseActivity(ActivityHistoryDataBinding::inflate) { + + val mDataDetailViewModel: DataDetailViewModel by viewModels() + val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + //方便ä¿å­˜åœ°ç†åç¼–è¯‘ä¿¡æ¯ + private lateinit var mHistoryDataList: MutableList + + lateinit var mPet: PetBean + + private lateinit var mHistoryDataMapCommon: HistoryDataMapCommon + + override fun getTopBar() = mViewBinding.activeHistoryDataBar.titleTopBar + + override fun initData() { + super.initData() + //è®¾ç½®æ²‰æµ¸çŠ¶æ€æ é¢œè‰² + mViewBinding.activeHistoryDataBar.titleTopBarLayout.setBackgroundResource( + R.color.sleep_time_gray_color + ) + setTopBarTitle(R.string.data_active_history) + + mPet = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java)!! + mHistoryDataList = mutableListOf() + + mHistoryDataMapCommon = HistoryDataMapCommon() + val fragment = mHistoryDataMapCommon.getMapFragment( + this, MapMarkerInfoView(mContext), mGeoCoderViewModel + ) {} + supportFragmentManager.commit { + add(R.id.history_data_map_view, fragment) + } + + val today = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) + mViewBinding.historyDataHorizontalCalenderView.setOnDaySelectedListener { hasChanged, year, month, day, week, item -> + if (hasChanged) { + val date = if (item.isCurrent) { + today + } else { + mViewBinding.historyDataHorizontalCalenderView.fillingDate( + "-", year, month, day + ) + } + mViewBinding.historyDataDate.text = date + initState() + mDataDetailViewModel.getHistoryByDay(this, mPet.deviceId, 1, 1) + } + } + + val type = MMKVUtil.getInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + if (type == ConstantInt.Line) { + mViewBinding.historyDateMapLine.isChecked = true + } else { + mViewBinding.historyDateMapNumber.isChecked = true + } + + initEven() + + initState() + } + + override fun liveDataObserve() { + mDataDetailViewModel.mHistoryDetailLive.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + setLatLngData(data) + } + }) + } + + //地ç†å编译æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(this) { + mViewBinding.historyDataAddress.apply { + visibility = if (TextUtils.isEmpty(it)) { + View.GONE + } else { + View.VISIBLE + } + text = it + mHistoryDataList[mViewBinding.seekMapLine.progress].address = it + } + } + } + + private fun initEven() { + mViewBinding.seekMapLine.setOnSeekBarChangeProgressListener(object : + VerticalTopToBottomSeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(progress: Int) { + mHistoryDataMapCommon.slideChanged(progress) + } + + override fun onStopChanged(progress: Int) { + val historyDataBean = mHistoryDataList[progress] + showDate(historyDataBean.timeStamp * 1000) + + val address = historyDataBean.address + if (TextUtils.isEmpty(address)) { + mHistoryDataMapCommon.slideStopChanged(progress) + } else { + mViewBinding.historyDataAddress.text = address + } + } + }) + + mViewBinding.historyDateMapTypeGroup.setOnCheckedChangeListener { _, checkedId -> + mViewBinding.seekMapLine.progress = mViewBinding.seekMapLine.max + when (checkedId) { + mViewBinding.historyDateMapLine.id -> { + MMKVUtil.putInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + mHistoryDataMapCommon.addSetLine() + } + + mViewBinding.historyDateMapNumber.id -> { + MMKVUtil.putInt(MMKVKey.LineSelectPosition, ConstantInt.Point) + mHistoryDataMapCommon.addSetNumber() + } + } + } + } + + private fun initState() { + mViewBinding.apply { + historyDataAddress.visibility = View.GONE + historyDataDate.visibility = View.GONE + seekMapLine.progress = 0 + } + mHistoryDataMapCommon.clearAllMarker() + setSeekBarMax(0) + } + + private fun setLatLngData(data: MutableList) { + mHistoryDataList = data + if (data.size == 0) return + + val max = data.size - 1 + setSeekBarMax(max) + showDate(data[max].timeStamp * 1000) + + mHistoryDataMapCommon.setLatLngData(data) + } + + private fun showDate(time: Long) { + val date = Utils.formatTime(time, Utils.DATE_FORMAT_PATTERN_CN3) + mViewBinding.historyDataDate.apply { + visibility = View.VISIBLE + text = date + } + } + + private fun setSeekBarMax(max: Int) { + mViewBinding.seekMapLine.let { + it.max = max + //定ä½ä¸­å¿ƒæ˜¾ç¤ºæœ€åŽä¸€ä¸ªç»çº¬åº¦ + it.progress = max + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/HomeMapNavigationActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/HomeMapNavigationActivity.kt new file mode 100644 index 0000000..6a45265 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/HomeMapNavigationActivity.kt @@ -0,0 +1,234 @@ +package com.abbidot.tracker.deprecated.ui.activity.map + +import android.animation.ObjectAnimator +import android.animation.ValueAnimator +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.view.animation.AccelerateDecelerateInterpolator +import android.view.animation.Animation +import androidx.activity.viewModels +import androidx.fragment.app.commit +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.SelectMapListDialogAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityHomeMapNavigationBinding +import com.abbidot.tracker.dialog.SelectMapListDialog +import com.abbidot.tracker.ui.common.map.NavigationMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.GeoCoderViewModel + + +/** + * 首页跳转导航 + */ +class HomeMapNavigationActivity : + BaseActivity(ActivityHomeMapNavigationBinding::inflate) { + + val mFencesMapViewModel: FencesMapViewModel by viewModels() + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + private val mMapGooglePackageName = "com.google.android.apps.maps" + private val mMapGaoDePackageName = "com.autonavi.minimap" + + private lateinit var mSelectMapListDialogAdapter: SelectMapListDialogAdapter + private var mSelectMapListDialog: SelectMapListDialog? = null + var mMapDeviceBean: MapDeviceBean? = null + + private lateinit var mNavigationMapCommon: NavigationMapCommon + + override fun getTopBar() = mViewBinding.homeMapNavigationBar.titleTopBar + + override fun initData() { + super.initData() + var historyDataBean: HistoryDataBean? = null + var pet: PetBean? = null + intent.extras?.apply { + pet = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + historyDataBean = Util.getParcelableAdaptive( + intent, ConstantString.HistoryDataBean, HistoryDataBean::class.java + ) + mMapDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.MapDeviceBean, MapDeviceBean::class.java + ) + } + if (null == historyDataBean) historyDataBean = HistoryDataBean() + if (null == pet) pet = PetBean() + if (null == mMapDeviceBean) mMapDeviceBean = MapDeviceBean() +// +// val title = String.format(getString(R.string.map_navigate), pet!!.petName) +// setTopBarTitle(title) + + mNavigationMapCommon = NavigationMapCommon() + val fragment = mNavigationMapCommon.getMapFragment(mContext, pet!!.imgurl) + supportFragmentManager.commit { + add(R.id.home_map_navigation_map_view, fragment) + } + + val mapList = mutableListOf() + ViewUtil.instance.addMenuBean( + mapList, + getString(R.string.map_navigate_map_google), + mMapGooglePackageName, + R.drawable.ico_map_google + ) + ViewUtil.instance.addMenuBean( + mapList, + getString(R.string.map_navigate_map_gaode), + mMapGaoDePackageName, + R.drawable.ico_map_gaode + ) + + mSelectMapListDialogAdapter = SelectMapListDialogAdapter(mContext!!, mapList) + mSelectMapListDialogAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + selectMapNavigation(mapList[pos]) + } + }) + + setOnClickListenerViews(mViewBinding.selectMapNavigationBtn) + + +// val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).build() +// val mGoogleSignInClient: GoogleSignInClient = GoogleSignIn.getClient(this, gso) +// val mGoogleApiClient = mGoogleSignInClient.asGoogleApiClient() + + + ViewUtil.instance.imageLoadUrl( + mViewBinding.homeMapNavigationPetHead.appHeadImage, pet!!.imgurl + ) + if (TextUtils.isEmpty(historyDataBean!!.address)) { + mGeoCoderViewModel.getLatLonAddress( + mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude + ) + } else mViewBinding.homeMapNavigationAddress.text = historyDataBean!!.address + + warningOutFence() + } + + override fun liveDataObserve() { + //地ç†å编译æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(this) { + mViewBinding.homeMapNavigationAddress.text = it + } + } + + /*** + * 设置è·ç¦» + */ + fun setDistanceData(distanceStr: String, minStr: String) { + mViewBinding.apply { + mapNavigationDistanceValue.text = distanceStr + mapNavigationWalkValue.text = minStr + } + } + + /** + * 宠物出围æ è­¦å‘Š + */ + private fun warningOutFence() { + //æ²¡æœ‰å‡ºå›´æ  +// if (mMapDeviceBean!!.inFence == ConstantInt.InFence) { +// return +// } + val animation = + ViewUtil.instance.viewLoadAnimation(mContext, mViewBinding.homeMapNavigationPetLayout) + animation.setAnimationListener(object : Animation.AnimationListener { + override fun onAnimationStart(animation: Animation?) { + mViewBinding.homeMapNavigationPetLayout.visibility = View.VISIBLE + } + + override fun onAnimationEnd(animation: Animation?) { + val rotationObjectAnimator = ObjectAnimator.ofFloat( + mViewBinding.homeMapNavigationPetLayout, "rotation", 0f, 1.6f, 0f - 1.6f + ) + rotationObjectAnimator.duration = 120 + rotationObjectAnimator.interpolator = AccelerateDecelerateInterpolator() + rotationObjectAnimator.repeatMode = ValueAnimator.REVERSE + rotationObjectAnimator.repeatCount = ValueAnimator.INFINITE + rotationObjectAnimator.start() + + val animation2 = ViewUtil.instance.viewLoadAnimation( + mContext!!, + mViewBinding.homeMapNavigationPetLayout, + R.anim.scale_out_center, + startOffset = 8000 + ) + animation2.setAnimationListener(object : Animation.AnimationListener { + override fun onAnimationStart(animation: Animation?) { + } + + override fun onAnimationEnd(animation: Animation?) { + mViewBinding.homeMapNavigationPetLayout.visibility = View.GONE + } + + override fun onAnimationRepeat(animation: Animation?) { + } + }) + } + + override fun onAnimationRepeat(animation: Animation?) { + } + }) + } + + /** + * 选择地图开始跳转 + */ + private fun selectMapNavigation(item: MenuTxtBean) { + mSelectMapListDialog?.dismiss() + //è‡ªåŠ¨å¼¹å‡ºæ‰‹æœºä¸­å·²ç»æœ‰å®‰è£…地图的应用 +// val mUri: Uri = Uri.parse("geo:227.15" + ",212.55" + "?q=fhfhfg") +// val mIntent = Intent(Intent.ACTION_VIEW, mUri) +// startActivity(mIntent) + if (AppUtils.isAppInstalled(mContext!!, item.menuValue)) { + if (null == mMapDeviceBean) { + + } else { + when (item.menuValue) { + //选择高德地图 + mMapGaoDePackageName -> { + val uri = "androidamap://navi?sourceApplication=" + getString( + R.string.app_name + ) + "&lat=${mMapDeviceBean!!.latitude}&lon=${mMapDeviceBean!!.longitude}&dev=0" + val intent = Intent.parseUri(uri, 0) + startActivity(intent) + } + //谷歌地图 + mMapGooglePackageName -> { +// val latitude = 22.56025 +// val longitude = 113.954032 + val uri = + "google.navigation:q=${mMapDeviceBean!!.latitude},${mMapDeviceBean!!.longitude}" + val intent = Intent.parseUri(uri, 0) + startActivity(intent) + } + } + } + } else { + showToast(getString(R.string.txt_no_install)) + } + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.selectMapNavigationBtn -> { + if (null == mSelectMapListDialog) { + mSelectMapListDialog = + SelectMapListDialog(mContext!!, mSelectMapListDialogAdapter) + } + mSelectMapListDialog!!.show() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/MapLiveActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/MapLiveActivity.kt new file mode 100644 index 0000000..b674827 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/map/MapLiveActivity.kt @@ -0,0 +1,276 @@ +package com.abbidot.tracker.deprecated.ui.activity.map + +import android.animation.ValueAnimator +import android.view.View +import androidx.activity.viewModels +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityMapLiveBinding +import com.abbidot.tracker.vm.MapLiveViewModel +import com.abbidot.tracker.vm.FencesManageViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.FindBleDeviceViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.abbidot.tracker.ui.common.map.MapLiveCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.clj.fastble.data.BleDevice +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo +import com.qmuiteam.qmui.widget.QMUITopBar + +/** + *MapLive实时监测ä½ç½® + */ +class MapLiveActivity : BaseActivity(ActivityMapLiveBinding::inflate) { + + private val mMapLiveViewModel: MapLiveViewModel by viewModels() + val mFencesMapViewModel: FencesMapViewModel by viewModels() + val mFencesManageViewModel: FencesManageViewModel by viewModels() + private val mTrackerManageViewModel: TrackerSetViewModel by viewModels() + private val mFindBleDeviceViewModel: FindBleDeviceViewModel by viewModels() + lateinit var mPet: PetBean + + private lateinit var mFragment: Fragment + private lateinit var mMapLiveCommon: MapLiveCommon + + //宠物是å¦åœ¨å›´æ é‡Œ + private var isInFence = -1 + + //å›´æ æ•°æ®é›† + private val mFencesList = mutableListOf() + private var mHistoryDataBean: HistoryDataBean? = null + private var mBleDevice: BleDevice? = null + + //动画效果,方便清除动画 + private var mGpsYoYoAnimString: YoYo.YoYoString? = null + private var mBatteryYoYoAnimString: YoYo.YoYoString? = null + private var mLiveStatus = 1 + + override fun getTopBar(): QMUITopBar? = null + + override fun initData() { + super.initData() + + mPet = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java)!! + + mMapLiveCommon = MapLiveCommon() + mFragment = mMapLiveCommon.getMapFragment(mContext, mPet.imgurl) + supportFragmentManager.commit { + add(R.id.map_live_map_view, mFragment) + } + + mViewBinding.apply { + setOnClickListenerViews( + btnStopMapLive, mapLiveDeviceLedSwitch, mapLiveRefreshLocationBtn, btnFindDevice + ) + } + + mMapLiveViewModel.setupDeviceLiveStatus(this, mPet.deviceId, mLiveStatus) + } + + override fun liveDataObserve() { + mMapLiveViewModel.mMapLiveStatusLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showLoading(false) + if (mLiveStatus == 0) finish() + } + }) + } + + mMapLiveViewModel.mMapLiveLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! +// setData(data) + } + }) + } + + mFencesManageViewModel.mFencesLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! +// mFencesList.addAll(data) + //获å–å®Œå›´æ æ•°æ® å†èŽ·å–宠物 ç»çº¬åº¦ç‚¹ çš„æ•°æ® + mMapLiveViewModel.getPetLivePoint(mPet.deviceId) + } + }) + } + + + mTrackerManageViewModel.mLedSwitchLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mViewBinding.mapLiveDeviceLedSwitch.isChecked = + !mViewBinding.mapLiveDeviceLedSwitch.isChecked + } + }) + } + } + + /** + * 测试ç»çº¬åº¦ç§»åЍ + */ + private var indexX = 0.0 + private var indexY = 0.0 + + private fun setData(historyDataBean: HistoryDataBean) { + mHistoryDataBean = historyDataBean + if (isInFence != historyDataBean.inFance) { + isInFence = historyDataBean.inFance + mFencesMapViewModel.setFencesData(mContext, mFencesList, mFragment) + } + //测试ç»çº¬åº¦ç§»åЍ +// mFencesViewModel.setFencesData(mContext!!, isInFence, mFencesList, mFragment) + + mViewBinding.apply { + mapLivePetLayout.mapPetName.text = historyDataBean.petName + ViewUtil.instance.imageLoadUrl( + mapLivePetLayout.mapPetHead.appHeadImage, historyDataBean.petImgurl + ) + val batteryString = + String.format(getString(R.string.txt_battery_unit), historyDataBean.batteryLevel) + mapLivePetLayout.mapPetBattery.text = batteryString + + val batteryResId = if (historyDataBean.batteryLevel > ConstantInt.LowBattery20) { + mBatteryYoYoAnimString?.stop() + R.drawable.ico_map_battery + } else { + mBatteryYoYoAnimString = null + mBatteryYoYoAnimString = + YoYo.with(Techniques.FadeIn).repeat(ValueAnimator.INFINITE).duration(1000) + .playOn(mapLivePetLayout.mapPetBatteryImage) + R.drawable.ico_map_battery_low + } + mapLivePetLayout.mapPetBatteryImage.load(batteryResId) + + val drawableResId = if (historyDataBean.gnssSignal > ConstantInt.NoSignal) { + mGpsYoYoAnimString?.stop() + mapLivePetLayout.mapPetGps.text = getString(R.string.txt_online) + R.drawable.ico_map_gps + } else { + mapLivePetLayout.mapPetGps.text = getString(R.string.txt_offline) + mGpsYoYoAnimString = null + mGpsYoYoAnimString = + YoYo.with(Techniques.FadeIn).repeat(ValueAnimator.INFINITE).duration(1000) + .playOn(mapLivePetLayout.mapPetGpsImage) + R.drawable.ico_gps_no + } + mapLivePetLayout.mapPetGpsImage.load(drawableResId) + + mapLiveDeviceLedSwitch.isChecked = historyDataBean.ledSwitch == ConstantInt.Open + + mMapLiveCommon.addLine(historyDataBean.latitude, historyDataBean.longitude) + } + + //测试ç»çº¬åº¦ç§»åЍ +// if ((Math.random() * 100).toInt() % 2 == 0) { +// indexX += (Math.random() * 0.02) +// indexY -= (Math.random() * 0.02) +// isInFence = ConstantInt.InFence +// } else { +// indexX -= (Math.random() * 0.03) +// indexY += (Math.random() * 0.03) +// isInFence = ConstantInt.OutFence +// } +// mMapLiveBaiduMapFragment?.addLine(indexX, indexY) +// mMapLiveGoogleMapFragment?.addLine(LatLng(indexX, indexY)) + } + + override fun onBackPressed() { + stopMapLive() + } + + private fun stopMapLive() { + ViewUtil.instance.showDialog( + mContext, R.string.txt_stop_live_tips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mLiveStatus = 0 + mMapLiveViewModel.setupDeviceLiveStatus( + this@MapLiveActivity, mPet.deviceId, mLiveStatus + ) + } + }, okTextResId = R.string.txt_sure + ) + } + + /** + * 设置led开关 + */ + private fun setLedSwitch() { + //å±è”½ç‚¹å‡»å°±å˜çŠ¶æ€ + mViewBinding.mapLiveDeviceLedSwitch.isChecked = + !mViewBinding.mapLiveDeviceLedSwitch.isChecked + val ledSwitch = if (mViewBinding.mapLiveDeviceLedSwitch.isChecked) { + setBleLedMode(mPet.macID, 0) + ConstantInt.Close + } else { + setBleLedMode(mPet.macID, mHistoryDataBean!!.lightMode) + ConstantInt.Open + } + mTrackerManageViewModel.setLedSwitch(this, mHistoryDataBean!!.deviceInfoId, ledSwitch) + } + + /** + *å‘é€è®¾å¤‡è“牙指令 + */ + private fun setBleLedMode(macId: String, mode: Int) { + if (null == mBleDevice) { + SRBleUtil.instance.getConnectMacDevice(macId)?.apply { + mBleDevice = bleDevice + } + } + mBleDevice?.let { + if (BleManager.getInstance().isConnected(it)) { + SRBleUtil.instance.writeData( + it, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_WRITE, mode) + ) + } + } + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnStopMapLive -> { + stopMapLive() + } + + mViewBinding.btnFindDevice -> { +// mFindBleDeviceViewModel.startScanFind(this, mPet.macID) + } + + mViewBinding.mapLiveDeviceLedSwitch -> { + setLedSwitch() + } + + mViewBinding.mapLiveRefreshLocationBtn -> { + ViewUtil.instance.viewAlphaAndRotationObjectAnimator( + mViewBinding.mapLiveRefreshLocationBtn + ) + mMapLiveCommon.refreshPetCurrentLocation() + } + } + } + + override fun onDestroy() { + super.onDestroy() + mBatteryYoYoAnimString?.stop() + mGpsYoYoAnimString?.stop() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/FencesAddActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/FencesAddActivity.kt new file mode 100644 index 0000000..688ed59 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/FencesAddActivity.kt @@ -0,0 +1,502 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile + +import android.content.Intent +import android.graphics.Point +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.fragment.app.commit +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityFencesAddBinding +import com.abbidot.tracker.ui.common.map.FencesMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FencesManageViewModel +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.vm.ScreenshotsViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.abbidot.tracker.widget.FencesPolygonView +import com.abbidot.tracker.widget.OnCircleViewScaleClickListener +import com.abbidot.tracker.widget.OnRectViewRotateScaleClickListener +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +/*** + * æ·»åŠ å›´æ  + */ +class FencesAddActivity : BaseActivity(ActivityFencesAddBinding::inflate), + FencesMapCommon.OnActivityCallBack, OnRectViewRotateScaleClickListener, + OnCircleViewScaleClickListener { + + private val mFencesManageViewModel: FencesManageViewModel by viewModels() + private val mScreenshotsViewModel: ScreenshotsViewModel by viewModels() + private val mUserInfoViewModel: UserProfileViewModel by viewModels() + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + var isEdit = false + private lateinit var mDeviceId: String + private var mFenceId = "" + private var mDeviceServiceId = "" + + //å›´æ æ ·å¼ + var mFenceShapeType = ConstantInt.CircleShapeType + + private lateinit var mFencesMapCommon: FencesMapCommon + + //圆形åŠå¾„è·ç¦» + private var mCircleRadiusDistance = 0 + + //矩形长è·ç¦» + private var mRectWidthDistance = 0 + + //矩形宽è·ç¦» + private var mRectHeightDistance = 0 + + + override fun getTopBar() = mViewBinding.fencesAddBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_add_fences) + + isEdit = intent.extras!!.getBoolean(ConstantString.Edit, false) + mDeviceId = intent.extras!!.getString(ConstantString.DeviceId, "") + + mFencesMapCommon = FencesMapCommon() + + mViewBinding.apply { + + val fragment = mFencesMapCommon.getMapFragment( + mContext, + searchBaiduMapResultsView, + mapboxSearchResultsView, + fencesAddSearchAddress, + this@FencesAddActivity + ) + supportFragmentManager.commit { + add(R.id.fences_add_map_view, fragment) + } + + setOnClickListenerViews( + fencesSearchAddressBtn, addFencesOkBtn, root + ) + radiogroupFencesShowShapeType.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + R.id.selector_fence_circle_shape -> { + if (mFenceShapeType == ConstantInt.CircleShapeType) return@setOnCheckedChangeListener + mFenceShapeType = ConstantInt.CircleShapeType + } + + R.id.selector_fence_rectangle_shape -> { + if (mFenceShapeType == ConstantInt.RectangleShapeType) return@setOnCheckedChangeListener + mFenceShapeType = ConstantInt.RectangleShapeType + } + } + setFenceShape(mFenceShapeType) + //延迟计算è·ç¦» + if ((mFenceShapeType == ConstantInt.CircleShapeType && mCircleRadiusDistance == 0) || (mFenceShapeType == ConstantInt.RectangleShapeType && mRectHeightDistance == 0 && mRectWidthDistance == 0)) { + mViewBinding.fencesAddMapRect.postDelayed( + { + mFencesMapCommon.refreshDistance() + }, 500 + ) + } else { + showLoading(false) + } + } + fencesAddMapRect.setOnRectViewRotateScaleClickListener(this@FencesAddActivity) + + fencesAddMapCircle.setOnCircleViewScaleClickListener(this@FencesAddActivity) + + + //编辑 + if (isEdit) { + setTopBarTitle(R.string.txt_edit_fences) + mRightImageButton = addRightImageButton(R.drawable.ico_delete) + setOnClickListenerViews(mRightImageButton) + + Util.getParcelableAdaptive(intent, ConstantString.Fence, FencesBean::class.java) + ?.run { + mFenceId = fenceId + mDeviceServiceId = deviceServiceId + addFencesAddress.text = address + addFencesNameEdit.setText(name) + addActivateFencesCheckbox.isChecked = isOn == 1 + mFenceShapeType = fenceType + if (fenceType == ConstantInt.CircleShapeType) { + fencesAddMapRect.initDefaultWidthHeight() + selectorFenceCircleShape.isChecked = true + mCircleRadiusDistance = radius + mFencesMapCommon.setCenterLatLng(latitude, longitude, radius.toDouble()) + } else { + fencesAddMapCircle.initDefaultRadius() + selectorFenceRectangleShape.isChecked = true + mRectWidthDistance = longDistance + mRectHeightDistance = shortDistance + mFencesMapCommon.let { + it.setCenterLatLng(latitudeCenter, longitudeCenter) + it.setRectABCDLatLng( + mContext, + longitudeA, + latitudeA, + longitudeB, + latitudeB, + longitudeC, + latitudeC, + longitudeD, + latitudeD + ) + } + } + } + } else { + fencesAddMapCircle.initDefaultRadius() + fencesAddMapRect.initDefaultWidthHeight() + } + setFenceShape(mFenceShapeType) + } + } + + override fun liveDataObserve() { + //上传图片 + mUserInfoViewModel.mUploadImageLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + saveFences(it.getOrNull()!!) + } + }) + } + + if (isEdit) { + mFencesManageViewModel.mDeleteFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + successTips(R.string.txt_delete_success) + } + }) + } + mFencesManageViewModel.mUpdateFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + successTips(R.string.txt_save_successful) + } + }) + } + + } else { + mFencesManageViewModel.mFencesAddLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + successTips(R.string.txt_save_successful) + } + }) + } + } + + //å地ç†ç¼–ç  + mGeoCoderViewModel.mLatLonAddressLiveData.observe(this) { + mViewBinding.addFencesAddress.apply { + visibility = if (TextUtils.isEmpty(it)) { + View.INVISIBLE + } else { + View.VISIBLE + } + text = it + } + } + + //截å±åŽåŽ‹ç¼©çš„å›¾ç‰‡è·¯å¾„ + mScreenshotsViewModel.mMapSnapshotPathLiveData.observe(this) { + if (!TextUtils.isEmpty(it)) { + mUserInfoViewModel.uploadImage(this, it) + } + } + } + + /** + * 设置显示哪ç§å›´æ æ ·å¼ + */ + private fun setFenceShape(shapeType: Int) { + showLoading(true) + when (shapeType) { + ConstantInt.CircleShapeType -> { + mViewBinding.fencesAddMapCircle.visibility = View.VISIBLE + mViewBinding.fencesAddMapRect.visibility = View.GONE + } + + ConstantInt.RectangleShapeType -> { + mViewBinding.fencesAddMapCircle.visibility = View.GONE + mViewBinding.fencesAddMapRect.visibility = View.VISIBLE + } + } + } + + /** + * 修改æˆåŠŸæç¤º + */ + private fun successTips(resStringId: Int) { + XEventBus.post(EventName.UpdateData + "FencesActivity") + XEventBus.post(EventName.UpdateData + "MapFences") + XEventBus.post(EventName.UpdateData + "TrackerManageSetActivity") + showToast(resStringId, isFinish = true) + } + + /** + * 获å–圆形/矩形中心点 + */ + fun getCentrePoint() = if (mFenceShapeType == ConstantInt.CircleShapeType) { + Point( + mViewBinding.fencesAddMapCircle.getCircleCentrePoint() + ) + } else { + Point( + mViewBinding.fencesAddMapRect.getRectCentrePoint() + ) + } + + /** + * 获å–圆形直虚线的最åŽä¸€ä¸ªç‚¹ + */ + fun getCircleLineEndPoint() = mViewBinding.fencesAddMapCircle.getCircleLineEndPoint() + + /** + * 获å–矩形4个点的æŸä¸€ä¸ªç‚¹ + */ + fun getRectABCDPoint(wherePoint: Int) = + mViewBinding.fencesAddMapRect.getRectABCDPoint(wherePoint) + + /** + * ä¿å­˜å›´æ  + */ + private fun saveSure() { + val fenceName = mViewBinding.addFencesNameEdit.text.toString() + val address = mViewBinding.addFencesAddress.text.toString() + if (TextUtils.isEmpty(fenceName) || TextUtils.isEmpty(address)) { + showToast(R.string.txt_not_null) + return + } + + val hideDelayMillis = 400L + when (mFenceShapeType) { + ConstantInt.CircleShapeType -> { + mViewBinding.fencesAddMapCircle.apply { + //éšè—è·ç¦»ï¼Œä¸è¢«æˆªå›¾ + setShowHideDisDistance(false) + //截å±å¹¶ä¸Šä¼ å›¾ç‰‡ + mFencesMapCommon.snapshotImage( + this@FencesAddActivity, mScreenshotsViewModel, this + ) + postDelayed({ + //几秒åŽå¼€å§‹æ˜¾ç¤ºï¼Œæˆªå±æˆåŠŸ + setShowHideDisDistance(true) + }, hideDelayMillis) + } + } + + ConstantInt.RectangleShapeType -> { + mViewBinding.fencesAddMapRect.apply { + //éšè—è·ç¦»ï¼Œä¸è¢«æˆªå›¾ + setShowHideDisDistance(false) + //截å±å¹¶ä¸Šä¼ å›¾ç‰‡ + mFencesMapCommon.snapshotImage( + this@FencesAddActivity, mScreenshotsViewModel, this + ) + postDelayed({ + //几秒åŽå¼€å§‹æ˜¾ç¤ºï¼Œæˆªå±æˆåŠŸ + setShowHideDisDistance(true) + }, hideDelayMillis) + } + + } + } + } + + private fun saveFences(imageUrl: String) { + val fenceName = mViewBinding.addFencesNameEdit.text.toString() + val address = mViewBinding.addFencesAddress.text.toString() + val isOn = if (mViewBinding.addActivateFencesCheckbox.isChecked) { + 1 + } else { + 0 + } + + val latLon = mFencesMapCommon.getCenterLatLng() + val latitude = latLon[0] + val longitude = latLon[1] + if (mFenceShapeType == ConstantInt.CircleShapeType) { + val radius = mCircleRadiusDistance + LogUtil.d("最åŽçš„ç»çº¬åº¦æ˜¯,$latitude,$longitude") + if (isEdit) { + mFencesManageViewModel.updateCircleFence( + this, FencesBean() + ) + } else { + mFencesManageViewModel.addCircleFence( + this, FencesBean() + ) + } + } else { + val latLonA = mFencesMapCommon.getRectABCDLatLng(FencesPolygonView.POINT_A) + val latitudeA = latLonA[0] + val longitudeA = latLonA[1] + val latLonB = mFencesMapCommon.getRectABCDLatLng(FencesPolygonView.POINT_B) + val latitudeB = latLonB[0] + val longitudeB = latLonB[1] + val latLonC = mFencesMapCommon.getRectABCDLatLng(FencesPolygonView.POINT_C) + val latitudeC = latLonC[0] + val longitudeC = latLonC[1] + val latLonD = mFencesMapCommon.getRectABCDLatLng(FencesPolygonView.POINT_D) + val latitudeD = latLonD[0] + val longitudeD = latLonD[1] + if (isEdit) { + mFencesManageViewModel.updateRectFence( + this, FencesBean() + ) + } else { + mFencesManageViewModel.addRectFence( + this, FencesBean() + ) + } + } + + } + + /** + * åˆ é™¤å›´æ  + */ + private fun deleteFences() { + ViewUtil.instance.showDialog( + mContext, R.string.txt_delete_tips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mFencesManageViewModel.deleteFence( + this@FencesAddActivity, mFenceId, mDeviceServiceId + ) + } + }, okTextResId = R.string.txt_sure + ) + } + + override fun onClick(v: View?) { + when (v!!) { + mRightImageButton -> { + deleteFences() + } + //点任æ„ä½ç½®éšè—æœç´¢ç»“æžœ + mViewBinding.root -> { + mFencesMapCommon.setSearchResultsViewGone() + } + + mRightImageButton -> { + startActivity(Intent(mContext, FencesAddActivity::class.java)) + } + + mViewBinding.fencesSearchAddressBtn -> { + mFencesMapCommon.searchAddress(mViewBinding.fencesAddSearchAddress.text.toString()) + } + + mViewBinding.addFencesOkBtn -> { + saveSure() + } + } + } + + /** + * 选点计算è·ç¦»è¿”回 + */ + override fun calculationDistance(distances: Array) { + LogUtil.e("选点计算è·ç¦»è¿”回") + if (mFenceShapeType == ConstantInt.CircleShapeType) { + mCircleRadiusDistance = Utils.roundOffToInt(distances[0].toDouble()) + mViewBinding.fencesAddMapCircle.setShowDisDistance("${mCircleRadiusDistance}m") + } else { + mRectWidthDistance = Utils.roundOffToInt(distances[0].toDouble()) + mRectHeightDistance = Utils.roundOffToInt(distances[1].toDouble()) + mViewBinding.fencesAddMapRect.setShowDisDistance( + "${mRectWidthDistance}m", "${mRectHeightDistance}m" + ) + } + //ç»çº¬åº¦è½¬æˆåœ°å€æ˜¾ç¤º + mFencesMapCommon.getLatLonAddress(mGeoCoderViewModel) + showLoading(false) + } + + /** + * 地图加载完æˆè¿”回 + */ + override fun mapCompletion() { + LogUtil.e("地图加载完æˆè¿”回") + //编辑 + if (isEdit) { + lifecycleScope.launch(Dispatchers.Main) { + //等待地图移动摄åƒå¤´åŠ¨ç”»æ’­æ”¾ç»“æŸ + delay(500) + LogUtil.e("等待地图移动摄åƒå¤´åŠ¨ç”»æ’­æ”¾ç»“æŸ") + if (mFenceShapeType == ConstantInt.RectangleShapeType) { + mFencesMapCommon.let { + val pointA = it.latLngToPotion(FencesPolygonView.POINT_A) + val pointB = it.latLngToPotion(FencesPolygonView.POINT_B) + val pointC = it.latLngToPotion(FencesPolygonView.POINT_C) + val pointD = it.latLngToPotion(FencesPolygonView.POINT_D) + pointA?.apply { + mViewBinding.fencesAddMapRect.apply { + setRectABCDXYPoint(pointA, pointA, pointB!!, pointC!!, pointD!!) + setShowDisDistance( + "${mRectWidthDistance}m", "${mRectHeightDistance}m" + ) + } + } + LogUtil.e("$pointA,$pointB,$pointC,$pointD") + } + } else if (mFenceShapeType == ConstantInt.CircleShapeType) { + val px = mFencesMapCommon.getCircleRadiusPx(mCircleRadiusDistance.toDouble()) + mViewBinding.fencesAddMapCircle.apply { + setCircleRadiusPx(px.toFloat()) + setShowDisDistance("${mCircleRadiusDistance}m") + } + } + + //ç»çº¬åº¦è½¬æˆåœ°å€æ˜¾ç¤º,编辑首次进去ä¸éœ€è¦è®¡ç®—è·ç¦» + mFencesMapCommon.getLatLonAddress(mGeoCoderViewModel) + showLoading(false) + } + } + } + + override fun rectRotateClick() { + mFencesMapCommon.refreshDistance() + } + + override fun rectScaleClick() { + mFencesMapCommon.refreshDistance() + } + + override fun rectStartDragClick() { + } + + override fun rectEndDragClick() { + } + + override fun circleScaleClick() { + mFencesMapCommon.refreshDistance() + } + + override fun circleStartDragClick() { + } + + override fun circleEndDragClick() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/AddCreditCardActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/AddCreditCardActivity.kt new file mode 100644 index 0000000..363eda9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/AddCreditCardActivity.kt @@ -0,0 +1,157 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.core.widget.addTextChangedListener +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityAddCreditCardBinding +import com.abbidot.tracker.util.Util +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +/** + * æ·»åŠ ä¿¡ç”¨å¡ + * card.cardNumber = "4111111111111111" + *card.expirationDate = "08/20" + *card.countryCode = "USA" + */ +class AddCreditCardActivity : + BaseActivity(ActivityAddCreditCardBinding::inflate), + View.OnFocusChangeListener { + + override fun getTopBar() = mViewBinding.addCreditCardBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_order_add_card) + + setOnClickListenerViews(mViewBinding.confirmSaveCardBtn) + + mViewBinding.addCreditCardNumberEd.addTextChangedListener { + mViewBinding.addCreditCardCardView.setCardNumber(it.toString()) + } + mViewBinding.addCreditCardNameEd.addTextChangedListener { + val lastName = mViewBinding.addCreditCardLastNameEd.text.toString() + val name = "$lastName " + it.toString() + mViewBinding.addCreditCardCardView.setCardholderName(name) + } + mViewBinding.addCreditCardLastNameEd.addTextChangedListener { + val firstName = mViewBinding.addCreditCardNameEd.text.toString() + val name = it.toString() + " $firstName" + mViewBinding.addCreditCardCardView.setCardholderName(name) + } + mViewBinding.addCreditCardValidityEd.addTextChangedListener { + formatCardExpiry(it.toString()) + } + mViewBinding.addCreditCardCvvEd.addTextChangedListener { + mViewBinding.addCreditCardCardView.setCVV(it.toString()) + } + + mViewBinding.addCreditCardValidityEd.onFocusChangeListener = this + mViewBinding.addCreditCardNameEd.onFocusChangeListener = this + mViewBinding.addCreditCardLastNameEd.onFocusChangeListener = this + mViewBinding.addCreditCardNumberEd.onFocusChangeListener = this + mViewBinding.addCreditCardCvvEd.onFocusChangeListener = this + } + + /** + * æ ¼å¼åŒ–有效期 + */ + private fun formatCardExpiry(cardExpiry: String) { + var formatCardExpiry = cardExpiry + val separator = "/" + if (formatCardExpiry.length == 3) { + formatCardExpiry = if (formatCardExpiry.contains(separator)) { + cardExpiry.substring(0, 2) + } else { + cardExpiry.substring(0, 2) + separator + cardExpiry.last() + } + mViewBinding.addCreditCardValidityEd.apply { + setText(formatCardExpiry) + setSelection(formatCardExpiry.length) + } + } + mViewBinding.addCreditCardCardView.setCardExpiry(formatCardExpiry) + } + + + private fun confirmSaveCard() { + val cardNumber = mViewBinding.addCreditCardNumberEd.text.toString() + val firstName = mViewBinding.addCreditCardNameEd.text.toString() + val lastName = mViewBinding.addCreditCardLastNameEd.text.toString() + val creditCardValidity = mViewBinding.addCreditCardValidityEd.text.toString() + val cvv = mViewBinding.addCreditCardCvvEd.text.toString() + + if (TextUtils.isEmpty(cardNumber) || TextUtils.isEmpty(firstName) || TextUtils.isEmpty( + creditCardValidity) || TextUtils.isEmpty(cvv) || TextUtils.isEmpty(lastName) + ) { + showToast(R.string.txt_not_null) + return + } + + if (!creditCardValidity.contains("/")) { + showToast(R.string.txt_card_validity_format) + return + } else { + val dates = creditCardValidity.split("/") + try { + if (dates[0].toInt() > 12) { + showToast(R.string.txt_card_validity_format) + return + } + } catch (e: Exception) { + showToast(R.string.txt_card_validity_format) + return + } + } + if (Util.getCreditCardType(cardNumber) == 0 || cardNumber.length < 9) { + showToast(R.string.txt_card_number_format) + return + } + + lifecycleScope.launch(Dispatchers.IO) { + val card = CreditCardBean() + card.cardNumber = cardNumber + card.lastName = lastName + card.firstName = firstName + card.expirationDate = creditCardValidity + card.cvv = cvv + MyDatabase.creditCardDao().insert(card) + runOnUiThread { + val intent = Intent() + intent.putExtra(ConstantString.Card, card) + setResult(ResultCode.ResultCode_1, intent) + showToast(R.string.txt_save_successful, isFinish = true) + } + } + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.confirmSaveCardBtn -> { + confirmSaveCard() + } + } + } + + override fun onFocusChange(v: View, hasFocus: Boolean) { + if (hasFocus) { + when (v) { + mViewBinding.addCreditCardNumberEd, mViewBinding.addCreditCardNameEd, mViewBinding.addCreditCardLastNameEd, mViewBinding.addCreditCardValidityEd -> { + mViewBinding.addCreditCardCardView.showFrontAnimation() + } + mViewBinding.addCreditCardCvvEd -> { + mViewBinding.addCreditCardCardView.showBehindAnimation() + } + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodPayPalActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodPayPalActivity.kt new file mode 100644 index 0000000..0dee61a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodPayPalActivity.kt @@ -0,0 +1,391 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.deprecated.adapter.SelectPaymentMethodAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivitySelectPaymentMethodBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.BraintreePalViewModel +import com.abbidot.tracker.diff.PaymentMethodDiffCallBack +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.braintreepayments.api.BraintreeClient +import com.braintreepayments.api.Card +import com.braintreepayments.api.CardClient +import com.braintreepayments.api.PayPalAccountNonce +import com.braintreepayments.api.PayPalClient +import com.braintreepayments.api.PayPalListener +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * é€‰æ‹©æ”¯ä»˜æ–¹å¼ + */ +class PaymentMethodPayPalActivity : + BaseActivity(ActivitySelectPaymentMethodBinding::inflate), + PayPalListener { + + private val mBraintreePalViewModel: BraintreePalViewModel by viewModels() + + private lateinit var mSelectPaymentMethodAdapter: SelectPaymentMethodAdapter + + //设备 + private var mRechargeDeviceBean: RechargeDeviceBean? = null + + //å¥—é¤ + private var mSetMealBean: SetMealBean? = null + + //已选中的支付方å¼ä¸‹æ ‡ + private var mSelectPaymentMethodIndex = 0 + + private var mBraintreeClient: BraintreeClient? = null + + //payPal支付 + private var mPayPalClient: PayPalClient? = null + + //ä¿¡ç”¨å¡æ”¯ä»˜ + private var mCardClient: CardClient? = null + + //订å•å· + private var mOrderNo = "" + + //0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + private var mOrderStatus = 0 + + override fun getTopBar() = mViewBinding.selectPaymentMethodBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_order_method) + + intent.extras?.apply { + mRechargeDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.RechargeDevice, RechargeDeviceBean::class.java + ) + mSetMealBean = + Util.getParcelableAdaptive(intent, ConstantString.SetMeal, SetMealBean::class.java) + } + + setData() + + setOnClickListenerViews(mViewBinding.sureSelectPaymentMethodBtn) + } + + private fun setData() { + lifecycleScope.launch { + + val paymentMethodList = mutableListOf() + + withContext(Dispatchers.IO) { + ViewUtil.instance.addMenuBean(paymentMethodList, "", "", R.drawable.ico_lay_paypal) + + val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + list?.forEach { + val imageId = Util.getCreditCardType(it.cardNumber) + ViewUtil.instance.addMenuBean( + paymentMethodList, it.cardNumber, it.expirationDate, imageId + ) + } + + ViewUtil.instance.addMenuBean( + paymentMethodList, + getString(R.string.txt_pay_order_add_card), + "", + R.drawable.ico_lay_newcard + ) + } + + mSelectPaymentMethodAdapter = SelectPaymentMethodAdapter(mContext!!, paymentMethodList) + mSelectPaymentMethodAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + selectPaymentMethod(pos) + } + }) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, + mViewBinding.paymentMethodRecyclerView, + mSelectPaymentMethodAdapter, + bottom = 40 + ) + } + + } + + override fun liveDataObserve() { + + mBraintreePalViewModel.mPayPalOrderNoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mOrderNo = it.getOrNull()!!.orderNo + mBraintreePalViewModel.getBraintreeClientToken(this@PaymentMethodPayPalActivity) + } + }) + } + + /** + * 获å–Braintree客户端令牌key + */ + mBraintreePalViewModel.mBraintreeClientTokenLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + lifecycleScope.launch { + withContext(Dispatchers.IO) { + if (null == mBraintreeClient) { + //显示支付 UI 之å‰ï¼Œä½¿ç”¨æ‚¨çš„令牌化密钥åˆå§‹åŒ– SDK + mBraintreeClient = BraintreeClient(mContext, data.tokenId) + } + } + if (null != mBraintreeClient) { + if (mSelectPaymentMethodIndex == 0) { + launchPayPal() + } else { + launchCardPay() + } + } else { + showToast(R.string.txt_pay_fail) + } + } + } + }, showLoading = true) + } + + XEventBus.observe(this, EventName.PayBack) { + finish() + } + + /** + * æ›´æ–°è®¢å• + */ + mBraintreePalViewModel.mUpdateOrderStatusLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + if (mOrderStatus == 1) { + payPalSuccess() + } else { + payPalFail() + } + } + }) + } + + //ä¿¡ç”¨å¡æ”¯ä»˜æˆåŠŸ + mBraintreePalViewModel.mCardPaymentResultLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + if (!TextUtils.isEmpty(data)) { + payPalSuccess() +// if (data == ErrorCode.CREDIT_CARD_PAY_SUCCESS.toString()) { +// payPalSuccess() +// } else { +// payPalFail() +// } + } + } + }) + } + } + + override fun onNewIntent(newIntent: Intent) { + super.onNewIntent(newIntent) + // required if your activity's launch mode is "singleTop", "singleTask", or "singleInstance" + intent = newIntent + } + + /** + * é€‰æ‹©ä¸€ç§æ”¯ä»˜æ–¹å¼ + */ + private fun selectPaymentMethod(pos: Int) { + val oldList = mSelectPaymentMethodAdapter.getData() + //å¤„ç†æœ€åŽä¸€ä¸ªé€‰é¡¹ ç›´æŽ¥æ·»è·³è½¬åŠ ä¿¡ç”¨å¡ + if (pos == oldList.size - 1) { + val intent = Intent(mContext, AddCreditCardActivity::class.java) + launchActivity(mActivityResultLauncher, intent) + return + } + if (oldList[pos].isSwitch) { + return + } + + val newList = mutableListOf() + oldList.forEach { + ViewUtil.instance.addMenuBean( + newList, it.menuName, it.menuValue, it.imageId, isSwitch = it.isSwitch + ) + } + newList[mSelectPaymentMethodIndex].isSwitch = false + newList[pos].isSwitch = true + mSelectPaymentMethodIndex = pos + lifecycleScope.launch { + withContext(Dispatchers.Default) { + mSelectPaymentMethodAdapter.setData(newList) + DiffUtil.calculateDiff(PaymentMethodDiffCallBack(oldList, newList), true) + }.dispatchUpdatesTo(mSelectPaymentMethodAdapter) + } + } + + /** + * 接收添加信用å¡è¿”回结果 + */ + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (null != it.data) { + if (it.resultCode == ResultCode.ResultCode_1) { + val card = Util.getParcelableAdaptive( + it.data!!, ConstantString.Card, CreditCardBean::class.java + ) + if (null != card) { + mBraintreePalViewModel.addCreditCard( + this, card, mSelectPaymentMethodAdapter + ) + } + } + } + } + + + /** + * 确认支付 + */ + private fun surePay() { + val list = mSelectPaymentMethodAdapter.getData() + var selectPaymentMethodIndex = -1 + for (i in 0 until list.size) { + if (list[i].isSwitch) { + selectPaymentMethodIndex = i + break + } + } + + if (selectPaymentMethodIndex == -1) { + showToast(R.string.txt_select_payment_method) + return + } + mSelectPaymentMethodIndex = selectPaymentMethodIndex + + if (mSelectPaymentMethodIndex == 0) { + mBraintreePalViewModel.getPaypalOrderNo( + this, mSetMealBean!!, mRechargeDeviceBean!!.deviceId + ) + } else { + //ä¿¡ç”¨å¡æ”¯ä»˜ä¸éœ€è¦è®¢å•å· + mBraintreePalViewModel.getBraintreeClientToken(this@PaymentMethodPayPalActivity) + } + } + + /** + * 开始PayPal支付 + */ + private fun launchPayPal() { + if (null == mPayPalClient) { + mPayPalClient = PayPalClient(this, mBraintreeClient!!) + mPayPalClient!!.setListener(this) + } + mBraintreePalViewModel.launchPayPal( + this, mBraintreeClient, mPayPalClient, mSetMealBean, mOrderNo + ) + } + + /** + * å¼€å§‹ä¿¡ç”¨å¡æ”¯ä»˜ + */ + private fun launchCardPay() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + if (null == mCardClient) { + mCardClient = CardClient(mBraintreeClient!!) + } + } + val creditCardBean = mSelectPaymentMethodAdapter.getData()[mSelectPaymentMethodIndex] + val card = Card() + card.number = creditCardBean.menuName + card.expirationDate = creditCardBean.menuValue + card.countryCode = "USA" + mBraintreePalViewModel.launchCardPay( + this@PaymentMethodPayPalActivity, + mCardClient, + card, + mSetMealBean, + mRechargeDeviceBean!!.deviceId + ) + } + } + + /** + * 支付æˆåŠŸ + */ + private fun payPalSuccess() { + val intent = Intent(mContext!!, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Amount, mSetMealBean!!.accountFee) + intent.putExtra(ConstantString.Type, ConstantInt.Type1) + startActivityFinish(intent) + } + + /** + * 支付失败 + */ + private fun payPalFail() { + val intent = Intent(mContext!!, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Type, ConstantInt.Type2) + startActivity(intent) + } + + /** + * PayPal支付回调 + */ + override fun onPayPalSuccess(payPalAccountNonce: PayPalAccountNonce) { + LogUtil.e("PayPal支付æˆåŠŸ${payPalAccountNonce}") + mOrderStatus = 1 +// showToast(R.string.txt_pay_success) + mBraintreePalViewModel.updateOrderStatus( + this, mOrderNo, mOrderStatus, mRechargeDeviceBean!!.deviceId, mSetMealBean!!.days + ) + } + + /** + * PayPal支付回调 + */ + override fun onPayPalFailure(error: Exception) { + val message = error.message + mOrderStatus = 2 + LogUtil.e("PayPal支付失败$message") +// if (message?.contains("cancel") == true) { +// showToast(R.string.txt_user_canceled_paypal) +// } else { +// showToast(R.string.txt_pay_fail) +// } + mBraintreePalViewModel.updateOrderStatus( + this, mOrderNo, mOrderStatus, mRechargeDeviceBean!!.deviceId, mSetMealBean!!.days + ) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.sureSelectPaymentMethodBtn -> { + surePay() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodStripeActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodStripeActivity.kt new file mode 100644 index 0000000..df58bff --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentMethodStripeActivity.kt @@ -0,0 +1,485 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.bean.LKSimSetMealBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivitySelectPaymentMethodBinding +import com.abbidot.tracker.deprecated.adapter.SelectPaymentMethodAdapter +import com.abbidot.tracker.deprecated.ui.activity.vm.BraintreePalViewModel +import com.abbidot.tracker.deprecated.ui.activity.vm.StripePalViewModel +import com.abbidot.tracker.diff.PaymentMethodDiffCallBack +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.braintreepayments.api.BraintreeClient +import com.braintreepayments.api.Card +import com.braintreepayments.api.CardClient +import com.braintreepayments.api.PayPalAccountNonce +import com.braintreepayments.api.PayPalClient +import com.braintreepayments.api.PayPalListener +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * é€‰æ‹©æ”¯ä»˜æ–¹å¼ + */ +class PaymentMethodStripeActivity : + BaseActivity(ActivitySelectPaymentMethodBinding::inflate), + PayPalListener { + + private val mBraintreePalViewModel: BraintreePalViewModel by viewModels() + private val mStripePalViewModel: StripePalViewModel by viewModels() + + private lateinit var mSelectPaymentMethodAdapter: SelectPaymentMethodAdapter + + //设备 + private var mRechargeDeviceBean: RechargeDeviceBean? = null + + //å¥—é¤ + private var mLKSimSetMealBean: LKSimSetMealBean? = null + + //已选中的支付方å¼ä¸‹æ ‡ + private var mSelectPaymentMethodIndex = 0 + + private var mBraintreeClient: BraintreeClient? = null + + //payPal支付 + private var mPayPalClient: PayPalClient? = null + + //ä¿¡ç”¨å¡æ”¯ä»˜ + private var mCardClient: CardClient? = null + + //订å•å· + private var mOrderNo = "" + private var mPartnerCode = "" + + //0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + private var mOrderStatus = 0 + + //mealType套é¤ç±»åž‹ + private var mSetMealIndex = 0 + + override fun getTopBar() = mViewBinding.selectPaymentMethodBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_order_method) + + intent.extras?.apply { + mRechargeDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.RechargeDevice, RechargeDeviceBean::class.java + ) + mLKSimSetMealBean = Util.getParcelableAdaptive( + intent, ConstantString.LkSetMeal, LKSimSetMealBean::class.java + ) + mPartnerCode = getString(ConstantString.PartnerCode).toString() + mSetMealIndex = getInt(ConstantString.SetMealIndex, 0) + + setData() + + setOnClickListenerViews(mViewBinding.sureSelectPaymentMethodBtn) + + //Stripe普通支付 + if (mLKSimSetMealBean!!.specAndPriceList!![0].autoRenewal == "0") { + mStripePalViewModel.init(this@PaymentMethodStripeActivity) + } + } + } + + private fun setData() { + lifecycleScope.launch { + + val paymentMethodList = mutableListOf() + + withContext(Dispatchers.IO) { +// ViewUtil.instance.addMenuBean(paymentMethodList, "", "", R.drawable.ico_lay_paypal) + + val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + list?.forEach { + val imageId = Util.getCreditCardType(it.cardNumber) + ViewUtil.instance.addMenuBean( + paymentMethodList, it.cardNumber, it.expirationDate, imageId + ) + } + + ViewUtil.instance.addMenuBean( + paymentMethodList, + getString(R.string.txt_pay_order_add_card), + "", + R.drawable.ico_lay_newcard + ) + } + + mSelectPaymentMethodAdapter = + SelectPaymentMethodAdapter(mContext!!, paymentMethodList, false) + mSelectPaymentMethodAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + selectPaymentMethod(pos) + } + }) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, + mViewBinding.paymentMethodRecyclerView, + mSelectPaymentMethodAdapter, + bottom = 40 + ) + } + + } + + override fun liveDataObserve() { + /*************************Stripe支付************************************/ + mStripePalViewModel.mStripePayOrderNoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val clientSecret = it.getOrNull() + clientSecret?.let { secret -> + mStripePalViewModel.mPaymentIntentClientSecret = secret + launchStripePal() + } + } + }) + } + +// mStripePalViewModel.mStripeSubscriptionCustomerLiveData.observe(this) { +// dealRequestResult(it, object : GetResultCallback { +// override fun onResult(any: Any) { +// val data = it.getOrNull() +// data?.apply { +// mStripePalViewModel.createSubscription( +// this@PaymentMethodStripeActivity, +// mLKSimSetMealBean!!, +// this, +// mRechargeDeviceBean!!, +// mPartnerCode +// ) +// } +// } +// }) +// } + + mStripePalViewModel.mStripeSubscriptionLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + if (!TextUtils.isEmpty(data)) { + payPalSuccess() + } + } + }) + } + + //Stripe支付结果 + mStripePalViewModel.mStripePayResultLiveData.observe(this) { + showLoading(false) + it?.apply { + when (it) { + 0 -> payPalSuccess() + 1 -> payPalFail() + -1 -> { + showToast(R.string.txt_user_canceled_paypal, true) + } + } + } + } + /*************************Stripe支付************************************/ + + mBraintreePalViewModel.mPayPalOrderNoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mOrderNo = it.getOrNull()!!.orderNo + mBraintreePalViewModel.getBraintreeClientToken(this@PaymentMethodStripeActivity) + } + }) + } + + /** + * 获å–Braintree客户端令牌key + */ + mBraintreePalViewModel.mBraintreeClientTokenLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + lifecycleScope.launch { + withContext(Dispatchers.IO) { + if (null == mBraintreeClient) { + //显示支付 UI 之å‰ï¼Œä½¿ç”¨æ‚¨çš„令牌化密钥åˆå§‹åŒ– SDK + mBraintreeClient = BraintreeClient(mContext!!, data.tokenId) + } + } + if (null != mBraintreeClient) { + if (mSelectPaymentMethodIndex == 0) { + launchPayPal() + } else { + launchCardPay() + } + } else { + showToast(R.string.txt_pay_fail) + } + } + } + }, showLoading = true) + } + + XEventBus.observe(this, EventName.PayBack) { + finish() + } + + /** + * æ›´æ–°è®¢å• + */ + mBraintreePalViewModel.mUpdateOrderStatusLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + if (mOrderStatus == 1) { + payPalSuccess() + } else { + payPalFail() + } + } + }) + } + + //ä¿¡ç”¨å¡æ”¯ä»˜æˆåŠŸ + mBraintreePalViewModel.mCardPaymentResultLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + if (!TextUtils.isEmpty(data)) { + payPalSuccess() +// if (data == ErrorCode.CREDIT_CARD_PAY_SUCCESS.toString()) { +// payPalSuccess() +// } else { +// payPalFail() +// } + } + } + }) + } + } + + override fun onNewIntent(newIntent: Intent) { + super.onNewIntent(newIntent) + // required if your activity's launch mode is "singleTop", "singleTask", or "singleInstance" + intent = newIntent + } + + /** + * é€‰æ‹©ä¸€ç§æ”¯ä»˜æ–¹å¼ + */ + private fun selectPaymentMethod(pos: Int) { + val oldList = mSelectPaymentMethodAdapter.getData() + //å¤„ç†æœ€åŽä¸€ä¸ªé€‰é¡¹ ç›´æŽ¥æ·»è·³è½¬åŠ ä¿¡ç”¨å¡ + if (pos == oldList.size - 1) { + val intent = Intent(mContext, AddCreditCardActivity::class.java) + launchActivity(mActivityResultLauncher, intent) + return + } + if (oldList[pos].isSwitch) { + return + } + + val newList = mutableListOf() + oldList.forEach { + ViewUtil.instance.addMenuBean( + newList, it.menuName, it.menuValue, it.imageId, isSwitch = it.isSwitch + ) + } + newList[mSelectPaymentMethodIndex].isSwitch = false + newList[pos].isSwitch = true + mSelectPaymentMethodIndex = pos + //更新选中的æŸä¸ªæ”¯ä»˜æ–¹å¼ + lifecycleScope.launch { + withContext(Dispatchers.Default) { + mSelectPaymentMethodAdapter.setData(newList) + DiffUtil.calculateDiff(PaymentMethodDiffCallBack(oldList, newList), true) + }.dispatchUpdatesTo(mSelectPaymentMethodAdapter) + } + } + + /** + * 接收添加信用å¡è¿”回结果 + */ + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (null != it.data) { + if (it.resultCode == ResultCode.ResultCode_1) { + val card = Util.getParcelableAdaptive( + it.data!!, ConstantString.Card, CreditCardBean::class.java + ) + if (null != card) { + mBraintreePalViewModel.addCreditCard( + this, card, mSelectPaymentMethodAdapter + ) + } + } + } + } + + + /** + * 确认支付 + */ + private fun surePay() { + val list = mSelectPaymentMethodAdapter.getData() + var selectPaymentMethodIndex = -1 + for (i in 0 until list.size) { + if (list[i].isSwitch) { + selectPaymentMethodIndex = i + break + } + } + + if (selectPaymentMethodIndex == -1) { + showToast(R.string.txt_select_payment_method) + return + } + mSelectPaymentMethodIndex = selectPaymentMethodIndex + + //判断是Stripe普通支付还是自动订阅 + if (mLKSimSetMealBean!!.specAndPriceList!![0].autoRenewal == "0") { + //普通支付 + mStripePalViewModel.getStripePayOrderNo( + this, mLKSimSetMealBean!!, mRechargeDeviceBean!!, mPartnerCode + ) + } else { + //自动订阅 + val card = mSelectPaymentMethodAdapter.getData()[mSelectPaymentMethodIndex] +// mStripePalViewModel.createCustomer(this, card, mSetMealIndex + 1) + } + + +// if (mSelectPaymentMethodIndex == 0) { +// mBraintreePalViewModel.getPaypalOrderNo( +// this, mSetMealBean!!, mRechargeDeviceBean!!.deviceId +// ) +// } else { +// //ä¿¡ç”¨å¡æ”¯ä»˜ä¸éœ€è¦è®¢å•å· +// mBraintreePalViewModel.getBraintreeClientToken(this@PaymentMethodStripeActivity) +// } + } + + /** + * 开始PayPal支付 + */ + private fun launchPayPal() { + if (null == mPayPalClient) { + mPayPalClient = PayPalClient(this, mBraintreeClient!!) + mPayPalClient!!.setListener(this) + } +// mBraintreePalViewModel.launchPayPal( +// this, mBraintreeClient, mPayPalClient, mSetMealBean, mOrderNo +// ) + } + + /** + * å¼€å§‹ä¿¡ç”¨å¡æ”¯ä»˜ + */ + private fun launchCardPay() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + if (null == mCardClient) { + mCardClient = CardClient(mBraintreeClient!!) + } + } + val creditCardBean = mSelectPaymentMethodAdapter.getData()[mSelectPaymentMethodIndex] + val card = Card() + card.number = creditCardBean.menuName + card.expirationDate = creditCardBean.menuValue + card.countryCode = "USA" +// mBraintreePalViewModel.launchCardPay( +// this@PaymentMethodStripeActivity, +// mCardClient, +// card, +// mSetMealBean, +// mRechargeDeviceBean!!.deviceId +// ) + } + } + + /** + * 开始Stripe普通支付 + */ + private fun launchStripePal() { + val card = mSelectPaymentMethodAdapter.getData()[mSelectPaymentMethodIndex] + mStripePalViewModel.startCheckout(this, card) + } + + /** + * 支付æˆåŠŸ + */ + private fun payPalSuccess() { + val intent = Intent(mContext!!, PaymentResultActivity::class.java) + intent.putExtra( + ConstantString.Amount, mLKSimSetMealBean!!.specAndPriceList!![0].discountPriceUSD + ) + intent.putExtra(ConstantString.Type, ConstantInt.Type1) + startActivityFinish(intent) + } + + /** + * 支付失败 + */ + private fun payPalFail() { + val intent = Intent(mContext!!, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Type, ConstantInt.Type2) + startActivity(intent) + } + + /** + * PayPal支付回调 + */ + override fun onPayPalSuccess(payPalAccountNonce: PayPalAccountNonce) { + LogUtil.e("PayPal支付æˆåŠŸ${payPalAccountNonce}") + mOrderStatus = 1 +//// showToast(R.string.txt_pay_success) +// mBraintreePalViewModel.updateOrderStatus( +// this, mOrderNo, mOrderStatus, mRechargeDeviceBean!!.deviceId, mSetMealBean!!.days +// ) + } + + /** + * PayPal支付回调 + */ + override fun onPayPalFailure(error: Exception) { + val message = error.message + mOrderStatus = 2 + LogUtil.e("PayPal支付失败$message") +//// if (message?.contains("cancel") == true) { +//// showToast(R.string.txt_user_canceled_paypal) +//// } else { +//// showToast(R.string.txt_pay_fail) +//// } +// mBraintreePalViewModel.updateOrderStatus( +// this, mOrderNo, mOrderStatus, mRechargeDeviceBean!!.deviceId, mSetMealBean!!.days +// ) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.sureSelectPaymentMethodBtn -> { + surePay() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentResultActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentResultActivity.kt new file mode 100644 index 0000000..abf82a7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/PaymentResultActivity.kt @@ -0,0 +1,64 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge + +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityPaymentResultBinding +import com.abbidot.tracker.deprecated.ui.fragment.profile.PaymentFailFragment +import com.abbidot.tracker.deprecated.ui.fragment.profile.PaymentSuccessFragment + +/** + * 付款结果显示 + */ +class PaymentResultActivity : + BaseActivity(ActivityPaymentResultBinding::inflate) { + + var mAmount = 0.0 + + //æˆåŠŸæ”¯ä»˜çš„æ ‡è¯† + private var isPaymentSuccess = false + + override fun getTopBar() = mViewBinding.paymentResultBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_order_payment_title) + setLeftBackImage(R.drawable.icon_white_back_svg) + + var type = ConstantInt.Type1 + intent.extras?.apply { + type = getInt(ConstantString.Type) + mAmount = getDouble(ConstantString.Amount, 0.0) + } + + if (type == ConstantInt.Type1) { + isPaymentSuccess = true + switchFragment(PaymentSuccessFragment.newInstance(mContext), 0) + } else { + switchFragment(PaymentFailFragment.newInstance(mContext), 1) + } + } + + override fun leftBackOnClick() { + XEventBus.post(EventName.PayBack) + if (isPaymentSuccess) { + XEventBus.post(EventName.UpdateData + "PaymentSuccess") + } + super.leftBackOnClick() + } + + fun switchFragment(fragment: Fragment, index: Int) { + supportFragmentManager.commit { + if (fragment.isAdded) { + show(fragment) + } else { + add(R.id.payment_result_frame, fragment) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeAmountCNActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeAmountCNActivity.kt new file mode 100644 index 0000000..519be7a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeAmountCNActivity.kt @@ -0,0 +1,100 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge.cn + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityRechargeAmountCnBinding +import com.abbidot.tracker.deprecated.adapter.RechargeAmountCNAdapter +import com.abbidot.tracker.deprecated.ui.activity.vm.RechargeAmountViewModel +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + * 国内套é¤åˆ—表 + */ +class RechargeAmountCNActivity : + BaseActivity(ActivityRechargeAmountCnBinding::inflate) { + + private val mRechargeAmountViewModel: RechargeAmountViewModel by viewModels() + + private lateinit var mRechargeAmountCNAdapter: RechargeAmountCNAdapter + private var mRechargeDeviceBean: RechargeDeviceBean? = null + + override fun getTopBar() = mViewBinding.rechargeAmountCnBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_amount) + + //å……å€¼è®¾å¤‡æ•°æ® + mRechargeDeviceBean = Util.getParcelableAdaptive( + intent, + ConstantString.RechargeDevice, + RechargeDeviceBean::class.java + ) + + mRechargeAmountCNAdapter = RechargeAmountCNAdapter(this, null) + mRechargeAmountCNAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mRechargeAmountCNAdapter.setSelectIndex(pos) + } + }) + ViewUtil.instance.setRecyclerViewGridLayout( + mContext!!, + mViewBinding.rechargeAmountCnRecyclerView, + mRechargeAmountCNAdapter, + 2, + bottom = QMUIDisplayHelper.dpToPx(28), + ) + + setOnClickListenerViews(mViewBinding.btnRechargeAmountCnSubmitOrder) + + mRechargeAmountViewModel.getSetMealList(this) + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.PayBack) { + finish() + } + + mRechargeAmountViewModel.mSetMealListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + mRechargeAmountCNAdapter.setData(data, true) + } + }) + } + } + + /** + * æäº¤è®¢å• + */ + private fun submitOrder() { + val index = mRechargeAmountCNAdapter.getSelectIndex() + if (index == -1) { + showToast(R.string.txt_pay_amount) + return + } + val intent = Intent(mContext, RechargeOrderDetailCNActivity::class.java) + intent.putExtra(ConstantString.RechargeDevice, mRechargeDeviceBean) + intent.putExtra(ConstantString.SetMeal, mRechargeAmountCNAdapter.getData()[index]) + startActivity(intent) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnRechargeAmountCnSubmitOrder -> submitOrder() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeDeviceDetailCNActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeDeviceDetailCNActivity.kt new file mode 100644 index 0000000..e02f916 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeDeviceDetailCNActivity.kt @@ -0,0 +1,127 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge.cn + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityRechargeDeviceDetailCnBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.RechargeDeviceViewModel +import com.abbidot.tracker.util.ViewUtil + +/** + * 设备充值国内详情 + */ +class RechargeDeviceDetailCNActivity : BaseActivity( + ActivityRechargeDeviceDetailCnBinding::inflate) { + + private val mRechargeDeviceViewModel: RechargeDeviceViewModel by viewModels() + + private var mDeviceId = "" + + //传递给下个页é¢éœ€è¦ç”¨çš„值 + private var mRechargeDeviceBean: RechargeDeviceBean? = null + + override fun getTopBar() = mViewBinding.rechargeDeviceDetailCnBar.titleTopBar + + override fun initData() { + super.initData() + mDeviceId = intent.extras?.getString(ConstantString.DeviceId, "").toString() + setTopBarTitle(mDeviceId) + + ViewUtil.instance.setShapeRadius(mViewBinding.rechargeDeviceDetailCnDevice.root, 6) + + mViewBinding.rechargeDeviceDetailCnHistory.apply { + ViewUtil.instance.showQMUICommonListItemView(mContext!!, this, { + val intent = Intent(mContext, RechargeHistoryCNActivity::class.java) + intent.putExtra(ConstantString.DeviceId, mDeviceId) + startActivity(intent) + }, getString(R.string.txt_card_history)) + detailText = "" + } + + setOnClickListenerViews(mViewBinding.btnRechargeDeviceDetailCnRecharge) + + mRechargeDeviceViewModel.getCards(this) + } + + override fun liveDataObserve() { + mRechargeDeviceViewModel.mDeviceCardLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + setData(data) + } + }) + } + + //充值æˆåŠŸåˆ·æ–°å¤©æ•° + XEventBus.observe(this, EventName.UpdateData + "PaymentSuccess") { + mRechargeDeviceViewModel.getCards(this) + } + } + + private fun setData(list: MutableList) { + for (i in 0 until list.size) { + val rechargeDeviceBean = list[i] + if (mDeviceId == rechargeDeviceBean.deviceId) { + mRechargeDeviceBean = rechargeDeviceBean + mTopBar?.setTitle(rechargeDeviceBean.deviceOutId) + mViewBinding.rechargeDeviceDetailCnDevice.apply { + itemCardDeviceName.text = rechargeDeviceBean.deviceOutId + itemCardDayNumber.text = rechargeDeviceBean.surplusDays.toString() + val overdueDate = rechargeDeviceBean.overdueDate + val asOfString = if (TextUtils.isEmpty(overdueDate)) { + "" + } else { + String.format(getString(R.string.txt_card_list_end), overdueDate) + } + itemCardAsOf.text = asOfString + if (null == rechargeDeviceBean.pet) { + itemCardPetHead.appHeadImage.visibility = View.GONE + itemCardPetName.visibility = View.GONE + } else { + itemCardPetHead.appHeadImage.let { + it.visibility = View.VISIBLE + ViewUtil.instance.imageLoadUrl(it, rechargeDeviceBean.pet!!.imgurl) + } + itemCardPetName.let { + it.visibility = View.VISIBLE + it.text = rechargeDeviceBean.pet!!.petName + } + } + } + + mViewBinding.rechargeDeviceDetailCnDescribe.let { + if (TextUtils.isEmpty(rechargeDeviceBean.period)) { + rechargeDeviceBean.period = "0" + } + val subscriptionPlanString = + String.format(getString(R.string.txt_surplus_day_how), + rechargeDeviceBean.surplusDays) + it.tvDescriptionSurplusDayContent.text = subscriptionPlanString + it.tvDescriptionExpiryDateContent.text = rechargeDeviceBean.overdueDate + } + break + } + } + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnRechargeDeviceDetailCnRecharge -> { + if (null != mRechargeDeviceBean) { + val intent = Intent(mContext, RechargeAmountCNActivity::class.java) + intent.putExtra(ConstantString.RechargeDevice, mRechargeDeviceBean) + startActivity(intent) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeHistoryCNActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeHistoryCNActivity.kt new file mode 100644 index 0000000..bae8cdf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeHistoryCNActivity.kt @@ -0,0 +1,53 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge.cn + +import androidx.activity.viewModels +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.abbidot.tracker.R +import com.abbidot.tracker.deprecated.adapter.RechargeHistoryCNAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityRechargeHistoryCnBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.RechargeHistoryViewModel + +/** + * 国内充值记录 + */ +class RechargeHistoryCNActivity : + BaseActivity(ActivityRechargeHistoryCnBinding::inflate) { + + private val mRechargeHistoryViewModel: RechargeHistoryViewModel by viewModels() + + private lateinit var mRechargeHistoryCNAdapter: RechargeHistoryCNAdapter + + override fun getTopBar() = mViewBinding.rechargeDeviceDetailCnBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_card_history) + + val deviceId = intent.extras?.getString(ConstantString.DeviceId, "").toString() + + mRechargeHistoryCNAdapter = RechargeHistoryCNAdapter(mContext!!, null) + + mViewBinding.rechargeHistoryCnRecyclerView.apply { + layoutManager = LinearLayoutManager(mContext) + addItemDecoration(DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL)) + adapter = mRechargeHistoryCNAdapter + } + + mRechargeHistoryViewModel.getRechargeHistory(this, deviceId) + } + + override fun liveDataObserve() { + mRechargeHistoryViewModel.mRechargeHistoryListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val list = it.getOrNull()!! + mRechargeHistoryCNAdapter.setData(list, true) + } + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeOrderDetailCNActivity.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeOrderDetailCNActivity.kt new file mode 100644 index 0000000..f923e5e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/profile/recharge/cn/RechargeOrderDetailCNActivity.kt @@ -0,0 +1,257 @@ +package com.abbidot.tracker.deprecated.ui.activity.profile.recharge.cn + +import android.os.Handler +import android.os.HandlerThread +import android.os.Message +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.alipay.PayResult +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityRechargeOrderDetailCnBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.PayCNViewModel +import com.abbidot.tracker.util.ThirdPartyUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.alipay.sdk.app.PayTask +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet +import com.tencent.mm.opensdk.modelpay.PayReq +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +/** + * 国内充值订å•详情 + */ +class RechargeOrderDetailCNActivity : BaseActivity( + ActivityRechargeOrderDetailCnBinding::inflate +) { + + private val mPayCNViewModel: PayCNViewModel by viewModels() + + //设备 + private var mRechargeDeviceBean: RechargeDeviceBean? = null + + //å¥—é¤ + private var mSetMealBean: SetMealBean? = null + private var mQMUIBottomSheet: QMUIBottomSheet? = null + + private val alipaySDKPayFlag = 1 + + //æ”¯ä»˜æ–¹å¼ + private var mPayWay = 0 + + //æ”¯ä»˜å®æ”¯ä»˜å­çº¿ç¨‹ + private lateinit var mHandlerThread: HandlerThread + private lateinit var mHandler: Handler + + override fun getTopBar() = mViewBinding.rechargeOrderDetailCnBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pay_order_title) + + mRechargeDeviceBean = Util.getParcelableAdaptive( + intent, + ConstantString.RechargeDevice, + RechargeDeviceBean::class.java + ) + mSetMealBean = + Util.getParcelableAdaptive(intent, ConstantString.SetMeal, SetMealBean::class.java) + + mViewBinding.apply { + ViewUtil.instance.setShapeRadius(rechargeOrderDetailCnDevice.root, 6) + ViewUtil.instance.setShapeRadius(rechargeOrderDetailCnAmount.root, 6) + rechargeOrderDetailCnPayWay.let { + it.text = getString(R.string.txt_select_payment_method) + it.detailTextView.visibility = View.VISIBLE + it.detailTextView.background = + ContextCompat.getDrawable(mContext!!, R.drawable.pic_wechatpay) + + setOnClickListenerViews(startPayMoneyBtnCn, it) + } + } + + //底部弹出èœå• + val languageList = mutableListOf(R.drawable.pic_wechatpay, R.drawable.pic_alipay) + val bottomListSheetBuilder = + ViewUtil.instance.showBottomSheetList(mContext!!, { dialog, _, position, _ -> + dialog.dismiss() + mPayWay = position + mViewBinding.rechargeOrderDetailCnPayWay.detailTextView.background = + ContextCompat.getDrawable(mContext, languageList[position]) + }) + for (i in 0 until languageList.size) { + bottomListSheetBuilder.addItem(languageList[i], "", "") + } + mQMUIBottomSheet = bottomListSheetBuilder.build() + + setRechargeDeviceData() + setSetMeal() + + initAlipayThread() + } + + /** + * åˆå§‹åŒ–æ”¯ä»˜å®æ”¯ä»˜çº¿ç¨‹ + */ + private fun initAlipayThread() { + mHandlerThread = HandlerThread("mHandlerThread") + mHandlerThread.start() + //æ”¯ä»˜å®æ”¯ä»˜ç»“果回调 + mHandler = Handler(mHandlerThread.looper) { + when (it.what) { + alipaySDKPayFlag -> { + @Suppress("UNCHECKED_CAST") val payResult = + PayResult(it.obj as Map) + //åŒæ­¥è¿”回需è¦éªŒè¯çš„ä¿¡æ¯ + LogUtil.e("æ”¯ä»˜å®æ”¯ä»˜ç»“果回调", payResult.toString()) + mPayCNViewModel.alipayResultCallback( + this, payResult.resultStatus, mSetMealBean!!.accountFee + ) + } + } + true + } + } + + override fun liveDataObserve() { + mPayCNViewModel.mGetWxPayOrderLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + val request = PayReq() + request.appId = appid + request.partnerId = partnerid + request.prepayId = prepayid + request.packageValue = packageStr + request.nonceStr = noncestr + request.timeStamp = timestamp + request.sign = sign + ThirdPartyUtil.mApi.sendReq(request) + } + } + }) + } + + mPayCNViewModel.mGetAlipayOrderLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.let { + //æ”¯ä»˜å®æ”¯ä»˜å¿…须异步调用 + lifecycleScope.launch(Dispatchers.IO) { + val alipay = PayTask(mActivity) + //订å•ä¿¡æ¯ + val result = alipay.payV2(data.orderString, true) + val msg = Message() + msg.what = alipaySDKPayFlag + msg.obj = result + mHandler.sendMessage(msg) + } + } + } + }) + } + + //支付æˆåŠŸè¿”å›ž + XEventBus.observe(this, EventName.PayBack) { + finish() + } + } + + private fun setRechargeDeviceData() { + mRechargeDeviceBean?.apply { + mViewBinding.rechargeOrderDetailCnDevice.let { + it.itemCardDeviceName.text = this.deviceOutId + it.itemCardDayNumber.text = this.surplusDays.toString() + val overdueDate = this.overdueDate + val asOfString = if (TextUtils.isEmpty(overdueDate)) { + "" + } else { + String.format(getString(R.string.txt_card_list_end), overdueDate) + } + it.itemCardAsOf.text = asOfString + + this.pet?.apply { + it.itemCardPetHead.appHeadImage.visibility = View.VISIBLE + it.itemCardPetName.visibility = View.VISIBLE + it.itemCardPetName.text = pet!!.petName + ViewUtil.instance.imageLoadUrl(it.itemCardPetHead.appHeadImage, pet!!.imgurl) + } + } + } + } + + private fun setSetMeal() { + mSetMealBean?.apply { + val str = getString(R.string.txt_month_until) + "\t$accountFee" + mViewBinding.tvNeedPayMoneyCn.text = str + mViewBinding.rechargeOrderDetailCnAmount.let { + if (hotType == ConstantInt.Type1) { + it.rechargeAmountNormalHotImage.visibility = View.VISIBLE + } else { + it.rechargeAmountNormalHotImage.visibility = View.GONE + } + it.rechargeAmountTwoMoney.text = accountFee.toString() + + it.txtRechargeAmountName.text = name + + val perMonth = if (period > 1) { + String.format(getString(R.string.pet_managet_age), period) + } else { + String.format(getString(R.string.pet_managet_age_1), period) + } + it.rechargeAmountTwoTime.text = perMonth + +// val subscriptionPlan = +// String.format(getString(R.string.txt_pay_amount_detail1), subscriptionFee) + it.txtSubscriptionPlanContent.text = "æ•°é‡ï¼šx1" + + val averageMonth = Utils.formatDecimal(accountFee / (12 * period), 2) + val monthString = String.format(getString(R.string.txt_perMonth), averageMonth) + it.rechargeAmountTwoDescription.text = monthString + } + } + } + + /** + * 去支付 + */ + private fun goPay() { + when (mPayWay) { + 0 -> mPayCNViewModel.getWxPayOrder(this, mSetMealBean!!, mRechargeDeviceBean!!.deviceId) + + 1 -> mPayCNViewModel.getAlipayOrder( + this, mSetMealBean!!, mRechargeDeviceBean!!.deviceId + ) + + } + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.startPayMoneyBtnCn -> goPay() + mViewBinding.rechargeOrderDetailCnPayWay -> mQMUIBottomSheet?.show() + } + } + + override fun onDestroy() { + super.onDestroy() + //线程退出释放 + mHandlerThread.quit() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddPetLabelsViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddPetLabelsViewModel.kt new file mode 100644 index 0000000..88666a5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddPetLabelsViewModel.kt @@ -0,0 +1,64 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import android.text.TextUtils +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.bean.LabelBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + *Created by .yzq on 2022/3/3/003. + * @link + * @description: + */ +class AddPetLabelsViewModel : ViewModel() { + + val mPetLabelsLiveData = MutableLiveData>>() + val mLabelListLiveData = MutableLiveData>() + + fun getPetLabels(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetLabels() + mPetLabelsLiveData.value = result + } + } + + /** + * 多个标签,隔开的字符串转数组 + */ + fun getLabelData(label: String) { + if (TextUtils.isEmpty(label)) return + val labels = label.split(",") + if (labels.isNotEmpty()) { + val labelList = mutableListOf() + labels.forEach { str -> + val labelBean = LabelBean(str) + labelList.add(labelBean) + } + mLabelListLiveData.value = labelList + } + } + + fun setLabelData(adapter: BaseRecyclerAdapter, newList: MutableList) { + val oldList = adapter.getData() + if (oldList.size == 0) { + adapter.setData(newList, true) + return + } + viewModelScope.launch { + withContext(Dispatchers.Default) { + adapter.setData(newList) + DiffUtil.calculateDiff(BaseDiffCallBack(oldList, newList), true) + }.dispatchUpdatesTo(adapter) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddTrackerDeviceViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddTrackerDeviceViewModel.kt new file mode 100644 index 0000000..47bbffc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AddTrackerDeviceViewModel.kt @@ -0,0 +1,84 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.OrderBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/4/9/009. + * @link + * @description:添加绑定设备 + */ +class AddTrackerDeviceViewModel : ViewModel() { + + val mGetMacLiveData = MutableLiveData>() + val mGetIccIdLiveData = MutableLiveData>() + val mActiveDeviceLiveData = MutableLiveData>() + val mUpdatePayDeviceStateLiveData = MutableLiveData>() + val mDeviceOrderStatusLiveData = MutableLiveData>() + + /** + * 获å–设备macåœ°å€ + */ + fun getMacId(activity: BaseActivity<*>, deviceOutId: String) { + activity.showLoading(true) + val userId = MMKVUtil.getString(MMKVKey.UserId) + viewModelScope.launch { + val result = NetworkApi.getMacId(userId, deviceOutId) + mGetMacLiveData.value = result + } + } + + /** + * 获å–设备iccid + */ + fun getIccId(activity: BaseActivity<*>, deviceOutId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getIccId(deviceOutId) + mGetIccIdLiveData.value = result + } + } + + /** + * ä¸Šç”µæ¿€æ´»è®¾å¤‡ï¼Œæ›´æ–°çŠ¶æ€ + *@param addStatus 设备添加状æ€,1 为上电激活æˆåŠŸ + */ + fun activeDevice(activity: BaseActivity<*>, deviceId: String, addStatus: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.updateStatus(deviceId, addStatus) + mActiveDeviceLiveData.value = result + } + } + + /** + * 支付æˆåŠŸåŽï¼Œæ›´æ–°ç»‘å®šçŠ¶æ€ + */ + fun updatePayDeviceState(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.updatePayDeviceState(deviceId, userId) + mUpdatePayDeviceStateLiveData.value = result + } + } + + /** + * 获å–设备订å•çŠ¶æ€ + */ + fun getDeviceOrderStatus(activity: BaseActivity<*>, deviceOutId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getDeviceOrderStatus(deviceOutId) + mDeviceOrderStatusLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AutomaticSubscribeViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AutomaticSubscribeViewModel.kt new file mode 100644 index 0000000..922e7d3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/AutomaticSubscribeViewModel.kt @@ -0,0 +1,43 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/26/026. + * @link + * @description:开通/关闭自动订阅,自动续费 + */ +class AutomaticSubscribeViewModel : ViewModel() { + val mCancelSubscribeLiveData = MutableLiveData>() + fun cancelSubscriptions(activity: BaseActivity<*>, rechargeDeviceBean: RechargeDeviceBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.cancelSubscriptions(rechargeDeviceBean.orderId, + rechargeDeviceBean.payType, rechargeDeviceBean.subscriptionsId) + mCancelSubscribeLiveData.value = result + } + } + + val mSubscribeLiveData = MutableLiveData>() + fun subscription(activity: BaseActivity<*>, setMealBean: SetMealBean, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId ) + val username = MMKVUtil.getString(MMKVKey.UserName) + val result = NetworkApi.subscription(setMealBean.name, deviceId, + setMealBean.accountFee.toString(), setMealBean.subscriptionFee.toString(), + setMealBean.period.toString(), userId, username) + mSubscribeLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/BraintreePalViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/BraintreePalViewModel.kt new file mode 100644 index 0000000..36701e3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/BraintreePalViewModel.kt @@ -0,0 +1,250 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.* +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.diff.PaymentMethodDiffCallBack +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.braintreepayments.api.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + *Created by .yzq on 2022/3/28/028. + * @link + * @description:braintree支付 + */ +class BraintreePalViewModel : ViewModel() { + + //æ˜¯å¦æ˜¯æ²™ç›’环境 + private val isSandbox = true + + /** + * 标记化密钥 åˆå§‹åŒ–sdk + */ + //沙盒测试 + private val sandboxTokenizationKey = "sandbox_csgnn5ww_dp75dg57ptvqwz9b" + + //ç”Ÿäº§æ­£å¼ + private val productionTokenizationKey = "sandbox_csgnn5ww_dp75dg57ptvqwz9b" + + val mBraintreeClientTokenLiveData = MutableLiveData>() + val mPayPalOrderNoLiveData = MutableLiveData>() + val mUpdateOrderStatusLiveData = MutableLiveData>() + + //ä¿¡ç”¨å¡æ”¯ä»˜ç»“æžœ + val mCardPaymentResultLiveData = MutableLiveData>() + + + fun getTokenizationKey(): String { + if (isSandbox) { + return sandboxTokenizationKey + } + return productionTokenizationKey + } + + + /** + * æ˜¾ç¤ºæ·»åŠ çš„ä¿¡ç”¨å¡ + */ + fun addCreditCard(activity: BaseActivity<*>, + card: CreditCardBean, + adapter: BaseRecyclerAdapter) { + val oldList = adapter.getData() + val newList = mutableListOf() + newList.addAll(oldList) + //判断是å¦å¡å·ä¸€æ · + var isSame = false + for (i in 0 until newList.size) { + val menuTxtBean = newList[i] + if (menuTxtBean.menuName == card.cardNumber) { + isSame = true + menuTxtBean.menuValue = card.expirationDate + break + } + } + if (!isSame) { + newList.removeLast() + val imageId = Util.getCreditCardType(card.cardNumber) + ViewUtil.instance.addMenuBean(newList, card.cardNumber, card.expirationDate, imageId) + ViewUtil.instance.addMenuBean(newList, + activity.getString(R.string.txt_pay_order_add_card), "", + R.drawable.ico_lay_newcard) + } + + viewModelScope.launch { + withContext(Dispatchers.Default) { + adapter.setData(newList) + DiffUtil.calculateDiff(PaymentMethodDiffCallBack(oldList, newList), true) + }.dispatchUpdatesTo(adapter) + } + } + + fun getBraintreeClientToken(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getBraintreeClientToken() + mBraintreeClientTokenLiveData.value = result + } + } + + /** + * 获å–订å•å· + */ + fun getPaypalOrderNo(activity: BaseActivity<*>, setMealBean: SetMealBean, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { +// val result = +// NetworkApi.getPaypalOrderNo(setMealBean.mealPackage, setMealBean.packageType, +// setMealBean.cost.toString(), deviceId) +// mPayPalOrderNoLiveData.value = result + } + } + + /** + *@param orderStatus:0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + */ + fun updateOrderStatus(activity: BaseActivity<*>, + orderId: String, + orderStatus: Int,//0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + deviceId: String, + mealDays: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.updateOrderStatus(orderId, orderStatus, deviceId, mealDays) + mUpdateOrderStatusLiveData.value = result + } + } + + /** + * 信用å¡å‘起支付 + */ + fun cardPayment(activity: BaseActivity<*>, + mealName: String, + mealDays: Int, + totalCost: String, + paymentMethodNonce: String, + deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = + NetworkApi.cardPayment(mealName, mealDays, totalCost, paymentMethodNonce, deviceId) + mCardPaymentResultLiveData.value = result + } + } + + /** + * 信用å¡è®¢é˜…支付 + */ + private fun cardSubscription(activity: BaseActivity<*>, + userId: String, + paymentMethodNonce: String, + firstName: String, + lastName: String, + username: String, + deviceId: String, + setMealBean: SetMealBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = + NetworkApi.cardSubscription(userId, paymentMethodNonce, firstName, lastName, + username, deviceId, setMealBean) + mCardPaymentResultLiveData.value = result + } + } + + + /** + * 开始调起payPal支付 + */ + fun launchPayPal(activity: BaseActivity<*>, + braintreeClient: BraintreeClient?, + payPalClient: PayPalClient?, + setMealBean: SetMealBean?, + orderNo: String) { + activity.showLoading(true) + viewModelScope.launch(Dispatchers.IO) { + braintreeClient?.getConfiguration { _, _ -> + payPalClient?.apply { +// val payPalCheckoutRequest = PayPalCheckoutRequest("${setMealBean!!.cost}") +// val payPalLineItem = +// PayPalLineItem(PayPalLineItem.KIND_DEBIT, setMealBean.mealPackage, "1", +// "${setMealBean.cost}") +// payPalLineItem.setProductCode(orderNo) +// val payPalLineItems = ArrayList() +// payPalLineItems.add(payPalLineItem) +// payPalCheckoutRequest.currencyCode = "USD" +// payPalCheckoutRequest.setLineItems(payPalLineItems) +// tokenizePayPalAccount(activity, payPalCheckoutRequest) + } + } + } + } + + /** + * å¼€å§‹è°ƒèµ·ä¿¡ç”¨å¡æ”¯ä»˜,自动订阅 + */ + fun launchCardPay(activity: BaseActivity<*>, + cardClient: CardClient?, + card: Card, + setMealBean: SetMealBean?, + deviceId: String) { + if (null == setMealBean) return + + activity.apply { + if (!isShowLoading()) { + showLoading(true) + } + } + + val callback = CardTokenizeCallback { cardNonce, error -> + LogUtil.e("è°ƒèµ·ä¿¡ç”¨å¡æ”¯ä»˜error=${error?.message}") + if (null != cardNonce) { + viewModelScope.launch { + val nonce = cardNonce.string + LogUtil.e("cardNonce:$nonce") +// activity.showLoading(true) +// cardPayment(activity, setMealBean.mealPackage, setMealBean.days, +// setMealBean.cost.toString(), nonce, deviceId) + var list: List? + withContext(Dispatchers.IO) { + list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + } + if (null != list) { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val userName = MMKVUtil.getString(MMKVKey.UserName) + for (creditCard in list!!) { + if (card.number == creditCard.cardNumber) { + //信用å¡è®¢é˜…支付 + cardSubscription(activity, userId, nonce, creditCard.firstName, + creditCard.lastName, userName, deviceId, setMealBean) + break + } + } + } + } + } else { + activity.apply { + showToast(R.string.txt_pay_fail) + showLoading(false) + } + } + } + + viewModelScope.launch(Dispatchers.IO) { + cardClient?.tokenize(card, callback) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/ChangePasswordViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/ChangePasswordViewModel.kt new file mode 100644 index 0000000..88ddf68 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/ChangePasswordViewModel.kt @@ -0,0 +1,29 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/24/024. + * @link + * @description: + */ +class ChangePasswordViewModel : ViewModel() { + + val mResetPasswordLiveData = MutableLiveData>() + + /** + * é‡ç½®å¯†ç  + */ + fun resetPassword(activity: BaseActivity<*>, email: String, password: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.resetPassword(email, password) + mResetPasswordLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/LedLightViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/LedLightViewModel.kt new file mode 100644 index 0000000..3ae47ac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/LedLightViewModel.kt @@ -0,0 +1,33 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/4/9/009. + * @link + * @description: + */ +class LedLightViewModel : ViewModel() { + val mSetLedLightLiveData = MutableLiveData>() + + /** + * 设置lightç¯å…‰ + */ + fun setLedLight(activity: BaseActivity<*>, mapDeviceBean: MapDeviceBean) { + activity.showLoading(true) + mapDeviceBean.apply { + viewModelScope.launch { + val result = NetworkApi.setLedLight( + deviceServerId, ledRedValue, ledGreenValue, ledBlueValue, ledMode, ledSwitch + ) + mSetLedLightLiveData.value = result + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt new file mode 100644 index 0000000..37fe92b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt @@ -0,0 +1,39 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MessageBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/2/24/024. + * @link + * @description: + */ +class NotificationsViewModel : ViewModel() { + + val mNotificationsLiveData = MutableLiveData>>() + val mDeleteMessageLiveData = MutableLiveData>() + + fun getMessageList(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getMessageList(userId) + mNotificationsLiveData.value = result + } + } + + fun deleteMessage(activity: BaseActivity<*>, messageIds: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.deleteMessage(messageIds) + mDeleteMessageLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/PayCNViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/PayCNViewModel.kt new file mode 100644 index 0000000..42c1116 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/PayCNViewModel.kt @@ -0,0 +1,80 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import android.content.Intent +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.AlipayOrderBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.bean.WXPayOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.deprecated.ui.activity.profile.recharge.PaymentResultActivity +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/7/29/029. + * @link + * @description: + */ +class PayCNViewModel : ViewModel() { + + val mGetWxPayOrderLiveData = MutableLiveData>() + val mGetAlipayOrderLiveData = MutableLiveData>() + + /** + * 获å–微信支付Prepay_id + */ + fun getWxPayOrder(activity: BaseActivity<*>, setMealBean: SetMealBean, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val userName = MMKVUtil.getString(MMKVKey.UserName) + val result = NetworkApi.getWxPayOrder(setMealBean, deviceId, userId, userName) + mGetWxPayOrderLiveData.value = result + } + } + + /** + * èŽ·å–æ”¯ä»˜å®æ”¯ä»˜è®¢å• + */ + fun getAlipayOrder(activity: BaseActivity<*>, setMealBean: SetMealBean, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val userName = MMKVUtil.getString(MMKVKey.UserName) + val result = NetworkApi.getAlipayOrder(setMealBean, deviceId, userId, userName) + mGetAlipayOrderLiveData.value = result + } + } + + /** + * æ”¯ä»˜å®æ”¯ä»˜å›žè°ƒ + */ + fun alipayResultCallback(activity: BaseActivity<*>, resultStatus: String?, price: Double) { + //è¿”å›žå‚æ•°è¯´æ˜Ž:https://opendocs.alipay.com/open/204/105302 + when (resultStatus) { + "9000" -> { + activity.showToast(R.string.txt_pay_success) + //支付æˆåŠŸ + LogUtil.e("WXPayEntryActivity", "支付æˆåŠŸ") + val intent = Intent(activity, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Amount, price) + intent.putExtra(ConstantString.Type, ConstantInt.Type1) + activity.startActivity(intent) + } + //"8000"代表支付结果因为支付渠é“原因或者系统原因还在等待支付结果确认,æœ€ç»ˆäº¤æ˜“æ˜¯å¦æˆåŠŸä»¥æœåŠ¡ç«¯å¼‚æ­¥é€šçŸ¥ä¸ºå‡† + "8000" -> activity.showToast("支付结果确认中") + "6001" -> activity.showToast(R.string.txt_cancel_pay) + "6002" -> activity.showToast("网络异常") + "5000" -> activity.showToast("é‡å¤è¯·æ±‚") + else -> activity.showToast(R.string.txt_pay_fail) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeAmountViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeAmountViewModel.kt new file mode 100644 index 0000000..ce124f5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeAmountViewModel.kt @@ -0,0 +1,42 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.LKSimListBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/26/026. + * @link + * @description: + */ +class RechargeAmountViewModel : ViewModel() { + val mSetMealListLiveData = MutableLiveData>>() + val mLKSimSetMealListLiveData = MutableLiveData>() + + /** + * 获å–套é¤åˆ—表 + */ + fun getSetMealList(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getSetMealList() + mSetMealListLiveData.value = result + } + } + + /** + * 获å–simå¡é¤åˆ—表 + */ + fun getSimSetMealList(activity: BaseActivity<*>, iccId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getSimSetMealList(iccId, "CN00000827") + mLKSimSetMealListLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeDeviceViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeDeviceViewModel.kt new file mode 100644 index 0000000..2a16dc6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeDeviceViewModel.kt @@ -0,0 +1,29 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/25/025. + * @link + * @description:å¯ä»¥å……值的设备 + */ +class RechargeDeviceViewModel : ViewModel() { + val mDeviceCardLiveData = MutableLiveData>>() + + fun getCards(activity: BaseActivity<*>) { + activity.showLoading(true) + val userId = MMKVUtil.getString(MMKVKey.UserId) + viewModelScope.launch { + val result = NetworkApi.getCards(userId) + mDeviceCardLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeHistoryViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeHistoryViewModel.kt new file mode 100644 index 0000000..ae9299b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/RechargeHistoryViewModel.kt @@ -0,0 +1,26 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.RechargeHistoryBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/26/026. + * @link + * @description: + */ +class RechargeHistoryViewModel : ViewModel() { + val mRechargeHistoryListLiveData = MutableLiveData>>() + + fun getRechargeHistory(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getRechargeHistory(deviceId) + mRechargeHistoryListLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/StripePalViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/StripePalViewModel.kt new file mode 100644 index 0000000..305a15a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/StripePalViewModel.kt @@ -0,0 +1,223 @@ +package com.abbidot.tracker.deprecated.ui.activity.vm + +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.LKSimSetMealBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.bean.StripeSubscriptionPriceBean +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.retrofit2.NetworkApi +import com.stripe.android.PaymentConfiguration +import com.stripe.android.model.CardParams +import com.stripe.android.model.ConfirmPaymentIntentParams +import com.stripe.android.model.PaymentMethodCreateParams +import com.stripe.android.payments.paymentlauncher.PaymentLauncher +import com.stripe.android.payments.paymentlauncher.PaymentResult +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +/** + *Created by .yzq on 2023/7/14/014. + * @link + * @description:Stripe支付 + */ +class StripePalViewModel : ViewModel() { + //æœåŠ¡å™¨è¿”å›žçš„æ”¯ä»˜å‡­è¯ + var mPaymentIntentClientSecret = "" + private lateinit var mPaymentLauncher: PaymentLauncher + + //èŽ·å–æ”¯ä»˜å‡­è¯ + val mStripePayOrderNoLiveData = MutableLiveData>() + val mStripeSubscriptionLiveData = MutableLiveData>() + + //支付结果 + val mStripePayResultLiveData = MutableLiveData() + + /** + * Stripe支付åˆå§‹åŒ– + */ + fun init(activity: AppCompatActivity) { + val paymentConfiguration = PaymentConfiguration.getInstance(activity.applicationContext) + mPaymentLauncher = PaymentLauncher.create( + activity, + paymentConfiguration.publishableKey, + paymentConfiguration.stripeAccountId, + ::onPaymentResult + ) + } + + /** + * 开始æäº¤Stripe支付 + */ + fun startCheckout(activity: BaseActivity<*>, card: MenuTxtBean) { + activity.showLoading(true) + viewModelScope.launch(Dispatchers.IO) { + val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + if (null != list) { + for (it in list) { + if (card.menuName == it.cardNumber) { + val dates = it.expirationDate.split("/") + val name = "${it.lastName} ${it.firstName}" + val params = PaymentMethodCreateParams.createCard( + CardParams( + it.cardNumber, dates[0].toInt(), dates[1].toInt(), it.cvv, name + ) + ) + val confirmParams = + ConfirmPaymentIntentParams.createWithPaymentMethodCreateParams( + params, mPaymentIntentClientSecret + ) + mPaymentLauncher.confirm(confirmParams) + break + } + } + } + } + } + + /** + * Stripe支付结果 + */ + private fun onPaymentResult(paymentResult: PaymentResult) { + var message = "" + val result = when (paymentResult) { + is PaymentResult.Completed -> { + message = "Completed!" + 0 + } + + is PaymentResult.Canceled -> { + message = "Canceled!" + -1 + } + + is PaymentResult.Failed -> { + // This string comes from the PaymentIntent's error message. + // See here: https://stripe.com/docs/api/payment_intents/object#payment_intent_object-last_payment_error-message + message = "Failed: " + paymentResult.throwable.message + 1 + } + } + LogUtil.e("Stripe支付结果:$message") + mStripePayResultLiveData.value = result + } + + /** + * Stripe支付创建订阅 + */ + fun createSubscription( + activity: BaseActivity<*>, + lkSimSetMealBean: LKSimSetMealBean, + stripeSubscriptionPriceBean: StripeSubscriptionPriceBean, + rechargeDeviceBean: RechargeDeviceBean, + partnerCode: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val userName = MMKVUtil.getString(MMKVKey.UserName) + lkSimSetMealBean.let { + it.specAndPriceList?.run { + val spec = get(0) + val amount = (spec.discountPriceUSD * 100).toInt() + val result = NetworkApi.createSubscription( + userId, + it.servicePlanShowName, + rechargeDeviceBean.deviceId, + userName, + spec.discountPriceUSD.toString(), + stripeSubscriptionPriceBean.priceId, + stripeSubscriptionPriceBean.customerId, + amount.toString(), + partnerCode, + it.packageCode, + it.servicePlanCode, + spec.orderPeriod, + it.servicePlanShowName, + rechargeDeviceBean.iccid, + spec.autoRenewal + ) + mStripeSubscriptionLiveData.value = result + } + + } + } + } + + /** + * Stripeæ”¯ä»˜å–æ¶ˆè®¢é˜… + */ + fun cancelStripeSubscription( + activity: BaseActivity<*>, mRechargeDeviceBean: RechargeDeviceBean + ) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.cancelStripeSubscription( + mRechargeDeviceBean.orderId, + mRechargeDeviceBean.subscriptionsId, + mRechargeDeviceBean.iccid + ) + mStripePayOrderNoLiveData.value = result + } + } + + /** + * Stripe支付 Rsa算法解密测试 + */ + fun rsaDecodeTest(encryptedData: String) { + viewModelScope.launch { + NetworkApi.rsaDecodeTest(encryptedData) + } + } + + /** + * 获å–Stripeæ”¯ä»˜å‡­è¯ + * priceId 套é¤çš„产å“ID(订阅时传) + */ + fun getStripePayOrderNo( + activity: BaseActivity<*>, + lkSimSetMealBean: LKSimSetMealBean, + rechargeDeviceBean: RechargeDeviceBean, + partnerCode: String, + priceId: String = "" + ) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val username = MMKVUtil.getString(MMKVKey.UserName) + lkSimSetMealBean.let { + it.specAndPriceList?.run { + val spec = get(0) + val amount = (spec.discountPriceUSD * 100).toInt() + val result = NetworkApi.getStripePayOrder( + amount.toString(), + userId, + it.servicePlanShowName, + rechargeDeviceBean.deviceId, + username, + spec.discountPriceUSD.toString(), + priceId, + partnerCode, + it.packageCode, + it.servicePlanCode, + spec.orderPeriod, + it.servicePlanShowName, + rechargeDeviceBean.iccid, + spec.autoRenewal + ) + mStripePayOrderNoLiveData.value = result + } + + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNFinishFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNFinishFragment.kt new file mode 100644 index 0000000..08decbb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNFinishFragment.kt @@ -0,0 +1,98 @@ +package com.abbidot.tracker.deprecated.ui.fragment.forgot + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentForgetPasswordCnFinishBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + + +/** + * 国内忘记密ç -è®¾ç½®æ–°å¯†ç  + */ +class ForgetPasswordCNFinishFragment : BaseFragment( + FragmentForgetPasswordCnFinishBinding::inflate +) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = ForgetPasswordCNFinishFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + + val activity = activity as LoginRegisterCNActivity + activity.apply { + if (mType != ConstantInt.Close) { + mViewBinding.setNewPasswordReturnLoginCn.visibility = View.GONE + } + setTopTitle(getString(R.string.txt_set_new_password)) + setTopContent("") + } + + mViewBinding.apply { + //添加下划线 + setNewPasswordReturnLoginCn.paint.flags = Paint.UNDERLINE_TEXT_FLAG + setOnClickListenerViews(btnFinishSetNewPassword, setNewPasswordReturnLoginCn) + } + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mSetNewPasswordResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + lifecycleScope.launch { + val activity = activity as LoginRegisterCNActivity + if (activity.mType != ConstantInt.Close) { + withContext(Dispatchers.IO) { + MMKVUtil.clearAll() + } + XEventBus.post(EventName.ChangePassword) + } + showToast(R.string.txt_change_successful) + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + } + }) + } + } + + private fun setNewPassword() { + val password = mViewBinding.setNewCnPasswordEd.text.toString() + if (TextUtils.isEmpty(password)) { + showToast(R.string.txt_not_null) + return + } + val activity = activity as LoginRegisterCNActivity + mRegisterCNViewModel.resetNewPassword(this, activity.mPhone, password) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnFinishSetNewPassword -> setNewPassword() + mViewBinding.setNewPasswordReturnLoginCn -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNStartFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNStartFragment.kt new file mode 100644 index 0000000..1589acc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/forgot/ForgetPasswordCNStartFragment.kt @@ -0,0 +1,139 @@ +package com.abbidot.tracker.deprecated.ui.fragment.forgot + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentForgetPasswordCnStartBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel +import com.abbidot.tracker.vm.CountDownTimerViewModel + + +/** + * å›½å†…å¿˜è®°å¯†ç  + */ +class ForgetPasswordCNStartFragment : BaseFragment( + FragmentForgetPasswordCnStartBinding::inflate +) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = ForgetPasswordCNStartFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + mViewBinding.apply { + //添加下划线 + forgetPasswordReturnLoginCn.paint.flags = Paint.UNDERLINE_TEXT_FLAG + + setOnClickListenerViews( + btnForgetPasswordCnNext, + llForgetPasswordGetCode.btnGetCode, + forgetPasswordReturnLoginCn + ) + } + + val activity = activity as LoginRegisterCNActivity + activity.apply { + if (mType == ConstantInt.Close) { + setTopTitle(getString(R.string.txt_find_password)) + } else { + setTopTitle(getString(R.string.txt_change_pwd)) + mViewBinding.let { + val phone = MMKVUtil.getString(MMKVKey.Phone) + it.llForgetPasswordGetCode.etGetCodePhone.setText(phone) + it.llForgetPasswordGetCode.etGetCodePhone.isFocusable = false + it.forgetPasswordReturnLoginCn.visibility = View.GONE + } + } + setTopContent("") + } + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mSendCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mCountDownTimerViewModel.startCountDown(60) + showToast(R.string.txt_code_success) + } + }) + } + + //倒计时 + mCountDownTimerViewModel.mCountDowningLiveData.observe(viewLifecycleOwner) { + mViewBinding.llForgetPasswordGetCode.btnGetCode.apply { + isEnabled = false + text = "${it}s" + } + } + mCountDownTimerViewModel.mCountDownEndLiveData.observe(viewLifecycleOwner) { + mViewBinding.llForgetPasswordGetCode.btnGetCode.apply { + isEnabled = true + text = getString(R.string.register_txt_get_code) + } + } + + mRegisterCNViewModel.mValidateCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Forget_Password_Finish) + } + }) + } + } + + /** + * 忘记密ç ä¸‹ä¸€æ­¥ + */ + private fun forgetPasswordNext() { + val phone = mViewBinding.llForgetPasswordGetCode.etGetCodePhone.text.toString() + val code = mViewBinding.llForgetPasswordGetCode.etPhoneCode.text.toString() + if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(code)) { + showToast(R.string.txt_not_null) + return + } + val activity = activity as LoginRegisterCNActivity + activity.mPhone = phone + mRegisterCNViewModel.validatePhoneCode(this, phone, code, 4) + } + + /** + * 获å–验è¯ç  + */ + private fun getPhoneCode() { + val phone = mViewBinding.llForgetPasswordGetCode.etGetCodePhone.text.toString() + if (TextUtils.isEmpty(phone)) { + showToast(R.string.txt_register_phone) + return + } + mRegisterCNViewModel.sendCode(this, phone, 4) + } + + override fun onClick(v: View?) { + when (v) { + mViewBinding.btnForgetPasswordCnNext -> forgetPasswordNext() + mViewBinding.forgetPasswordReturnLoginCn -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + + mViewBinding.llForgetPasswordGetCode.btnGetCode -> getPhoneCode() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/BindPhoneCNFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/BindPhoneCNFragment.kt new file mode 100644 index 0000000..21e4d1b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/BindPhoneCNFragment.kt @@ -0,0 +1,114 @@ +package com.abbidot.tracker.deprecated.ui.fragment.login + +import android.content.Context +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentBindPhoneCnBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.LoginCNViewModel +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel +import com.abbidot.tracker.vm.CountDownTimerViewModel + + +/** + * ç»‘å®šæ‰‹æœºå· + */ +class BindPhoneCNFragment : + BaseFragment(FragmentBindPhoneCnBinding::inflate) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + private val mLoginCNViewModel: LoginCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = BindPhoneCNFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + val activity = activity as LoginRegisterCNActivity + activity.setTopTitle(getString(R.string.login_txt_login_first)) + activity.setTopContent(getString(R.string.login_txt_login_bind_phone)) + + mViewBinding.apply { + setOnClickListenerViews(llBindPhoneGetPhoneCode.btnGetCode, btnBindBindPhoneCn) + } + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mSendCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mCountDownTimerViewModel.startCountDown(60) + showToast(R.string.txt_code_success) + } + }) + } + + //倒计时 + mCountDownTimerViewModel.mCountDowningLiveData.observe(viewLifecycleOwner) { + mViewBinding.llBindPhoneGetPhoneCode.btnGetCode.apply { + isEnabled = false + text = "${it}s" + } + } + mCountDownTimerViewModel.mCountDownEndLiveData.observe(viewLifecycleOwner) { + mViewBinding.llBindPhoneGetPhoneCode.btnGetCode.apply { + isEnabled = true + text = getString(R.string.register_txt_get_code) + } + } + + mLoginCNViewModel.mWXBindResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.loginSuccess(activity, this, R.string.txt_bind_success) + } + } + }) + } + } + + /** + * 获å–验è¯ç  + */ + private fun getPhoneCode() { + val phone = mViewBinding.llBindPhoneGetPhoneCode.etGetCodePhone.text.toString() + if (TextUtils.isEmpty(phone)) { + showToast(R.string.txt_register_phone) + return + } + mRegisterCNViewModel.sendCode(this, phone, 2) + } + + /** + *å¾®ä¿¡ç»‘å®šæ‰‹æœºå· + */ + private fun wxBindPhone() { + val phone = mViewBinding.llBindPhoneGetPhoneCode.etGetCodePhone.text.toString() + val code = mViewBinding.llBindPhoneGetPhoneCode.etPhoneCode.text.toString() + if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(code)) { + showToast(R.string.txt_not_null) + return + } + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.wxBind(this, phone, code, activity.mWXId) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.llBindPhoneGetPhoneCode.btnGetCode -> getPhoneCode() + mViewBinding.btnBindBindPhoneCn -> wxBindPhone() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNAccountFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNAccountFragment.kt new file mode 100644 index 0000000..4ea147b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNAccountFragment.kt @@ -0,0 +1,152 @@ +package com.abbidot.tracker.deprecated.ui.fragment.login + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentLoginCnAccountBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.LoginCNViewModel +import com.abbidot.tracker.util.ThirdPartyUtil +import com.abbidot.tracker.util.ViewUtil + +/** + * 国内å¸å·ç™»å½• + */ +class LoginCNAccountFragment : + BaseFragment(FragmentLoginCnAccountBinding::inflate) { + + private val mLoginCNViewModel: LoginCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = LoginCNAccountFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + + mViewBinding.apply { + //添加下划线 + loginCnAccountSignUp.paint.flags = Paint.UNDERLINE_TEXT_FLAG + loginCnAccountForgetPassword.paint.flags = Paint.UNDERLINE_TEXT_FLAG + + setOnClickListenerViews( + btnLoginCnAccountCode, + btnLoginCnWx, + btnStartLoginCnAccount, + loginCnAccountSignUp, + loginCnAccountForgetPassword, + llLoginCnAccountAgree.loginCnPolicy, + llLoginCnAccountAgree.loginCnTerms + ) + } + } + + override fun liveDataObserve() { + //微信登录æˆåŠŸè¿”å›ž + XEventBus.observe(this, EventName.WXLoginResult) { it: Result -> + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + LogUtil.e("LoginCNAccountFragment微信登录æˆåŠŸè¿”å›ž,页é¢å¯è§$isVisible") + if (!isVisible) { + return + } + val data = it.getOrNull() + data?.apply { + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.loginSuccess(activity, this) + } + } + }) + } + + mLoginCNViewModel.mAccountPwdLoginResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.loginSuccess(activity, this) + } + } + }) + } + } + + /** + * 微信登录 + */ + private fun wechatLogin() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llLoginCnAccountAgree.loginAgreePrivacyCheckbox)) { + return + } + ThirdPartyUtil.instance.startWXLogin(activity) + } + + /** + *è´¦å·å¯†ç ç™»å½• + */ + private fun accountPwdLogin() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llLoginCnAccountAgree.loginAgreePrivacyCheckbox)) { + return + } + var phone = mViewBinding.loginCnPhoneEd.text.toString() + var pwd = mViewBinding.loginCnPasswordEd.text.toString() + if (AppUtils.isDebug()) { + if (TextUtils.equals("12", phone)) { + phone = "13049437653" + pwd = "123456" + } + } + if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(pwd)) { + showToast(R.string.txt_not_null) + return + } + + mLoginCNViewModel.accountPasswordLogin(this, phone, pwd) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.loginCnAccountSignUp -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Register_Start) + } + + mViewBinding.loginCnAccountForgetPassword -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Forget_Password_Start) + } + + mViewBinding.btnStartLoginCnAccount -> accountPwdLogin() + mViewBinding.btnLoginCnWx -> wechatLogin() + + mViewBinding.btnLoginCnAccountCode -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Code_Login) + } + + mViewBinding.llLoginCnAccountAgree.loginCnPolicy -> { + ViewUtil.instance.goPrivacyPolicy(mActivity!!) + } + + mViewBinding.llLoginCnAccountAgree.loginCnTerms -> { + ViewUtil.instance.goServiceContract(mActivity!!) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNCodeFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNCodeFragment.kt new file mode 100644 index 0000000..ccbb5b0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNCodeFragment.kt @@ -0,0 +1,144 @@ +package com.abbidot.tracker.deprecated.ui.fragment.login + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentLoginCnCodeBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.LoginCNViewModel +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.CountDownTimerViewModel + + +/** + * 国内验è¯ç ç™»å½• + */ +class LoginCNCodeFragment : + BaseFragment(FragmentLoginCnCodeBinding::inflate) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + private val mLoginCNViewModel: LoginCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = LoginCNCodeFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + + mViewBinding.apply { + //添加下划线 + loginCnCodeUserPassword.paint.flags = Paint.UNDERLINE_TEXT_FLAG + + setOnClickListenerViews( + loginCnCodeUserPassword, + btnStartLoginCnCode, + llLoginCnCodeSendCode.btnGetCode, + llLoginCnCodeAgree.loginCnTerms, + llLoginCnCodeAgree.loginCnPolicy + ) + } + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mSendCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mCountDownTimerViewModel.startCountDown(60) + showToast(R.string.txt_code_success) + } + }) + } + + //倒计时 + mCountDownTimerViewModel.mCountDowningLiveData.observe(viewLifecycleOwner) { + mViewBinding.llLoginCnCodeSendCode.btnGetCode.apply { + isEnabled = false + text = "${it}s" + } + } + mCountDownTimerViewModel.mCountDownEndLiveData.observe(viewLifecycleOwner) { + mViewBinding.llLoginCnCodeSendCode.btnGetCode.apply { + isEnabled = true + text = getString(R.string.register_txt_get_code) + } + } + + mLoginCNViewModel.mPhoneLoginResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.loginSuccess(activity, this) + } + } + }) + } + } + + /** + * 验è¯ç ç™»å½• + */ + private fun codeLogin() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llLoginCnCodeAgree.loginAgreePrivacyCheckbox)) { + return + } + + val phone = mViewBinding.llLoginCnCodeSendCode.etGetCodePhone.text.toString() + val code = mViewBinding.llLoginCnCodeSendCode.etPhoneCode.text.toString() + if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(code)) { + showToast(R.string.txt_not_null) + return + } + + mLoginCNViewModel.phoneLogin(this, phone, code) + } + + /** + * 获å–验è¯ç  + */ + private fun getPhoneCode() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llLoginCnCodeAgree.loginAgreePrivacyCheckbox)) { + return + } + + val phone = mViewBinding.llLoginCnCodeSendCode.etGetCodePhone.text.toString() + if (TextUtils.isEmpty(phone)) { + showToast(R.string.txt_register_phone) + return + } + mRegisterCNViewModel.sendCode(this, phone, 1) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.loginCnCodeUserPassword -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + + mViewBinding.btnStartLoginCnCode -> codeLogin() + mViewBinding.llLoginCnCodeSendCode.btnGetCode -> getPhoneCode() + mViewBinding.llLoginCnCodeAgree.loginCnPolicy -> { + ViewUtil.instance.goPrivacyPolicy(mActivity!!) + } + + mViewBinding.llLoginCnCodeAgree.loginCnTerms -> { + ViewUtil.instance.goServiceContract(mActivity!!) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNFirstFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNFirstFragment.kt new file mode 100644 index 0000000..fe33e28 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/login/LoginCNFirstFragment.kt @@ -0,0 +1,92 @@ +package com.abbidot.tracker.deprecated.ui.fragment.login + +import android.content.Context +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentLoginCnFirstBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.LoginCNViewModel +import com.abbidot.tracker.util.ThirdPartyUtil +import com.abbidot.tracker.util.ViewUtil + +/** + * 登录第一步 + */ +class LoginCNFirstFragment : + BaseFragment(FragmentLoginCnFirstBinding::inflate) { + + private val mLoginCNViewModel: LoginCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = LoginCNFirstFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + + setOnClickListenerViews(mViewBinding.btnLoginCnWechat, mViewBinding.btnLoginCnAccount, + mViewBinding.btnLoginCnCode, mViewBinding.llLoginCnPolicyTerms.loginCnPolicy, + mViewBinding.llLoginCnPolicyTerms.loginCnTerms) + } + + override fun liveDataObserve() { + //微信登录æˆåŠŸè¿”å›ž + XEventBus.observe(this, EventName.WXLoginResult) { it: Result -> + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + LogUtil.e("LoginCNFirstFragment微信登录æˆåŠŸè¿”å›ž,页é¢å¯è§$isVisible") + if (!isVisible) { + return + } + val data = it.getOrNull() + data?.apply { + val activity = activity as LoginRegisterCNActivity + mLoginCNViewModel.loginSuccess(activity, this) + } + } + }) + } + } + + /** + * 微信登录 + */ + private fun wechatLogin() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llLoginCnPolicyTerms.loginAgreePrivacyCheckbox)) { + return + } + ThirdPartyUtil.instance.startWXLogin(activity) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnLoginCnWechat -> wechatLogin() + + mViewBinding.btnLoginCnAccount -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + mViewBinding.btnLoginCnCode -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Code_Login) + } + mViewBinding.llLoginCnPolicyTerms.loginCnPolicy -> { + ViewUtil.instance.goPrivacyPolicy(mActivity!!) + } + mViewBinding.llLoginCnPolicyTerms.loginCnTerms -> { + ViewUtil.instance.goServiceContract(mActivity!!) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/FencesAddBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/FencesAddBaiduMapFragment.kt new file mode 100644 index 0000000..f6675c0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/FencesAddBaiduMapFragment.kt @@ -0,0 +1,410 @@ +package com.abbidot.tracker.deprecated.ui.fragment.map.baidumap + +import android.content.Context +import android.graphics.Point +import android.text.TextUtils +import android.view.View +import android.widget.LinearLayout +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.BaiduMapPoiSearchResultAdapter +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.deprecated.ui.activity.profile.FencesAddActivity +import com.abbidot.tracker.ui.common.map.FencesMapCommon +import com.abbidot.tracker.ui.fragment.map.baidumap.BaseBaiduMapFragment +import com.abbidot.tracker.util.LonAndLatUtil.Companion.getMaxLatOrLon +import com.abbidot.tracker.util.LonAndLatUtil.Companion.getMinLatOrLon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.widget.FencesPolygonView +import com.baidu.location.BDLocation +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.model.LatLng +import com.baidu.mapapi.search.core.SearchResult +import com.baidu.mapapi.search.geocode.GeoCodeResult +import com.baidu.mapapi.search.geocode.GeoCoder +import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener +import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption +import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult +import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener +import com.baidu.mapapi.search.poi.PoiCitySearchOption +import com.baidu.mapapi.search.poi.PoiDetailResult +import com.baidu.mapapi.search.poi.PoiDetailSearchResult +import com.baidu.mapapi.search.poi.PoiIndoorResult +import com.baidu.mapapi.search.poi.PoiResult +import com.baidu.mapapi.search.poi.PoiSearch +import com.hjq.toast.Toaster + + +/** + *Created by .yzq on 2022/7/4/004. + * @link + * @description: + */ +class FencesAddBaiduMapFragment : BaseBaiduMapFragment() { + + var mCenterLatLng: LatLng? = null + private var mEndLatLng: LatLng? = null + + var mRectALatLng: LatLng? = null + var mRectBLatLng: LatLng? = null + var mRectCLatLng: LatLng? = null + var mRectDLatLng: LatLng? = null + + private var mOnActivityCallBack: FencesMapCommon.OnActivityCallBack? = null + private var mCity = "" + private lateinit var mPoiSearchResultAdapter: BaiduMapPoiSearchResultAdapter + private lateinit var mRecyclerView: RecyclerView + + //编辑第一次ä¸ç”¨è®¡ç®—测é‡è·ç¦» + private var isEditFirst = true + + companion object { + @JvmStatic + fun newInstance(context: Context) = FencesAddBaiduMapFragment().apply { + mContext = context + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { + val fencesAddActivity = mActivity as FencesAddActivity + //设置地图渲染完æˆå›žè°ƒ,拖动动图回调 + mBaiduMap?.setOnMapRenderCallbadk { + if (fencesAddActivity.isEdit) { + //编辑的第一次ä¸åŽ»è®¡ç®—è·ç¦» + if (isEditFirst) { + isEditFirst = false + } else { + mapOkAndDistanceEdit() + } + } else { + mapOkAndDistance() + } + } + + if (fencesAddActivity.isEdit) { + locationSuccess(null) + } else { + startLocation() + } + + //测试矩形围æ ä½¿ç”¨çš„ä»£ç  +// if (null != mRectALatLng) { +// val points = mutableListOf() +// points.add(LatLng(mRectALatLng!!.latitude, mRectALatLng!!.longitude)) +// points.add(LatLng(mRectBLatLng!!.latitude, mRectBLatLng!!.longitude)) +// points.add(LatLng(mRectDLatLng!!.latitude, mRectDLatLng!!.longitude)) +// points.add(LatLng(mRectCLatLng!!.latitude, mRectCLatLng!!.longitude)) +// //构造PolygonOptions +// val polygonOptions = PolygonOptions().points(points) +// //æ˜¯å¦æ˜¾ç¤ºè™šçº¿ +// .dottedStroke(true) +// //填充颜色 +// .fillColor(ContextCompat.getColor(requireContext(), R.color.map_circle_color1)) +// //边框宽和边框颜色 +// .stroke( +// Stroke( +// QMUIDisplayHelper.dpToPx(2), +// ContextCompat.getColor(requireContext(), R.color.btn_yellow_color) +// ) +// ) +// mBaiduMap!!.addOverlay(polygonOptions) +// } + } + + /** + * 地图准备好计算è·ç¦» + */ + fun mapOkAndDistance() { + if (null == mActivity) return + + val arrayOfDistance = getLatLngAndCalDis() + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + + //构建Marker图标 + mRectALatLng?.apply { +// mBaiduMap!!.clear() +// val bitmap = BitmapDescriptorFactory.fromResource(R.drawable.pic_map_location) +// val optionA: OverlayOptions = MarkerOptions().position(mRectALatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionA) +// val optionB: OverlayOptions = MarkerOptions().position(mRectBLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionB) +// val optionC: OverlayOptions = MarkerOptions().position(mRectCLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionC) +// val optionD: OverlayOptions = MarkerOptions().position(mRectDLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionD) +// + LogUtil.e("新建的4个点ç»çº¬åº¦$mRectALatLng,\n$mRectBLatLng,\n$mRectCLatLng,\n$mRectDLatLng,\n$mCenterLatLng") + } + } + + /** + * 获å–å±å¹•上的ç»çº¬åº¦å¹¶è®¡ç®—è·ç¦» + */ + private fun getLatLngAndCalDis(): Array { + val fencesAddActivity = mActivity as FencesAddActivity + //æ‰‹æœºåæ ‡ç‚¹è½¬æ¢ä¸ºç»çº¬åº¦ + val centreLatLng = + fencesAddActivity.getCentrePoint().let { mBaiduMap!!.projection.fromScreenLocation(it) } + mCenterLatLng = centreLatLng + + // val sss = mBaiduMap!!.projection.toScreenLocation(mCenterLatLng) +// LogUtil.e("errerererererer$sss") + + return if (fencesAddActivity.mFenceShapeType == ConstantInt.CircleShapeType) { + val endLatLng = fencesAddActivity.getCircleLineEndPoint() + .let { mBaiduMap!!.projection.fromScreenLocation(it) } + mEndLatLng = endLatLng + LogUtil.e("BaiduMap,mapOkAndDistance,setOnMapRenderCallbadk ") + LogUtil.e("startLatLng=$centreLatLng,endLatLng=$endLatLng") + val distance = Util.measureLatLonDistance( + centreLatLng.latitude, + centreLatLng.longitude, + endLatLng.latitude, + endLatLng.longitude + ) + arrayOf( + Utils.formatDecimal(distance, 2) + ) + } else { + mRectALatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_A).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + mRectBLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_B).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + mRectCLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_C).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + mRectDLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_D).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val rectWidthDistance = Util.measureLatLonDistance( + mRectALatLng!!.latitude, + mRectALatLng!!.longitude, + mRectBLatLng!!.latitude, + mRectBLatLng!!.longitude + ) + val rectHeightDistance = Util.measureLatLonDistance( + mRectALatLng!!.latitude, + mRectALatLng!!.longitude, + mRectCLatLng!!.latitude, + mRectCLatLng!!.longitude + ) + //长度和高度 + arrayOf( + Utils.formatDecimal(rectWidthDistance, 2), + Utils.formatDecimal(rectHeightDistance, 2) + ) + } + } + + /** + * 编辑围æ è¿”回的è·ç¦» + */ + private fun mapOkAndDistanceEdit() { + if (null == mActivity) return + + val arrayOfDistance = getLatLngAndCalDis() + + //测试矩形围æ ç¼–辑还原 +// mBaiduMap!!.clear() +// val bitmap = BitmapDescriptorFactory.fromResource(R.drawable.map_live_start) +// val optionA= MarkerOptions().position(mRectALatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionA) +// val optionB = MarkerOptions().position(mRectBLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionB) +// val optionC = MarkerOptions().position(mRectCLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionC) +// val optionD = MarkerOptions().position(mRectDLatLng).icon(bitmap) +// mBaiduMap!!.addOverlay(optionD) + + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } + + fun initRecyclerView(context: Context, recyclerView: RecyclerView) { + mPoiSearchResultAdapter = BaiduMapPoiSearchResultAdapter(context, null) + mPoiSearchResultAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val item = mPoiSearchResultAdapter.getItem(pos) + setSearchResultsViewGone() + moveCameraLocation( + item.location.latitude, item.location.longitude, needConvertGCJ02 = false + ) + } + }) + mRecyclerView = recyclerView + mRecyclerView.addItemDecoration(DividerItemDecoration(context, LinearLayout.VERTICAL)) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + context, mRecyclerView, mPoiSearchResultAdapter + ) + } + + /** + * ç»çº¬åº¦è½¬æ¢ä¸ºå±å¹•åæ ‡ç‚¹ + */ + fun latLngToPotion(wherePoint: Int): Point? { + mBaiduMap?.apply { + when (wherePoint) { + FencesPolygonView.POINT_A -> return projection.toScreenLocation(mRectALatLng) + FencesPolygonView.POINT_B -> return projection.toScreenLocation(mRectBLatLng) + FencesPolygonView.POINT_C -> return projection.toScreenLocation(mRectCLatLng) + FencesPolygonView.POINT_D -> return projection.toScreenLocation(mRectDLatLng) + } + } + return null + } + + + /** + * 设置圆形围æ ï¼Œåœ°å›¾ç¼©æ”¾çº§åˆ« + */ + fun setCircleMapZoom(distance: Double) { + val zoom = getDistanceZoom(distance) + LogUtil.e("百度地图zoom==$zoom") + setBaiduMapZoom(zoom) + } + + /** + * 设置矩形围æ ï¼Œåœ°å›¾ç¼©æ”¾çº§åˆ« + */ + fun setRectMapZoom( + rectALatLng: LatLng, rectBLatLng: LatLng, rectCLatLng: LatLng, rectDLatLng: LatLng + ) { + val maxLat = getMaxLatOrLon( + rectALatLng.latitude, rectBLatLng.latitude, rectCLatLng.latitude, rectDLatLng.latitude + ) + val maxLon = getMaxLatOrLon( + rectALatLng.longitude, + rectBLatLng.longitude, + rectCLatLng.longitude, + rectDLatLng.longitude + ) + val minLat = getMinLatOrLon( + rectALatLng.latitude, rectBLatLng.latitude, rectCLatLng.latitude, rectDLatLng.latitude + ) + val minLon = getMinLatOrLon( + rectALatLng.longitude, + rectBLatLng.longitude, + rectCLatLng.longitude, + rectDLatLng.longitude + ) + val zoom = getDistanceZoom(LatLng(minLat, minLon), LatLng(maxLat, maxLon)) + LogUtil.e("百度地图zoom==$zoom") + setBaiduMapZoom(zoom) + } + + /** + * éšè—æœç´¢æ£€ç´¢ç»“æžœé¡µé¢ + */ + fun setSearchResultsViewGone() { + mRecyclerView.visibility = View.GONE + } + + /** + * æœç´¢æŸä¸ªåœ°ç‚¹ + * 百度地图检索需è¦åŸŽå¸‚,把当å‰å®šä½çš„ç»çº¬åº¦è½¬æ¢åŸŽå¸‚ + */ + fun searchAddress(keyword: String) { + if (TextUtils.isEmpty(keyword)) { + setSearchResultsViewGone() + return + } + if (TextUtils.isEmpty(mCity)) { + showToast(R.string.txt_load_map) + return + } + showLoading(true) + val poiSearch = PoiSearch.newInstance() + poiSearch.setOnGetPoiSearchResultListener(object : OnGetPoiSearchResultListener { + override fun onGetPoiResult(poiResult: PoiResult?) { + showLoading(false) + if (poiResult == null || poiResult.error === SearchResult.ERRORNO.RESULT_NOT_FOUND) { + Toaster.show("未找到结果") + return + } + try { + val poiInfo = poiResult.allPoi + if (poiInfo.size > 0) { + for (p in poiInfo) { + LogUtil.d(p.toString()) + } + mRecyclerView.visibility = View.VISIBLE + mPoiSearchResultAdapter.setData(poiInfo, true) + } + } catch (e: Exception) { + mRecyclerView.visibility = View.GONE + } + } + + override fun onGetPoiDetailResult(p0: PoiDetailResult?) { + } + + override fun onGetPoiDetailResult(p0: PoiDetailSearchResult?) { + } + + override fun onGetPoiIndoorResult(p0: PoiIndoorResult?) { + } + }) + poiSearch.searchInCity( + PoiCitySearchOption().cityLimit(false).city(mCity).keyword(keyword).pageCapacity(15) + .pageNum(0) + ) + poiSearch.destroy() + } + + /** + * 百度地图检索需è¦åŸŽå¸‚,把当å‰å®šä½çš„ç»çº¬åº¦è½¬æ¢åŸŽå¸‚ + */ + private fun getCity() { + val coder = GeoCoder.newInstance() + coder.setOnGetGeoCodeResultListener(object : OnGetGeoCoderResultListener { + override fun onGetGeoCodeResult(p0: GeoCodeResult?) { + + } + + override fun onGetReverseGeoCodeResult(result: ReverseGeoCodeResult?) { + if (null == result || result.error != SearchResult.ERRORNO.NO_ERROR) { + //没有找到检索结果 + return + } else { + mCity = try { + result.addressDetail.city + } catch (e: Exception) { + "北京" + } + } + } + }) + coder.reverseGeoCode( + ReverseGeoCodeOption().location(mCenterLatLng) // 设置是å¦è¿”å›žæ–°æ•°æ® é»˜è®¤å€¼0ä¸è¿”回,1返回 + .newVersion(1) // POIå¬å›žåŠå¾„,å…许设置区间为0-1000米,超过1000米按1000ç±³å¬å›žã€‚默认值为1000 + .radius(500) + ) + coder.destroy() + } + + override fun locationSuccess(location: BDLocation?) { + if (null != location) { + //åˆå§‹åŒ–开始起点ä½ç½®(中心圆) + mCenterLatLng = LatLng(location.latitude, location.longitude) + LogUtil.e("åˆå§‹åŒ–开始起点ä½ç½®$mCenterLatLng") + } + + moveCameraLocation( + mCenterLatLng!!.latitude, mCenterLatLng!!.longitude, needConvertGCJ02 = false + ) + + mOnActivityCallBack?.mapCompletion() + getCity() + } + + fun setOnCalculationDistance(onActivityCallBack: FencesMapCommon.OnActivityCallBack) { + mOnActivityCallBack = onActivityCallBack + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt new file mode 100644 index 0000000..bc215a8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt @@ -0,0 +1,113 @@ +package com.abbidot.tracker.deprecated.ui.fragment.map.baidumap + +import android.content.Context +import androidx.core.content.ContextCompat +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.deprecated.ui.activity.map.HomeMapNavigationActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RoutePlanningViewModel +import com.abbidot.tracker.ui.fragment.map.baidumap.BaseBaiduMapFragment +import com.baidu.location.BDLocation +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.map.OverlayOptions +import com.baidu.mapapi.map.PolylineOptions +import com.baidu.mapapi.model.LatLng +import com.qmuiteam.qmui.util.QMUIDisplayHelper + + +/** + *Created by .yzq on 2022/6/27/027. + * @link + * @description: + */ +class NavigationBaiduMapFragment: BaseBaiduMapFragment() { + + private val mRoutePlanningViewModel: RoutePlanningViewModel by viewModels() + + private lateinit var mMapNavigationActivity: HomeMapNavigationActivity + + /** + * 宠物ç»çº¬åº¦ å·²ç»è½¬æ¢å¥½çš„ + */ +// private lateinit var mPetLatLng: LatLng + + companion object { + @JvmStatic + fun newInstance(context: Context) = NavigationBaiduMapFragment().apply { + mContext = context + } + } + + override fun initData() { + mMapNavigationActivity = mActivity as HomeMapNavigationActivity + super.initData() + } + + override fun liveDataObserve() { + mRoutePlanningViewModel.mRouteBaiduMapLiveData.observe(viewLifecycleOwner) { + it?.apply { + val distanceStr = Utils.formatDecimal(it.distance.toDouble(), 2) + val minStr = Utils.formatDecimal((it.duration / 60).toDouble(), 2) + mMapNavigationActivity.setDistanceData(distanceStr, minStr) + } + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { +// initFenceList() + + //å¼€å¯åœ°å›¾çš„定ä½å›¾å±‚ + baiduMap.isMyLocationEnabled = true + + mMapNavigationActivity.apply { + //宠物ç»çº¬åº¦ + val convertLonLat = getBaiduMapLatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude,true) + + mPetLatLng = convertLonLat + + //ç”»å›´æ  + mFencesMapViewModel.setFencesData( + mContext, mMapDeviceBean!!.fences, this@NavigationBaiduMapFragment + ) + + refreshPetCurrentLocation( + mMapDeviceBean!!.latitude, + mMapDeviceBean!!.longitude, + isAnimMoveCamera = false, + headBgResId = R.drawable.pic_map_location + ) + + startLocation() + } + } + + override fun locationSuccess(location: BDLocation?) { + val locationLatLng = LatLng(location!!.latitude, location.longitude) + val points = mutableListOf() + points.add(locationLatLng) + points.add(mPetLatLng!!) + addNavigationLine(points) + } + + /** + * 画导航直线 + */ + private fun addNavigationLine(points: MutableList) { + if (points.size < 1) return + mRoutePlanningViewModel.getBaiduMapRoutePlan(mMapNavigationActivity, points[0], points[1]) + + //设置折线的属性 + val mOverlayOptions: OverlayOptions = PolylineOptions().width(QMUIDisplayHelper.dpToPx(2)) + .color(ContextCompat.getColor(mContext!!, R.color.navigation_line_color)) + .dottedLine(true).points(points) + mBaiduMap!!.addOverlay(mOverlayOptions) + } + + override fun onDestroy() { + mBaiduMap?.isMyLocationEnabled = false + super.onDestroy() + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/FencesAddGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/FencesAddGoogleMapFragment.kt new file mode 100644 index 0000000..3afe131 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/FencesAddGoogleMapFragment.kt @@ -0,0 +1,313 @@ +package com.abbidot.tracker.deprecated.ui.fragment.map.googlemap + +import android.content.Context +import android.graphics.Point +import android.location.Location +import android.text.TextUtils +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatEditText +import androidx.appcompat.widget.LinearLayoutCompat +import androidx.appcompat.widget.SearchView +import androidx.core.content.ContextCompat +import androidx.core.view.isVisible +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.deprecated.ui.activity.profile.FencesAddActivity +import com.abbidot.tracker.ui.common.map.FencesMapCommon +import com.abbidot.tracker.ui.fragment.map.googlemap.BaseGoogleMapFragment +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.widget.FencesPolygonView +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.LatLng +import com.mapbox.search.ui.view.SearchResultsView +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:添加围æ map谷歌地图 + */ +class FencesAddGoogleMapFragment : BaseGoogleMapFragment() { + + var mCenterLatLng: LatLng? = null + private var mEndLatLng: LatLng? = null + + var mRectALatLng: LatLng? = null + var mRectBLatLng: LatLng? = null + var mRectCLatLng: LatLng? = null + var mRectDLatLng: LatLng? = null + + private var mOnActivityCallBack: FencesMapCommon.OnActivityCallBack? = null + + private lateinit var mSearchResultsView: SearchResultsView + + //编辑第一次ä¸ç”¨è®¡ç®—测é‡è·ç¦» + private var isEditFirst = true + + companion object { + @JvmStatic + fun newInstance(context: Context) = FencesAddGoogleMapFragment().apply { + mContext = context + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { + val fencesAddActivity = mActivity as FencesAddActivity + //ç›‘å¬æ‘„åƒæœºç§»åŠ¨ä¸­å¿ƒç‚¹,æ‘„åƒæœºç§»åŠ¨ç»“æŸæ—¶çš„回调接å£ã€‚ + mGoogleMap?.setOnCameraIdleListener { + if (fencesAddActivity.isEdit) { + //编辑的第一次ä¸åŽ»è®¡ç®—è·ç¦» + if (isEditFirst) { + isEditFirst = false + } else { + mapOkAndDistanceEdit() + } + } else { + mapOkAndDistance() + } + } + + if (fencesAddActivity.isEdit) { + locationSuccess(null) + } else { + getLastLocation() + } + } + + /** + * 地图准备好计算è·ç¦» + */ + fun mapOkAndDistance() { + if (null == mActivity) return + val arrayOfDistance = getLatLngAndCalDistance() + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } + + private fun getLatLngAndCalDistance(): Array { + val fencesAddActivity = mActivity as FencesAddActivity + // ç»çº¬åº¦è½¬æ¢ä¸ºæ‰‹æœºå标点 +// val x = mGoogleMap!!.projection.toScreenLocation(it).x +// val y = mGoogleMap!!.projection.toScreenLocation(it).y + + //æ‰‹æœºåæ ‡ç‚¹è½¬æ¢ä¸ºç»çº¬åº¦ + val centreLatLng = fencesAddActivity.getCentrePoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + mCenterLatLng = centreLatLng + + return if (fencesAddActivity.mFenceShapeType == ConstantInt.CircleShapeType) { + val endLatLng = fencesAddActivity.getCircleLineEndPoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + mEndLatLng = endLatLng + LogUtil.e("GoogleMap,setOnCameraIdleListener 监å¬å›žè°ƒ") + LogUtil.e("startLatLng=$centreLatLng,endLatLng=$endLatLng") + val distance = Util.measureLatLonDistance( + centreLatLng.latitude, + centreLatLng.longitude, + endLatLng.latitude, + endLatLng.longitude + ) + arrayOf( + Utils.formatDecimal(distance, 2) + ) + } else { + mRectALatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_A).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + mRectBLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_B).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + mRectCLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_C).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + mRectDLatLng = fencesAddActivity.getRectABCDPoint(FencesPolygonView.POINT_D).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val rectWidthDistance = Util.measureLatLonDistance( + mRectALatLng!!.latitude, + mRectALatLng!!.longitude, + mRectBLatLng!!.latitude, + mRectBLatLng!!.longitude + ) + val rectHeightDistance = Util.measureLatLonDistance( + mRectALatLng!!.latitude, + mRectALatLng!!.longitude, + mRectCLatLng!!.latitude, + mRectCLatLng!!.longitude + ) + //长度和高度 + arrayOf( + Utils.formatDecimal(rectWidthDistance, 2), + Utils.formatDecimal(rectHeightDistance, 2) + ) + } + } + + /** + * 编辑围æ è¿”回的è·ç¦» + */ + private fun mapOkAndDistanceEdit() { + if (null == mActivity) return + val arrayOfDistance = getLatLngAndCalDistance() + + //测试矩形围æ ç¼–辑还原 +// mGoogleMap!!.clear() +// val bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ico_map) +// val optionA = MarkerOptions().position(mRectALatLng!!).icon(bitmap) +// mGoogleMap!!.addMarker(optionA) +// val optionB = MarkerOptions().position(mRectBLatLng!!).icon(bitmap) +// mGoogleMap!!.addMarker(optionB) +// val optionC = MarkerOptions().position(mRectCLatLng!!).icon(bitmap) +// mGoogleMap!!.addMarker(optionC) +// val optionD = MarkerOptions().position(mRectDLatLng!!).icon(bitmap) +// mGoogleMap!!.addMarker(optionD) + + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } + + override fun locationSuccess(location: Location?) { + LogUtil.e("$mCenterLatLng,locationSuccess locationSuccess,$location") + if (null != location) { + //åˆå§‹åŒ–开始起点ä½ç½®(中心圆) + mCenterLatLng = LatLng(location.latitude, location.longitude) + } + moveCameraLocation(mCenterLatLng!!, false) + + mOnActivityCallBack?.mapCompletion() + } + + private lateinit var mMapBoxSearchView: SearchView + + fun initMapBox( + context: Context, + searchResultsViewLayout: LinearLayoutCompat, + addressEditText: AppCompatEditText + ) { + LogUtil.e("---------------------------initMapBox-------------------") + mMapBoxSearchView = SearchView(context) + //判断有没有åˆå§‹åŒ– + if (!this::mSearchResultsView.isInitialized) { + mSearchResultsView = SearchResultsView(context) + mSearchResultsView.apply { + layoutParams = LinearLayoutCompat.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT + ) + background = ContextCompat.getDrawable(context, R.drawable.shape20_white_bg) + elevation = QMUIDisplayHelper.dpToPx(10).toFloat() + } + } + + mSearchResultsView.apply { + //å•ä½ +// initialize(CommonSearchViewConfiguration(DistanceUnitType.METRIC)) + isVisible = false + +// isHapticFeedbackEnabled = false + +// addSearchListener(object : SearchResultsView.SearchListener { +// override fun onSearchResult( +// searchResult: SearchResult, responseInfo: ResponseInfo +// ) { +// mSearchResultsView.isVisible = false +// LogUtil.e("Search result: $searchResult") +// //å‘起请求时的ç»çº¬åº¦ +//// val lat = searchResult.requestOptions.options.origin!!.coordinates()[1] +//// val lon = searchResult.requestOptions.options.origin!!.coordinates()[0] +// +// //æœç´¢åˆ°çš„ç»çº¬åº¦ +// val resultLat = searchResult.coordinate!!.latitude() +// val resultLon = searchResult.coordinate!!.longitude() +// setCameraUpdateNull() +// moveCameraLocation(LatLng(resultLat, resultLon)) +// } +// +// override fun onHistoryItemClicked(historyRecord: HistoryRecord) { +//// searchView.setQuery(historyRecord.name, true) +//// LogUtil.e("${historyRecord.name}") +// //åŽ†å²æœç´¢ +// addressEditText.setText(historyRecord.name) +// searchAddress(addressEditText.text.toString()) +// } +// +// override fun onPopulateQueryClicked( +// suggestion: SearchSuggestion, responseInfo: ResponseInfo +// ) { +// mMapBoxSearchView.setQuery(suggestion.name, true) +// LogUtil.e("onPopulateQueryClicked") +// } +// +// override fun onFeedbackClicked(responseInfo: ResponseInfo) { +// // Not implemented +// } +// }) + } + + searchResultsViewLayout.apply { + visibility = View.VISIBLE + addView(mSearchResultsView) + } + } + + /** + * ç»çº¬åº¦è½¬æ¢ä¸ºå±å¹•åæ ‡ç‚¹ + */ + fun latLngToPotion(wherePoint: Int): Point? { + mGoogleMap?.apply { + when (wherePoint) { + FencesPolygonView.POINT_A -> return projection.toScreenLocation(mRectALatLng!!) + FencesPolygonView.POINT_B -> return projection.toScreenLocation(mRectBLatLng!!) + FencesPolygonView.POINT_C -> return projection.toScreenLocation(mRectCLatLng!!) + FencesPolygonView.POINT_D -> return projection.toScreenLocation(mRectDLatLng!!) + } + } + return null + } + + /** + * 设置圆形围æ ï¼Œåœ°å›¾ç¼©æ”¾çº§åˆ« + */ + fun setCircleMapZoom(distance: Double) { + val zoom = getDistanceZoom(distance) + LogUtil.e("谷歌地图zoom==$zoom") + setGoogleMapZoom(zoom) + } + + /** + * 设置矩形 地图缩放级别 + */ + fun setRectMapZoom( + context: Context, + rectALatLng: LatLng, + rectBLatLng: LatLng, + rectCLatLng: LatLng, + rectDLatLng: LatLng + ) { + setLatLngZoom(context, 300, rectALatLng, rectBLatLng, rectCLatLng, rectDLatLng) + } + + /** + * æœç´¢åœ°å€,地ç†ç¼–ç  + */ + fun searchAddress(keyword: String) { + if (TextUtils.isEmpty(keyword)) { + return + } + mSearchResultsView.apply { + isVisible = true +// search(keyword) + } + } + + /** + * éšè—æœç´¢æ£€ç´¢ç»“æžœé¡µé¢ + */ + fun setSearchResultsViewGone() { + mSearchResultsView.isVisible = false + } + + fun setOnCalculationDistance(onActivityCallBack: FencesMapCommon.OnActivityCallBack) { + mOnActivityCallBack = onActivityCallBack + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt new file mode 100644 index 0000000..70bef06 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt @@ -0,0 +1,148 @@ +package com.abbidot.tracker.deprecated.ui.fragment.map.googlemap + +import android.annotation.SuppressLint +import android.content.Context +import android.location.Location +import androidx.core.content.ContextCompat +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.deprecated.ui.activity.map.HomeMapNavigationActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RoutePlanningViewModel +import com.abbidot.tracker.ui.fragment.map.googlemap.BaseGoogleMapFragment +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.* + + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:导航谷歌地图 + */ +class NavigationGoogleMapFragment: BaseGoogleMapFragment() { + + private val mRoutePlanningViewModel: RoutePlanningViewModel by viewModels() + + private var mMyLocation: Location? = null + +// /** +// * 宠物ç»çº¬åº¦ +// */ +// private var mPetLatLng: LatLng? = null + + private lateinit var mMapNavigationActivity: HomeMapNavigationActivity + + /** + * 导航画的线 + */ + private var mNavigationLine: Polyline? = null + + companion object { + @JvmStatic + fun newInstance(context: Context) = NavigationGoogleMapFragment().apply { + mContext = context + } + } + + override fun initData() { + mMapNavigationActivity = mActivity as HomeMapNavigationActivity + super.initData() + } + + override fun liveDataObserve() { + mRoutePlanningViewModel.mRouteMapBoxLiveData.observe(viewLifecycleOwner) { + val distanceStr: String + val minStr: String + //如果返回为空,就大概算出 + if (null == it) { + //计算2点的è·ç¦» + val distance = + com.abbidot.tracker.util.Util.measureLatLonDistance(mMyLocation!!.latitude, + mMyLocation!!.longitude, mPetLatLng!!.latitude, mPetLatLng!!.longitude) + //计算步行需è¦å¤šä¹… å‡è®¾æ­¥è¡Œé€Ÿåº¦ä¸º1.3m/s åªè®¡ç®—å¤§æ¦‚æ•°æ® + val time = distance / 1.3 + + distanceStr = Utils.formatDecimal(distance, 2) + minStr = Utils.formatDecimal(time / 60, 2) + } else { + distanceStr = Utils.formatDecimal(it.distance(), 2) + minStr = Utils.formatDecimal(it.duration() / 60, 2) + } + mMapNavigationActivity.setDistanceData(distanceStr, minStr) + } + } + + /** + * 移动中心点 + */ + private fun moveLocation(location: Location) { + moveCameraLocation(LatLng(location.latitude, location.longitude)) + } + + + /** + * 画导航直线 + */ + private fun addNavigationLine(startLng: LatLng, endLng: LatLng) { + + mRoutePlanningViewModel.getMapBoxRoutePlan(mMapNavigationActivity, startLng, endLng) + + mNavigationLine?.remove() + + mNavigationLine = mGoogleMap!!.addPolyline( + PolylineOptions().clickable(true).add(startLng, endLng).width(AppUtils.dpToPx(2f)) + .color(ContextCompat.getColor(mContext!!, R.color.navigation_line_color)) + .geodesic(true)) + mNavigationLine!!.startCap = RoundCap() + //连接类型,å¯ä»¥æŒ‡å®šæ£±å°æˆ–圆角 + mNavigationLine!!.jointType = JointType.ROUND +// mNavigationLine!!.endCap = +// CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.pic_map_location), +// QMUIDisplayHelper.dpToPx(3).toFloat()) + + //设置用户定ä½ä½ç½®å›¾æ ‡ + mGoogleMap!!.addMarker(MarkerOptions().position(startLng)) + + //自定义æè¾¹å›¾æ¡ˆ + val pattern = listOf(Dash(30F), Gap(20F)) + mNavigationLine!!.pattern = pattern + } + + @SuppressLint("MissingPermission") + override fun onMapLoadOk(googleMap: GoogleMap) { +// initFenceList() + //å¯ç”¨â€œæˆ‘çš„ä½ç½®â€å›¾å±‚ + googleMap.apply { + //显示“我的ä½ç½®â€æŒ‰é’® + isMyLocationEnabled = true + setOnMyLocationButtonClickListener { + mMyLocation?.let { + moveLocation(it) + } + false + } + } + + setGoogleMapZoom(12.5f) + + mMapNavigationActivity.apply { + mPetLatLng = LatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude) + + //ç”»å›´æ  + mFencesMapViewModel.setFencesData( + mContext, + mMapDeviceBean!!.fences, this@NavigationGoogleMapFragment) + + refreshPetCurrentLocation(mPetLatLng!!, isAnimMoveCamera = false, + headBgResId = R.drawable.pic_map_location) + + getLastLocation() + } + } + + override fun locationSuccess(location: Location?) { + mMyLocation = location + addNavigationLine(LatLng(location!!.latitude, location.longitude), mPetLatLng!!) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentFailFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentFailFragment.kt new file mode 100644 index 0000000..9d5eaee --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentFailFragment.kt @@ -0,0 +1,52 @@ +package com.abbidot.tracker.deprecated.ui.fragment.profile + +import android.content.Context +import android.os.Bundle +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentPaymentFailBinding +import com.abbidot.tracker.deprecated.ui.activity.profile.recharge.PaymentResultActivity + +/** + * 支付失败 + */ +class PaymentFailFragment : + BaseFragment(FragmentPaymentFailBinding::inflate) { + + companion object { + @JvmStatic + fun newInstance(context: Context) = PaymentFailFragment().apply { + mContext = context + } + } + + override fun initData() { + setOnClickListenerViews(mViewBinding.paymentFailAgain, mViewBinding.paymentFailBack) + mViewBinding.paymentFailLottieAnimation.setAnimation("lottie/fail_anim.json") + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mViewBinding.root.setBackgroundResource(R.color.transparent) + mViewBinding.paymentFailLottieAnimation.playAnimation() + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.paymentFailLottieAnimation.cancelAnimation() + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.paymentFailAgain -> { + finish(mActivity!!) + } + + mViewBinding.paymentFailBack -> { + val activity = mActivity as PaymentResultActivity + activity.leftBackOnClick() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentSuccessFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentSuccessFragment.kt new file mode 100644 index 0000000..9016eca --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/profile/PaymentSuccessFragment.kt @@ -0,0 +1,59 @@ +package com.abbidot.tracker.deprecated.ui.fragment.profile + +import android.content.Context +import android.os.Bundle +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentPaymentSuccessBinding +import com.abbidot.tracker.deprecated.ui.activity.profile.recharge.PaymentResultActivity + +/** + * 支付æˆåŠŸ + */ +class PaymentSuccessFragment : + BaseFragment(FragmentPaymentSuccessBinding::inflate) { + + companion object { + @JvmStatic + fun newInstance(context: Context) = PaymentSuccessFragment().apply { + mContext = context + } + } + + override fun initData() { + setOnClickListenerViews(mViewBinding.btnPaymentSuccessBack) + mViewBinding.paymentSuccessLottieAnimation.setAnimation("lottie/success_anim.json") + + val activity = mActivity as PaymentResultActivity + activity.apply { + if (mAmount > 0) { + val amount = String.format(getString(R.string.txt_dollar), mAmount) + mViewBinding.paymentSuccessMoneyText.text = amount + } else { + mViewBinding.paymentSuccessMoneyText.visibility = View.GONE + } + } + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mViewBinding.root.setBackgroundResource(R.color.transparent) + mViewBinding.paymentSuccessLottieAnimation.playAnimation() + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.paymentSuccessLottieAnimation.cancelAnimation() + } + + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnPaymentSuccessBack -> { + val activity = mActivity as PaymentResultActivity + activity.leftBackOnClick() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNFinishFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNFinishFragment.kt new file mode 100644 index 0000000..47b20c4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNFinishFragment.kt @@ -0,0 +1,71 @@ +package com.abbidot.tracker.deprecated.ui.fragment.register + +import android.content.Context +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentRegisterCnFinishBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel + + +/** + *å›½å†…æ³¨å†Œå®Œæˆ + */ +class RegisterCNFinishFragment : + BaseFragment(FragmentRegisterCnFinishBinding::inflate) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() +// private val mLoginCNViewModel: LoginCNViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = RegisterCNFinishFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + setOnClickListenerViews(mViewBinding.btnFinishRegisterCn) + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mPhoneRegisterResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { +// val data = it.getOrNull() +// data?.apply { +// val activity = activity as LoginRegisterCNActivity +// mLoginCNViewModel.loginSuccess(activity, this) +// } + showToast(R.string.txt_registered_successfully) + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + }) + } + } + + /** + * æ³¨å†Œè®¾ç½®å¯†ç  + */ + private fun registerSetPassword() { + val password = mViewBinding.setLoginCnPasswordEd.text.toString() + if (TextUtils.isEmpty(password)) { + showToast(R.string.txt_not_null) + return + } + val activity = activity as LoginRegisterCNActivity + mRegisterCNViewModel.register(this, activity.mPhone, password) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.btnFinishRegisterCn -> registerSetPassword() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNStartFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNStartFragment.kt new file mode 100644 index 0000000..59f2cab --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/register/RegisterCNStartFragment.kt @@ -0,0 +1,134 @@ +package com.abbidot.tracker.deprecated.ui.fragment.register + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentRegisterCnStartBinding +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.RegisterCNViewModel +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.CountDownTimerViewModel + + +/** + * 国内开始注册 + */ +class RegisterCNStartFragment : + BaseFragment(FragmentRegisterCnStartBinding::inflate) { + + private val mRegisterCNViewModel: RegisterCNViewModel by viewModels() + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + + companion object { + @JvmStatic + fun newInstance(context: Context) = RegisterCNStartFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + mViewBinding.apply { + //添加下划线 + returnToLoginCn.paint.flags = Paint.UNDERLINE_TEXT_FLAG + + setOnClickListenerViews(llRegisterCnGetPhoneCode.btnGetCode, returnToLoginCn, + btnNextRegisterCnCode, llRegisterCnCodeAgree.loginCnTerms, + llRegisterCnCodeAgree.loginCnPolicy) + } + } + + override fun liveDataObserve() { + mRegisterCNViewModel.mSendCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mCountDownTimerViewModel.startCountDown(60) + showToast(R.string.txt_code_success) + } + }) + } + + //倒计时 + mCountDownTimerViewModel.mCountDowningLiveData.observe(viewLifecycleOwner) { + mViewBinding.llRegisterCnGetPhoneCode.btnGetCode.apply { + isEnabled = false + text = "${it}s" + } + } + mCountDownTimerViewModel.mCountDownEndLiveData.observe(viewLifecycleOwner) { + mViewBinding.llRegisterCnGetPhoneCode.btnGetCode.apply { + isEnabled = true + text = getString(R.string.register_txt_get_code) + } + } + + mRegisterCNViewModel.mValidateCodeResultLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Register_Finish) + } + }) + } + } + + /** + * 注册下一步 + */ + private fun registerCNNext() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llRegisterCnCodeAgree.loginAgreePrivacyCheckbox)) { + return + } + val phone = mViewBinding.llRegisterCnGetPhoneCode.etGetCodePhone.text.toString() + val code = mViewBinding.llRegisterCnGetPhoneCode.etPhoneCode.text.toString() + if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(code)) { + showToast(R.string.txt_not_null) + return + } + + activity.mPhone = phone + mRegisterCNViewModel.validatePhoneCode(this, phone, code, 3) + } + + /** + * 获å–验è¯ç  + */ + private fun getPhoneCode() { + val activity = activity as LoginRegisterCNActivity + if (!activity.isAgreePolicy(mViewBinding.llRegisterCnCodeAgree.loginAgreePrivacyCheckbox)) { + return + } + val phone = mViewBinding.llRegisterCnGetPhoneCode.etGetCodePhone.text.toString() + if (TextUtils.isEmpty(phone)) { + showToast(R.string.txt_register_phone) + return + } + mRegisterCNViewModel.sendCode(this, phone, 3) + } + + override fun onClick(v: View?) { + when (v!!) { + mViewBinding.returnToLoginCn -> { + val activity = activity as LoginRegisterCNActivity + activity.switchFragment(LoginRegisterCNActivity.Fragment_Account_Login) + } + mViewBinding.btnNextRegisterCnCode -> registerCNNext() + + mViewBinding.llRegisterCnGetPhoneCode.btnGetCode -> getPhoneCode() + + mViewBinding.llRegisterCnCodeAgree.loginCnPolicy -> { + ViewUtil.instance.goPrivacyPolicy(mActivity!!) + } + mViewBinding.llRegisterCnCodeAgree.loginCnTerms -> { + ViewUtil.instance.goServiceContract(mActivity!!) + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/HomeViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/HomeViewModel.kt new file mode 100644 index 0000000..49dacaf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/HomeViewModel.kt @@ -0,0 +1,39 @@ +package com.abbidot.tracker.deprecated.ui.fragment.vm + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseFragment +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2021/11/8/008. + * @link + * @description: HomeViewModel + */ +class HomeViewModel : ViewModel() { + fun getData() { + viewModelScope.launch { +// MyDatabase.deviceDao().insert(listOf( +// DeviceBean(5, 4, "tesdfd", conState = ConState.CONNECTED, "7547sgdgdgy64e4r"), +// DeviceBean(3, 2, "65757", conState = ConState.DISCONNECTED, "gujghj"), +// DeviceBean())) + } + + } + + +// var userInfo = MutableLiveData() + /** + * æ ¹æ®ç»çº¬åº¦èŽ·å–åœ°å€ + */ + fun getAddress(fragment: BaseFragment<*>, latitude: Double, longitude: Double){ + viewModelScope.launch { + val latlng = "$latitude,$longitude" + val fields = "formatted_address,name,rating,geometry" + val key = "ä½ çš„Key" +// RetrofitManger.getApiService().getAddress( +// latlng, "zh", fields, key +// ).putValue2Data(GeocodeAddressBean::class.java,userInfo) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/LoginCNViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/LoginCNViewModel.kt new file mode 100644 index 0000000..66de680 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/LoginCNViewModel.kt @@ -0,0 +1,117 @@ +package com.abbidot.tracker.deprecated.ui.fragment.vm + +import android.content.Intent +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import cn.jpush.android.api.JPushInterface +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.deprecated.ui.activity.LoginRegisterCNActivity +import com.abbidot.tracker.ui.activity.HomeV2Activity +import dagger.hilt.android.scopes.ActivityRetainedScoped +import kotlinx.coroutines.launch +import java.util.* +import javax.inject.Inject + +/** + *Created by .yzq on 2022/7/15/015. + * @link + * @description: + */ +@ActivityRetainedScoped +class LoginCNViewModel @Inject constructor() : ViewModel() { + + val mWXLoginResultLiveData = MutableLiveData>() + val mWXBindResultLiveData = MutableLiveData>() + val mPhoneLoginResultLiveData = MutableLiveData>() + val mAccountPwdLoginResultLiveData = MutableLiveData>() + + /** + * 微信登录 + */ + fun wxLogin(code: String) { + viewModelScope.launch { + val result = NetworkApi.wxLogin(code) + mWXLoginResultLiveData.value = result + } + } + + /** + * 处ç†å¾®ä¿¡ã€ç™»å½•æˆåŠŸè¿”å›ž + */ + fun loginSuccess(activity: LoginRegisterCNActivity, + userBean: UserBean, + tipRes: Int = R.string.txt_login_successful) { + //åˆ¤æ–­æœ‰æ²¡æœ‰ç»‘å®šæ‰‹æœºå· + if (userBean.status == ConstantInt.Close) { + activity.apply { + mWXId = userBean.wxId + switchFragment(LoginRegisterCNActivity.Fragment_Bind_Phone) + } + } else { + //通知欢迎页é¢å…³é—­ + XEventBus.post(EventName.FinishActivity) + activity.showToast(tipRes) + MMKVUtil.putString(MMKVKey.UserId, userBean.userId) + MMKVUtil.putInt(MMKVKey.isBindDevice, userBean.isBindDevice) + MMKVUtil.putString(MMKVKey.Token, userBean.token) + val rand = Random() + //æžå…‰æŽ¨é€è®¾ç½®åˆ«å + JPushInterface.setAlias(activity, rand.nextInt(1000), userBean.userId) + + val intent = Intent() + //判断有没有绑定设备 +// if (userBean.isBindDevice == ConstantInt.Close) { +// intent.setClass(activity, AddTrackerDeviceActivity::class.java) +// } else { +// intent.setClass(activity, HomeActivity::class.java) +// } + intent.setClass(activity, HomeV2Activity::class.java) + activity.startActivityFinish(intent) + } + } + + /** + * å¾®ä¿¡ç»‘å®šæ‰‹æœºå· + */ + fun wxBind(fragment: BaseFragment<*>, phone: String, verificationCode: String, wxId: String) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.wxBind(phone, verificationCode, wxId) + mWXBindResultLiveData.value = result + } + } + + + /** + * 验è¯ç ç™»å½• + */ + fun phoneLogin(fragment: BaseFragment<*>, phone: String, code: String) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.phoneLogin(phone, code) + mPhoneLoginResultLiveData.value = result + } + } + + /** + * 验è¯ç ç™»å½• + */ + fun accountPasswordLogin(fragment: BaseFragment<*>, phone: String, password: String) { + fragment.showLoading(true) + viewModelScope.launch { + val pwd = Utils.get32Md5Value(password) + val result = NetworkApi.accountPasswordLogin(phone, pwd) + mAccountPwdLoginResultLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/MyPetsViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/MyPetsViewModel.kt new file mode 100644 index 0000000..fa70a0f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/MyPetsViewModel.kt @@ -0,0 +1,26 @@ +package com.abbidot.tracker.deprecated.ui.fragment.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/7/007. + * @link + * @description: + */ +class MyPetsViewModel : ViewModel() { + val mMyPetsListLiveData = MutableLiveData>>() + + fun getPetList(fragment: BaseFragment<*>, userId: String, type: Int) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetList(userId, type) + mMyPetsListLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RegisterCNViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RegisterCNViewModel.kt new file mode 100644 index 0000000..bcb911c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RegisterCNViewModel.kt @@ -0,0 +1,68 @@ +package com.abbidot.tracker.deprecated.ui.fragment.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/7/18/018. + * @link + * @description: + */ +class RegisterCNViewModel : ViewModel() { + val mSendCodeResultLiveData = MutableLiveData>() + val mValidateCodeResultLiveData = MutableLiveData>() + val mPhoneRegisterResultLiveData = MutableLiveData>() + val mSetNewPasswordResultLiveData = MutableLiveData>() + + /** + * å‘é€éªŒè¯ç  + * @param type å‘é€ç±»åž‹ 1是验è¯ç ç™»å½• 2微信绑定 3注册 4å¿˜è®°å¯†ç  + */ + fun sendCode(fragment: BaseFragment<*>, phone: String, type: Int) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.sendCode(phone, type) + mSendCodeResultLiveData.value = result + } + } + + /** + * 手机å·éªŒè¯ç éªŒè¯ + */ + fun validatePhoneCode(fragment: BaseFragment<*>, phone: String, code: String, type: Int) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.validatePhoneCode(phone, code, type) + mValidateCodeResultLiveData.value = result + } + } + + /** + * 注册 + */ + fun register(fragment: BaseFragment<*>, phone: String, password: String) { + fragment.showLoading(true) + viewModelScope.launch { + val pwd = Utils.get32Md5Value(password) + val result = NetworkApi.register(phone, pwd) + mPhoneRegisterResultLiveData.value = result + } + } + + /** + * é‡ç½®å¯†ç  + */ + fun resetNewPassword(fragment: BaseFragment<*>, phone: String, password: String) { + fragment.showLoading(true) + viewModelScope.launch { + val pwd = Utils.get32Md5Value(password) + val result = NetworkApi.resetNewPassword(phone, pwd) + mSetNewPasswordResultLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RoutePlanningViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RoutePlanningViewModel.kt new file mode 100644 index 0000000..0a83ca0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/vm/RoutePlanningViewModel.kt @@ -0,0 +1,159 @@ +package com.abbidot.tracker.deprecated.ui.fragment.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.KeyNames +import com.abbidot.tracker.util.Util +import com.baidu.mapapi.search.route.BikingRouteResult +import com.baidu.mapapi.search.route.DrivingRouteResult +import com.baidu.mapapi.search.route.IndoorRouteResult +import com.baidu.mapapi.search.route.MassTransitRouteResult +import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener +import com.baidu.mapapi.search.route.PlanNode +import com.baidu.mapapi.search.route.RoutePlanSearch +import com.baidu.mapapi.search.route.TransitRouteResult +import com.baidu.mapapi.search.route.WalkingRouteLine +import com.baidu.mapapi.search.route.WalkingRoutePlanOption +import com.baidu.mapapi.search.route.WalkingRouteResult +import com.google.android.gms.maps.model.LatLng +import com.mapbox.api.directions.v5.DirectionsCriteria +import com.mapbox.api.directions.v5.MapboxDirections +import com.mapbox.api.directions.v5.models.DirectionsResponse +import com.mapbox.api.directions.v5.models.DirectionsRoute +import com.mapbox.api.directions.v5.models.RouteOptions +import com.mapbox.geojson.Point +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + + +/** + *Created by .yzq on 2022/4/13/013. + * @link + * @description:获å–路线规划 + */ +class RoutePlanningViewModel : ViewModel() { + + //mapbox步行路线规划 + val mRouteMapBoxLiveData = MutableLiveData() + + //百度地图步行路线规划 + private var mRoutePlanSearch: RoutePlanSearch? = null + val mRouteBaiduMapLiveData = MutableLiveData() + + + /** + * 获å–mapboxè·¯çº¿è§„åˆ’ä¿¡æ¯ + */ + fun getMapBoxRoutePlan(activity: BaseActivity<*>, startLng: LatLng, endLng: LatLng) { + activity.showLoading(true) + val coordinates = mutableListOf() + coordinates.add(Point.fromLngLat(startLng.longitude, startLng.latitude)) + coordinates.add(Point.fromLngLat(endLng.longitude, endLng.latitude)) + + val routeOptions = RouteOptions.builder().profile(DirectionsCriteria.PROFILE_WALKING) + .coordinatesList(coordinates).build() + val mapboxAccessToken = + Util.getMetadata(activity.applicationContext, KeyNames.MAPBOX_ACCESS_TOKEN) + val client = + MapboxDirections.builder().accessToken(mapboxAccessToken).routeOptions(routeOptions) + .build() + + client.enqueueCall(object : Callback { + override fun onResponse( + call: Call, response: Response + ) { + activity.showLoading(false) + LogUtil.d("Response code: " + response.code()) + + val result = response.body() + if (result == null) { + LogUtil.e( + "RoutePlanningViewModel", + "No routes found, make sure you set the right user and access token." + ) + mRouteMapBoxLiveData.value = null + return + } else if (result.routes().size < 1) { + LogUtil.e("RoutePlanningViewModel", "No routes found") + mRouteMapBoxLiveData.value = null + return + } + val route = result.routes()[0] + LogUtil.e(route.toString()) + mRouteMapBoxLiveData.value = route + client.cancelCall() + } + + override fun onFailure(call: Call, t: Throwable) { + activity.showLoading(false) + LogUtil.e("RoutePlanningViewModel", "Error: " + t.message) + mRouteMapBoxLiveData.value = null + client.cancelCall() + } + }) + } + + /** + * 百度地图步行路线规划,ç»çº¬åº¦ä¸ç”¨å†è½¬åŒ– + */ + fun getBaiduMapRoutePlan( + activity: BaseActivity<*>, + startLng: com.baidu.mapapi.model.LatLng, + endLng: com.baidu.mapapi.model.LatLng + ) { + activity.showLoading(true) + if (null == mRoutePlanSearch) { + mRoutePlanSearch = RoutePlanSearch.newInstance() + mRoutePlanSearch!!.setOnGetRoutePlanResultListener(object : + OnGetRoutePlanResultListener { + override fun onGetWalkingRouteResult(walkingRouteResult: WalkingRouteResult?) { + activity.showLoading(false) + if (null != walkingRouteResult) { + try { + //routeLines=nullçš„æƒ…æ³ + walkingRouteResult.routeLines.size + } catch (e: Exception) { + walkingRouteResult.routeLines = mutableListOf() + } + if (walkingRouteResult.routeLines.size > 0) { + //获å–路径规划数æ®,(ä»¥è¿”å›žçš„ç¬¬ä¸€æ¡æ•°æ®ä¸ºä¾‹) + val result = walkingRouteResult.routeLines[0] + mRouteBaiduMapLiveData.value = result + } else { + mRouteBaiduMapLiveData.value = null + } + } else { + mRouteBaiduMapLiveData.value = null + } + } + + override fun onGetTransitRouteResult(p0: TransitRouteResult?) { + } + + override fun onGetMassTransitRouteResult(p0: MassTransitRouteResult?) { + } + + override fun onGetDrivingRouteResult(p0: DrivingRouteResult?) { + } + + override fun onGetIndoorRouteResult(p0: IndoorRouteResult?) { + } + + override fun onGetBikingRouteResult(p0: BikingRouteResult?) { + } + }) + } + + val stNode = PlanNode.withLocation(startLng) + val enNode = PlanNode.withLocation(endLng) + mRoutePlanSearch?.walkingSearch(WalkingRoutePlanOption().from(stNode).to(enNode)) + } + + override fun onCleared() { + super.onCleared() + mRoutePlanSearch?.destroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog1.kt b/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog1.kt new file mode 100644 index 0000000..60bcc0a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog1.kt @@ -0,0 +1,76 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.text.TextUtils +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogCommonLayoutBinding + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:通用弹窗 + */ +class CommonDialog1( + context: Context, + title: String = "", + content: String = "", + showCancelBtn: Boolean = true, + contentTextSize: Float = 0f, + contentTextStyle: Int = 0, + contentTextColor: Int = 0, + cancelable: Boolean = true, + canceledOnTouchOutside: Boolean = false, + okClickListener: OnDialogOkListener? = null, + cancelListener: OnDialogCancelListener? = null +) : BaseDialog(DialogCommonLayoutBinding::inflate, context) { + + private val mTitle = title + private val mContent = content + private val mContentTextSize = contentTextSize + private val mContentTextColor = contentTextColor + private val mContentTextStyle = contentTextStyle + private val isShowCancelBtn = showCancelBtn + private val isCancelable = cancelable + private val mCanceledOnTouchOutside = canceledOnTouchOutside + private val mOkClickListener = okClickListener + private val mCancelListener = cancelListener + + override fun initView() { + setCanceledOnTouchOutside(mCanceledOnTouchOutside) + setCancelable(isCancelable) + mViewBinding.apply { + if (TextUtils.isEmpty(mTitle)) { + tvCommonDialogTitle.visibility = View.GONE + } else { + tvCommonDialogTitle.visibility = View.VISIBLE + tvCommonDialogTitle.text = mTitle + } + tvCommonDialogContent.let { + it.text = mContent + if (mContentTextColor != 0) it.setTextColor( + ContextCompat.getColor( + context, mContentTextColor + ) + ) + if (mContentTextSize > 0) it.textSize = AppUtils.spToPx(mContentTextSize) + if (mContentTextStyle > 0) it.setTypeface(null, mContentTextStyle) + } + tbnCommonDialogNo.visibility = if (isShowCancelBtn) View.VISIBLE + else View.GONE + setOnClickListenerViews(tbnCommonDialogOk, tbnCommonDialogNo) + } + } + + override fun onClick(v: View) { + dismiss() + mViewBinding.apply { + when (v) { + tbnCommonDialogOk -> mOkClickListener?.onOkClick(this@CommonDialog1) + tbnCommonDialogNo -> mCancelListener?.onCancelClick(this@CommonDialog1) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog2.kt b/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog2.kt new file mode 100644 index 0000000..33fb9cd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/CommonDialog2.kt @@ -0,0 +1,50 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.text.TextUtils +import android.view.View +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogPackageUpgradeBinding + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:通用弹窗,没有标题的 + */ +class CommonDialog2( + context: Context, + content: String = "", + okString: String = "", + okClickListener: OnDialogOkListener? = null, + cancelListener: OnDialogCancelListener? = null +) : BaseDialog(DialogPackageUpgradeBinding::inflate, context) { + + private val mContent = content + private val mOkString = okString + private val mOkClickListener = okClickListener + private val mCancelListener = cancelListener + + override fun initView() { + setCanceledOnTouchOutside(false) + mViewBinding.apply { + if (!TextUtils.isEmpty(mContent)) { + tvCommonDialog2Title.text = mContent + } + if (!TextUtils.isEmpty(mOkString)) { + btnDialogPackageUpgradeNow.text = mOkString + } + setOnClickListenerViews(btnDialogPackageUpgradeNow, tvDialogPackageUpgradeLaterBtn) + } + } + + + override fun onClick(v: View) { + dismiss() + mViewBinding.apply { + when (v) { + btnDialogPackageUpgradeNow -> mOkClickListener?.onOkClick(this@CommonDialog2) + tvDialogPackageUpgradeLaterBtn -> mCancelListener?.onCancelClick(this@CommonDialog2) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/CommonListDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/CommonListDialog.kt new file mode 100644 index 0000000..c1ba983 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/CommonListDialog.kt @@ -0,0 +1,42 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogListItemLayoutBinding +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:通用的列表弹窗 + */ +class CommonListDialog( + context: Context, + adapter: BaseRecyclerAdapter<*>, + topDP: Int = 0, + bottomDP: Int = 0, + itemBottomDP: Int = 0, + dialogHeightDp: Int = 0 +) : BaseDialog( + DialogListItemLayoutBinding::inflate, context, dialogHeightDp +) { + + private val mAdapter = adapter + private var mBottom = QMUIDisplayHelper.dpToPx(bottomDP) + private var mTop = QMUIDisplayHelper.dpToPx(topDP) + private val mItemBottomDP = QMUIDisplayHelper.dpToPx(itemBottomDP) + + override fun initView() { + mViewBinding.dialogListRecyclerView.apply { + if (mTop == 0) mTop = paddingTop + if (mBottom == 0) mBottom = paddingBottom + setPadding(paddingLeft, mTop, paddingRight, mBottom) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + context, this, mAdapter, bottom = mItemBottomDP + ) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/DFUNewDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/DFUNewDialog.kt new file mode 100644 index 0000000..3d424b2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/DFUNewDialog.kt @@ -0,0 +1,94 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogDfuNewBinding + +/** + *Created by .yzq on 2024/10/30/030. + * @link + * @description: + */ +class DFUNewDialog(context: Context) : + BaseDialog(DialogDfuNewBinding::inflate, context) { + + private var mVersion = "" + + override fun initView() { + setCanceledOnTouchOutside(false) + mViewBinding.apply { + btnDialogDfuNewUpgradeNow.setChangeAlphaWhenPress(true) + setOnClickListenerViews(tvDialogDfuNewLaterBtn, btnDialogDfuNewDone) + } + } + + fun startDfuState(version: String, onClick: () -> Unit) { + mVersion = version + val ver = String.format(mContext.getString(R.string.txt_new_firmware_version), mVersion) + mViewBinding.apply { + rlDialogDfuNewAfterLayout.visibility = View.GONE + llDialogDfuNewBeforeLayout.visibility = View.VISIBLE + tvDialogDfuNewTitle.text = ver + btnDialogDfuNewUpgradeNow.text = mContext.getString(R.string.txt_upgrade_now) + btnDialogDfuNewUpgradeNow.setOnClickListener { + inDFUState() + onClick() + } +0 } + } + + private fun inDFUState() { + val ver = String.format(mContext.getString(R.string.txt_about_version), " $mVersion") + mViewBinding.apply { + rlDialogDfuNewAfterLayout.visibility = View.VISIBLE + llDialogDfuNewBeforeLayout.visibility = View.GONE + tvDialogDfuNewProgressText.text = "0" + tvDialogDfuNewBottomVersion.text = ver + tvDialogDfuNewBottomVersion.visibility = View.VISIBLE + lavDialogDfuNewAnim.visibility = View.VISIBLE + tvDialogDfuNewTopVersion.text = ver + tvDialogDfuNewTopVersion.visibility = View.GONE + btnDialogDfuNewDone.visibility = View.GONE + lavDialogDfuNewAnim.setAnimation("lottie/dfu_loading.json") + lavDialogDfuNewAnim.playAnimation() + } + } + + fun setDFUProgress(progress: Int) { + if (progress == 0) return + mViewBinding.apply { + tvDialogDfuNewProgressText.text = "$progress" + if (progress == 100) { + lavDialogDfuNewAnim.cancelAnimation() + lavDialogDfuNewAnim.visibility = View.INVISIBLE + tvDialogDfuNewBottomVersion.visibility = View.GONE + tvDialogDfuNewTopVersion.visibility = View.VISIBLE + btnDialogDfuNewDone.visibility = View.VISIBLE + } + } + } + + fun setDFUFail(onClick: () -> Unit) { + mViewBinding.apply { + llDialogDfuNewBeforeLayout.visibility = View.VISIBLE + rlDialogDfuNewAfterLayout.visibility = View.GONE + tvDialogDfuNewTitle.text = mContext.getString(R.string.txt_upgrade_fail) + btnDialogDfuNewUpgradeNow.text = + mContext.getString(R.string.txt_pay_order_payment_again) + btnDialogDfuNewUpgradeNow.setOnClickListener { + inDFUState() + onClick() + } + } + } + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + tvDialogDfuNewLaterBtn, btnDialogDfuNewDone -> dismiss() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/DialogUtils.kt b/app/src/main/java/com/abbidot/tracker/dialog/DialogUtils.kt new file mode 100644 index 0000000..61892b2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/DialogUtils.kt @@ -0,0 +1,191 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.content.DialogInterface +import android.text.InputFilter +import android.text.InputFilter.LengthFilter +import android.text.InputType +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.GetResultCallback +import com.qmuiteam.qmui.skin.QMUISkinManager +import com.qmuiteam.qmui.widget.dialog.QMUIDialog +import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + + +/** + *Created by .yzq on 2021/11/16/016. + * @link + * @description:通用æç¤ºDialog + */ +class DialogUtils { + + companion object { + + private const val CURRENT_DIALOG_STYLE = R.style.QMUI_Dialog + + /** + * ä¿¡æ¯æç¤ºDialog + * QMUITipDialog.Builder.ICON_TYPE_SUCCESS + * QMUITipDialog.Builder.ICON_TYPE_FAIL + * view:通过viewçº¿ç¨‹è‡ªåŠ¨é”€æ¯ + */ + fun showTipDialog(context: Context, + view: View, + tipWord: CharSequence, + @QMUITipDialog.Builder.IconType iconType: Int, + isFinish: Boolean = false) { + + val tipDialog = if (QMUITipDialog.Builder.ICON_TYPE_NOTHING == iconType) { + QMUITipDialog.Builder(context).setTipWord(tipWord).create() + } else { + QMUITipDialog.Builder(context).setIconType(iconType).setTipWord(tipWord).create() + } + val activity = (context as BaseActivity<*>) + //activityå‰å°æ˜¾ç¤ºè¿è¡Œæ‰å¼¹å‡º + if (activity.isFrontRunning) { + tipDialog.show() + view.postDelayed({ + tipDialog.dismiss() + if (isFinish && !activity.isFinishing) activity.finish() + }, 1500) + } + } + + /** + * ä¿¡æ¯æç¤ºDialog + * 显示文字æç¤ºä¿¡æ¯ + * view:通过viewçº¿ç¨‹è‡ªåŠ¨é”€æ¯ + */ + fun showTipDialog(context: Context, + view: View, + tipWord: CharSequence, + isFinish: Boolean = false) { + showTipDialog(context, view, tipWord, QMUITipDialog.Builder.ICON_TYPE_NOTHING, + isFinish = isFinish) + } + + + /** + * 弹窗Dialog + */ + fun showMessageNegativeDialog(context: Context, + title: String, + message: String, + okStr: CharSequence, + noStr: CharSequence, + okListener: QMUIDialogAction.ActionListener, + noListener: QMUIDialogAction.ActionListener?) { + + var cancelListener: QMUIDialogAction.ActionListener? = noListener + if (null == noListener) { + cancelListener = QMUIDialogAction.ActionListener { dialog, _ -> dialog.dismiss() } + } + + QMUIDialog.MessageDialogBuilder(context).setTitle(title).setMessage(message) + .setSkinManager(QMUISkinManager.defaultInstance(context)) + .addAction(noStr, cancelListener).setCanceledOnTouchOutside(false) + .setCancelable(false) + //QMUIDialogAction.ACTION_PROP_NEGATIVE 字体红色 + .addAction(0, okStr, QMUIDialogAction.ACTION_PROP_NEGATIVE, okListener) + .create(CURRENT_DIALOG_STYLE).show() + } + + /** + * 没有标题的 + */ + fun showMessageNegativeDialog(context: Context, + message: String, + okStr: CharSequence, + noStr: CharSequence, + okListener: QMUIDialogAction.ActionListener, + noListener: QMUIDialogAction.ActionListener?) { + showMessageNegativeDialog(context, "", message, okStr, noStr, okListener, noListener) + + } + + /** + * 没有标题的 + * 确定按钮文字 + */ + fun showMessageNegativeDialog(context: Context, + message: String, + okListener: QMUIDialogAction.ActionListener, + noListener: QMUIDialogAction.ActionListener?) { + showMessageNegativeDialog(context, "", message, context.getString(R.string.txt_sure), + context.getString(R.string.txt_cancel), okListener, noListener) + } + + /** + * 确定按钮文字 + */ + fun showMessageNegativeDialog(context: Context, + title: String, + message: String, + okListener: QMUIDialogAction.ActionListener, + noListener: QMUIDialogAction.ActionListener?) { + showMessageNegativeDialog(context, title, message, context.getString(R.string.txt_sure), + context.getString(R.string.txt_cancel), okListener, noListener) + } + + /** + * 显示èœå•按钮弹窗 + */ + fun showMenuDialog(context: Context, + items: Array, + listener: DialogInterface.OnClickListener) { + QMUIDialog.MenuDialogBuilder(context) + .setSkinManager(QMUISkinManager.defaultInstance(context)) + .addItems(items, listener).create(CURRENT_DIALOG_STYLE).show() + } + + /** + * 有标题的输入弹窗 + */ + fun showEditTextDialog(context: Context, + title: String, + hint: String, + content: String, + getResultCallback: GetResultCallback, + inputType: Int = InputType.TYPE_CLASS_TEXT, + maxLength: Int = 0): QMUIDialog.EditTextDialogBuilder { + val editTextDialogBuilder = QMUIDialog.EditTextDialogBuilder(context) + + editTextDialogBuilder.setTitle(title).setDefaultText(content) + .setSkinManager(QMUISkinManager.defaultInstance(context)).setPlaceholder(hint) + .setInputType(inputType).addAction(context.getString( + R.string.txt_cancel)) { dialog, _ -> dialog.dismiss() } + .addAction(context.getString(R.string.txt_sure)) { dialog, index -> + dialog.dismiss() + getResultCallback.onResult(editTextDialogBuilder.editText.text.toString()) + }.create(CURRENT_DIALOG_STYLE).show() + + editTextDialogBuilder.editText.apply { + setSelection(content.length) + if (maxLength > 0) { + //手动设置maxLength为maxLength + val filters = arrayOf(LengthFilter(maxLength)) + setFilters(filters) + } + } + return editTextDialogBuilder + } + + /** + * 没有标题的输入弹窗 + */ + fun showEditTextDialog(context: Context, + hint: String, + content: String, + getResultCallback: GetResultCallback, + inputType: Int = InputType.TYPE_CLASS_TEXT, + maxLength: Int = 0): QMUIDialog.EditTextDialogBuilder { + return showEditTextDialog(context, "", hint, content, getResultCallback, + inputType = inputType, maxLength = maxLength) + } + + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/MyAlertDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/MyAlertDialog.kt new file mode 100644 index 0000000..6fee08a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/MyAlertDialog.kt @@ -0,0 +1,88 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.text.TextUtils +import android.view.View +import androidx.annotation.StyleRes +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogMyLayoutBinding +import com.abbidot.tracker.widget.TypefaceRoundButton +import com.abbidot.tracker.widget.TypefaceTextView + +/** + *Created by .yzq on 2021/12/24/024. + * @link + * @description: è‡ªå®šä¹‰å¯¹è¯æ¡†ï¼ŒèƒŒæ™¯é˜´å½± + */ +class MyAlertDialog( + context: Context, @StyleRes themeResId: Int = R.style.my_Dialog_style +) : BaseDialog( + DialogMyLayoutBinding::inflate, context, dialogHeightDp = 260, themeResId = themeResId +) { + + private lateinit var mTitleTextView: TypefaceTextView + private lateinit var mContentTextView: TypefaceTextView + private lateinit var mCancelRoundButton: TypefaceRoundButton + private lateinit var mOkRoundButton: TypefaceRoundButton + + override fun initView() { + setCancelable(false) + + mTitleTextView = mViewBinding.myDialogTitle + mContentTextView = mViewBinding.myDialogContent + mCancelRoundButton = mViewBinding.myDialogCancel + mOkRoundButton = mViewBinding.myDialogOk + + //è®¾ç½®æŒ‰ä¸‹ç‚¹å‡»é€æ˜Žæ•ˆæžœ + mCancelRoundButton.setChangeAlphaWhenPress(true) + mOkRoundButton.setChangeAlphaWhenPress(true) + } + + fun setOnDialogCancelListener(cancelListener: OnDialogCancelListener) { + mCancelRoundButton.setOnClickListener { + cancelListener.onCancelClick(this) + } + } + + fun setOnDialogOkListener(okListener: OnDialogOkListener) { + mOkRoundButton.setOnClickListener { + okListener.onOkClick(this) + } + } + + fun setTipTitle(title: String) { + if (!TextUtils.isEmpty(title)) { + mTitleTextView.visibility = View.VISIBLE + mTitleTextView.text = title + } + } + + fun setTipTitle(resId: Int) { + setTipTitle(context.getString(resId)) + } + + fun setContent(title: String) { + mContentTextView.text = title + } + + fun setContent(resId: Int) { + setContent(context.getString(resId)) + } + + fun setOkText(text: String) { + mOkRoundButton.text = text + } + + fun setOkText(resId: Int) { + setOkText(context.getString(resId)) + } + + fun setCancelText(text: String) { + mCancelRoundButton.text = text + } + + fun setCancelText(resId: Int) { + setCancelText(context.getString(resId)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/PackageUpgradeDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/PackageUpgradeDialog.kt new file mode 100644 index 0000000..fe49c33 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/PackageUpgradeDialog.kt @@ -0,0 +1,85 @@ +package com.abbidot.tracker.dialog + +import android.content.Intent +import android.view.View +import androidx.lifecycle.ViewModelProvider +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.DialogPackageUpgradeBinding +import com.abbidot.tracker.ui.activity.subscribe.ChoosePlanActivity +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +/** + *Created by .yzq on 2024/9/27/027. + * @link + * @description:å‡çº§å¥—é¤å¼¹çª— + */ +class PackageUpgradeDialog(activity: BaseActivity<*>, deviceId: String) : + BaseDialog(DialogPackageUpgradeBinding::inflate, activity) { + + private val mBaseActivity = activity + private val mDeviceId = deviceId + + override fun initView() { + mViewBinding.apply { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + tvDialogPackageUpgradeLaterBtn.visibility = View.VISIBLE + btnDialogPackageUpgradeNow.setText(R.string.txt_upgrade_now) + } else { + tvDialogPackageUpgradeLaterBtn.visibility = View.GONE + btnDialogPackageUpgradeNow.setText(R.string.txt_ok) + } + + setOnClickListenerViews(btnDialogPackageUpgradeNow, tvDialogPackageUpgradeLaterBtn) + } + } + + private fun goUpgrade() { + ViewModelProvider(mBaseActivity)[SubscriptionManageViewModel::class.java].apply { + mSubscriptionsOrderLiveData.observe(this@PackageUpgradeDialog) { + mBaseActivity.dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { data -> + for (d in data) { + if (d.deviceId == mDeviceId) { + val intent = + Intent(mBaseActivity, ChoosePlanActivity::class.java) + intent.putExtra( + ConstantString.Title, "Premium" + ) + intent.putExtra(ConstantString.Upgrade, true) + intent.putExtra(ConstantString.LkSetMeal, d) + mBaseActivity.startActivity(intent) + dismiss() + break + } + } + } + } + }) + } + getSubscriptionsOrder() + } + } + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + btnDialogPackageUpgradeNow -> { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) goUpgrade() + else dismiss() + } + + tvDialogPackageUpgradeLaterBtn -> dismiss() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/PrivacyPolicyDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/PrivacyPolicyDialog.kt new file mode 100644 index 0000000..f523921 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/PrivacyPolicyDialog.kt @@ -0,0 +1,58 @@ +package com.abbidot.tracker.dialog + +import android.app.Activity +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogLegalInfoBinding +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2023/3/30/030. + * @link + * @description: + */ +class PrivacyPolicyDialog(activity: Activity) : + BaseDialog(DialogLegalInfoBinding::inflate, activity) { + + private val mActivity = activity + + override fun initView() { + setCancelable(false) + mViewBinding.apply { + tvDialogLegalInfoPrivacy.setOnClickListener(this@PrivacyPolicyDialog) + tvDialogLegalInfoTermsOfService.setOnClickListener(this@PrivacyPolicyDialog) + btnDialogLegalInfoReject.setChangeAlphaWhenPress(true) + btnDialogLegalInfoReject.setOnClickListener(this@PrivacyPolicyDialog) + } + } + + /** + * ç‚¹å‡»åŒæ„的回调 + */ + fun agreePrivacyPolicyCallback(onListener: View.OnClickListener) { + mViewBinding.btnDialogLegalInfoAccept.apply { + setChangeAlphaWhenPress(true) + setOnClickListener(onListener) + } + } + + /** + * 是å¦åŒæ„åè®® + */ + fun isAgree() = mViewBinding.boxReadAndAccept.isChecked + + override fun onClick(v: View) { + when (v.id) { + R.id.tv_dialog_legal_info_privacy -> ViewUtil.instance.goPrivacyPolicy(mActivity) + R.id.tv_dialog_legal_info_terms_of_service -> ViewUtil.instance.goServiceContract( + mActivity + ) + + R.id.btn_dialog_legal_info_reject -> { + dismiss() + mActivity.finish() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/SelectMapListDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/SelectMapListDialog.kt new file mode 100644 index 0000000..5c467c3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/SelectMapListDialog.kt @@ -0,0 +1,33 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogSelectMapLayoutBinding +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:选择多个地图导航列表弹窗 + */ +class SelectMapListDialog( + context: Context, + adapter: BaseRecyclerAdapter<*> +) : BaseDialog(DialogSelectMapLayoutBinding::inflate, context) { + + private var mAdapter = adapter + + + override fun initView() { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout(context, mViewBinding.selectMapRecyclerView, + mAdapter, bottom = 40) + + mViewBinding.btnCancelSelectMap.let { + it.setChangeAlphaWhenPress(true) + it.setOnClickListener { + dismiss() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/SelectMapTypeDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/SelectMapTypeDialog.kt new file mode 100644 index 0000000..6bbd827 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/SelectMapTypeDialog.kt @@ -0,0 +1,61 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.widget.CompoundButton +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.databinding.DialogSelectMapTypeLayoutBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:选择地图类型弹窗 + */ +class SelectMapTypeDialog( + context: Context, + adapter: BaseRecyclerAdapter<*>, + checkedChangeListener: CompoundButton.OnCheckedChangeListener? = null +) : BaseDialog( + DialogSelectMapTypeLayoutBinding::inflate, context +) { + private var mAdapter = adapter + private val mCheckedChangeListener = checkedChangeListener + + override fun initView() { + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewFlexboxLayout( + context, rvShowMapTypeList, mAdapter, right = AppUtils.dpToPx(58) + ) + cbDialogMapFencesSwitch.isChecked = Util.getShowFenceSp() + cbDialogMapFencesSwitch.setOnCheckedChangeListener(mCheckedChangeListener) + } + } + + /** + * æ£€æµ‹åœ°å›¾ç±»åž‹æœ‰æ²¡æœ‰æ”¹å˜ + */ + fun mapTypeSpToUpdate() { + val mapType = Util.getMapTypeSp() + val list = mAdapter.getData() + for (i in 0 until list.size) { + val l = list[i] + if (l is DataBean) { + if (i == mapType && !l.selected) { + l.selected = true + mAdapter.notifyItemChanged(i) + } else if (i != mapType && l.selected) { + l.selected = false + mAdapter.notifyItemChanged(i) + } + } + } + } + + fun setFencesSwitch(checked: Boolean) { + mViewBinding.cbDialogMapFencesSwitch.isChecked = checked + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/SelectPetLabelDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/SelectPetLabelDialog.kt new file mode 100644 index 0000000..3bd8ea9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/SelectPetLabelDialog.kt @@ -0,0 +1,61 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogSelectPetLabelLayoutBinding +import com.abbidot.tracker.util.ViewUtil +import com.google.android.flexbox.FlexboxLayoutManager + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:选择多个地图导航列表弹窗 + */ +class SelectPetLabelDialog( + context: Context, + adapter: BaseRecyclerAdapter<*>, +) : BaseDialog( + DialogSelectPetLabelLayoutBinding::inflate, context +) { + + private val mAdapter = adapter + private var mOkListener: OnDialogOkListener? = null + + override fun initView() { + mViewBinding.apply { + rvDialogPetLabels.let { + val flexboxLayoutManager = FlexboxLayoutManager(mContext).apply { +// justifyContent = JustifyContent.SPACE_AROUND +// alignItems=AlignItems.FLEX_START + } + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, + rvDialogPetLabels, + mAdapter, + right = AppUtils.dpToPx(6), + bottom = AppUtils.dpToPx(8) + ) + } + + setOnClickListenerViews(btnDialogPetLabelsCancel, btnDialogPetLabelsSave) + } + } + + fun setOkListener(okListener: OnDialogOkListener) { + mOkListener = okListener + } + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + btnDialogPetLabelsCancel -> dismiss() + btnDialogPetLabelsSave -> { + mOkListener?.onOkClick(this@SelectPetLabelDialog) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/SetPetWeightDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/SetPetWeightDialog.kt new file mode 100644 index 0000000..4bf9bbc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/SetPetWeightDialog.kt @@ -0,0 +1,163 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.os.Build +import android.text.TextUtils +import android.widget.NumberPicker +import android.widget.NumberPicker.OnValueChangeListener +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.databinding.DialogSetPetWeightLayoutBinding +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2024/2/20/020. + * @link + * @description: + */ +class SetPetWeightDialog( + context: Context, petBean: PetBean, onSelectListener: OnDialogSelectListener? = null +) : BaseDialog( + DialogSetPetWeightLayoutBinding::inflate, context +), OnValueChangeListener { + + private val mOnSelectListener = onSelectListener + private var mPetBean = petBean + + override fun initView() { + mViewBinding.apply { + + var maxTensValue: Int + var minTensValue: Int + var defaultValue1: Int + var defaultValue2 = 0 + mPetBean.let { + defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + it.petType, ConstantInt.WeightType + ) + minTensValue = Util.getPetHeightAndWeightRangeValue( + it.petType, ConstantInt.WeightType, ConstantInt.MinType + ) + maxTensValue = Util.getPetHeightAndWeightRangeValue( + it.petType, ConstantInt.WeightType, ConstantInt.MaxType + ) + if (it.weight > 0) { + var convertWeight = Util.metricConvertUnits(it.weight, ConstantInt.Type1) + if (convertWeight < minTensValue) { + convertWeight = minTensValue.toFloat() + } + val values = convertWeight.toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + } + + tvDialogWeightSetUnit.text = Util.getMetricUnits(context, ConstantInt.Type1) + + npDialogPetWeightTens.let { + ViewUtil.instance.setNumberPickerAttributes( + context, + it, + minTensValue, + maxTensValue, + defaultValue1, + 20, + NumberPickerValueFill0Format(), + this@SetPetWeightDialog + ) + } + + val valueList = mutableListOf() + for (i in 0..9) { + valueList.add("$i") + } + npDialogPetWeightUnit.let { + ViewUtil.instance.setNumberPickerAttributes( + context, + it, + 0, + 9, + defaultValue2, + 20, + valueChangeListener = this@SetPetWeightDialog + ) + it.displayedValues = valueList.toTypedArray() + } + npDialogWeightUnitSwitch.let { + ViewUtil.instance.setNumberPickerAttributes( + context, it, 0, 1, 0, 20 + ) + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + it.selectionDividerHeight = 0 + } + val unitArray = + arrayOf(context.getString(R.string.txt_lb), context.getString(R.string.txt_kg)) + it.displayedValues = unitArray + } + + val value = "${npDialogPetWeightTens.value}.${npDialogPetWeightUnit.value}" + mOnSelectListener?.onSelectClick(this@SetPetWeightDialog, value) + } + } + + override fun onValueChange(picker: NumberPicker?, oldVal: Int, newVal: Int) { + var value = "" + mViewBinding.apply { + when (picker!!) { + npDialogPetWeightTens -> { + value = "${newVal}.${npDialogPetWeightUnit.value}" + } + + npDialogPetWeightUnit -> { + value = "${npDialogPetWeightTens.value}.${newVal}" + } + } + } + if (!TextUtils.isEmpty(value) && value != "0.0") { + mOnSelectListener?.onSelectClick(this@SetPetWeightDialog, value) + } + } + + + fun updatePetData(petBean: PetBean) { + mPetBean = petBean + mViewBinding.apply { + petBean.let { + var defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + it.petType, ConstantInt.WeightType + ) + var defaultValue2 = 0 + val minTensValue = Util.getPetHeightAndWeightRangeValue( + it.petType, ConstantInt.WeightType, ConstantInt.MinType + ) + val maxTensValue = Util.getPetHeightAndWeightRangeValue( + it.petType, ConstantInt.WeightType, ConstantInt.MaxType + ) + if (it.weight > 0) { + var convertWeight = Util.metricConvertUnits(it.weight, ConstantInt.Type1) + if (convertWeight < minTensValue) { + convertWeight = minTensValue.toFloat() + } + val values = convertWeight.toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + + npDialogPetWeightTens.let { np -> + ViewUtil.instance.setNumberPickerAttributes( + context, np, minTensValue, maxTensValue, defaultValue1 + ) + } + npDialogPetWeightUnit.let { np -> + ViewUtil.instance.setNumberPickerAttributes( + context, np, 0, 9, defaultValue2 + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderAndTimeDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderAndTimeDialog.kt new file mode 100644 index 0000000..7ff2fde --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderAndTimeDialog.kt @@ -0,0 +1,205 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import android.widget.NumberPicker +import android.widget.NumberPicker.OnValueChangeListener +import android.widget.TextView +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogCalenderAndTimeLayoutBinding +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.ViewUtil +import java.util.Calendar + + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:显示日历弹窗 + * @param canSelectFutureDate 平时正常日期,trueä¸èƒ½é€‰æ‹©æœªæ¥æ—¶é—´ + */ +class ShowCalenderAndTimeDialog( + context: Context, + showCalenderTextView: TextView, + okListener: OnDialogOkListener? = null, + format: String = Utils.DATE_FORMAT_PATTERN_EN1, + canSelectFutureDate: Boolean = false, + calenderShowTimestamp: Long = 0, + minYear: Int = 2023 +) : BaseDialog( + DialogCalenderAndTimeLayoutBinding::inflate, context +), OnValueChangeListener { + + private val mShowCalenderTextView = showCalenderTextView + private var mShowYearMonthDialog: ShowYearMonthDialog? = null + private lateinit var mMonths: Array + private var mShowYear = 0 + private var mShowMonth = 0 + private val mCanSelectFutureDate = canSelectFutureDate + private val mDateFormat = format + private val mOkListener = okListener + + private val mMinYear = minYear + private val mCalenderShowTimestamp = calenderShowTimestamp + + override fun initView() { + mMonths = context.resources.getStringArray(R.array.array_month) + + mViewBinding.apply { + llDialogCalenderLayout.cvShowSelectCalender.let { + mShowYear = it.curYear + mShowMonth = it.curMonth + if (!mCanSelectFutureDate) { + val calendar = Calendar.getInstance() + val cYear = calendar.get(Calendar.YEAR) + val month = calendar.get(Calendar.MONTH) + 1 + val day = calendar.get(Calendar.DAY_OF_MONTH) + it.setRange(mMinYear, 1, 1, cYear, month, day) + } + updateMonthYear() + + it.setOnMonthChangeListener { year, month -> + mShowMonth = month + mShowYear = year + updateMonthYear() + } + } + + npDialogCalenderHour.let { + ViewUtil.instance.setNumberPickerAttributes( + context, + it, + 0, + 23, + 5, + 24, + NumberPickerValueFill0Format(), + this@ShowCalenderAndTimeDialog + ) + } + npDialogCalenderMin.let { + ViewUtil.instance.setNumberPickerAttributes( + context, + it, + 0, + 59, + 5, + 24, + NumberPickerValueFill0Format(), + this@ShowCalenderAndTimeDialog + ) + } + + //æ ¹æ®ä¼ å…¥çš„æ—¶é—´æˆ³è¿›è¡Œè¿˜åŽŸæ˜¾ç¤º + setSelectDate(mCalenderShowTimestamp) + + setOnClickListenerViews( + llDialogCalenderLayout.ivSelectCalendarMonthLeft, + llDialogCalenderLayout.ivSelectCalendarMonthRight, + btnSelectCalenderHourMinCancel, + btnSelectCalenderHourMinOk, + llDialogCalenderLayout.tvSelectCalendarYearMonth + ) + } + } + + /** + * æ ¹æ®ä¼ å…¥çš„æ—¶é—´æˆ³è¿›è¡Œè¿˜åŽŸæ˜¾ç¤º + * @param showTimestamp 13使—¶é—´æˆ³ + */ + fun setSelectDate(showTimestamp: Long) { + if (showTimestamp > 0) { + mViewBinding.apply { + val calendar = Calendar.getInstance().apply { + timeInMillis = showTimestamp + } + llDialogCalenderLayout.cvShowSelectCalender.scrollToCalendar( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH) + 1, + calendar.get(Calendar.DAY_OF_MONTH) + ) + npDialogCalenderHour.value = calendar.get(Calendar.HOUR_OF_DAY) + npDialogCalenderMin.value = calendar.get(Calendar.MINUTE) + } + } + } + + + private fun updateMonthYear() { + val curMonthYear = "${mMonths[mShowMonth - 1]} $mShowYear" + mViewBinding.llDialogCalenderLayout.tvSelectCalendarYearMonth.text = curMonthYear + } + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + llDialogCalenderLayout.tvSelectCalendarYearMonth -> { + if (null == mShowYearMonthDialog) { + mShowYearMonthDialog = ShowYearMonthDialog( + context, llDialogCalenderLayout.cvShowSelectCalender + ) + } + mShowYearMonthDialog?.show() + } + + llDialogCalenderLayout.ivSelectCalendarMonthRight -> { + llDialogCalenderLayout.cvShowSelectCalender.scrollToNext(true) + } + + llDialogCalenderLayout.ivSelectCalendarMonthLeft -> { + llDialogCalenderLayout.cvShowSelectCalender.scrollToPre(true) + } + + btnSelectCalenderHourMinCancel -> dismiss() + btnSelectCalenderHourMinOk -> { + val calendar = llDialogCalenderLayout.cvShowSelectCalender.selectedCalendar + val selectMonthYear = "${calendar.year}-${calendar.month}-${calendar.day} ${ + Utils.fill2Digits(npDialogCalenderHour.value) + }:${Utils.fill2Digits(npDialogCalenderMin.value)}:00" + val timesTamp = Utils.stringToTimestamp(selectMonthYear) + val nowTimestamp = System.currentTimeMillis() + if (timesTamp > nowTimestamp) { + mShowCalenderTextView.text = Utils.formatTime(nowTimestamp, mDateFormat) + } else { + mShowCalenderTextView.text = Utils.stringToDate( + selectMonthYear, Utils.DATE_FORMAT_PATTERN_CN2, mDateFormat + ) + } + mOkListener?.onOkClick(this@ShowCalenderAndTimeDialog) + dismiss() + } + } + } + } + + override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) { + } + + + //利用åå°„ä¿®æ”¹çº¿çš„é¢œè‰²ï¼Œç›®å‰æ²¡ç”¨ +// private fun setNumberPickerDividerColor(context: Context, numberPicker: NumberPicker) { +// val pickerFields: Array = NumberPicker::class.java.declaredFields +// for (pf in pickerFields) { +// if (pf.name.equals("mSelectionDivider")) { +// pf.isAccessible = true +// try { +// //设置分割线的颜色值 +// pf.set( +// numberPicker, ColorDrawable( +// ContextCompat.getColor(context, R.color.red) +// ) +// ) +// } catch (e: IllegalArgumentException) { +// e.printStackTrace() +// } catch (e: Resources.NotFoundException) { +// e.printStackTrace() +// } catch (e: IllegalAccessException) { +// e.printStackTrace() +// } +// break +// } +// } +// } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderDialog.kt new file mode 100644 index 0000000..c51825c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/ShowCalenderDialog.kt @@ -0,0 +1,143 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogCalenderLayoutBinding +import com.haibin.calendarview.Calendar +import com.haibin.calendarview.CalendarView + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:显示日历弹窗 + * @param canSelectFutureDate 平时正常日期,trueä¸èƒ½é€‰æ‹©æœªæ¥æ—¶é—´ + * @param minLastDayRange 最å°å¤©æ•°èƒ½é€‰æœ€è¿‘多少天,0表示没有é™åˆ¶ + */ +class ShowCalenderDialog( + context: Context, + onSelectListener: OnDialogSelectListener? = null, + canSelectFutureDate: Boolean = false, + calenderShowTimestamp: Long = 0, + minYear: Int = 0, minLastDayRange: Int = 0, +) : BaseDialog(DialogCalenderLayoutBinding::inflate, context) { + + private val mCanSelectFutureDate = canSelectFutureDate + private val mOnSelectListener = onSelectListener + private val mCalenderShowTimestamp = calenderShowTimestamp + + private var mShowYearMonthDialog: ShowYearMonthDialog? = null + private lateinit var mMonths: Array + private var mShowYear = 0 + private var mShowMonth = 0 + private var mMinYear = minYear + private val mMinLastDayRange = minLastDayRange + + override fun initView() { + mMonths = context.resources.getStringArray(R.array.array_month) + mViewBinding.apply { + cvShowSelectCalender.let { + mShowYear = it.curYear + if (mMinYear == 0) mMinYear = mShowYear - 1 + mShowMonth = it.curMonth + if (!mCanSelectFutureDate) { + val calendar = java.util.Calendar.getInstance() + val cYear = calendar.get(java.util.Calendar.YEAR) + val month = calendar.get(java.util.Calendar.MONTH) + 1 + val day = calendar.get(java.util.Calendar.DAY_OF_MONTH) + if (mMinLastDayRange > 0) { + val minTimestamp = Utils.getBeforeHowTimestamp( + calendar.timeInMillis, mMinLastDayRange.toLong() + ) + val minDate = + Utils.formatTime(minTimestamp, Utils.DATE_FORMAT_PATTERN_CN).split("-") + it.setRange( + minDate[0].toInt(), + minDate[1].toInt(), + minDate[2].toInt(), + cYear, + month, + day + ) + } else { + it.setRange(mMinYear, 1, 1, cYear, month, day) + } + } + updateMonthYear() + + it.setOnMonthChangeListener { year, month -> + mShowMonth = month + mShowYear = year + updateMonthYear() + } + + it.setOnCalendarSelectListener(object : CalendarView.OnCalendarSelectListener { + override fun onCalendarOutOfRange(calendar: Calendar?) { + + } + + override fun onCalendarSelect(calendar: Calendar, isClick: Boolean) { + if (!isClick) return + mOnSelectListener?.onSelectClick(this@ShowCalenderDialog, calendar) + dismiss() + } + }) + + //æ ¹æ®ä¼ å…¥çš„æ—¶é—´æˆ³è¿›è¡Œè¿˜åŽŸæ˜¾ç¤º + setSelectDate(mCalenderShowTimestamp) + } + + setOnClickListenerViews( + ivSelectCalendarMonthLeft, ivSelectCalendarMonthRight, tvSelectCalendarYearMonth + ) + } + } + + /** + * æ ¹æ®ä¼ å…¥çš„æ—¶é—´æˆ³è¿›è¡Œè¿˜åŽŸæ˜¾ç¤º + * @param showTimestamp 13使—¶é—´æˆ³ + */ + fun setSelectDate(showTimestamp: Long) { + if (showTimestamp > 0) { + val calendar = java.util.Calendar.getInstance().apply { + timeInMillis = showTimestamp + } + mViewBinding.cvShowSelectCalender.scrollToCalendar( + calendar.get(java.util.Calendar.YEAR), + calendar.get(java.util.Calendar.MONTH) + 1, + calendar.get(java.util.Calendar.DAY_OF_MONTH) + ) + } + } + + private fun updateMonthYear() { + val curMonthYear = "${mMonths[mShowMonth - 1]} $mShowYear" + mViewBinding.tvSelectCalendarYearMonth.text = curMonthYear + } + + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + ivSelectCalendarMonthRight -> { + cvShowSelectCalender.scrollToNext(true) + } + + ivSelectCalendarMonthLeft -> { + cvShowSelectCalender.scrollToPre(true) + } + + tvSelectCalendarYearMonth -> { + if (null == mShowYearMonthDialog) { + mShowYearMonthDialog = ShowYearMonthDialog( + context, cvShowSelectCalender, minYear = mMinYear + ) + } + mShowYearMonthDialog?.show() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/ShowYearMonthDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/ShowYearMonthDialog.kt new file mode 100644 index 0000000..6c03848 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/ShowYearMonthDialog.kt @@ -0,0 +1,114 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import android.widget.NumberPicker +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.databinding.DialogYearAndMonthLayoutBinding +import com.abbidot.tracker.util.ViewUtil +import com.haibin.calendarview.CalendarView +import com.hjq.toast.Toaster +import java.util.Calendar + + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:显示日历弹窗 + * @param canSelectFutureDate 平时正常日期,trueä¸èƒ½é€‰æ‹©æœªæ¥æ—¶é—´ + */ +class ShowYearMonthDialog( + context: Context, + calendarView: CalendarView, + canSelectFutureDate: Boolean = false, + minYear: Int = 2023 +) : BaseDialog(DialogYearAndMonthLayoutBinding::inflate, context), + NumberPicker.OnValueChangeListener { + + private val mCalendarView = calendarView + private lateinit var mMonths: Array + + private lateinit var mCalendar: Calendar + private val mCanSelectFutureDate = canSelectFutureDate + private val mMinYear = minYear + + override fun initView() { +// mMonths=context.resources.getStringArray(R.array.month_string_array) + mMonths = context.resources.getStringArray(R.array.array_month) + + mCalendar = Calendar.getInstance() + val cYear = mCalendar.get(Calendar.YEAR) + val month = if (mCanSelectFutureDate) { + 12 + } else mCalendar.get(Calendar.MONTH) + 1 + + mViewBinding.apply { + + npDialogYear.let { + ViewUtil.instance.setNumberPickerAttributes( + context, + it, + mMinYear, + cYear, + cYear, + 16, + valueChangeListener = this@ShowYearMonthDialog + ) + } + + npDialogMonth.let { + ViewUtil.instance.setNumberPickerAttributes( + context, it, 1, month, month, 16, valueChangeListener = this@ShowYearMonthDialog + ) + it.displayedValues = mMonths + } + + setOnClickListenerViews(btnSelectYearMonthOk, btnSelectYearMonthCancel) + } + } + + override fun onClick(v: View) { + mViewBinding.apply { + when (v) { + btnSelectYearMonthCancel -> dismiss() + btnSelectYearMonthOk -> { + val year = npDialogYear.value + val month = npDialogMonth.value + mCalendarView.minRangeCalendar.let { + //确定åŽåªèƒ½é€‰æ‹©æœ€å°çš„年月日 + if (it.year >= year) { + if (it.month == month) { + mCalendarView.scrollToCalendar(it.year, it.month, it.day, true) + } else if (it.month > month) { + Toaster.show(R.string.txt_time_out_of_range) + mCalendarView.scrollToCalendar(it.year, it.month, it.day, true) + } else mCalendarView.scrollToCalendar(year, month, 1, true) + } else { + mCalendarView.scrollToCalendar(year, month, 1, true) + } + } + dismiss() + } + } + } + } + + override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) { + mViewBinding.apply { + when (picker) { + npDialogYear -> { + if (!mCanSelectFutureDate) { + val month = mCalendar.get(Calendar.MONTH) + 1 // 月份是从0开始的 + val monthMax = if (newVal == mCalendar.get(Calendar.YEAR)) { + month + } else { + 12 + } + npDialogMonth.maxValue = monthMax + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/dialog/TrackerDFUStateDialog.kt b/app/src/main/java/com/abbidot/tracker/dialog/TrackerDFUStateDialog.kt new file mode 100644 index 0000000..c51983f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/dialog/TrackerDFUStateDialog.kt @@ -0,0 +1,87 @@ +package com.abbidot.tracker.dialog + +import android.content.Context +import android.view.View +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DFUStateBean +import com.abbidot.tracker.databinding.DialogTrackerDfuListLayoutBinding +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description:TrackerDFUå‡çº§å¼¹çª— + */ +class TrackerDFUStateDialog(context: Context, adapter: BaseRecyclerAdapter) : + BaseDialog( + DialogTrackerDfuListLayoutBinding::inflate, context + ) { + + private val mDFUStateList = mutableListOf() + + private val mAdapter = adapter + + override fun initView() { + setCancelable(false) + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + context, trackDfuStateListRecyclerView, mAdapter, bottom = 0 + ) + btnTrackDfuOk.setChangeAlphaWhenPress(true) + btnTrackDfuCancel.setChangeAlphaWhenPress(true) + btnTrackDfuCancel.setOnClickListener { + dismiss() + } + } + } + + fun setContent(string: String) { + mViewBinding.apply { + tvTrackDfuContent.text = string + btnTrackDfuOk.visibility = View.VISIBLE + btnTrackDfuCancel.visibility = View.VISIBLE + svTrackDfuContent.visibility = View.VISIBLE + trackDfuStateListRecyclerView.visibility = View.GONE + mDFUStateList.clear() + } + } + + fun startSureDFU(onClick: () -> Unit) { + mViewBinding.btnTrackDfuOk.setOnClickListener { + mViewBinding.apply { + btnTrackDfuOk.visibility = View.GONE + btnTrackDfuCancel.visibility = View.GONE + svTrackDfuContent.visibility = View.GONE + trackDfuStateListRecyclerView.visibility = View.VISIBLE + } + onClick() + } + } + + fun addData(data: DFUStateBean) { + var isAdd = false + var potion = 0 + for (i in 0 until mDFUStateList.size) { + val dfuStateBean = mDFUStateList[i] + if (dfuStateBean.stateName == data.stateName) { + dfuStateBean.filePath = data.filePath + dfuStateBean.progress = data.progress + isAdd = true + potion = i + break + } + } + if (isAdd) { + mAdapter.notifyItemChanged(potion) + } else { + LogUtil.e("未添加过${mDFUStateList.size}") + mDFUStateList.add(data) + mAdapter.setData(mDFUStateList) + mAdapter.notifyDataSetChanged() + //è‡ªåŠ¨å®šä½æ»šåŠ¨æœ€åŽä¸€ä¸ªitem + mViewBinding.trackDfuStateListRecyclerView.scrollToPosition(mDFUStateList.size - 1) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/diff/FeedbackImageDiffCallBack.kt b/app/src/main/java/com/abbidot/tracker/diff/FeedbackImageDiffCallBack.kt new file mode 100644 index 0000000..2f430df --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/diff/FeedbackImageDiffCallBack.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.diff + +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.bean.MenuTxtBean + +/** + *Created by .yzq on 2022/3/24/024. + * @link + * @description:选æ„è§åé¦ˆå›¾ç‰‡çš„æ•°æ®æ¯”较差异 + */ +class FeedbackImageDiffCallBack(oldList: MutableList, + newList: MutableList) : + BaseDiffCallBack(oldList, newList) { + + private var mOldList = oldList + private val mNewList = newList + + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return mOldList[oldItemPosition].imageUrl == mNewList[newItemPosition].imageUrl + } + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return mOldList[oldItemPosition].imageUrl == mNewList[newItemPosition].imageUrl + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/diff/NotificationsDiffUtil.kt b/app/src/main/java/com/abbidot/tracker/diff/NotificationsDiffUtil.kt new file mode 100644 index 0000000..2837686 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/diff/NotificationsDiffUtil.kt @@ -0,0 +1,19 @@ +package com.abbidot.tracker.diff + +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.tracker.bean.MessageBean + +/** + *Created by .yzq on 2021/12/31/031. + * @link + * @description:通知消æ¯diffutil,多布局的没有写继承å°è£… + */ +class NotificationsDiffUtil : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: MessageBean, newItem: MessageBean): Boolean { + return oldItem.messageId == newItem.messageId + } + + override fun areContentsTheSame(oldItem: MessageBean, newItem: MessageBean): Boolean { + return oldItem.title == newItem.title && oldItem.message == newItem.message && oldItem.isContainImg == newItem.isContainImg && oldItem.isSelect == newItem.isSelect + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/diff/PaymentMethodDiffCallBack.kt b/app/src/main/java/com/abbidot/tracker/diff/PaymentMethodDiffCallBack.kt new file mode 100644 index 0000000..2e13e88 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/diff/PaymentMethodDiffCallBack.kt @@ -0,0 +1,33 @@ +package com.abbidot.tracker.diff + +import android.text.TextUtils +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.bean.MenuTxtBean + + +/** + *Created by .yzq on 2022/3/29/029. + * @link + * @description: + */ +class PaymentMethodDiffCallBack(oldList: MutableList, + newList: MutableList) : + BaseDiffCallBack(oldList, newList) { + + private var mOldList = oldList + private val mNewList = newList + + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + val old = mOldList[oldItemPosition] + val new = mNewList[newItemPosition] + if (TextUtils.isEmpty(old.menuName) && TextUtils.isEmpty(new.menuName)) { + return old.imageId == new.imageId + } + return old.menuName == new.menuName + } + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return mOldList[oldItemPosition].isSwitch == mNewList[newItemPosition].isSwitch && + mOldList[oldItemPosition].menuValue == mNewList[newItemPosition].menuValue + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/diff/PetPropertyDiffCallBack.kt b/app/src/main/java/com/abbidot/tracker/diff/PetPropertyDiffCallBack.kt new file mode 100644 index 0000000..07e75ae --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/diff/PetPropertyDiffCallBack.kt @@ -0,0 +1,24 @@ +package com.abbidot.tracker.diff + +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.bean.MenuTxtBean + +/** + *Created by .yzq on 2022/3/11/011. + * @link + * @description:å® ç‰©å±žæ€§æ•°æ®æ¯”较 + */ +class PetPropertyDiffCallBack(oldList: MutableList, + newList: MutableList) : + BaseDiffCallBack(oldList, newList) { + private var mOldList = oldList + private val mNewList = newList + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return mOldList[oldItemPosition].imageId == mNewList[newItemPosition].imageId + } + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return mOldList[oldItemPosition].menuName == mNewList[newItemPosition].menuName&& + mOldList[oldItemPosition].menuValue==mNewList[newItemPosition].menuValue + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/receiver/BluetoothMonitorReceiver.kt b/app/src/main/java/com/abbidot/tracker/receiver/BluetoothMonitorReceiver.kt new file mode 100644 index 0000000..3fb781d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/receiver/BluetoothMonitorReceiver.kt @@ -0,0 +1,49 @@ +package com.abbidot.tracker.receiver + +import android.bluetooth.BluetoothAdapter +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager + +/** + *Created by .yzq on 2022/5/23/023. + * @link + * @description:监å¬è“牙开关æ“作广播 + */ +class BluetoothMonitorReceiver : BroadcastReceiver() { + + override fun onReceive(context: Context?, intent: Intent?) { + + intent?.apply { + when (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0)) { + BluetoothAdapter.STATE_TURNING_ON -> { + LogUtil.e("è“牙正在打开") + } + + BluetoothAdapter.STATE_ON -> { + LogUtil.e("è“ç‰™å·²ç»æ‰“å¼€") + XEventBus.post(EventName.BluetoothSwitch, ConState.BLUETOOTH_ON) + } + + BluetoothAdapter.STATE_TURNING_OFF -> { + LogUtil.e("è“牙正在关闭") + SRBleUtil.instance.cancelBleScan("关闭è“牙,å–æ¶ˆæ‰«æ") + BleManager.getInstance().disconnectAllDevice() + } + + BluetoothAdapter.STATE_OFF -> { + LogUtil.e("è“牙已ç»å…³é—­") + XEventBus.post(EventName.BluetoothSwitch, ConState.BLUETOOTH_OFF) + } + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/receiver/GPSMonitorReceiver.kt b/app/src/main/java/com/abbidot/tracker/receiver/GPSMonitorReceiver.kt new file mode 100644 index 0000000..68c29c4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/receiver/GPSMonitorReceiver.kt @@ -0,0 +1,38 @@ +package com.abbidot.tracker.receiver + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.location.LocationManager +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.constant.ConstantInt + + +/** + *Created by .yzq on 2022/5/23/023. + * @link + * @description:GPS开关æ“作广播 + */ +class GPSMonitorReceiver(locationManager:LocationManager) : BroadcastReceiver() { + + private val mLocationManager=locationManager + + override fun onReceive(context: Context, intent: Intent?) { + intent?.action?.apply { + if (matches(Regex(LocationManager.PROVIDERS_CHANGED_ACTION))) { + val gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) + if (gpsEnabled) { + LogUtil.e("gpså¼€å¯") + XEventBus.post(EventName.GPSSwitchState, ConstantInt.Open) + } else { + LogUtil.e("gps关闭") + XEventBus.post(EventName.GPSSwitchState, ConstantInt.Close) + } + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/receiver/MyJPushMessageReceiver.kt b/app/src/main/java/com/abbidot/tracker/receiver/MyJPushMessageReceiver.kt new file mode 100644 index 0000000..3b41a2d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/receiver/MyJPushMessageReceiver.kt @@ -0,0 +1,10 @@ +package com.abbidot.tracker.receiver + +import cn.jpush.android.service.JPushMessageReceiver + +/** + *Created by .yzq on 2022/3/14/014. + * @link + * @description:从JPush3.0.7开始,需è¦é…置继承JPushMessageReceiver的广播,原æ¥å¦‚æžœé…了MyReceiver现在å¯ä»¥å¼ƒç”¨ + */ +class MyJPushMessageReceiver: JPushMessageReceiver() {} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt b/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt new file mode 100644 index 0000000..49f11c6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/retrofit2/INetworkService.kt @@ -0,0 +1,1382 @@ +package com.abbidot.tracker.retrofit2 + +import com.abbidot.baselibrary.network.base.BaseResponse +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.AlipayOrderBean +import com.abbidot.tracker.bean.CountryCodeBean +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.bean.DeviceDetailBean +import com.abbidot.tracker.bean.FamilyPetBean +import com.abbidot.tracker.bean.FirmwareBean +import com.abbidot.tracker.bean.GetFencesBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.HomeDataBean +import com.abbidot.tracker.bean.InviteInfoBean +import com.abbidot.tracker.bean.LKSimListBean +import com.abbidot.tracker.bean.LiveDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.MessageBean +import com.abbidot.tracker.bean.NotificationBean +import com.abbidot.tracker.bean.OrderBean +import com.abbidot.tracker.bean.PackageBean +import com.abbidot.tracker.bean.PackageTypeBean +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.bean.PetAllInfoBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.RechargeDeviceBean +import com.abbidot.tracker.bean.RechargeHistoryBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.bean.SleepTimeBean +import com.abbidot.tracker.bean.StripeSubscriptionPriceBean +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.bean.UserInfoBean +import com.abbidot.tracker.bean.WXPayOrderBean +import com.abbidot.tracker.bean.WiFiZoneListBean +import okhttp3.MultipartBody +import retrofit2.http.Field +import retrofit2.http.FormUrlEncoded +import retrofit2.http.GET +import retrofit2.http.Multipart +import retrofit2.http.POST +import retrofit2.http.Part +import retrofit2.http.Query + +interface INetworkService { + + companion object { + //宠物勋章图片url + const val BASE_PET_BADGE_URL = "http://162.62.53.38:9998/static/TrackerBadgeImages/" + private const val IP_SERVER = "https://aws.abbidot.com" +// private const val IP_SERVER = "https://192.168.0.22" +// const val BASE_URL = "http://ec2-50-18-65-40.us-west-1.compute.amazonaws.com:8090/abbidot/" +// const val BASE_URL = "http://ec2-3-101-8-36.us-west-1.compute.amazonaws.com:8090/abbidot/" +// const val BASE_URL = "http://www.xiaopandev.com:8090/abbidot/" + + //亚马逊æœåС噍(国外ip) + const val BASE_URL_ABROAD = "https://aws.abbidot.com/abbidot/" +// const val BASE_URL_ABROAD = "http://192.168.0.229:8080/abbidot/" +// const val BASE_URL_ABROAD = "$IP_SERVER:8443/abbidotServer/" + + //亚马逊æœåС噍(国内ip) +// const val BASE_URL_CN = "$IP_SERVER:8443/abbidotServer/" + const val BASE_URL_CN = BASE_URL_ABROAD + + var BASE_URL = BASE_URL_ABROAD + + const val VERSION_NUMBER = "/v2" + const val STRIPE_VERSION_NUMBER = "/v2" + const val SUBSCRIPTIONS_V3 = "/v3" + + //æœåŠ¡å™¨ç¬¬äºŒè·¯å¾„åœ°å€,国内访问(å‰é¢åŠ '/'自动覆盖域ååŽé¢è·¯å¾„,具体å‚ç…§retrofit2库用法) + /*Base URL: http://example.com/ + * Endpoint: https://github.com/square/retrofit/ + * Result: https://github.com/square/retrofit/ + */ +// const val BASE_URL_CN1 = "$SERVER_IP_CN/abbidotServer/" + } + + /** + * 获å–国家代ç å· + */ + @GET("user$VERSION_NUMBER/getCountryCodes") + suspend fun getCountryCodes(): BaseResponse> + + /** + * 获å–邮箱验è¯ç  + * type验è¯ç ç±»åž‹ 1是注册 2æ˜¯å¿˜è®°å¯†ç  + */ + @FormUrlEncoded + @POST("user/sendEmail") + suspend fun getVerificationCode( + @Field("email") email: String, @Field("type") type: Int + ): BaseResponse + + /** + * 验è¯ç éªŒè¯ + */ + @FormUrlEncoded + @POST("user/validateCode") + suspend fun validateCode( + @Field("email") email: String, + @Field("emailCode") emailCode: String, + @Field("type") type: Int + ): BaseResponse + + /** + * 用户登陆 + */ + @FormUrlEncoded + @POST("user/login") + suspend fun login( + @Field("email") email: String, @Field("password") password: String + ): BaseResponse + + /** + * 注册/创建用户 + */ + @FormUrlEncoded + @POST("user$VERSION_NUMBER/register") + suspend fun registerV2( + @Field("email") email: String, + @Field("password") password: String, + @Field("userName") userName: String, + @Field("countryCode") countryCode: String + ): BaseResponse + + /** + * 注册 + */ + @FormUrlEncoded + @POST("user/register") + suspend fun register( + @Field("email") email: String, + @Field("password") password: String, + @Field("userName") userName: String + ): BaseResponse + + /** + * 获å–ç”¨æˆ·ä¿¡æ¯ + */ + @GET("user/getUserInfo") + suspend fun getUserInfo(@Query("userId") userId: String): BaseResponse + + /** + * 用户注销 + */ + @FormUrlEncoded + @POST("user/logoff") + suspend fun logoff(@Field("userId") userId: String): BaseResponse + + /** + * 图片上传 + */ + @Multipart + @POST("file/uploadImage") + suspend fun uploadImage(@Part file: MultipartBody.Part): BaseResponse + + /** + * æ›´æ–°ç”¨æˆ·ä¿¡æ¯ + */ + @FormUrlEncoded + @POST("user/updateUser") + suspend fun updateUser( + @Field("birthdayDate") birthdayDate: String, + @Field("email") email: String, + @Field("gender") gender: Int, + @Field("id") userId: String, + @Field("imgurl") imgurl: String, + @Field("location") location: String, +// @Field("phone") phone: String, + @Field("userName") userName: String, + @Field("countryCode") countryCode: String + ): BaseResponse + + /** + * èŽ·å–æ¶ˆæ¯åˆ—表 + */ + @GET("user/messageList") + suspend fun getMessageList( + @Query("userId") userId: String + ): BaseResponse> + + /** + *åˆ é™¤æ¶ˆæ¯ + */ + @FormUrlEncoded + @POST("user/deleteMessage") + suspend fun deleteMessage(@Field("mesageIds") messageIds: String): BaseResponse + + /** + *用户æ„è§å馈 + * type=å馈问题类型 type 1为APP 2为设备 3其它 + */ + @FormUrlEncoded + @POST("user/feedback") + suspend fun feedback( + @Field("type") type: Int, + @Field("userId") userId: String, + @Field("content") content: String, + @Field("imgurls") imgurls: String, + @Field("email") email: String + ): BaseResponse + + /** + *é‡ç½®å¯†ç  + */ + @FormUrlEncoded + @POST("user/resetPassword") + suspend fun resetPassword( + @Field("email") email: String, @Field("password") password: String + ): BaseResponse + + /** + *修改å•ä½ + */ + @FormUrlEncoded + @POST("user/updateMeasurementUnit") + suspend fun updateMeasureUnit( + @Field("userId") userId: String, @Field("measurementUnitType") measurementUnit: Int + ): BaseResponse + + /** + * 获å–è“牙设备Mac + */ + @GET("device/getMacId") + suspend fun getMacId( + @Query("userId") userId: String, @Query("deviceOutId") deviceOutId: String + ): BaseResponse + + /** + * 获å–设备iccid + */ + @GET("device/iccid") + suspend fun getIccId( + @Query("deviceOutId") deviceOutId: String + ): BaseResponse + + /** + * 获å–设备订å•çŠ¶æ€ + */ + @GET("device/getDeviceOrderStatus") + suspend fun getDeviceOrderStatus( + @Query("deviceOutId") deviceOutId: String + ): BaseResponse + + /** + * ä¸Šç”µæ¿€æ´»è®¾å¤‡ï¼Œæ›´æ–°çŠ¶æ€ + */ + @FormUrlEncoded + @POST("device/updateStatus") + suspend fun updateStatus( + @Field("deviceId") deviceId: String, @Field("addStatus") addStatus: Int//设备添加状æ€,1 为上电激活æˆåŠŸ + ): BaseResponse + + /** + * 支付æˆåŠŸåŽï¼Œæ›´æ–°ç»‘å®šçŠ¶æ€ + */ + @FormUrlEncoded + @POST("device/update/payDeviceSataus") + suspend fun updatePayDeviceState( + @Field("deviceId") deviceId: String, @Field("userId") userId: String + ): BaseResponse + + /** + * 设备绑定 + */ + @FormUrlEncoded + @POST("device/bindDevice") + suspend fun bindDevice( + @Field("userId") userId: String, + @Field("deviceOutId") deviceOutId: String, + @Field("addStatus") addStatus: Int + ): BaseResponse + + /** + * 解绑删除设备 + */ + @FormUrlEncoded + @POST("device/unbindDevice") + suspend fun unbindDevice( + @Field("userId") userId: String, @Field("deviceId") deviceId: String + ): BaseResponse + + /** + * 把Tracker给分é…宠物 + */ + @FormUrlEncoded + @POST("device/assignOtherPetTracker") + suspend fun assignOtherPetTracker( + @Field("userId") userId: String, + @Field("petId") petId: String, + @Field("originDeviceId") originDeviceId: String, + @Field("assignDeviceId") assignDeviceId: String + ): BaseResponse + + /** + * 给已绑定的设备分é…宠物 + */ + @FormUrlEncoded + @POST("device/assignOtherPet") + suspend fun assignOtherPet( + @Field("userId") userId: String, + @Field("deviceId") deviceId: String, + @Field("originPetId") originPetId: String, + @Field("assignPetId") assignPetId: String + ): BaseResponse + + /** + * 获å–设备列表 + * type=1 是自己的 0æ˜¯æ˜¾ç¤ºæŽˆæƒ + */ + @GET("device/list") + suspend fun getDeviceList( + @Query("userId") userId: String, @Query("type") type: Int + ): BaseResponse> + + /** + * èŽ·å–æœªç»‘定宠物的设备 + */ + @GET("device/getUnboundDevices") + suspend fun getUnboundDevices( + @Query("userId") userId: String + ): BaseResponse> + + /** + * 获å–设备相关详情 + */ + @GET("device/getPetTrackerInfo") + suspend fun getPetTrackerInfo(@Query("deviceId") deviceId: String): BaseResponse + + /** + * 获å–设备详情 + */ + @GET("device/detail") + suspend fun getDeviceDetail(@Query("deviceId") deviceId: String): BaseResponse + + /** + * æ·»åŠ åœ†å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/addFence") + suspend fun addCircleFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, + @Field("radius") radius: Int, +// @Field("longitude") longitude: Double, +// @Field("latitude") latitude: Double, + @Field("fenceType") fenceType: Int, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceNameType") fenceNameType: Int, + @Field("latitudeCenter") latitudeCenter: Double, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("ancillaryLatitude") ancillaryLatitude: Double, + @Field("ancillaryLongitude") ancillaryLongitude: Double, + @Field("ancillaryOtherLatitude") ancillaryOtherLatitude: Double, + @Field("ancillaryOtherLongitude") ancillaryOtherLongitude: Double +// @Field("fenceId") fenceId: String + ): BaseResponse + + /** + * æ·»åŠ çŸ©å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/addFence") + suspend fun addRectFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, +// @Field("radius") radius: Double, +// @Field("longitude") longitude: Double, +// @Field("latitude") latitude: Double, + @Field("fenceType") fenceType: Int, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceNameType") fenceNameType: Int, +// @Field("fenceId") fenceId: String, + @Field("longitudeA") longitudeA: Double, + @Field("latitudeA") latitudeA: Double, + @Field("longitudeB") longitudeB: Double, + @Field("latitudeB") latitudeB: Double, + @Field("longitudeC") longitudeC: Double, + @Field("latitudeC") latitudeC: Double, + @Field("longitudeD") longitudeD: Double, + @Field("latitudeD") latitudeD: Double, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("latitudeCenter") latitudeCenter: Double, + @Field("longDistance") longDistance: Int, + @Field("shortDistance") shortDistance: Int + ): BaseResponse + + /** + * æ·»åŠ çŸ©å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/addFence") + suspend fun addPolygonFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, + @Field("fenceType") fenceType: Int, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceNameType") fenceNameType: Int, + @Field("longitudeA") longitudeA: Double, + @Field("latitudeA") latitudeA: Double, + @Field("longitudeB") longitudeB: Double, + @Field("latitudeB") latitudeB: Double, + @Field("longitudeC") longitudeC: Double, + @Field("latitudeC") latitudeC: Double, + @Field("longitudeD") longitudeD: Double, + @Field("latitudeD") latitudeD: Double, + @Field("longitudeE") longitudeE: Double, + @Field("latitudeE") latitudeE: Double, + @Field("longitudeF") longitudeF: Double, + @Field("latitudeF") latitudeF: Double, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("latitudeCenter") latitudeCenter: Double, +// @Field("longDistance") longDistance: Double, +// @Field("shortDistance") shortDistance: Double + ): BaseResponse + + /** + * æ›´æ–°åœ†å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/updateFence") + suspend fun updateCircleFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, + @Field("radius") radius: Int, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("latitudeCenter") latitudeCenter: Double, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceType") fenceType: Int, + @Field("fenceNameType") fenceNameType: Int, + @Field("fenceId") fenceId: String, + @Field("ancillaryLatitude") ancillaryLatitude: Double, + @Field("ancillaryLongitude") ancillaryLongitude: Double, + @Field("ancillaryOtherLatitude") ancillaryOtherLatitude: Double, + @Field("ancillaryOtherLongitude") ancillaryOtherLongitude: Double + ): BaseResponse + + /** + * æ›´æ–°çŸ©å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/updateFence") + suspend fun updateRectFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, +// @Field("radius") radius: Double, +// @Field("longitude") longitude: Double, +// @Field("latitude") latitude: Double, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceType") fenceType: Int, + @Field("fenceNameType") fenceNameType: Int, + @Field("fenceId") fenceId: String, + @Field("longitudeA") longitudeA: Double, + @Field("latitudeA") latitudeA: Double, + @Field("longitudeB") longitudeB: Double, + @Field("latitudeB") latitudeB: Double, + @Field("longitudeC") longitudeC: Double, + @Field("latitudeC") latitudeC: Double, + @Field("longitudeD") longitudeD: Double, + @Field("latitudeD") latitudeD: Double, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("latitudeCenter") latitudeCenter: Double, + @Field("longDistance") longDistance: Int, + @Field("shortDistance") shortDistance: Int + ): BaseResponse + + /** + * æ›´æ–°å¤šè¾¹å½¢å›´æ  + */ + @FormUrlEncoded + @POST("device$VERSION_NUMBER/updateFence") + suspend fun updatePolygonFence( + @Field("deviceId") deviceId: String, + @Field("deviceServiceId") deviceServiceId: String, + @Field("fenceId") fenceId: String, + @Field("name") name: String, + @Field("address") address: String, + @Field("imgurl") imgurl: String, + @Field("isOn") isOn: Int, + @Field("fenceType") fenceType: Int, + @Field("fenceShapeType") fenceShapeType: Int, + @Field("fenceNameType") fenceNameType: Int, + @Field("longitudeA") longitudeA: Double, + @Field("latitudeA") latitudeA: Double, + @Field("longitudeB") longitudeB: Double, + @Field("latitudeB") latitudeB: Double, + @Field("longitudeC") longitudeC: Double, + @Field("latitudeC") latitudeC: Double, + @Field("longitudeD") longitudeD: Double, + @Field("latitudeD") latitudeD: Double, + @Field("longitudeE") longitudeE: Double, + @Field("latitudeE") latitudeE: Double, + @Field("longitudeF") longitudeF: Double, + @Field("latitudeF") latitudeF: Double, + @Field("longitudeCenter") longitudeCenter: Double, + @Field("latitudeCenter") latitudeCenter: Double, + ): BaseResponse + + /** + * 获å–å›´æ åˆ—表 + */ + @GET("device$VERSION_NUMBER/getFenceList") + suspend fun getFenceList( + @Query( + "deviceId" + ) deviceId: String + ): BaseResponse + + /** + * ç§»é™¤å›´æ  + */ + @FormUrlEncoded + @POST("device/removeFence") + suspend fun removeFence( + @Field("fenceId") fenceId: String, @Field("deviceServiceId") deviceServiceId: String + ): BaseResponse + + /** + * 获å–wifi区域列表 + */ + @GET("wifiZone/getWifiZonelist") + suspend fun getWifiZoneList( + @Query("deviceId") deviceId: String + ): BaseResponse + + /** + * 添加wifi区域 + */ + @FormUrlEncoded + @POST("wifiZone/addWifiZone") + suspend fun addWifiZone( + @Field("deviceId") deviceId: String, + @Field("wifiZoneName") wifiZoneName: String, + @Field("address") address: String, + @Field("wifiMac") wifiMac: String, + @Field("wifiName") wifiName: String, + @Field("longitude") longitude: Double, + @Field("latitude") latitude: Double, + @Field("type") type: Int + ): BaseResponse + + /** + * æ›´æ–°wifi区域 + */ + @FormUrlEncoded + @POST("wifiZone/updateWifiZone") + suspend fun updateWifiZone( + @Field("wifiZoneId") wifiZoneId: String, + @Field("deviceId") deviceId: String, + @Field("wifiZoneName") wifiZoneName: String, + @Field("address") address: String, + @Field("wifiMac") wifiMac: String, + @Field("wifiName") wifiName: String, + @Field("longitude") longitude: Double, + @Field("latitude") latitude: Double, + @Field("type") type: Int + ): BaseResponse + + /** + * 删除wifi区域 + */ + @FormUrlEncoded + @POST("wifiZone/removeWifiZone") + suspend fun removeWifiZone( + @Field("wifiZoneId") wifiZoneId: String, + ): BaseResponse + + /** + * èŽ·å–æ‰€æœ‰çš„宠物列表 + */ + @GET("pet/petList") + suspend fun getPetList( + @Query("userId") userId: String, @Query("type") type: Int + ): BaseResponse> + + /** + * èŽ·å–æœªç»‘定的宠物列表 + */ + @GET("pet/unbindPetList") + suspend fun getUnbindPetList( + @Query( + "userId" + ) userId: String + ): BaseResponse> + + /** + * 获å–首页宠物列表 + */ + @GET("pet/bindPetList") + suspend fun getHomeBindPetList( + @Query( + "userId" + ) userId: String + ): BaseResponse> + + /** + * 获å–宠物标签 + */ + @GET("pet/labels") + suspend fun getPetLabels(): BaseResponse> + + /** + * 添加宠物 + */ + @FormUrlEncoded + @POST("pet/addPet") + suspend fun addPet( + @Field("userId") userId: String, + @Field("petName") petName: String, + @Field("breed") breed: String, + @Field("gender") gender: Int, + @Field("petType") petType: Int, + @Field("birthdayDate") birthdayDate: String, + @Field("imgurl") imgurl: String, + @Field("weight") weight: Float, + @Field("height") height: Float, + @Field("labels") labels: String + ): BaseResponse + + /** + * æ›´æ–°å® ç‰©ä¿¡æ¯ + */ + @FormUrlEncoded + @POST("pet/updatePetInfo") + suspend fun updatePetInfo( + @Field("userId") userId: String, + @Field("petName") petName: String, + @Field("breed") breed: String, + @Field("gender") gender: Int, + @Field("petType") petType: Int, + @Field("birthdayDate") birthdayDate: String, + @Field("petId") petId: String, + @Field("imgurl") imgurl: String, + @Field("weight") weight: Float, + @Field("height") height: Float, + @Field("labels") labels: String + ): BaseResponse + + /** + * 解绑宠物 + */ + @FormUrlEncoded + @POST("pet/unbindPet") + suspend fun unbindPet( + @Field("userId") userId: String, + @Field("deviceId") deviceId: String, + @Field("petId") petId: String + ): BaseResponse + + /** + * 绑定关è”宠物 + */ + @FormUrlEncoded + @POST("pet/bindPet") + suspend fun bindPet( + @Field("userId") userId: String, + @Field("deviceId") deviceId: String, + @Field("petId") petId: String + ): BaseResponse + + /** + * 获å–å® ç‰©æ‰€æœ‰ä¿¡æ¯ + */ + @GET("pet/getPetAllInfo") + suspend fun getPetAllInfo(@Query("petId") petId: String): BaseResponse + + /** + * 获å–å® ç‰©ä¿¡æ¯ + */ + @GET("pet/getPetInfo") + suspend fun getPetInfo(@Query("petId") petId: String): BaseResponse + + /** + *获å–宠物活动统计 + */ + @GET("pet/getPetActivityDetailInfo") + suspend fun getPetActivityDetailInfo( + @Query("petId") petId: String, @Query("deviceId") deviceId: String + ): BaseResponse + + /** + * 删除宠物 + */ + @FormUrlEncoded + @POST("pet/deletePet") + suspend fun deletePet( + @Field("userId") userId: String, @Field("petId") petId: String + ): BaseResponse + + /** + * 获å–设备家庭列表 + */ + @GET("device/getFamilies") + suspend fun getFamilies(@Query("deviceId") deviceId: String): BaseResponse + + /** + * 获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + */ + @GET("device/getDeviceInviteInfo") + suspend fun getDeviceInviteInfo(@Query("email") email: String): BaseResponse + + /** + * 设备邀请 + */ + @FormUrlEncoded + @POST("device/invite") + suspend fun invite( + @Field("userId") userId: String, + @Field("userName") userName: String, + @Field("sendEmail") sendEmail: String, + @Field("deviceId") deviceId: String, + @Field("acceptEmail") acceptEmail: String, + @Field("relation") relation: Int,//关系 1 Family 2 friend 3 love 4 colleague + @Field("avatar") avatar: Int,//å¤´åƒ 1 男生 2 女生 3 未知 + @Field("petId") petId: String, + @Field("petName") petName: String + ): BaseResponse + + /** + * 国内设备邀请 + */ + @FormUrlEncoded + @POST("device/invite") + suspend fun inviteCN( + @Field("userId") userId: String, + @Field("userName") userName: String, + @Field("deviceId") deviceId: String, + @Field("acceptEmail") phone: String + ): BaseResponse + + /** + * 删除家庭账户 + */ + @GET("device/removeFamily") + suspend fun removeFamily(@Query("familyId") familyId: String): BaseResponse + + /** + * 获å–首页Data模å—çš„è®¾å¤‡æ•°æ® + */ + @GET("data/getDeviceData") + suspend fun getDeviceData( + @Query("deviceId") deviceId: String, + @Query("dayTime") dayTime: String, + @Query("petId") petId: String + ): BaseResponse + + /** + * 获å–ActiveTimeæ•°æ® + */ + @GET("data/getActiveTimeByDay") + suspend fun getActiveTimeByDay( + @Query("deviceId") deviceId: String, + @Query("dayTime") dayTime: String, + @Query("petId") petId: String + ): BaseResponse + + /** + * 获å–SleepTimeæ•°æ® + */ + @GET("data/getSleepTimeByDay") + suspend fun getSleepTimeByDay( + @Query("deviceId") deviceId: String, + @Query("dayTime") dayTime: String, + @Query("petId") petId: String + ): BaseResponse + + /** + * 获å–HistoryByDayæ•°æ® + */ + @GET("data/getHistoryByDay") + suspend fun getHistoryByDay( + @Query("deviceId") deviceId: String, + @Query("fromTime") fromTime: Long, + @Query("toTime") toTime: Long + ): BaseResponse> + + /** + * 设置è¿åŠ¨ç›®æ ‡ + */ + @FormUrlEncoded + @POST("data/goal") + suspend fun setGoal( + @Field("deviceId") deviceId: String, @Field("goalTime") goalTime: Int + ): BaseResponse + + /** + * 获å–地图模å—çš„è®¾å¤‡æ•°æ® + */ + @GET("map/deviceStatus") + suspend fun getMapDeviceStatus(@Query("deviceId") deviceId: String): BaseResponse + + /** + * 打开关闭直播 + */ + @GET("map/setupDeviceLiveStatus") + suspend fun setupDeviceLiveStatus( + @Query("deviceId") deviceId: String, + @Query("liveState") liveState: Int, + @Query("sendState") sendState: Int + ): BaseResponse + + /** + * 直播宠物轨迹 + */ + @GET("map/getPetLivePoint") + suspend fun getPetLivePoint( + @Query("deviceId") deviceId: String, @Query("timeStamp") timeStamp: Long + ): BaseResponse + + /** + * èŽ·å–æ‰€æœ‰è®¾å¤‡çš„e-simå¡ + */ + @GET("order/getCards") + suspend fun getCards( + @Query( + "userId" + ) userId: String + ): BaseResponse> + + /** + * 获å–设备的充值记录 + */ + @GET("order/getRechargeHistory") + suspend fun getRechargeHistory( + @Query( + "deviceId" + ) deviceId: String + ): BaseResponse> + + /** + * å–æ¶ˆè‡ªåŠ¨ç»­è´¹/自动订阅 + */ + @FormUrlEncoded + @POST("order/cancelSubscription") + suspend fun cancelSubscriptions( + @Field("orderId") orderId: String, + @Field("payType") payType: Int, + @Field("subscriptionId") subscriptionId: String + ): BaseResponse + + /** + * 自动续费,自动订阅 + */ + @FormUrlEncoded + @POST("order/subscription") + suspend fun subscription( + @Field("feePackage") feePackage: String, + @Field("deviceId") deviceId: String, + @Field("accountFee") accountFee: String, + @Field("subscriptionFee") subscriptionFee: String, + @Field("period") period: String, + @Field("userId") userId: String, + @Field("username") username: String + ): BaseResponse + + /** + * 获å–套é¤åˆ—表 + */ + @GET("order/setmeal") + suspend fun getSetMealList(): BaseResponse> + + /** + * 获å–订å•å· + */ + @GET("order/getPaypalOrderNo") + suspend fun getPaypalOrderNo( + @Query("mealName") mealName: String, + @Query("description") description: String, + @Query("totalCost") totalCost: String, + @Query("deviceId") deviceId: String + ): BaseResponse + + /** + * 信用å¡å‘起支付 + */ + @FormUrlEncoded + @POST("order/payment") + suspend fun cardPayment( + @Field("mealName") mealName: String, + @Field("mealDays") mealDays: Int, + @Field("totalCost") totalCost: String, + @Field("paymentMethodNonce") paymentMethodNonce: String, + @Field("deviceId") deviceId: String + ): BaseResponse + + /** + * 信用å¡è‡ªåŠ¨è®¢é˜… + */ + @FormUrlEncoded + @POST("creditCard/creditCardSubscription") + suspend fun cardSubscription( + @Field("userId") userId: String, + @Field("paymentMethodNonce") paymentMethodNonce: String, + @Field("firstName") firstName: String, + @Field("lastName") lastName: String, + @Field("feePackage") feePackage: String, + @Field("deviceId") deviceId: String, + @Field("accountFee") accountFee: Double, + @Field("period") period: Float, + @Field("username") username: String, + @Field("planId") planId: String + ): BaseResponse + + /** + * 更新订å•çŠ¶æ€ + * @param orderStatus:0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + */ + @FormUrlEncoded + @POST("order/updateOrderStatus") + suspend fun updateOrderStatus( + @Field("orderId") orderId: String, + @Field("orderStatus") orderStatus: Int, + @Field("deviceId") deviceId: String, + @Field("mealDays") mealDays: Int + ): BaseResponse + + /** + * 获å–braintree客户端令牌 + */ + @GET("order/getClientToken") + suspend fun getBraintreeClientToken(): BaseResponse + + /** + * 关闭设备 + */ + @FormUrlEncoded + @POST("device/turnoff") + suspend fun turnoff( + @Field("deviceInfoId") deviceInfoId: String, @Field("turnOff") turnOff: Int + ): BaseResponse + + /** + * è®¾ç½®è®¾å¤‡ä¸ŠæŠ¥ä¸‹å‘æ—¶é—´ + */ + @FormUrlEncoded + @POST("device/gnssInterval") + suspend fun reportInterval( + @Field("deviceInfoId") deviceInfoId: String, @Field("gnssInterval") gnssInterval: Int + ): BaseResponse + + /** + * 设置设备的直播时间 + */ + @FormUrlEncoded + @POST("device/setLiveTime") + suspend fun setLiveTime( + @Field("deviceId") deviceId: String, @Field("liveTime") liveTime: Int + ): BaseResponse + + /** + * 设置ledSwitch开关 + */ + @FormUrlEncoded + @POST("device/ledSwitch") + suspend fun setLedSwitch( + @Field("deviceInfoId") deviceInfoId: String, @Field("ledSwitch") ledSwitch: Int + ): BaseResponse + + /** + * 设置lightç¯å…‰ + */ + @FormUrlEncoded + @POST("device/ledLignt") + suspend fun setLedLight( + @Field("deviceInfoId") deviceInfoId: String, + @Field("red") red: Int, + @Field("green") green: Int, + @Field("blue") blue: Int, + @Field("lightMode") lightMode: Int, + @Field("ledSwitch") ledSwitch: Int + ): BaseResponse + + /** + * 获å–å›ºä»¶ä¿¡æ¯ + */ + @GET("device/getFirmware") + suspend fun getFirmware(@Query("deviceName") deviceName: String): BaseResponse + + + /** + * 获å–simå¡é¤åˆ—表 + */ + @GET("pay$STRIPE_VERSION_NUMBER/meals") + suspend fun getSimSetMealList( + @Query("deviceCode") deviceCode: String, @Query("partnerCode") partnerCode: String + ): BaseResponse + + /** + * 获å–Stripeæ”¯ä»˜å‡­è¯ + */ + @GET("pay$STRIPE_VERSION_NUMBER/payments") + suspend fun getStripePayOrder( + @Query("amount") amount: String, + @Query("userId") userId: String, + @Query("feePackage") feePackage: String, + @Query("deviceId") deviceId: String, + @Query("username") username: String, + @Query("cost") cost: String, + @Query("priceId") priceId: String, + @Query("partnerCode") partnerCode: String, + @Query("packageCode") packageCode: String, + @Query("servicePlanCode") servicePlanCode: String, + @Query("orderPeriod") orderPeriod: String, + @Query("servicePlanShowName") servicePlanShowName: String, + @Query("deviceCode") deviceCode: String, + @Query("autoRenewal") autoRenewal: String + ): BaseResponse + + /** + * Stripe支付创建消费用户 + */ + @FormUrlEncoded + @POST("pay$STRIPE_VERSION_NUMBER/createCustomer") + suspend fun createCustomer( + @Field("parms") param: String, + @Field("userId") userId: String, + @Field("userName") userName: String, + @Field("email") email: String + ): BaseResponse + + /** + * Stripe支付创建订阅 + */ + @FormUrlEncoded + @POST("pay$STRIPE_VERSION_NUMBER/createSubscription") + suspend fun createSubscription( + @Field("userId") userId: String, + @Field("feePackage") feePackage: String, + @Field("deviceId") deviceId: String, + @Field("username") username: String, + @Field("cost") cost: String, + @Field("priceId") priceId: String, + @Field("customerId") customerId: String, + @Field("amount") amount: String, + @Field("partnerCode") partnerCode: String, + @Field("packageCode") packageCode: String, + @Field("servicePlanCode") servicePlanCode: String, + @Field("orderPeriod") orderPeriod: String, + @Field("servicePlanShowName") servicePlanShowName: String, + @Field("deviceCode") deviceCode: String, + @Field("autoRenewal") autoRenewal: String + ): BaseResponse + + /** + * Stripeæ”¯ä»˜å–æ¶ˆè®¢é˜… + */ + @FormUrlEncoded + @POST("pay$STRIPE_VERSION_NUMBER/cancelSubscription") + suspend fun cancelStripeSubscription( + @Field("orderId") orderId: String, + @Field("subscriptionId") subscriptionId: String, + @Field("iccid") iccid: String + ): BaseResponse + + /** + * Stripe支付 Rsa算法解密测试 + */ + @FormUrlEncoded + @POST("pay$STRIPE_VERSION_NUMBER/rsaDigisteTest") + suspend fun rsaDecodeTest( + @Field("encryptedData") encryptedData: String + ): BaseResponse + /*******************************************以下是国内版本接å£***********************************/ + /** + * 获å–微信登录的OpedId + */ +// @Headers("${CommonRequestInterceptor.HEADERS_NAME}:${CommonRequestInterceptor.HEADERS_value}") +// @GET("oauth2/access_token") +// suspend fun getWXOpedId(@Query("appid") appid: String, +// @Query("secret") secret: String, +// @Query("code") code: String, +// @Query("grant_type") grant_type: String): BaseResponse + + /** + * 微信登录 + */ + @GET("user/wxLogin") + suspend fun wxLogin(@Query("code") code: String): BaseResponse + + /** + * 微信绑定 + */ + @FormUrlEncoded + @POST("user/weixinBind") + suspend fun wxBind( + @Field("phone") phone: String, + @Field("verificationCode") verificationCode: String, + @Field("wxId") wxId: String + ): BaseResponse + + /** + * å‘é€éªŒè¯ç  + */ + @GET("user/sendCode") + suspend fun sendCode( + @Query("phone") phone: String, + //å‘é€ç±»åž‹ 1是验è¯ç ç™»å½• 2微信绑定 3注册 4å¿˜è®°å¯†ç  + @Query("type") type: Int + ): BaseResponse + + /** + * 验è¯ç ç™»å½• + */ + @FormUrlEncoded + @POST("user/phoneLogin") + suspend fun phoneLogin( + @Field("phone") phone: String, @Field("verificationCode") verificationCode: String + ): BaseResponse + + /** + * 手机å·éªŒè¯ç éªŒè¯ + */ + @FormUrlEncoded + @POST("user/validateCode") + suspend fun validatePhoneCode( + @Field("phone") phone: String, @Field("code") code: String, + //验è¯ç ç±»åž‹ 1是注册 2æ˜¯å¿˜è®°å¯†ç  + @Field("type") type: Int + ): BaseResponse + + /** + * è´¦å·å¯†ç ç™»å½• + */ + @FormUrlEncoded + @POST("user/accountPasswordLogin") + suspend fun accountPasswordLogin( + @Field("phone") phone: String, @Field("password") password: String + ): BaseResponse + + /** + * 用户注册 + */ + @FormUrlEncoded + @POST("user/register") + suspend fun register( + @Field("phone") phone: String, @Field("password") password: String + ): BaseResponse + + /** + * é‡ç½®å¯†ç  + */ + @FormUrlEncoded + @POST("user/resetPassword") + suspend fun resetNewPassword( + @Field("phone") phone: String, @Field("password") password: String + ): BaseResponse + + /** + * 获å–微信支付Prepay_id + */ + @FormUrlEncoded + @POST("order/getWxPayOrder") + suspend fun getWxPayOrder( + @Field("feePackage") feePackage: String, + @Field("deviceId") deviceId: String, + @Field("payFee") payFee: Double, + @Field("period") period: Float, + @Field("userId") userId: String, + @Field("username") username: String + ): BaseResponse + + /** + * èŽ·å–æ”¯ä»˜å®æ”¯ä»˜è®¢å• + */ + @FormUrlEncoded + @POST("order/getAlipayOrder") + suspend fun getAlipayOrder( + @Field("feePackage") feePackage: String, + @Field("deviceId") deviceId: String, + @Field("payFee") payFee: Double, + @Field("period") period: Float, + @Field("userId") userId: String, + @Field("username") username: String + ): BaseResponse + + + /** + * 获å–订阅订å•列表 + */ + @GET("order$SUBSCRIPTIONS_V3/subscriptions/order/list") + suspend fun getSubscriptionsOrder( + @Query("userId") userId: String + ): BaseResponse> + + /** + * 获å–套é¤è®¡åˆ’类型 + */ + @GET("order$SUBSCRIPTIONS_V3/subscriptions/plan/types") + suspend fun getPackageType(): BaseResponse> + + /** + * 获å–套é¤åˆ—表 + */ + @GET("order$SUBSCRIPTIONS_V3/plan/list") + suspend fun getPackageList( + @Query("planTypeName") planTypeName: String + ): BaseResponse> + + /** + * 获å–设备充值得的历å²è®°å½• + */ + @GET("order$SUBSCRIPTIONS_V3/subscriptions/history") + suspend fun getSubscriptionsHistory( + @Query("userId") userId: String, @Query("deviceId") deviceId: String + ): BaseResponse> + + /** + * æäº¤é€€æ¬¾ç”³è¯· + */ + @FormUrlEncoded + @POST("order$SUBSCRIPTIONS_V3/refund/commit") + suspend fun commitRefund( + @Field("currency_code") currency_code: String, + @Field("orderNum") orderNum: String, + @Field("chargeId") chargeId: String, + @Field("amount") amount: Int, + @Field("subscriptionId") subscriptionId: String, + @Field("planName") planName: String, + @Field("refundDescription") refundDescription: String, + @Field("deviceId") deviceId: String, + @Field("deviceOutId") deviceOutId: String, + @Field("payType") payType: Int + ): BaseResponse + + /** + * 退款 + */ + @FormUrlEncoded + @POST("order$SUBSCRIPTIONS_V3/refund") + suspend fun refund( + @Field("orderNum") orderNum: String + ): BaseResponse + + /** + * æ›´æ–°è®¢é˜…çŠ¶æ€ + */ + @FormUrlEncoded + @POST("order$SUBSCRIPTIONS_V3/updateScriptionStatus") + suspend fun updateSubscriptionStatus( + @Field("subscriptionId") subscriptionId: String, @Field("status") status: Int + ): BaseResponse + + /** + * 获å–SIMå¡é‡æ–°æ¿€æ´»è´¹ç”¨ + */ + @GET("order$SUBSCRIPTIONS_V3/reactivation/fee") + suspend fun getReactivationFee( + @Query("orderId") orderId: String + ): BaseResponse + + /** + * 创建Stripe订å•å‘起支付 + */ + @FormUrlEncoded + @POST("order$SUBSCRIPTIONS_V3/stripe/createOrderInfo") + suspend fun createStripeOrder( + @Field("userId") userId: String, + @Field("deviceId") deviceId: String, + @Field("payMethod") payMethod: Int, + @Field("iccid") iccid: String, + @Field("deviceOutId") deviceOutId: String, + @Field("username") username: String, + @Field("mealName") mealName: String, + @Field("mealDesc") mealDesc: String, + @Field("mealId") mealId: String, + @Field("mealPeriod") mealPeriod: Int, + @Field("mealPrice") mealPrice: Double, + @Field("mealDiscountPrice") mealDiscountPrice: Double, + @Field("mealUnit") mealUnit: String, + @Field("annualCareType") annualCareType: Int, + @Field("annualCarePrice") annualCarePrice: Double, +// @Field("couponCode") couponCode: String, + @Field("reactivation") reactivation: Int, + @Field("reactivatePrice") reactivatePrice: Double, + @Field("totalAmountWithTax") totalAmountWithTax: Double, + @Field("planCategory") planCategory: String, +// @Field("couponPrice") couponPrice: Double, + @Field("autoRenewPrice") autoRenewPrice: Double, +// @Field("useCoupon") useCoupon: Int, + @Field("tax") tax: Double, + @Field("customerId") customerId: String, + @Field("orderNum") orderNum: String, + @Field("isUpdateOrder") isUpdateOrder: Int, + @Field("subscriptionId") subscriptionId: String + ): BaseResponse + + /** + * 创建Paypal订å•å‘起支付 + */ + @FormUrlEncoded + @POST("order$SUBSCRIPTIONS_V3/paypal/createOrderInfo") + suspend fun createPaypalOrder( + @Field("userId") userId: String, + @Field("deviceId") deviceId: String, + @Field("payMethod") payMethod: Int, + @Field("iccid") iccid: String, + @Field("deviceOutId") deviceOutId: String, + @Field("username") username: String, + @Field("mealName") mealName: String, + @Field("mealDesc") mealDesc: String, + @Field("mealId") mealId: String, + @Field("mealPeriod") mealPeriod: Int, + @Field("mealPrice") mealPrice: Double, + @Field("mealDiscountPrice") mealDiscountPrice: Double, + @Field("mealUnit") mealUnit: String, + @Field("annualCareType") annualCareType: Int, + @Field("annualCarePrice") annualCarePrice: Double, +// @Field("couponCode") couponCode: String, + @Field("reactivation") reactivation: Int, + @Field("reactivatePrice") reactivatePrice: Double, + @Field("totalAmountWithTax") totalAmountWithTax: Double, + @Field("planCategory") planCategory: String, + @Field("autoRenewPrice") autoRenewPrice: Double, +// @Field("couponPrice") couponPrice: Double, +// @Field("useCoupon") useCoupon: Int, + @Field("tax") tax: Double, + @Field("customerId") customerId: String, + @Field("orderNum") orderNum: String, + @Field("isUpdateOrder") isUpdateOrder: Int, + @Field("subscriptionId") subscriptionId: String + ): BaseResponse + + /** + * 获å–通知设置 + */ + @GET("user$VERSION_NUMBER/notification/getSettings") + suspend fun getNotificationSet( + @Query("userId") userId: String + ): BaseResponse> + + /** + * 消æ¯é€šçŸ¥è®¾ç½® + */ + @FormUrlEncoded + @POST("user$VERSION_NUMBER/notification/setting") + suspend fun setNotification( + @Field("userId") userId: String, + @Field("notificationType") notificationType: Int, + @Field("status") status: Int + ): BaseResponse + + + /** + * 设备日志上传 + */ + @Multipart + @POST("file/uploadLog") + suspend fun uploadLog(@Part file: MultipartBody.Part): BaseResponse + + /** + * 上传设备日志 + */ + @FormUrlEncoded + @POST("device/uploadDeviceLog") + suspend fun uploadDeviceLog( + @Field("deviceOutId") deviceOutId: String, + @Field("uploadTime") uploadTime: String, + @Field("macID") macID: String, + @Field("logFileUrl") logFileUrl: String + ): BaseResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt b/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt new file mode 100644 index 0000000..9038dfa --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/retrofit2/NetworkApi.kt @@ -0,0 +1,1264 @@ +package com.abbidot.tracker.retrofit2 + +import com.abbidot.baselibrary.network.base.BaseNetworkApi +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import okhttp3.MultipartBody + + +/** + * 网络请求具体实现 + * 需è¦éƒ¨ç½²æœåŠ¡ç«¯ï¼šhttps://github.com/huannan/XArchServer + */ +object NetworkApi : BaseNetworkApi(INetworkService.BASE_URL) { + + /** + * 获å–国家代ç å· + */ + suspend fun getCountryCodes() = getResult { + service.getCountryCodes() + } + + /** + * 获å–邮箱验è¯ç  + * type验è¯ç ç±»åž‹ 1是注册 2æ˜¯å¿˜è®°å¯†ç  + */ + suspend fun requestVerificationCode(email: String, type: Int) = getResult { + service.getVerificationCode(email, type) + } + + /** + * 验è¯ç éªŒè¯ + */ + suspend fun validateCode(email: String, emailCode: String, type: Int) = getResult { + service.validateCode(email, emailCode, type) + } + + /** + * 注册/创建用户 + */ + suspend fun registerV2(email: String, password: String, userName: String, countryCode: String) = + getResult { + service.registerV2(email, password, userName, countryCode) + } + + /** + * 注册 + */ + suspend fun register(email: String, password: String, userName: String) = getResult { + service.register(email, password, userName) + } + + /** + * 用户登陆 + */ + suspend fun login(email: String, password: String) = getResult { + service.login(email, password) + } + + /** + * 获å–ç”¨æˆ·ä¿¡æ¯ + */ + suspend fun getUserInfo(userId: String) = getResult { + service.getUserInfo(userId) + } + + /** + * 用户注销 + */ + suspend fun logoff(userId: String) = getResult { + service.logoff(userId) + } + + /** + *åˆ é™¤æ¶ˆæ¯ + */ + suspend fun deleteMessage(messageIds: String) = getResult { + service.deleteMessage(messageIds) + } + + /** + *用户æ„è§å馈 + * type=å馈问题类型 type 1为APP 2为设备 3其它 + */ + suspend fun feedback( + type: Int, userId: String, content: String, imgurls: String, email: String + ) = getResult { + service.feedback(type, userId, content, imgurls, email) + } + + /** + *é‡ç½®å¯†ç  + */ + suspend fun resetPassword(email: String, password: String) = getResult { + service.resetPassword(email, password) + } + + /** + *修改å•ä½ + */ + suspend fun updateMeasureUnit(userId: String, measurementUnit: Int) = getResult { + service.updateMeasureUnit(userId, measurementUnit) + } + + /** + * 图片上传 + */ + suspend fun uploadImage(file: MultipartBody.Part) = getResult { + service.uploadImage(file) + } + + /** + * æ›´æ–°ç”¨æˆ·ä¿¡æ¯ + */ + suspend fun updateUser( + email: String, userId: String, imgurl: String, countryCode: String, username: String + ) = getResult { + service.updateUser("", email, 0, userId, imgurl, "", username, countryCode) + } + + /** + * èŽ·å–æ¶ˆæ¯åˆ—表 + */ + suspend fun getMessageList(userId: String) = getResult { + service.getMessageList(userId) + } + + /** + * 获å–è“牙设备Mac + */ + suspend fun getMacId(userId: String, deviceOutId: String) = getResult { + service.getMacId(userId, deviceOutId) + } + + /** + * 获å–设备iccid + */ + suspend fun getIccId(deviceOutId: String) = getResult { + service.getIccId(deviceOutId) + } + + /** + * ä¸Šç”µæ¿€æ´»è®¾å¤‡ï¼Œæ›´æ–°çŠ¶æ€ + */ + suspend fun updateStatus(deviceId: String, addStatus: Int) = getResult { + service.updateStatus(deviceId, addStatus) + } + + /** + * 设备绑定 + */ + suspend fun bindDevice(userId: String, deviceOutId: String) = getResult { + service.bindDevice(userId, deviceOutId, 1) + } + + /** + * 支付æˆåŠŸåŽï¼Œæ›´æ–°ç»‘å®šçŠ¶æ€ + */ + suspend fun updatePayDeviceState(deviceId: String, userId: String) = getResult { + service.updatePayDeviceState(deviceId, userId) + } + + /** + * 获å–设备订å•çŠ¶æ€ + */ + suspend fun getDeviceOrderStatus(deviceOutId: String) = getResult { + service.getDeviceOrderStatus(deviceOutId) + } + + /** + * 解绑删除设备 + */ + suspend fun unbindDevice(userId: String, deviceId: String) = getResult { + service.unbindDevice(userId, deviceId) + } + + /** + * 获å–设备列表 + */ + suspend fun getDeviceList(userId: String, type: Int) = getResult { + service.getDeviceList(userId, type) + } + + /** + * èŽ·å–æœªç»‘定宠物的设备 + */ + suspend fun getUnboundDevices(userId: String) = getResult { + service.getUnboundDevices(userId) + } + + /** + * 把Tracker给分é…宠物 + */ + suspend fun assignOtherPetTracker( + userId: String, petId: String, originDeviceId: String, assignDeviceId: String + ) = getResult { + service.assignOtherPetTracker(userId, petId, originDeviceId, assignDeviceId) + } + + /** + * 给已绑定的设备分é…宠物 + */ + suspend fun assignOtherPet( + userId: String, deviceId: String, originPetId: String, assignPetId: String + ) = getResult { + service.assignOtherPet(userId, deviceId, originPetId, assignPetId) + } + + /** + * 获å–地图模å—çš„è®¾å¤‡æ•°æ® + */ + suspend fun getPetTrackerInfo(deviceId: String) = getResult { + service.getPetTrackerInfo(deviceId) + } + + /** + * 获å–设备详情 + */ + suspend fun getDeviceDetail(deviceId: String) = getResult { + service.getDeviceDetail(deviceId) + } + + /** + * æ·»åŠ åœ†å½¢å›´æ  + */ + suspend fun addCircleFence(fencesBean: FencesBean) = getResult { + service.addCircleFence( + fencesBean.deviceId, fencesBean.deviceServiceId, + fencesBean.name, + fencesBean.address, + "", + 1, + fencesBean.radius, + fencesBean.fenceType, + 1, + fencesBean.fenceNameType, + fencesBean.latitudeCenter, + fencesBean.longitudeCenter, + fencesBean.ancillaryLatitude, + fencesBean.ancillaryLongitude, + fencesBean.ancillaryOtherLatitude, + fencesBean.ancillaryOtherLongitude, + ) + } + + /** + * æ·»åŠ çŸ©å½¢å›´æ  + */ + suspend fun addRectFence(fencesBean: FencesBean) = getResult { + service.addRectFence( + fencesBean.deviceId, + fencesBean.deviceServiceId, + fencesBean.name, + fencesBean.address, + "", + 1, + fencesBean.fenceType, + 2, + fencesBean.fenceNameType, + fencesBean.longitudeA, + fencesBean.latitudeA, + fencesBean.longitudeB, + fencesBean.latitudeB, + fencesBean.longitudeC, + fencesBean.latitudeC, + fencesBean.longitudeD, + fencesBean.latitudeD, + fencesBean.longitudeCenter, + fencesBean.latitudeCenter, + fencesBean.longDistance, + fencesBean.shortDistance + ) + } + + /** + * æ·»åŠ å¤šè¾¹å½¢å½¢å›´æ  + */ + suspend fun addPolygonFence(fencesBean: FencesBean) = getResult { + service.addPolygonFence( + fencesBean.deviceId, fencesBean.deviceServiceId, + fencesBean.name, + fencesBean.address, + "", + 1, + fencesBean.fenceType, + 3, + fencesBean.fenceNameType, + fencesBean.longitudeA, + fencesBean.latitudeA, + fencesBean.longitudeB, + fencesBean.latitudeB, + fencesBean.longitudeC, + fencesBean.latitudeC, + fencesBean.longitudeD, + fencesBean.latitudeD, + fencesBean.longitudeE, + fencesBean.latitudeE, + fencesBean.longitudeF, + fencesBean.latitudeF, + fencesBean.longitudeCenter, + fencesBean.latitudeCenter, + ) + } + + /** + * æ›´æ–°åœ†å½¢å›´æ  + */ + suspend fun updateCircleFence( + deviceId: String, + deviceServiceId: String, + name: String, + address: String, + imgurl: String, + isOn: Int, + radius: Int, + longitudeCenter: Double, + latitudeCenter: Double, + fenceNameType: Int, + fenceType: Int, + fenceId: String, + ancillaryLatitude: Double, + ancillaryLongitude: Double, + ancillaryOtherLatitude: Double, + ancillaryOtherLongitude: Double + ) = getResult { + service.updateCircleFence( + deviceId, + deviceServiceId, + name, + address, + imgurl, + isOn, + radius, + longitudeCenter, + latitudeCenter, + 1, + fenceType, + fenceNameType, + fenceId, + ancillaryLatitude, + ancillaryLongitude, + ancillaryOtherLatitude, + ancillaryOtherLongitude + ) + } + + /** + * æ›´æ–°çŸ©å½¢å›´æ  + */ + suspend fun updateRectFence( + deviceId: String, + deviceServiceId: String, + name: String, + address: String, + imgurl: String, + isOn: Int, + fenceNameType: Int, + fenceType: Int, + fenceId: String, + longitudeA: Double, + latitudeA: Double, + longitudeB: Double, + latitudeB: Double, + longitudeC: Double, + latitudeC: Double, + longitudeD: Double, + latitudeD: Double, + longitudeCenter: Double, + latitudeCenter: Double, + longDistance: Int, + shortDistance: Int + ) = getResult { + service.updateRectFence( + deviceId, + deviceServiceId, + name, + address, + imgurl, + isOn, + 2, + fenceType, + fenceNameType, + fenceId, + longitudeA, + latitudeA, + longitudeB, + latitudeB, + longitudeC, + latitudeC, + longitudeD, + latitudeD, + longitudeCenter, + latitudeCenter, + longDistance, + shortDistance + ) + } + + /** + * æ›´æ–°å¤šè¾¹å½¢å›´æ  + */ + suspend fun updatePolygonFence(fencesBean: FencesBean) = getResult { + service.updatePolygonFence( + fencesBean.deviceId, fencesBean.deviceServiceId, + fencesBean.fenceId, + fencesBean.name, + fencesBean.address, + "", + fencesBean.isOn, + fencesBean.fenceType, + 3, + fencesBean.fenceNameType, + fencesBean.longitudeA, + fencesBean.latitudeA, + fencesBean.longitudeB, + fencesBean.latitudeB, + fencesBean.longitudeC, + fencesBean.latitudeC, + fencesBean.longitudeD, + fencesBean.latitudeD, + fencesBean.longitudeE, + fencesBean.latitudeE, + fencesBean.longitudeF, + fencesBean.latitudeF, + fencesBean.longitudeCenter, + fencesBean.latitudeCenter, + ) + } + + /** + * 获å–å›´æ åˆ—表 + */ + suspend fun getFenceList(deviceId: String) = getResult { + service.getFenceList(deviceId) + } + + /** + * ç§»é™¤å›´æ  + */ + suspend fun removeFence(fenceId: String, deviceServiceId: String) = getResult { + service.removeFence(fenceId, deviceServiceId) + } + + /** + * 获å–wifi区域列表 + */ + suspend fun getWifiZoneList(deviceId: String) = getResult { + service.getWifiZoneList(deviceId) + } + + /** + * 添加wifi区域 + */ + suspend fun addWifiZone( + deviceId: String, + wifiZoneName: String, + address: String, + wifiMac: String, + wifiName: String, + longitude: Double, + latitude: Double, + type: Int + ) = getResult { + service.addWifiZone( + deviceId, wifiZoneName, address, wifiMac, wifiName, longitude, latitude, type + ) + } + + /** + * æ›´æ–°wifi区域 + */ + suspend fun updateWifiZone( + wifiZoneId: String, + deviceId: String, + wifiZoneName: String, + address: String, + wifiMac: String, + wifiName: String, + longitude: Double, + latitude: Double, + type: Int + ) = getResult { + service.updateWifiZone( + wifiZoneId, + deviceId, + wifiZoneName, + address, + wifiMac, + wifiName, + longitude, + latitude, + type + ) + } + + /** + * 删除wifi区域 + */ + suspend fun removeWifiZone(wifiZoneId: String) = getResult { + service.removeWifiZone(wifiZoneId) + } + + + /** + * èŽ·å–æ‰€æœ‰çš„宠物列表 + */ + suspend fun getPetList(userId: String, type: Int) = getResult { + service.getPetList(userId, type) + } + + /** + * èŽ·å–æœªç»‘定的宠物列表 + */ + suspend fun getUnbindPetList(userId: String) = getResult { + service.getUnbindPetList(userId) + } + + /** + * 获å–首页宠物列表 + */ + suspend fun getHomeBindPetList(userId: String) = getResult { + service.getHomeBindPetList(userId) + } + + /** + * 获å–宠物标签 + */ + suspend fun getPetLabels() = getResult { + service.getPetLabels() + } + + /** + * 添加宠物 + */ + suspend fun addPet( + userId: String, + petName: String, + breed: String, + gender: Int, + petType: Int, + birthdayDate: String, + imgurl: String, + weight: Float, + height: Float, + labels: String + ) = getResult { + service.addPet( + userId, petName, breed, gender, petType, birthdayDate, imgurl, weight, height, labels + ) + } + + /** + * æ›´æ–°å® ç‰©ä¿¡æ¯ + */ + suspend fun updatePetInfo( + userId: String, + petName: String, + breed: String, + gender: Int, + petType: Int, + birthdayDate: String, + petId: String, + imgurl: String, + weight: Float, + height: Float, + labels: String + ) = getResult { + service.updatePetInfo( + userId, + petName, + breed, + gender, + petType, + birthdayDate, + petId, + imgurl, + weight, + height, + labels + ) + } + + /** + * 解绑宠物 + */ + suspend fun unbindPet(userId: String, deviceId: String, petId: String) = getResult { + service.unbindPet(userId, deviceId, petId) + } + + /** + * 绑定关è”宠物 + */ + suspend fun bindPet(userId: String, deviceId: String, petId: String) = getResult { + service.bindPet(userId, deviceId, petId) + } + + /** + * 获å–å® ç‰©ä¿¡æ¯ + */ + suspend fun getPetAllInfo(petId: String) = getResult { + service.getPetAllInfo(petId) + } + + /** + * 获å–å® ç‰©ä¿¡æ¯ + */ + suspend fun getPetInfo(petId: String) = getResult { + service.getPetInfo(petId) + } + + /** + * 获å–宠物活动统计 + */ + suspend fun getPetActivityDetailInfo(petId: String, deviceId: String) = getResult { + service.getPetActivityDetailInfo(petId, deviceId) + } + + /** + * 删除宠物 + */ + suspend fun deletePet(userId: String, petId: String) = getResult { + service.deletePet(userId, petId) + } + + /** + * 获å–设备家庭列表 + */ + suspend fun getFamilies(deviceId: String) = getResult { + service.getFamilies(deviceId) + } + + /** + * 获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + */ + suspend fun getDeviceInviteInfo(email: String) = getResult { + service.getDeviceInviteInfo(email) + } + + /** + * 设备邀请 + */ + suspend fun invite( + userId: String, + userName: String, + sendEmail: String, + deviceId: String, + acceptEmail: String, + relation: Int,//关系 1 Family 2 friend 3 love 4 colleague + avatar: Int,//å¤´åƒ 1 男生 2 女生 3 未知 + petId: String, + petName: String + ) = getResult { + service.invite( + userId, userName, sendEmail, deviceId, acceptEmail, relation, avatar, petId, petName + ) + } + + /** + * 设备邀请 + */ + suspend fun inviteCN(userId: String, userName: String, deviceId: String, phone: String) = + getResult { + service.inviteCN(userId, userName, deviceId, phone) + } + + /** + * 删除家庭账户 + */ + suspend fun removeFamily(familyId: String) = getResult { + service.removeFamily(familyId) + } + + /** + * 获å–首页Data模å—çš„è®¾å¤‡æ•°æ® + */ + suspend fun getDeviceData(deviceId: String, dayTime: String, petId: String) = getResult { + service.getDeviceData(deviceId, dayTime, petId) + } + + /** + * 获å–ActiveTimeæ•°æ® + */ + suspend fun getActiveTimeByDay(deviceId: String, dayTime: String, petId: String) = getResult { + service.getActiveTimeByDay(deviceId, dayTime, petId) + } + + /** + * 获å–SleepTimeæ•°æ® + */ + suspend fun getSleepTimeByDay(deviceId: String, dayTime: String, petId: String) = getResult { + service.getSleepTimeByDay(deviceId, dayTime, petId) + } + + /** + * 获å–HistoryByDayæ•°æ® + */ + suspend fun getHistoryByDay(deviceId: String, fromTime: Long, toTime: Long) = getResult { + service.getHistoryByDay(deviceId, fromTime, toTime) + } + + /** + * 设置è¿åŠ¨ç›®æ ‡ + */ + suspend fun setGoal(deviceId: String, goalTime: Int) = getResult { + service.setGoal(deviceId, goalTime) + } + + /** + * 获å–地图模å—çš„è®¾å¤‡æ•°æ® + */ + suspend fun getMapDeviceStatus(deviceId: String) = getResult { + service.getMapDeviceStatus(deviceId) + } + + /** + * 打开关闭直播 + */ + suspend fun setupDeviceLiveStatus(deviceId: String, liveState: Int) = getResult { + service.setupDeviceLiveStatus(deviceId, liveState, 0) + } + + /** + * 直播宠物轨迹 + */ + suspend fun getPetLivePoint(deviceId: String, timeStamp: Long) = getResult { + service.getPetLivePoint(deviceId, timeStamp) + } + + /** + * èŽ·å–æ‰€æœ‰è®¾å¤‡çš„e-simå¡ + */ + suspend fun getCards(userId: String) = getResult { + service.getCards(userId) + } + + /** + * 获å–设备的充值记录 + */ + suspend fun getRechargeHistory(deviceId: String) = getResult { + service.getRechargeHistory(deviceId) + } + + /** + * å–æ¶ˆè‡ªåŠ¨ç»­è´¹/自动订阅 + */ + suspend fun cancelSubscriptions(orderId: String, payType: Int, subscriptionId: String) = + getResult { + service.cancelSubscriptions(orderId, payType, subscriptionId) + } + + /** + * 自动续费,自动订阅 + */ + suspend fun subscription( + feePackage: String, + deviceId: String, + accountFee: String, + subscriptionFee: String, + period: String, + userId: String, + username: String + ) = getResult { + service.subscription( + feePackage, deviceId, accountFee, subscriptionFee, period, userId, username + ) + } + + /** + * 获å–套é¤åˆ—表 + */ + suspend fun getSetMealList() = getResult { + service.getSetMealList() + } + + /** + * 获å–订å•å· + */ + suspend fun getPaypalOrderNo( + mealName: String, description: String, totalCost: String, deviceId: String + ) = getResult { + service.getPaypalOrderNo(mealName, description, totalCost, deviceId) + } + + /** + * 信用å¡å‘起支付 + */ + suspend fun cardPayment( + mealName: String, + mealDays: Int, + totalCost: String, + paymentMethodNonce: String, + deviceId: String + ) = getResult { + service.cardPayment(mealName, mealDays, totalCost, paymentMethodNonce, deviceId) + } + + /** + * 信用å¡è‡ªåŠ¨è®¢é˜… + */ + suspend fun cardSubscription( + userId: String, + paymentMethodNonce: String, + firstName: String, + lastName: String, + username: String, + deviceId: String, + setMealBean: SetMealBean + ) = getResult { + service.cardSubscription( + userId, + paymentMethodNonce, + firstName, + lastName, + setMealBean.name, + deviceId, + setMealBean.accountFee, + setMealBean.period, + username, + setMealBean.planId + ) + } + + /** + * 更新订å•çŠ¶æ€ + * @param orderStatus:0待支付 1是支付æˆåŠŸ 2æ˜¯å–æ¶ˆæ”¯ä»˜/失败 + */ + suspend fun updateOrderStatus( + orderId: String, orderStatus: Int, deviceId: String, mealDays: Int + ) = getResult { + service.updateOrderStatus(orderId, orderStatus, deviceId, mealDays) + } + + /** + * 获å–braintree客户端令牌 + */ + suspend fun getBraintreeClientToken() = getResult { + service.getBraintreeClientToken() + } + + /** + * 关闭设备 + */ + suspend fun turnoff(deviceInfoId: String, turnOff: Int) = getResult { + service.turnoff(deviceInfoId, turnOff) + } + + /** + * è®¾ç½®è®¾å¤‡ä¸ŠæŠ¥ä¸‹å‘æ—¶é—´ + */ + suspend fun reportInterval(deviceInfoId: String, gnssInterval: Int) = getResult { + service.reportInterval(deviceInfoId, gnssInterval) + } + + /** + * 设置设备的直播时间 + */ + suspend fun setLiveTime(deviceId: String, liveTime: Int) = getResult { + service.setLiveTime(deviceId, liveTime) + } + + /** + * 设置ledSwitch开关 + */ + suspend fun setLedSwitch(deviceInfoId: String, ledSwitch: Int) = getResult { + service.setLedSwitch(deviceInfoId, ledSwitch) + } + + /** + * 设置lightç¯å…‰ + */ + suspend fun setLedLight( + deviceServerId: String, red: Int, green: Int, blue: Int, lightMode: Int, ledSwitch: Int + ) = getResult { + service.setLedLight(deviceServerId, red, green, blue, lightMode, ledSwitch) + } + + /** + * 获å–å›ºä»¶ä¿¡æ¯ + */ + suspend fun getFirmware(deviceName: String) = getResult { + service.getFirmware(deviceName) + } + + /** + * 获å–simå¡é¤åˆ—表 + */ + suspend fun getSimSetMealList( + iccId: String, partnerCode: String + ) = getResult { + service.getSimSetMealList(iccId, partnerCode) + } + + /** + * 获å–Stripeæ”¯ä»˜å‡­è¯ + */ + suspend fun getStripePayOrder( + amount: String, + userId: String, + feePackage: String, + deviceId: String, + username: String, + cost: String, + priceId: String, + partnerCode: String, + packageCode: String, + servicePlanCode: String, + orderPeriod: String, + servicePlanShowName: String, + deviceCode: String, + autoRenewal: String + ) = getResult { + service.getStripePayOrder( + amount, + userId, + feePackage, + deviceId, + username, + cost, + priceId, + partnerCode, + packageCode, + servicePlanCode, + orderPeriod, + servicePlanShowName, + deviceCode, + autoRenewal + ) + } + + /** + * Stripe支付创建消费用户 + */ + suspend fun createCustomer( + param: String, userId: String, userName: String, email: String + ) = getResult { + service.createCustomer(param, userId, userName, email) + } + + /** + * Stripe支付创建订阅 + */ + suspend fun createSubscription( + userId: String, + feePackage: String, + deviceId: String, + username: String, + cost: String, + priceId: String, + customerId: String, + amount: String, + partnerCode: String, + packageCode: String, + servicePlanCode: String, + orderPeriod: String, + servicePlanShowName: String, + deviceCode: String, + autoRenewal: String + ) = getResult { + service.createSubscription( + userId, + feePackage, + deviceId, + username, + cost, + priceId, + customerId, + amount, + partnerCode, + packageCode, + servicePlanCode, + orderPeriod, + servicePlanShowName, + deviceCode, + autoRenewal + ) + } + + /** + * Stripeæ”¯ä»˜å–æ¶ˆè®¢é˜… + */ + suspend fun cancelStripeSubscription( + orderId: String, subscriptionId: String, iccid: String + ) = getResult { + service.cancelStripeSubscription(orderId, subscriptionId, iccid) + } + + /** + * Stripe支付 Rsa算法解密测试 + */ + suspend fun rsaDecodeTest(encryptedData: String) = getResult { + service.rsaDecodeTest(encryptedData) + } + + /*******************************************以下是国内版本接å£***********************************/ + /** + * 微信登录 + */ + suspend fun wxLogin(code: String) = getResult { + service.wxLogin(code) + } + + /** + * 微信绑定 + */ + suspend fun wxBind(phone: String, verificationCode: String, wxId: String) = getResult { + service.wxBind(phone, verificationCode, wxId) + } + + /** + * å‘é€éªŒè¯ç  + */ + suspend fun sendCode(phone: String, type: Int) = getResult { + service.sendCode(phone, type) + } + + /** + * 手机å·éªŒè¯ç éªŒè¯ + */ + suspend fun validatePhoneCode(phone: String, code: String, type: Int) = getResult { + service.validatePhoneCode(phone, code, type) + } + + /** + * 验è¯ç ç™»å½• + */ + suspend fun phoneLogin(phone: String, verificationCode: String) = getResult { + service.phoneLogin(phone, verificationCode) + } + + /** + * è´¦å·å¯†ç ç™»å½• + */ + suspend fun accountPasswordLogin(phone: String, password: String) = getResult { + service.accountPasswordLogin(phone, password) + } + + /** + * 用户注册 + */ + suspend fun register(phone: String, password: String) = getResult { + service.register(phone, password) + } + + /** + * é‡ç½®å¯†ç  + */ + suspend fun resetNewPassword(phone: String, password: String) = getResult { + service.resetNewPassword(phone, password) + } + + /** + * 获å–微信Prepay_id + */ + suspend fun getWxPayOrder( + setMealBean: SetMealBean, deviceId: String, userId: String, username: String + ) = getResult { + service.getWxPayOrder( + setMealBean.name, deviceId, setMealBean.accountFee, setMealBean.period, userId, username + ) + } + + /** + * èŽ·å–æ”¯ä»˜å®æ”¯ä»˜è®¢å• + */ + suspend fun getAlipayOrder( + setMealBean: SetMealBean, deviceId: String, userId: String, username: String + ) = getResult { + service.getAlipayOrder( + setMealBean.name, deviceId, setMealBean.accountFee, setMealBean.period, userId, username + ) + } + + /** + * 获å–订阅订å•列表 + */ + suspend fun getSubscriptionsOrder(userId: String) = getResult { + service.getSubscriptionsOrder(userId) + } + + /** + * 获å–套é¤è®¡åˆ’类型 + */ + suspend fun getPackageType() = getResult { + service.getPackageType() + } + + /** + * 获å–套é¤åˆ—表 + */ + suspend fun getPackageList(planTypeName: String) = getResult { + service.getPackageList(planTypeName) + } + + /** + * 获å–设备充值得的历å²è®°å½• + */ + suspend fun getSubscriptionsHistory(userId: String, deviceId: String) = getResult { + service.getSubscriptionsHistory(userId, deviceId) + } + + /** + * 获å–设备充值得的历å²è®°å½• + */ + suspend fun commitRefund( + currency_code: String, + orderId: String, + chargeId: String, + amount: Int, + subscriptionId: String, + planName: String, + refundDescription: String, + deviceId: String, + deviceOutId: String, + payType: Int + ) = getResult { + service.commitRefund( + currency_code, + orderId, + chargeId, + amount, + subscriptionId, + planName, + refundDescription, + deviceId, + deviceOutId, + payType + ) + } + + /** + * 退款 + */ + suspend fun refund(orderNum: String) = getResult { + service.refund(orderNum) + } + + /** + * æ›´æ–°è®¢é˜…çŠ¶æ€ çŠ¶æ€ 0æ˜¯å–æ¶ˆ 1使其å˜ä¸ºæ­£å¸¸ + */ + suspend fun updateSubscriptionStatus(subscriptionId: String, status: Int) = getResult { + service.updateSubscriptionStatus(subscriptionId, status) + } + + /** + * 获å–SIMå¡é‡æ–°æ¿€æ´»è´¹ç”¨ + */ + suspend fun getReactivationFee(orderId: String) = getResult { + service.getReactivationFee(orderId) + } + + /** + * 创建Stripe订å•å‘起支付 + */ + suspend fun createStripeOrder(subscriptionsOrder: SubscriptionsOrderBean): Result { + subscriptionsOrder.apply { + if (isUpdateOrder == ConstantInt.Type0) { + orderNum = "" + subscriptionId = "" + } + return getResult { + service.createStripeOrder( + userId, + deviceId, + 1, + iccid, + deviceOutId, + username, + mealName, + mealDesc, + mealId, + mealPeriod, + mealPrice, + mealDiscountPrice, + mealUnit, + annualCareType, + annualCarePrice, + reactivation, + reactivatePrice, + totalAmountWithTax, + planCategory, + autoRenewPrice, + tax, + customerId, + orderNum, + isUpdateOrder, + subscriptionId + ) + } + } + } + + /** + * 创建Paypal订å•å‘起支付 + */ + suspend fun createPaypalOrder(subscriptionsOrder: SubscriptionsOrderBean): Result { + subscriptionsOrder.apply { + if (isUpdateOrder == ConstantInt.Type0) { + orderNum = "" + subscriptionId = "" + } + return getResult { + service.createPaypalOrder( + userId, + deviceId, + 2, + iccid, + deviceOutId, + username, + mealName, + mealDesc, + mealId, + mealPeriod, + mealPrice, + mealDiscountPrice, + mealUnit, + annualCareType, + annualCarePrice, + reactivation, + reactivatePrice, + totalAmountWithTax, + planCategory, + autoRenewPrice, + tax, + "", + orderNum, + isUpdateOrder, + subscriptionId + ) + } + } + } + + /** + * 获å–通知设置 + */ + suspend fun getNotificationSet(userId: String) = getResult { + service.getNotificationSet(userId) + } + + /** + * 消æ¯é€šçŸ¥è®¾ç½® + */ + suspend fun setNotification(userId: String, notificationType: Int, status: Int) = getResult { + service.setNotification(userId, notificationType, status) + } + + /** + * 设备日志上传 + */ + suspend fun uploadLog(file: MultipartBody.Part) = getResult { + service.uploadLog(file) + } + + /** + * 上传设备日志 + */ + suspend fun uploadDeviceLog( + deviceOutId: String, uploadTime: String, macID: String, logFileUrl: String + ) = getResult { + service.uploadDeviceLog(deviceOutId, uploadTime, macID, logFileUrl) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/service/DfuService.java b/app/src/main/java/com/abbidot/tracker/service/DfuService.java new file mode 100644 index 0000000..72cf737 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/service/DfuService.java @@ -0,0 +1,53 @@ +package com.abbidot.tracker.service; + +import android.app.Activity; + +import androidx.annotation.NonNull; +import androidx.core.app.NotificationCompat; + +import com.abbidot.tracker.BuildConfig; +import com.abbidot.tracker.ui.activity.NotificationActivity; + +import no.nordicsemi.android.dfu.DfuBaseService; + +public class DfuService extends DfuBaseService { + + @Override + protected Class getNotificationTarget() { + /* + * As a target activity the NotificationActivity is returned, not the MainActivity. This + * is because + * the notification must create a new task: + * + * intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + * + * when you press it. You can use NotificationActivity to check whether the new activity + * is a root activity (that means no other activity was open earlier) or that some + * other activity is already open. In the latter case the NotificationActivity will just be + * closed. The system will restore the previous activity. However, if the application has + * been + * closed during upload and you click the notification, a NotificationActivity will + * be launched as a root activity. It will create and start the main activity and + * terminate itself. + * + * This method may be used to restore the target activity in case the application + * was closed or is open. It may also be used to recreate an activity history using + * startActivities(...). + */ + return NotificationActivity.class; + } + + @Override + protected boolean isDebug() { + // Here return true if you want the service to print more logs in LogCat. + // Library's BuildConfig in current version of Android Studio is always set to + // DEBUG=false, so + // make sure you return true or your.app.BuildConfig.DEBUG here. + return BuildConfig.DEBUG; + } + + @Override + protected void updateForegroundNotification(@NonNull final NotificationCompat.Builder builder) { + // Customize the foreground service notification here. + } +} diff --git a/app/src/main/java/com/abbidot/tracker/service/MyJPushService.kt b/app/src/main/java/com/abbidot/tracker/service/MyJPushService.kt new file mode 100644 index 0000000..b6dff3d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/service/MyJPushService.kt @@ -0,0 +1,13 @@ +package com.abbidot.tracker.service + +import cn.jpush.android.service.JCommonService + +/** + *Created by .yzq on 2022/3/14/014. + * @link + * @description: + + +https://www.jiguang.cn/portal/#/dev/sdkIntegration/c968a96f76fc4f52e0f764ee/android?step=3&id=177378 + */ +class MyJPushService: JCommonService() {} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/DebugActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/DebugActivity.kt new file mode 100644 index 0000000..b054281 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/DebugActivity.kt @@ -0,0 +1,278 @@ +package com.abbidot.tracker.ui + +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.ChangePetListDialogAdapter +import com.abbidot.tracker.adapter.HowWorkAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.SleepTimeBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityDebugBinding +import com.abbidot.tracker.dialog.CommonListDialog +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataViewModel +import com.abbidot.tracker.vm.MapViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import com.qmuiteam.qmui.widget.QMUITopBar +import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView + +class DebugActivity : BaseActivity(ActivityDebugBinding::inflate), + ChangePetListDialogAdapter.OnChangeClickListener { + + private val mMapViewModel: MapViewModel by viewModels() + private val mTrackerManageSetViewModel: TrackerInfoViewModel by viewModels() + private val mDataViewModel: DataViewModel by viewModels() + + // private var mDeviceId = "620e5c999e8f470cb5bd75d3" +// private var mPet: PetBean? = null + + //å® ç‰©æ•°æ® + private var mPetList: MutableList? = null + + private lateinit var mMutableList: MutableList + private lateinit var mAdapter: HowWorkAdapter + private var mCommonListDialog: CommonListDialog? = null + private lateinit var mChangePetListDialogAdapter: ChangePetListDialogAdapter + + //弹窗选中的宠物下标 + private var mPetSelectPosition = 0 + + override fun getTopBar(): QMUITopBar = mViewBinding.qiNuoTestTopBar.titleTopBar + + override fun initData() { + super.initData() + +// mPet = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + mPetList = intent.getParcelableArrayListExtra(ConstantString.Pet) + mPetSelectPosition = intent.getIntExtra(ConstantString.Index, 0) + + setTopBarTitle("Debug") + mMutableList = mutableListOf() + + mAdapter = HowWorkAdapter(mContext, mMutableList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, mViewBinding.qiNuoTestRecyclerView, mAdapter, bottom = 20 + ) + + initQMUICommonListItemView(mViewBinding.switchBaseUrl) + initQMUICommonListItemView(mViewBinding.switchOnlyGoogleMap) + + LogUtil.e("${mPetList?.size}") + if (null == mPetList) { + return + } +// if (null == mPet) { +// return +// } + + mViewBinding.llDebugPet.setOnClickListener(this) + val rightTextButton = + mTopBar!!.addRightTextButton("刷新", R.id.topbar_right_change_textview) + rightTextButton.setOnClickListener(this) + + mChangePetListDialogAdapter = ChangePetListDialogAdapter(mContext, mPetList) + mChangePetListDialogAdapter.setSelectPetPos(mPetSelectPosition) + mChangePetListDialogAdapter.setOnChangeClickListener(this) + + setPetData() + mMapViewModel.getMapDeviceStatus(mPetList!![mPetSelectPosition].deviceId) + } + + private fun initQMUICommonListItemView(view: QMUICommonListItemView) { + when (view) { + mViewBinding.switchBaseUrl -> { + mViewBinding.switchBaseUrl.let { + it.text = "国内æœåС噍" + it.switch.isChecked = MMKVUtil.getBoolean(MMKVKey.DebugIp, true) + it.switch.setOnCheckedChangeListener { _, isChecked -> + MMKVUtil.putBoolean(MMKVKey.DebugIp, isChecked) + showToast("修改æˆåŠŸ,注销登录并é‡å¯APP生效") + } + } + } + + mViewBinding.switchOnlyGoogleMap -> { + mViewBinding.switchOnlyGoogleMap.let { + it.text = "åªå¯ç”¨è°·æ­Œåœ°å›¾" + it.switch.isChecked = MMKVUtil.getBoolean(MMKVKey.OnlyGoogleMap, false) + it.switch.setOnCheckedChangeListener { _, isChecked -> + MMKVUtil.putBoolean(MMKVKey.OnlyGoogleMap, isChecked) + showToast("修改æˆåŠŸ,é‡å¯APP生效") + } + } + } + } + } + + /** + * è®¾ç½®å® ç‰©å¤´åƒ åå­— + */ + private fun setPetData() { + val pet = mPetList!![mPetSelectPosition] + mViewBinding.debugPetName.text = pet.petName + ViewUtil.instance.setPetTypeHead( + mViewBinding.debugPetHead.appHeadImage, pet.imgurl, pet.petType + ) + + ViewUtil.instance.viewAlphaAndRotationObjectAnimator( + mViewBinding.debugPetHead.appHeadImage + ) + } + + override fun liveDataObserve() { + //获å–当å‰å® ç‰©ä½ç½®å’Œå›´æ ä¿¡æ¯ + mMapViewModel.mMapDeviceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mMutableList.clear() + mAdapter.notifyDataSetChanged() + val data = it.getOrNull() + data?.apply { + ViewUtil.instance.addMenuBean(mMutableList, "设备Mac地å€", data.deviceMacId) + ViewUtil.instance.addMenuBean( + mMutableList, "deviceServerId", data.deviceServerId + ) + var time = + Utils.formatTime(data.updateTime * 1000, Utils.DATE_FORMAT_PATTERN_CN2) + ViewUtil.instance.addMenuBean(mMutableList, "设备状æ€ä¸ŠæŠ¥æ—¶é—´", time) + time = Utils.formatTime( + data.latLonUpdateTime * 1000, Utils.DATE_FORMAT_PATTERN_CN2 + ) + ViewUtil.instance.addMenuBean(mMutableList, "ç»çº¬åº¦ä¸ŠæŠ¥æ—¶é—´", time) + ViewUtil.instance.addMenuBean( + mMutableList, "longitude", data.longitude.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "latitude", data.latitude.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "安全围æ ä¸­inSafeZone(0=是)", data.inSafeZone.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "å±é™©åŒºåŸŸä¸­inNoGoZone(0=ä¸åœ¨)", data.inNoGoZone.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "inWifiZone", data.inWifiZone.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "当å‰é€Ÿåº¦", data.speed.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "gpsä¿¡å·gnssSignal", data.gpsSignal.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "设备开关机状æ€(0å…³1å¼€2眠3电)", data.powerSwitch.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "电é‡batteryLevel", data.batteryLevel.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "设备led开关", data.ledSwitch.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "定ä½å‘¨æœŸgnssInterval", "${data.gnssInterval / 60}分钟" + ) + ViewUtil.instance.addMenuBean( + mMutableList, "ç›´æ’­æ—¶é—´liveTime", "${data.liveTime / 60}分钟" + ) + ViewUtil.instance.addMenuBean( + mMutableList, "ç›´æ’­liveFlag", data.liveFlag.toString() + ) + ViewUtil.instance.addMenuBean( + mMutableList, "LTE网络信å·", "${data.lteSignal}" + ) + + mTrackerManageSetViewModel.getDeviceDetail( + this@DebugActivity, mPetList!![mPetSelectPosition].deviceId + ) + } + } + }) + } + + + mTrackerManageSetViewModel.mDeviceDetailLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!!.deviceInfo + data?.let { + ViewUtil.instance.addMenuBean(mMutableList, "red", data.red.toString()) + ViewUtil.instance.addMenuBean(mMutableList, "green", data.green.toString()) + ViewUtil.instance.addMenuBean(mMutableList, "blue", data.blue.toString()) +// ViewUtil.instance.addMenuBean( +// mMutableList, "设备开关机", data.turnOff.toString() +// ) + ViewUtil.instance.addMenuBean( + mMutableList, "LEDç¯å…‰æ¨¡å¼lightMode", data.lightMode.toString() + ) + } + val today = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) + //è¯·æ±‚è¯¥è®¾å¤‡å® ç‰©çš„æ•°æ® + mDataViewModel.getHomeDeviceData( + mPetList!![mPetSelectPosition].deviceId, + today, + mPetList!![mPetSelectPosition].petId + ) + } + }) + } + + //获å–首页Data模å—çš„è®¾å¤‡æ•°æ® + mDataViewModel.mHomeDataLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + val activeTime = data.activeTime + val sleepTime = data.sleepTime + setHomeData(activeTime!!, sleepTime!!) + } + }) + } + } + + private fun setHomeData(activeTimeBean: ActiveTimeBean, sleepTimeBean: SleepTimeBean) { + ViewUtil.instance.addMenuBean( + mMutableList, "ç¡çœ å’Œè¿åŠ¨æ•°æ®", "日期:${activeTimeBean.dayTime}" + ) + ViewUtil.instance.addMenuBean(mMutableList, "步数", "${activeTimeBean.steps}") + ViewUtil.instance.addMenuBean(mMutableList, "è¿åŠ¨æ€»æ—¶é—´", "${activeTimeBean.activeTime}ç§’") + ViewUtil.instance.addMenuBean(mMutableList, "è¿åŠ¨æ•°æ®", activeTimeBean.activeValue) + ViewUtil.instance.addMenuBean(mMutableList, "ç¡çœ æ€»æ—¶é—´", "${sleepTimeBean.sleepTime}ç§’") + ViewUtil.instance.addMenuBean(mMutableList, "ç¡çœ æ•°æ®", sleepTimeBean.sleepValue) + mAdapter.setData(mMutableList, true) + } + + //列表弹窗点击事件回调 + override fun onCurrentClick() { + mCommonListDialog!!.dismiss() + } + + override fun onChangeClick(position: Int) { + mCommonListDialog!!.dismiss() + mPetSelectPosition = position + setPetData() + mMapViewModel.getMapDeviceStatus(mPetList!![mPetSelectPosition].deviceId) + } + + override fun onClick(v: View?) { + when (v?.id) { + R.id.topbar_right_change_textview -> mMapViewModel.getMapDeviceStatus(mPetList!![mPetSelectPosition].deviceId) + R.id.ll_debug_pet -> { + if (null == mCommonListDialog) { + mCommonListDialog = + CommonListDialog(mContext, mChangePetListDialogAdapter, 18, 0, 18) + } + mCommonListDialog!!.show() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt new file mode 100644 index 0000000..3b2751c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt @@ -0,0 +1,580 @@ +package com.abbidot.tracker.ui.activity + +import android.bluetooth.BluetoothAdapter +import android.content.Intent +import android.content.IntentFilter +import android.text.TextUtils +import android.view.MenuItem +import android.view.View +import androidx.activity.viewModels +import androidx.core.view.get +import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope +import androidx.viewpager2.widget.ViewPager2 +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.ChangePetListDialogAdapter +import com.abbidot.tracker.adapter.ViewPagerAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityHomeV2Binding +import com.abbidot.tracker.dialog.CommonDialog2 +import com.abbidot.tracker.dialog.CommonListDialog +import com.abbidot.tracker.receiver.BluetoothMonitorReceiver +import com.abbidot.tracker.ui.DebugActivity +import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity +import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity +import com.abbidot.tracker.ui.fragment.account.AccountV2Fragment +import com.abbidot.tracker.ui.fragment.data.ActivityV2Fragment +import com.abbidot.tracker.ui.fragment.data.RouteV2Fragment +import com.abbidot.tracker.ui.fragment.map.MapV2Fragment +import com.abbidot.tracker.ui.fragment.pet.PetV2Fragment +import com.abbidot.tracker.util.BleReportManage +import com.abbidot.tracker.util.SocketUtilManage +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.DataViewModel +import com.abbidot.tracker.vm.LogBleReportViewModel +import com.abbidot.tracker.vm.SocketSendMessageViewModel +import com.abbidot.tracker.vm.SubscriptionManageViewModel +import com.clj.fastble.BleManager +import com.google.android.material.navigation.NavigationBarView +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists +import com.huantansheng.easyphotos.EasyPhotos +import com.qmuiteam.qmui.widget.QMUITopBar +import com.tencent.bugly.crashreport.CrashReport +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +/** + * v2版主页 + */ +@AndroidEntryPoint +class HomeV2Activity : BaseActivity(ActivityHomeV2Binding::inflate), + NavigationBarView.OnItemSelectedListener, ChangePetListDialogAdapter.OnChangeClickListener { + + val mDataViewModel: DataViewModel by viewModels() + private val mAutomaticConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + private val mLogBleReportViewModel: LogBleReportViewModel by viewModels() + private val mSocketSendMessageViewModel: SocketSendMessageViewModel by viewModels() + + private var mChangePetDialog: CommonListDialog? = null + + private lateinit var mChangePetListDialogAdapter: ChangePetListDialogAdapter + + //弹窗选中的宠物下标 + var mSelectPetPosition = 0 + + //å® ç‰©æ•°æ® + lateinit var mPetList: MutableList + private var isFirst = true + + //是å¦è¯·æ±‚è¿‡å® ç‰©æ•°æ® + var isRequestPetData = false + + private val mFragments = mutableListOf( + ActivityV2Fragment.newInstance(this), + RouteV2Fragment.newInstance(this), + MapV2Fragment.newInstance(this), + PetV2Fragment.newInstance(this), + AccountV2Fragment.newInstance(this) + ) + private var mBleListenerReceiver: BluetoothMonitorReceiver? = null + + private var mSocketUtilManage: SocketUtilManage? = null + private val mBleReportManage: BleReportManage by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + mSocketUtilManage = SocketUtilManage() + mSocketUtilManage?.initEasySocket(mContext) + BleReportManage(mSocketSendMessageViewModel, mSocketUtilManage!!) + } + + override fun getTopBar(): QMUITopBar? = null + + override fun initData() { + isEdgeToEdgeAdapterNavigationBars = false + super.initData() + setStatusBarLight() + + mSelectPetPosition = MMKVUtil.getInt(MMKVKey.PetSelectPosition) + + mViewBinding.homeV2ViewPager2.let { + it.adapter = ViewPagerAdapter(mFragments, this).apply { + saveState() + } + ViewUtil.instance.setViewPager2Config(it, object : ViewPager2.OnPageChangeCallback() { + override fun onPageScrolled( + position: Int, positionOffset: Float, positionOffsetPixels: Int + ) { + super.onPageScrolled(position, positionOffset, positionOffsetPixels) + val menuItem = mViewBinding.homeV2BottomTabLayout.menu[position] + menuItem.isChecked = true + } + }, 1) + + edgeToEdgeAdapterBars(it) + } + + mViewBinding.homeV2BottomTabLayout.let { + // ä¸ä½¿ç”¨å›¾æ ‡é»˜è®¤å˜è‰² + it.itemIconTintList = null + it.setOnItemSelectedListener(this) + } + + mPetList = mutableListOf() + mChangePetListDialogAdapter = ChangePetListDialogAdapter(mContext, mPetList).apply { + setOnChangeClickListener(this@HomeV2Activity) + } + + //smoothScroll设为false,䏿˜¾ç¤ºåŠ¨ç”»ï¼Œå…³é—­é¢„åŠ è½½? true显示过渡动画 + mViewBinding.homeV2ViewPager2.setCurrentItem(2, false) + setLineShow(2) + + //注册监å¬è“牙开关广播 + mBleListenerReceiver = BluetoothMonitorReceiver() + val intentFilter = IntentFilter() + intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED) + // 注册广播 + registerReceiver(mBleListenerReceiver, intentFilter) + + checkPermissions() + + mDataViewModel.getHomeBindPetList(this) + + //设置bugly的用户id + CrashReport.setUserId(MMKVUtil.getString(MMKVKey.Email)) + + //自动é‡å¯APP +// val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName) +// //与正常页é¢è·³è½¬ä¸€æ ·å¯ä¼ é€’åºåˆ—化数æ®,在Launch页é¢å†…获得 +// intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) +// intent.putExtra("REBOOT", "reboot") +// startActivity(intent) + + //预先加载相册,防止上传头åƒå‡ åƒå¼ ç…§ç‰‡åŠ è½½æ…¢ + XXPermissions.with(this).permission(PermissionLists.getReadMediaImagesPermission()) + .request { _, allGranted -> + if (allGranted) { + EasyPhotos.preLoad(this) +// { +// runOnUiThread { +// showToast("相册加载完æˆ") +// } +// } + } + } + } + + override fun liveDataObserve() { + + /* + Dispatchers.IO 在Android中主è¦ç”¨äºŽæ‰§è¡Œè¾“入输出æ“作,如文件读写和网络请求 + Dispatchers.Main‌:适用于处ç†ä¸ŽUI相关的æ“作,如更新UI界é¢ã€å“应用户输入等。 + Dispatchers.Default‌:适用于执行CPUå¯†é›†åž‹ä»»åŠ¡ï¼Œå¦‚ç®—æ³•è®¡ç®—ã€æ•°æ®å¤„ç†ç­‰ + Dispatchers.Unconfined‌:ä¸å¯¹å程的执行环境åšä»»ä½•é™åˆ¶ï¼Œå程将在调用它的线程中执行,直到é‡åˆ°æŒ‚起函数为止,之åŽä¼šåœ¨æ¢å¤æ‰§è¡Œæ—¶ç»§ç»­åœ¨ä¹‹å‰çš„线程中执行‌ + */ + + //退出登录 + XEventBus.observe(this, EventName.LogOut) { + finish() + } + //ä¿®æ”¹å¯†ç æˆåŠŸè¿”å›ž + XEventBus.observe(this, EventName.ChangePassword) { + finish() + } + //接收开è“牙æ“作,ç„¶åŽæœç´¢è¿žæŽ¥è®¾å¤‡ + XEventBus.observe(this, EventName.BluetoothSwitch) { conState: Int -> + if (conState == ConState.BLUETOOTH_ON) { +// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext) + autoConnectDevice() + } + } + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + getPet(false)?.apply { + //è“牙连接断开上传日志 + if (ble.mac == macID && ble.conState == ConState.DISCONNECTED) { + mLogBleReportViewModel.uploadLog(mContext, macID) + } + } + } + //æ›´æ–°å¥—é¤æ•°æ® + XEventBus.observe(this, EventName.RefreshPackage) { + mDataViewModel.getHomeBindPetList(this) + } + //更新宠物信æ¯,添加/编辑宠物 + XEventBus.observe(this, EventName.RefreshPet) { + mDataViewModel.getHomeBindPetList(this) + } + //删除宠物 + XEventBus.observe(this, EventName.DeletePet) { + mSelectPetPosition = 0 + mDataViewModel.getHomeBindPetList(this) + } + //删除设备 + XEventBus.observe(this, EventName.DeleteDevice) { + mSelectPetPosition = 0 + mDataViewModel.getHomeBindPetList(this) + } + //获å–è“ç‰™ä¸ŠæŠ¥æ•°æ® + XEventBus.observe(this, EventName.BleReport) { receiveData: ReceiveDeviceData -> + lifecycleScope.launch(Dispatchers.IO) { + getPet(false)?.apply { + if (macID == receiveData.mac) { + mBleReportManage.dealBleReportData(receiveData.mac, receiveData.data) + } + } + } + } + //èŽ·å–æ—¥å¿—ä¸ŠæŠ¥æ•°æ® + XEventBus.observe(this, EventName.LogReport) { receiveData: ReceiveDeviceData -> + getPet(false)?.apply { + if (macID == receiveData.mac) { + mLogBleReportViewModel.dealLogReportData(mContext, receiveData) + } + } + } + + //è“牙上报的设备日志 + mLogBleReportViewModel.apply { + mUploadLogLiveData.observe(this@HomeV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { data -> + getPet(false)?.let { pet -> + val time = Utils.formatTime( + System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_CN2 + ) + uploadDeviceLog(pet.deviceOutId, time, pet.macID, data) + } + } + } + }) + } + mUploadDeviceLogLiveData.observe(this@HomeV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { +// Toaster.show("日志上传æˆåŠŸ") + LogUtil.e("日志上传æˆåŠŸ") + } + }) + } + } + //èŽ·å–æ‰€æœ‰å® ç‰©æ•°æ® + mDataViewModel.mHomePetLiveData.observe(this) { + dealRequestResult( + it, + object : GetResultCallback { + override fun onResult(any: Any) { + LogUtil.e("HomeV2Activity------>>èŽ·å–æ‰€æœ‰ç»‘定宠物数æ®") + isRequestPetData = true + mPetList.clear() + mChangePetListDialogAdapter.setData(null) + it.getOrNull()?.apply { + setPetData(this) + } + } + + override fun onRequestError(exceptionCode: String?) { + LogUtil.e("HomeV2Activity------->请求宠物数æ®é”™è¯¯onRequestErrorï¼Œå†æ¬¡è¯·æ±‚") + if (exceptionCode == mNetworkRequestsFailLimit) { + } else { + mDataViewModel.getHomeBindPetList(this@HomeV2Activity) + } + } + }, + isShowNoDataTip = false, + isShowRequestErrorTip = mNetworkRequestsFailRetryCount == mNetworkRequestsFailMaxCount + ) + } + } + + /** + * 套é¤è¿‡æœŸæŸ¥è¯¢è®¢å•回调,防止和å‡çº§å¥—餿Ÿ¥è¯¢å¥—é¤å›žè°ƒå†²çª + */ + private fun packageExpiresObserve() { + mSubscriptionViewModel.mSubscriptionsOrderLiveData.observe(this@HomeV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + val pet = mPetList[mSelectPetPosition] + for (l in list) { + if (l.deviceId == pet.deviceId) { + Intent( + mContext, SubscriptionPlanActivity::class.java + ).let { i -> + i.putExtra(ConstantString.LkSetMeal, l) + startActivity(i) + } + break + } + } + } + } + }) + mSubscriptionViewModel.mSubscriptionsOrderLiveData.removeObservers(this@HomeV2Activity) + } + } + + private fun setPetData(petList: MutableList) { + mPetList.addAll(petList) + if (mSelectPetPosition > mPetList.size - 1) { + mSelectPetPosition = 0 + } + if (petList.isEmpty()) { + noSharePet() + return + } + mChangePetListDialogAdapter.apply { + setData(mPetList, true) + if (isFirst) { + isFirst = false + setSelectPetPos(mSelectPetPosition) + //åˆ¤æ–­å¥—é¤æœ‰æ²¡æœ‰åˆ°æœŸ + packageUnavailableState() + getPet(false)?.apply { + mLogBleReportViewModel.uploadLog(mContext, macID) + } + } else { + onChangeClick(mSelectPetPosition) + when (mViewBinding.homeV2ViewPager2.currentItem) { + 0 -> { + (mFragments[1] as RouteV2Fragment).setNeedUpdateTag() + (mFragments[3] as PetV2Fragment).setNeedUpdateTag() + } + + 1 -> { + (mFragments[0] as ActivityV2Fragment).setNeedUpdateTag() + (mFragments[3] as PetV2Fragment).setNeedUpdateTag() + } + + 2, 4 -> { + (mFragments[0] as ActivityV2Fragment).setNeedUpdateTag() + (mFragments[1] as RouteV2Fragment).setNeedUpdateTag() + (mFragments[3] as PetV2Fragment).setNeedUpdateTag() + } + + 3 -> { + (mFragments[0] as ActivityV2Fragment).setNeedUpdateTag() + (mFragments[1] as RouteV2Fragment).setNeedUpdateTag() + } + } + } + (mFragments[2] as MapV2Fragment).showPetNameAndHead(mSelectPetPosition) + } + } + + /** + * 套é¤ä¸å¯ç”¨çŠ¶æ€ + */ + private fun packageUnavailableState() { + autoConnectDevice() + getPet(false)?.apply { + //åˆ¤æ–­å¥—é¤æœ‰æ²¡æœ‰åˆ°æœŸ + if (shared == ConstantInt.NoShare && availableOrder == ConstantInt.Type0) { + CommonDialog2( + mContext, + getString(R.string.txt_subscription_expired), + getString(R.string.txt_card_recharge), + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + packageExpiresObserve() + mSubscriptionViewModel.getSubscriptionsOrder() + } + }).show() + } + } + } + + /** + * 处ç†å¤šä¸ªæ‰‹æœºç™»å½•(特别是获å–设备邀请信æ¯)。没有绑定的宠物情况 + */ + fun noSharePet() { + MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.Type0) + MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.Type0) + val intent = Intent(mContext, AddNewTracker1Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, true) + startActivityFinish(intent) + } + + /** + * 检查获å–定ä½è“牙æƒé™ + */ + private fun checkPermissions() { + Util.checkBluetoothPermissionsEnabled(mContext, { +// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext) + }) + } + + /** + * 选择宠物弹窗 + */ + fun selectPetDialog() { + if (isRequestPetData && mPetList.size == 0) { + showToast(R.string.no_bind_pet) + return + } + if (null == mChangePetDialog) { + mChangePetDialog = CommonListDialog(mContext, mChangePetListDialogAdapter, 18, 0, 18) + } + mChangePetDialog?.show() + } + + fun getPet(showNoPetTip: Boolean = true): PetBean? { + return if (mPetList.size > 0) mPetList[mSelectPetPosition] + else { + if (isRequestPetData && showNoPetTip) showToast(R.string.no_bind_pet) + null + } + } + + /** + * 跳转debugè°ƒè¯•é¡µé¢ + */ + fun goToDebugActivity() { + val intent = Intent(mContext, DebugActivity::class.java) + if (mPetList.size > mSelectPetPosition) { + intent.putParcelableArrayListExtra( + ConstantString.Pet, mPetList as ArrayList + ) + intent.putExtra(ConstantString.Index, mSelectPetPosition) + } + startActivity(intent) + } + + + override fun onCurrentClick() { + mChangePetDialog?.dismiss() + } + + override fun onChangeClick(position: Int) { + if (mPetList.size == 0) return + mChangePetDialog?.dismiss() + mSelectPetPosition = position + mChangePetListDialogAdapter.setSelectPetPos(mSelectPetPosition) + //åˆ¤æ–­å¥—é¤æœ‰æ²¡æœ‰åˆ°æœŸ + packageUnavailableState() + when (mViewBinding.homeV2ViewPager2.currentItem) { + 0 -> (mFragments[0] as ActivityV2Fragment).showPetNameAndHead(position) + 1 -> (mFragments[1] as RouteV2Fragment).showPetNameAndHead(position) + 2 -> (mFragments[2] as MapV2Fragment).showPetNameAndHead(position) + 3 -> (mFragments[3] as PetV2Fragment).showPetNameAndHead(position) + } + } + + override fun onNavigationItemSelected(item: MenuItem): Boolean { + if (!AppUtils.isDarkThemeEnabled(mContext)) setStatusBarLight() + else setStatusBarDark() + return when (item.itemId) { + R.id.tab_menu_activity_v2 -> { + mViewBinding.homeV2ViewPager2.currentItem = 0 + setLineShow(0) + true + } + + R.id.tab_home_route_v2 -> { + mViewBinding.homeV2ViewPager2.currentItem = 1 + setLineShow(1) + true + } + + R.id.tab_home_map_v2 -> { + setStatusBarLight() + mViewBinding.homeV2ViewPager2.currentItem = 2 + setLineShow(2) + true + } + + R.id.tab_home_pet_v2 -> { + mViewBinding.homeV2ViewPager2.currentItem = 3 + setLineShow(3) + true + } + + R.id.tab_home_account_v2 -> { + mViewBinding.homeV2ViewPager2.currentItem = 4 + setLineShow(4) + true + } + + else -> false + } + } + + private fun setLineShow(which: Int) { + mViewBinding.homeActivityV2Line.visibility = View.INVISIBLE + mViewBinding.homeRouteV2Line.visibility = View.INVISIBLE + mViewBinding.homeMapV2Line.visibility = View.INVISIBLE + mViewBinding.homePetV2Line.visibility = View.INVISIBLE + mViewBinding.homeAccountV2Line.visibility = View.INVISIBLE + when (which) { + 0 -> mViewBinding.homeActivityV2Line.visibility = View.VISIBLE + 1 -> mViewBinding.homeRouteV2Line.visibility = View.VISIBLE + 2 -> mViewBinding.homeMapV2Line.visibility = View.VISIBLE + 3 -> mViewBinding.homePetV2Line.visibility = View.VISIBLE + 4 -> mViewBinding.homeAccountV2Line.visibility = View.VISIBLE + } + } + + /** + * 自动连接设备 + */ + private fun autoConnectDevice() { + getPet(false)?.apply { + if (TextUtils.isEmpty(macID)) return@apply + if (SRBleUtil.instance.isBlueEnable(mContext)) { + if (BleManager.getInstance().isConnected(macID)) { + SRBleUtil.instance.cancelBleScan("å·²è¿žæŽ¥è®¾å¤‡ï¼Œå–æ¶ˆå…¶ä»–连接扫æ") + val bleTrack = SRBleUtil.instance.getConnectMacDevice(macID) + XEventBus.post(EventName.ConnectDeviceState, bleTrack) + } else { + mAutomaticConnectionDeviceViewModel.connectDeviceToMac( + this@HomeV2Activity, macID, false + ) + } + } + } + } + + private var mTempTime = 0L + override fun listenBackPressed() { + // 2s内冿¬¡é€‰æ‹©back键有效 + if (System.currentTimeMillis() - mTempTime > 2000) { + showToast(R.string.txt_exit_return) + mTempTime = System.currentTimeMillis() + } else { + finish() + System.gc() + } + } + + override fun onDestroy() { + super.onDestroy() + LogUtil.e("HomeV2Activity---------------onDestroy") + mSocketUtilManage?.destroy() + mBleListenerReceiver?.let { + unregisterReceiver(it) + } + BleManager.getInstance().apply { + disconnectAllDevice() + destroy() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/MyCropImageActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/MyCropImageActivity.kt new file mode 100644 index 0000000..cac41eb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/MyCropImageActivity.kt @@ -0,0 +1,135 @@ +package com.abbidot.tracker.ui.activity + +import android.content.Intent +import android.net.Uri +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityMyCropImageBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.canhub.cropper.CropImage +import com.canhub.cropper.CropImageView +import com.huantansheng.easyphotos.models.album.entity.Photo + +/** + * è£å‰ªå›¾ç‰‡ + */ +class MyCropImageActivity : + BaseActivity(ActivityMyCropImageBinding::inflate), + CropImageView.OnCropImageCompleteListener, CropImageView.OnSetImageUriCompleteListener { + + private val mTag = "è£å‰ªå›¾ç‰‡" + + override fun getTopBar() = mViewBinding.photoCropImageBar.titleTopBar + + override fun initData() { + super.initData() + initStatus() + + var aspectRatioX = 1 + var aspectRatioY = 1 + var photo: Photo? = null + intent.extras?.apply { + aspectRatioX = getInt(ConstantString.Type, 1) + aspectRatioY = getInt(ConstantString.Index, 1) + photo = Util.getParcelableAdaptive(intent, ConstantString.Photo, Photo::class.java) + } + + if (null == photo) { + LogUtil.e(mTag, "null == photo") + } else { + mViewBinding.photoCropImageView.apply { + setImageUriAsync(photo!!.uri) + //最å°è£å‰ªæ¡†å¤§å° +// setMinCropResultSize(10000, 10000) + //è£å‰ªçš„图片宽高比 + setAspectRatio(aspectRatioX, aspectRatioY) + setOnCropImageCompleteListener(this@MyCropImageActivity) + setOnSetImageUriCompleteListener(this@MyCropImageActivity) + } + } + } + + private fun initStatus() { + setTopBarTitle(R.string.txt_crop) + mViewBinding.root.setBackgroundResource(R.color.crop_photos_status_bar) + mTopBar?.titleView?.setTextColor(ContextCompat.getColor(mContext, R.color.white)) + setStatusBarDark() + //è®¾ç½®æ²‰æµ¸çŠ¶æ€æ é¢œè‰² +// mViewBinding.photoCropImageBar.titleTopBarLayout.setBackgroundResource( +// R.color.crop_photos_status_bar +// ) + setLeftBackImage(R.drawable.ico_cancel_detail) + + val rightTextButton = + mTopBar!!.addRightTextButton(R.string.txt_sure, R.id.topbar_right_change_textview) + rightTextButton.apply { + setTextColor(ContextCompat.getColor(mContext, R.color.crop_images_fg_accent)) + background = + ContextCompat.getDrawable(mContext, R.drawable.selector_transparent_pressed) + val tf = ViewUtil.instance.setTypeface(mContext, getString(R.string.roboto_bold_font)) + typeface = tf + setOnClickListener { + mViewBinding.photoCropImageView.croppedImageAsync() + } + } + } + + override fun onCropImageComplete(view: CropImageView, result: CropImageView.CropResult) { + if (result.isSuccessful) { + val uriContent = result.uriContent + //uniqueName=trueæ¯ä¸ªè¢«è£å‰ªçš„å›¾åƒæœ‰ä¸€ä¸ªä¸åŒçš„æ–‡ä»¶å,falseå§‹ç»ˆåªæœ‰ä¸€ä¸ªæ–‡ä»¶å,节çœå†…å­˜ + val uriFilePath = result.getUriFilePath(mContext, false) + LogUtil.d(mTag, "æˆåŠŸ----------->$uriContent\n$uriFilePath") + } else { + val exception = result.error + LogUtil.e(mTag, "error:${exception?.message}") + showToast(exception?.message.toString()) + } + + setResult(result.uriContent, result.error, result.sampleSize) + } + + + private fun setResult(uri: Uri?, error: Exception?, sampleSize: Int) { + setResult(error?.let { CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE } ?: RESULT_OK, + getResultIntent(uri, error, sampleSize)) + finish() + } + + /** + * Get intent instance to be used for the result of this activity. + */ + private fun getResultIntent(uri: Uri?, error: Exception?, sampleSize: Int): Intent { + val cropImageView = mViewBinding.photoCropImageView + val result = CropImage.ActivityResult( + cropImageView.imageUri, + uri, + error, + cropImageView.cropPoints, + cropImageView.cropRect, + cropImageView.rotatedDegrees ?: 0, + cropImageView.wholeImageRect, + sampleSize + ) + val intent = Intent() + intent.putExtras(getIntent()) + intent.putExtra(CropImage.CROP_IMAGE_EXTRA_RESULT, result) + return intent + } + + override fun onSetImageUriComplete(view: CropImageView, uri: Uri, error: Exception?) { + if (null != error) { + LogUtil.e(mTag, "加载原图uri错误,Failed to load image by URI, ------>${error.message}") + } + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.photoCropImageView.setOnCropImageCompleteListener(null) + mViewBinding.photoCropImageView.setOnSetImageUriCompleteListener(null) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/NotificationActivity.java b/app/src/main/java/com/abbidot/tracker/ui/activity/NotificationActivity.java new file mode 100644 index 0000000..1f4c9cf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/NotificationActivity.java @@ -0,0 +1,33 @@ +package com.abbidot.tracker.ui.activity; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; + +import androidx.annotation.Nullable; + +import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity; + + +/** + * Dfu通知Activity + */ +public class NotificationActivity extends Activity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // If this activity is the root activity of the task, the app is not running + if (isTaskRoot()) { + // Start the app before finishing + final Intent intent = new Intent(this, MyTrackerV2Activity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtras(getIntent().getExtras()); // copy all extras + startActivity(intent); + } + + // Now finish, which will drop you to the activity at which you were at the top of the task stack + finish(); + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/SayHelloActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/SayHelloActivity.kt new file mode 100644 index 0000000..4aa2f7d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/SayHelloActivity.kt @@ -0,0 +1,52 @@ +package com.abbidot.tracker.ui.activity + +import android.content.Intent +import android.view.View +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivitySayHelloBinding +import com.abbidot.tracker.ui.activity.account.CreateAccountV2Activity +import com.abbidot.tracker.ui.activity.account.LoginV2Activity + +class SayHelloActivity : BaseActivity(ActivitySayHelloBinding::inflate) { + + override fun getTopBar() = null + + override fun initData() { + super.initData() + + mViewBinding.apply { + root.setBackgroundResource(R.drawable.icon_say_hi_bg) + setOnClickListenerViews(btnSayHelloLogin, btnSayHelloSignup) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.FinishActivity) { + finish() + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSayHelloLogin -> { + val intent = Intent(mContext, LoginV2Activity::class.java) + val email = MMKVUtil.getString(MMKVKey.Email) + intent.putExtra(MMKVKey.Email, email) + startActivity(intent) + } + + btnSayHelloSignup -> startActivity( + Intent( + mContext, CreateAccountV2Activity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/SplashActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/SplashActivity.kt new file mode 100644 index 0000000..2e52c01 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/SplashActivity.kt @@ -0,0 +1,264 @@ +package com.abbidot.tracker.ui.activity + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.annotation.SuppressLint +import android.app.NotificationManager +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Bundle +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import cn.jpush.android.api.JPushInterface +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.KeyNames +import com.abbidot.tracker.databinding.ActivitySplashBinding +import com.abbidot.tracker.dialog.PrivacyPolicyDialog +import com.abbidot.tracker.retrofit2.INetworkService +import com.abbidot.tracker.util.ThirdPartyUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.CountDownTimerViewModel +import com.baidu.mapapi.CoordType +import com.baidu.mapapi.SDKInitializer +import com.hjq.toast.Toaster +import com.qmuiteam.qmui.arch.QMUIActivity +import com.stripe.android.PaymentConfiguration +import com.tencent.bugly.crashreport.CrashReport +import com.tencent.mm.opensdk.constants.ConstantsAPI +import com.tencent.mm.opensdk.openapi.IWXAPI +import java.util.* + + +/** + * å…¥å£ï¼Œå¯åЍ页 + * + *适é…ä¸åŒAndroid版本的å¯åŠ¨åŠ¨ç”»,Android 12强制有å¯åŠ¨å›¾ç‰‡ https://www.yii666.com/blog/282005.html + * æ–°çš„ActivityResultContract替æ¢onActivityResult https://www.jianshu.com/p/da4c0e87d8b4 + * + */ +class SplashActivity : QMUIActivity() { + + private lateinit var mContext: Context + + private lateinit var mViewBinding: ActivitySplashBinding + + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + + // IWXAPI 是第三方 app 和微信通信的 openApi æŽ¥å£ + private lateinit var mApi: IWXAPI + + //微信å¯åŠ¨å¹¿æ’­ + private var mWXAppBroadcastReceiver: BroadcastReceiver? = null + + @SuppressLint("WrongThread") + override fun onCreate(savedInstanceState: Bundle?) { + installSplashScreen() + super.onCreate(savedInstanceState) + //ç¦ç”¨å±å¹•旋转 代ç è®¾ç½®æ— æ•ˆ +// requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT + mViewBinding = ActivitySplashBinding.inflate(layoutInflater) + setContentView(mViewBinding.root) + + mContext = this + + //清除角标数字 + JPushInterface.setBadgeNumber(mContext, 0) + val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager + // 清除所有通知,角标数字 + notificationManager.cancelAll() + + Utils.SECRET_KEY = Util.getMetadata(applicationContext, KeyNames.HTTP_REQUEST_KEY) + INetworkService.apply { + //国内外æœåŠ¡å™¨åˆ‡æ¢åŸŸå + BASE_URL = if (AppUtils.isChina()) { + BASE_URL_CN + } else { + BASE_URL_ABROAD + } + } + + SRBleUtil.instance.init(application) + + val cd = Calendar.getInstance() + val year = cd[Calendar.YEAR] + mViewBinding.ivSplashName.apply { + text = getString(R.string.system_txt_copyright, year) + ViewCompat.setOnApplyWindowInsetsListener(this) { v, insets -> + val bars = insets.getInsets(WindowInsetsCompat.Type.navigationBars()) + v.setPadding(bars.left, bars.top, bars.right, bars.bottom) + insets + } + } + + if (AppUtils.isDebug()) { + mViewBinding.ivSplashDebug.visibility = View.VISIBLE + } + + mCountDownTimerViewModel.mCountDownEndLiveData.observe(this) { + mViewBinding.splashLottieAnimationView.cancelAnimation() + val userId = MMKVUtil.getString(MMKVKey.UserId) + if (TextUtils.isEmpty(userId)) { + startActivity(Intent(mContext, SayHelloActivity::class.java)) + } else { + startActivity(Util.checkBindDeviceAndPetGoActivity(mContext)) + } + overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) + finish() + } + + + mViewBinding.splashLottieAnimationView.apply { + setAnimation("lottie/logo_loader.json") + addAnimatorListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + mViewBinding.splashLogoIv.visibility = View.VISIBLE + mCountDownTimerViewModel.startCountDown(2) + } + }) + } + + val firstOpen = MMKVUtil.getBoolean(MMKVKey.FirstOpen, true) + if (firstOpen) { + //éšç§å议弹窗 + showPrivacyPolicyDialog() + } else { + acceptPrivacyPolicy() + } + } + + // 字体大å°ä¸è·Ÿéšç³»ç»Ÿ + 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) + } + + /** + * 显示éšç§å议弹窗 + */ + private fun showPrivacyPolicyDialog() { + val privacyPolicyDialog = PrivacyPolicyDialog(this@SplashActivity) + privacyPolicyDialog.apply { + show() + agreePrivacyPolicyCallback { + if (!isAgree()) { + Toaster.show(R.string.register_txt_agree) + return@agreePrivacyPolicyCallback + } + dismiss() + MMKVUtil.putBoolean(MMKVKey.FirstOpen, false) + acceptPrivacyPolicy() + } + } + } + + /** + * åŒæ„éšç§åè®®æ“作 + */ + private fun acceptPrivacyPolicy() { +// mViewBinding.splashLottieAnimationView.apply { +// postDelayed({ +// playAnimation() +// }, 600) +// } + mViewBinding.splashLogoIv.visibility = View.VISIBLE + mCountDownTimerViewModel.startCountDown(2) + + init() + } + + private fun init() { + LogUtil.e("isDebug=${AppUtils.isDebug()}") + JPushInterface.setDebugMode(AppUtils.isDebug()) + JPushInterface.init(this) + + //åŒæ„åè®® + SDKInitializer.setAgreePrivacy(application, true) +// LocationClient.setAgreePrivacy(true); + //在使用SDKå„组件之å‰åˆå§‹åŒ–contextä¿¡æ¯ï¼Œä¼ å…¥ApplicationContext + SDKInitializer.initialize(application) + //自4.3.0起,百度地图SDK所有接å£å‡æ”¯æŒç™¾åº¦åæ ‡å’Œå›½æµ‹å±€åæ ‡ï¼Œç”¨æ­¤æ–¹æ³•è®¾ç½®æ‚¨ä½¿ç”¨çš„åæ ‡ç±»åž‹. + //包括BD09LLå’ŒGCJ02两ç§å标,默认是BD09LLåæ ‡ã€‚ + SDKInitializer.setCoordType(CoordType.GCJ02) + + if (AppUtils.isChina()) { + regToWx() + } else { + initMapbox() + try { + //stripe支付 + val stripeKey = Util.getMetadata(applicationContext, KeyNames.STRIPE_TEST_KEY) + LogUtil.e("stripeKey=$stripeKey") + PaymentConfiguration.init( + applicationContext, stripeKey + ) + } catch (e: Exception) { + LogUtil.e("stripeSdk initializeåˆå§‹åŒ–异常,${e.message}") + } + } + + if (AppUtils.isDebug()) { + //方便调试测试åªä½¿ç”¨è°·æ­Œåœ°å›¾æƒ…况 + initMapbox() + } + + val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME) + //腾讯buglyåˆå§‹åŒ– + CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug()) + } + + private fun initMapbox() { +// try { +// val mapboxAccessToken = +// Util.getMetadata(applicationContext, KeyNames.MAPBOX_ACCESS_TOKEN) +// MapboxSearchSdk.initialize( +// application, mapboxAccessToken, LocationEngineProvider.getBestLocationEngine(this) +// ) +// } catch (e: Exception) { +// LogUtil.e("MapboxSearchSdk initialize多次åˆå§‹åŒ–异常") +// } + } + + /** + * 注册到微信 + */ + private fun regToWx() { + mApi = ThirdPartyUtil.mApi + // 将应用的 appId 注册到微信 +// mApi.registerApp(ThirdPartyUtil.wXAppID) + + mWXAppBroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + // 将该 app 注册到微信 + mApi.registerApp(ThirdPartyUtil.WXAppID) + } + } + //建议动æ€ç›‘å¬å¾®ä¿¡å¯åŠ¨å¹¿æ’­è¿›è¡Œæ³¨å†Œåˆ°å¾®ä¿¡ + registerReceiver(mWXAppBroadcastReceiver, IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP)) + } + + override fun onDestroy() { + super.onDestroy() + mWXAppBroadcastReceiver?.let { + unregisterReceiver(it) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/WebViewActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/WebViewActivity.kt new file mode 100644 index 0000000..4789d49 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/WebViewActivity.kt @@ -0,0 +1,140 @@ +package com.abbidot.tracker.ui.activity + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Intent +import android.graphics.Bitmap +import android.net.Uri +import android.webkit.WebView +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityWebViewBinding +import com.abbidot.tracker.deprecated.ui.activity.profile.recharge.PaymentResultActivity +import com.abbidot.tracker.ui.activity.subscribe.PaymentSuccessActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.widget.BrowserView + +class WebViewActivity : BaseActivity(ActivityWebViewBinding::inflate) { + + //支付æˆåŠŸåŽçš„结果 + private var mPayResult: PayResultBean? = null + + override fun getTopBar() = mViewBinding.webViewBar.titleTopBar + + companion object { + fun startWebViewActivity(activity: Activity, title: String, url: String) { + val intent = Intent(activity, WebViewActivity::class.java) + intent.putExtra("url", url) + intent.putExtra("title", title) + activity.startActivity(intent) + } + } + + @SuppressLint("SetJavaScriptEnabled") + override fun initData() { + super.initData() + + intent.extras?.apply { + setTopBarTitle(this.getString(ConstantString.Title).toString()) + val url = this.getString(ConstantString.Url).toString() + LogUtil.e(url) + + mPayResult = Util.getParcelableAdaptive( + intent, ConstantString.Amount, PayResultBean::class.java + ) + + mViewBinding.webViewQmuiWebView.apply { + setBrowserViewClient(MyBrowserViewClient(this@WebViewActivity, mPayResult)) + setBrowserChromeClient(MyBrowserChromeClient(mViewBinding.webViewQmuiWebView)) + setDownloadListener { url1, userAgent, contentDisposition, mimetype, contentLength -> + val uri = Uri.parse(url1) + val intent = Intent(Intent.ACTION_VIEW, uri) + startActivity(intent) + } + loadUrl(url) + } + + } + } + + override fun onResume() { + mViewBinding.webViewQmuiWebView.onResume() + super.onResume() + } + + override fun onPause() { + mViewBinding.webViewQmuiWebView.onPause() + super.onPause() + } + + override fun onDestroy() { + mViewBinding.webViewQmuiWebView.onDestroy() + super.onDestroy() + } + + + private class MyBrowserViewClient(activity: BaseActivity<*>, payResult: PayResultBean? = null) : + BrowserView.BrowserViewClient() { + + private val mActivity = activity + private val mPayResult = payResult + + /** + * 网页加载错误时回调,这个方法会在 onPageFinished 之å‰è°ƒç”¨ + */ + override fun onReceivedError( + view: WebView?, errorCode: Int, description: String?, failingUrl: String? + ) { + // 这里为什么è¦ç”¨å»¶è¿Ÿå‘¢ï¼Ÿå› ä¸ºåŠ è½½å‡ºé”™ä¹‹åŽä¼šå…ˆè°ƒç”¨ onReceivedError å†è°ƒç”¨ onPageFinished + } + + /** + * 开始加载网页 + */ + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + LogUtil.e("开始拦截:$url") + url?.apply { + //支付æˆåŠŸå’Œå¤±è´¥ + if (url.startsWith("https://www.baidu.com")) { + val intent = Intent(mActivity, PaymentSuccessActivity::class.java) + intent.putExtra(ConstantString.Amount, mPayResult) + mActivity.startActivityFinish(intent) + } else if (url.startsWith("https://www.qq.com")) { + val intent = Intent(mActivity, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Type, ConstantInt.Type2) + mActivity.startActivityFinish(intent) + } + } + } + + /** + * 完æˆåŠ è½½ç½‘é¡µ + */ + override fun onPageFinished(view: WebView?, url: String?) { + } + } + + private class MyBrowserChromeClient(view: BrowserView) : BrowserView.BrowserChromeClient(view) { + /** + * 收到网页标题 + */ + override fun onReceivedTitle(view: WebView?, title: String?) { + } + + /** + * 收到加载进度å˜åŒ– + */ + override fun onProgressChanged(view: WebView?, newProgress: Int) { + } + } + + override fun leftBackOnClick() { + if (mViewBinding.webViewQmuiWebView.canGoBack()) { + // åŽé€€ç½‘页并且拦截该事件 + mViewBinding.webViewQmuiWebView.goBack() + } else super.leftBackOnClick() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt new file mode 100644 index 0000000..3cce1f0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt @@ -0,0 +1,86 @@ +package com.abbidot.tracker.ui.activity.account + +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import coil.load +import coil.transform.BlurTransformation +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityAddEmailValidBinding +import com.abbidot.tracker.ui.fragment.account.EmailValidFragment + +open class AddEmailValidActivity : + BaseActivity(ActivityAddEmailValidBinding::inflate) { + + lateinit var mFragmentList: MutableList + lateinit var mEmailValidFragment: EmailValidFragment + + var mIndex = 0 + + //用户邮箱 + var mUserEmail = "" + + override fun getTopBar() = mViewBinding.forgotPasswordV2TopBar.titleTopBar + + override fun initData() { + super.initData() + mViewBinding.apply { + setLeftBackImage(R.drawable.icon_black_back_svg) + root.setBackgroundResource(R.color.transparent) + ivForgotPasswordV2BlurBg.load(R.drawable.icon_login_v2_bg) { + transformations(BlurTransformation(mContext, 25f)) + } + setListenKeyboardChange(750) + } + + switchFragment(mIndex) + mEmailValidFragment.setEmail(mUserEmail) + } + + fun setToEmail(email: String) { + mUserEmail = email + mEmailValidFragment.setEmail(mUserEmail) + } + + fun switchFragment(index: Int) { + mIndex = index + + supportFragmentManager.commit { + + for (fragment in mFragmentList) { + hideFragment(this, fragment) + } + + /** + * 为FragmentTransaction添加指定的自定义属性动画 + */ + setCustomAnimations( + R.anim.slide_in_right, + R.anim.slide_out_left, + R.anim.slide_still, + R.anim.slide_out_right + ) + + if (mFragmentList[index].isAdded) { + show(mFragmentList[index]) + } else { + add(R.id.fc_forgot_password_v2_frame, mFragmentList[index]) + } + } + } + + private fun popBack() { + if (mIndex > 0) { + mIndex-- + switchFragment(mIndex) + } else finish() + } + + override fun leftBackOnClick() { + popBack() + } + + override fun listenBackPressed() { + popBack() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailActivity.kt new file mode 100644 index 0000000..38f2a60 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailActivity.kt @@ -0,0 +1,59 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.ui.fragment.account.EmailValidFragment +import com.abbidot.tracker.ui.fragment.account.ForgotPasswordV2OneFragment +import com.abbidot.tracker.vm.UserProfileViewModel + +class ChangeEmailActivity : AddEmailValidActivity() { + + private val mUserViewModel: UserProfileViewModel by viewModels() + + override fun initData() { + //验è¯è€çš„邮箱验è¯ç  + val oldEmailValidFragment = EmailValidFragment.newInstance(mContext, 2) { + switchFragment(1) + }.apply { + setEmail(MMKVUtil.getString(MMKVKey.Email)) + } + mEmailValidFragment = + EmailValidFragment.newInstance(mContext, 3, getString(R.string.txt_change_now)) { + updateEmail() + } + mFragmentList = mutableListOf( + oldEmailValidFragment, ForgotPasswordV2OneFragment.newInstance( + mContext, getString(R.string.txt_enter_new_email), 3, 1 + ), mEmailValidFragment + ) + super.initData() + } + + override fun liveDataObserve() { + mUserViewModel.mUpdateUserInfoLiveData.observe(this@ChangeEmailActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + MMKVUtil.putString(MMKVKey.Email, mUserEmail) + XEventBus.post(EventName.UpdateUserInfo) + startActivityFinish(Intent(mContext, ChangeEmailSuccessActivity::class.java)) + } + }) + } + } + + private fun updateEmail() { + val name = MMKVUtil.getString(MMKVKey.UserName) + val countryCode = MMKVUtil.getString(MMKVKey.CountryCode) + val email = mUserEmail + val imageUrl = MMKVUtil.getString(MMKVKey.HeadUrl) + mUserViewModel.updateUserInfo( + this@ChangeEmailActivity, email, imageUrl, countryCode, name + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailSuccessActivity.kt new file mode 100644 index 0000000..25c9fbf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeEmailSuccessActivity.kt @@ -0,0 +1,26 @@ +package com.abbidot.tracker.ui.activity.account + +import android.view.View +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityChangeEmailSuccessBinding + +class ChangeEmailSuccessActivity : + BaseActivity(ActivityChangeEmailSuccessBinding::inflate) { + override fun getTopBar() = null + + override fun initData() { + super.initData() + + mViewBinding.apply { + ivChangeEmailSuccessfulDone.load(R.drawable.pwd_reset_successful_done) + + setOnClickListenerViews(btnChangeEmailSuccessfulOk) + } + } + + override fun onClick(v: View?) { + finish() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeNameActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeNameActivity.kt new file mode 100644 index 0000000..db16d15 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ChangeNameActivity.kt @@ -0,0 +1,81 @@ +package com.abbidot.tracker.ui.activity.account + +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityChangeNameBinding +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + +class ChangeNameActivity : + BaseActivity(ActivityChangeNameBinding::inflate) { + + private val mUserViewModel: UserProfileViewModel by viewModels() + + override fun getTopBar() = mViewBinding.ilChangeNameTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_change_name) + + val username = MMKVUtil.getString(MMKVKey.UserName) + mViewBinding.apply { + ilChangeNameNameLayout.let { + it.etInputContent.setText(username) + it.tvInputNameTitle.text = getString(R.string.register_txt_name) + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvChangeNameNameErrorTip, it.etInputContent + ) + } + + setOnClickListenerViews(btnChangeNameSave) + } + } + + override fun liveDataObserve() { + mUserViewModel.mUpdateUserInfoLiveData.observe(this@ChangeNameActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val name = mViewBinding.ilChangeNameNameLayout.etInputContent.text.toString() + MMKVUtil.putString(MMKVKey.UserName, name) + XEventBus.post(EventName.UpdateUserInfo) + showToast(R.string.txt_change_successful, true) + } + }) + } + } + + private fun userProfileSave() { + mViewBinding.apply { + val name = ilChangeNameNameLayout.etInputContent.text.toString() + val uploadImageUrl = MMKVUtil.getString(MMKVKey.HeadUrl) + val countryCode = MMKVUtil.getString(MMKVKey.CountryCode) + val email = MMKVUtil.getString(MMKVKey.Email) + if (TextUtils.isEmpty(name)) { + ViewUtil.instance.setInputViewErrorShow( + mContext, ilChangeNameNameLayout.rlEtInputLayout, tvChangeNameNameErrorTip + ) + return + } + + mUserViewModel.updateUserInfo( + this@ChangeNameActivity, "", uploadImageUrl, countryCode, name + ) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnChangeNameSave -> userProfileSave() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountActivity.kt new file mode 100644 index 0000000..d8ea27d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountActivity.kt @@ -0,0 +1,232 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import android.text.InputType +import android.text.SpannableString +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.TextUtils +import android.text.method.LinkMovementMethod +import android.text.style.ClickableSpan +import android.view.Gravity +import android.view.View +import android.widget.TextView +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.core.widget.addTextChangedListener +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityCreateAccountBinding +import com.abbidot.tracker.ui.common.CountryCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + + +class CreateAccountActivity : + BaseActivity(ActivityCreateAccountBinding::inflate) { + + private val mUserViewModel: UserProfileViewModel by viewModels() + + private lateinit var mCountryCommon: CountryCommon + + private var isShowPassword = false + + override fun getTopBar() = mViewBinding.createAccountTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + ilCreateAccountFullName.let { + it.tvInputNameTitle.text = getString(R.string.register_txt_name) + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvFullNameErrorTip, it.etInputContent + ) + } + ilCreateAccountCountry.let { + it.tvInputNameTitle.text = getString(R.string.txt_country) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvSelectCountryErrorTip, it.etInputContent + ) + } + ilCreateAccountEmailAddress.let { + it.tvInputNameTitle.text = getString(R.string.txt_email_address) + it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvEmailErrorTip, it.etInputContent + ) + } + ilCreateAccountPassword.let { + it.tvInputNameTitle.text = getString(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + it.etInputContent.addTextChangedListener { str -> + it.rlEtInputLayout.background = ContextCompat.getDrawable( + mContext, R.drawable.shape8_gray_border_white_bg + ) + tvPasswordErrorTip.setTextColor( + ContextCompat.getColor( + mContext, R.color.blue_color1 + ) + ) + str?.apply { + if (length >= 6) { + tvPasswordErrorTip.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.icon_input_check_svg, 0, 0, 0 + ) + } else { + tvPasswordErrorTip.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, 0, 0 + ) + } + } + } + } + +// setSpannableClick( +// ilPolicyTermsCheck.tvLoginAgreePrivacyContent, +// getString(R.string.txt_create_account_terms1), +// getString(R.string.txt_create_account_terms2) +// ) + + mCountryCommon = + CountryCommon(mContext, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ilCreateAccountCountry.etInputContent.setText(mCountryCommon.getCountry()) + } + }) + + setOnClickListenerViews( + ilCreateAccountCountry.rlEtInputLayout, + ilCreateAccountCountry.ivInputRepresentImage, + ilCreateAccountPassword.ivInputRepresentImage, + btnCreateAccountSignup + ) + } + + mUserViewModel.getCountryCodes(this) + } + + private fun setSpannableClick(textView: TextView, str1: String, str2: String) { + textView.apply { + val span1 = SpannableString(str1) + span1.setSpan(object : ClickableSpan() { + override fun onClick(v: View) { + ViewUtil.instance.goServiceContract(mActivity) + } + }, 40, 59, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + val span2 = SpannableString(str2) + span2.setSpan(object : ClickableSpan() { + override fun onClick(v: View) { + ViewUtil.instance.goPrivacyPolicy(mActivity) + } + }, 0, 14, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + val spannableStringBuilder = SpannableStringBuilder() + spannableStringBuilder.append(span1) + spannableStringBuilder.append(" ") + spannableStringBuilder.append(span2) + text = spannableStringBuilder + movementMethod = LinkMovementMethod.getInstance() + } + } + + override fun liveDataObserve() { + mUserViewModel.apply { + mCountryCodeLiveData.observe(this@CreateAccountActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mCountryCommon.setCountryCodeData(this) + } + } + }) + } + mRegisterV2LiveData.observe(this@CreateAccountActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + Util.dealLoginSuccessData(mContext, this) + val intent = Intent(mContext, SignupSuccessActivity::class.java) + startActivityFinish(intent) + } + } + }) + } + } + } + + private fun signupClick() { + mViewBinding.apply { + val name = ilCreateAccountFullName.etInputContent.text.toString() + val country = ilCreateAccountCountry.etInputContent.text.toString() + val email = ilCreateAccountEmailAddress.etInputContent.text.toString() + var password = ilCreateAccountPassword.etInputContent.text.toString() + var isSure = true + if (TextUtils.isEmpty(name)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilCreateAccountFullName.rlEtInputLayout, tvFullNameErrorTip + ) + } + if (TextUtils.isEmpty(country)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilCreateAccountCountry.rlEtInputLayout, tvSelectCountryErrorTip + ) + } + if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilCreateAccountEmailAddress.rlEtInputLayout, tvEmailErrorTip + ) + } + if (TextUtils.isEmpty(password) || password.length < 6) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilCreateAccountPassword.rlEtInputLayout, tvPasswordErrorTip + ) + } + if (!isSure) return + + if (!ilPolicyTermsCheck.cbLoginAgreePrivacyCheckbox.isChecked) { + showToast(R.string.register_txt_agree,gravity = Gravity.CENTER) + return + } + + password = Utils.get32Md5Value(password) + mUserViewModel.registerV2( + this@CreateAccountActivity, email, password, name, mCountryCommon.getCountryCode() + ) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilCreateAccountCountry.rlEtInputLayout, ilCreateAccountCountry.ivInputRepresentImage -> mCountryCommon.showCountryCodeDialog() + + ilCreateAccountPassword.ivInputRepresentImage -> { + isShowPassword = !isShowPassword + ViewUtil.instance.showAndHidePasswordClick( + ilCreateAccountPassword.etInputContent, + ilCreateAccountPassword.ivInputRepresentImage, + isShowPassword + ) + } + + btnCreateAccountSignup -> signupClick() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountV2Activity.kt new file mode 100644 index 0000000..7c59aac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/CreateAccountV2Activity.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.ui.activity.account + +import com.abbidot.tracker.ui.fragment.account.CreateAccountV2OneFragment +import com.abbidot.tracker.ui.fragment.account.CreateAccountV2ThreeFragment +import com.abbidot.tracker.ui.fragment.account.EmailValidFragment + +/** + *Created by .yzq on 2024/8/2/002. + * @link + * @description: + */ +class CreateAccountV2Activity : AddEmailValidActivity() { + + override fun initData() { + mEmailValidFragment = EmailValidFragment.newInstance(mContext, 1) { + switchFragment(2) + } + mFragmentList = mutableListOf( + CreateAccountV2OneFragment.newInstance(mContext), + mEmailValidFragment, + CreateAccountV2ThreeFragment.newInstance(mContext) + ) + super.initData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/EmailAddressActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/EmailAddressActivity.kt new file mode 100644 index 0000000..c7ac1cd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/EmailAddressActivity.kt @@ -0,0 +1,72 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityEmailAddressBinding +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + +class EmailAddressActivity : + BaseActivity(ActivityEmailAddressBinding::inflate) { + + private val mRegisterViewModel: UserProfileViewModel by viewModels() + + override fun getTopBar() = mViewBinding.ilEmailAddressTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_email_address) + + mViewBinding.apply { + setOnClickListenerViews(btnEmailAddressChange) + } + } + + override fun onResume() { + super.onResume() + val email = MMKVUtil.getString(MMKVKey.Email) + mViewBinding.apply { + tvEmailAddressShow.text = email + } + } + + override fun liveDataObserve() { + mRegisterViewModel.mGetEmailCodeLiveData.observe(this) { + mViewBinding.btnEmailAddressChange.isEnabled = true + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + startActivity(Intent(mContext, ChangeEmailActivity::class.java)) + } + }) + } + } + + private fun startChange() { + val email = MMKVUtil.getString(MMKVKey.Email) + val title = String.format(getString(R.string.txt_change_email_tip), email) + ViewUtil.instance.showDialog( + mContext, title, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mViewBinding.btnEmailAddressChange.isEnabled = false + mRegisterViewModel.getEmailCode(this@EmailAddressActivity, email, 2) + } + }, okTextResId = R.string.txt_sure + ) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnEmailAddressChange -> startChange() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/ForgotPasswordV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ForgotPasswordV2Activity.kt new file mode 100644 index 0000000..716565a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ForgotPasswordV2Activity.kt @@ -0,0 +1,31 @@ +package com.abbidot.tracker.ui.activity.account + +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.tracker.R +import com.abbidot.tracker.ui.fragment.account.EmailValidFragment +import com.abbidot.tracker.ui.fragment.account.ForgotPasswordV2OneFragment +import com.abbidot.tracker.ui.fragment.account.ForgotPasswordV2ThereFragment + +/** + *Created by .yzq on 2024/8/2/002. + * @link + * @description: + */ +class ForgotPasswordV2Activity : AddEmailValidActivity() { + + override fun initData() { + intent.extras?.apply { + mUserEmail = getString(MMKVKey.Email, "") + } + mEmailValidFragment = EmailValidFragment.newInstance(mContext, 2) { + switchFragment(2) + } + mFragmentList = mutableListOf( + ForgotPasswordV2OneFragment.newInstance( + mContext, getString(R.string.txt_change_pwd), 2 + ), mEmailValidFragment, ForgotPasswordV2ThereFragment.newInstance(mContext) + ) + super.initData() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/LoginV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/LoginV2Activity.kt new file mode 100644 index 0000000..43cc90a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/LoginV2Activity.kt @@ -0,0 +1,252 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import android.graphics.Paint +import android.text.InputFilter +import android.text.InputType +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityLoginV2Binding +import com.abbidot.tracker.ui.activity.set.FirstPermissionsActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.LoginViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class LoginV2Activity : BaseActivity(ActivityLoginV2Binding::inflate) { + + private val mLoginViewModel: LoginViewModel by viewModels() + private val mTrackerViewModel: TrackerInfoViewModel by viewModels() + + private var isShowPassword = false + private var isCurrentPostEven = false + + override fun getTopBar() = mViewBinding.loginV2TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + mViewBinding.apply { + root.setBackgroundResource(R.drawable.icon_login_v2_bg) + + var userEmail = "" + intent.extras?.apply { + userEmail = getString(MMKVKey.Email, "") + } + ilLoginV2EmailAddress.let { + it.tvInputNameTitle.setText(R.string.txt_email_address) + it.etInputContent.setHint(R.string.login_txt_email) + it.etInputContent.setText(userEmail) + it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvEmailErrorTipLogin, it.etInputContent + ) + } + ilLoginV2Password.let { + it.tvInputNameTitle.setText(R.string.login_txt_password) + it.etInputContent.setHint(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + val filters = arrayOf(InputFilter.LengthFilter(60)) + it.etInputContent.filters = filters + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvPasswordErrorTipLogin, it.etInputContent + ) + } + //添加下划线 + tvLoginV2ForgotPassword.paintFlags = Paint.UNDERLINE_TEXT_FLAG + tvLoginV2Signup.paintFlags = Paint.UNDERLINE_TEXT_FLAG + + setOnClickListenerViews( + ilLoginV2EmailAddress.etInputContent, + tvLoginV2Signup, + tvLoginV2ForgotPassword, + ilLoginV2Password.ivInputRepresentImage, + btnLoginV2Login + ) + + if (AppUtils.isDebug()) { + //ä¸éœ€è¦MD5加密登录 + btnLoginV2Login.setOnLongClickListener { + loginClick(false) + true + } + } + + setListenKeyboardChange(750) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.FinishActivity) { + if (!isCurrentPostEven) finish() + } + + mLoginViewModel.mLoginLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + isCurrentPostEven = true + Util.dealLoginSuccessData(mContext, this) + + showToast(R.string.txt_login_successful, gravity = Gravity.CENTER) + loginSuccessGo() + //登录æˆåŠŸï¼ŒæŠŠä¿å­˜çš„设备存本地 +// mTrackerViewModel.getDeviceList(this@LoginV2Activity, 1) + } + } + }) + setButtonEnabled( + mViewBinding.btnLoginV2Login, ConstantInt.Type1 + ) + } + + //获å–设备列表 + mTrackerViewModel.getDeviceListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + lifecycleScope.launch { + val isBindDevice = MMKVUtil.getInt(MMKVKey.isBindDevice) + val isBindPet = MMKVUtil.getInt(MMKVKey.isBindPet) + if (isBindDevice == ConstantInt.isBind && isBindPet == ConstantInt.NoBind) { + if (list.size > 0) { + MMKVUtil.putString(MMKVKey.FirstDeviceId, list[0].deviceId) + MMKVUtil.putString( + MMKVKey.FirstDeviceOutId, list[0].deviceOutId + ) + } + } + withContext(Dispatchers.IO) { + //ä¿å­˜æœ¬åœ°æ•°æ®åº“ + for (device in list) { + if (!TextUtils.isEmpty(device.deviceOutId) && null != device.pet) { + MyDatabase.deviceDao().insert(device) + } + } + } + + showToast(R.string.txt_login_successful, gravity = Gravity.CENTER) + + loginSuccessGo() + } + } + } + }, isShowNoDataTip = false) + } + } + + private fun loginSuccessGo() { + val hasPermissions = Util.checkNeedPermissionsEnabled(mContext) + mViewBinding.btnLoginV2Login.postDelayed({ + if (hasPermissions) { + startActivityFinish(Util.checkBindDeviceAndPetGoActivity(mContext)) + } else { + startActivityFinish(Intent(mContext, FirstPermissionsActivity::class.java)) + } + }, 1000) + } + + private fun loginClick(isMd5: Boolean = true) { + mViewBinding.apply { + var email = ilLoginV2EmailAddress.etInputContent.text.toString() + var password = ilLoginV2Password.etInputContent.text.toString() + var isSure = true + + when (email) { + "98" -> { + email = "983577727@qq.com" + password = "123456" + } + + "2" -> { + email = "abbidot02@gmail.com" + password = "123456" + } + + "123" -> { + email = "123456@qq.com" + password = "123456" + } + } + + if (TextUtils.isEmpty(email)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilLoginV2EmailAddress.rlEtInputLayout, tvEmailErrorTipLogin + ) + } + if (TextUtils.isEmpty(password)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilLoginV2Password.rlEtInputLayout, tvPasswordErrorTipLogin + ) + } + if (!isSure) return + + if (isMd5) { + setButtonEnabled(btnLoginV2Login, ConstantInt.Type0) + password = Utils.get32Md5Value(password) + } + + mLoginViewModel.login(this@LoginV2Activity, email, password) + } + } + + private fun goForgotPassword() { + Intent(mContext, ForgotPasswordV2Activity::class.java).apply { + val email = mViewBinding.ilLoginV2EmailAddress.etInputContent.text.toString() + putExtra(MMKVKey.Email, email) + startActivity(this) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + tvLoginV2Signup -> startActivity( + Intent( + mContext, CreateAccountV2Activity::class.java + ) + ) + + tvLoginV2ForgotPassword -> goForgotPassword() + + ilLoginV2Password.ivInputRepresentImage -> { + isShowPassword = !isShowPassword + ViewUtil.instance.showAndHidePasswordClick( + ilLoginV2Password.etInputContent, + ilLoginV2Password.ivInputRepresentImage, + isShowPassword + ) + } + + btnLoginV2Login -> loginClick() + ilLoginV2EmailAddress.etInputContent -> { + LogUtil.e("ilLoginV2EmailAddress") + v.requestFocus() + showInputMethod(v) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt new file mode 100644 index 0000000..d5c3267 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt @@ -0,0 +1,129 @@ +package com.abbidot.tracker.ui.activity.account + +import android.view.View +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.NotificationV2Adapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityNotificationV2Binding +import com.abbidot.tracker.deprecated.ui.activity.vm.NotificationsViewModel +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +/** + * 消æ¯åˆ—表 + */ +class NotificationV2Activity : + BaseActivity(ActivityNotificationV2Binding::inflate) { + + private val mNotificationsViewModel: NotificationsViewModel by viewModels() + + private lateinit var mMessageAdapter: NotificationV2Adapter + + override fun getTopBar() = mViewBinding.notificationV2DetailBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_notifications) + + mMessageAdapter = NotificationV2Adapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val message = getItem(pos) + message.isSelect = !message.isSelect + if (!message.isRead) { + message.isRead = true + lifecycleScope.launch(Dispatchers.IO) { + MyDatabase.messageDao().insert(message) + XEventBus.post(EventName.RefreshMessage) + } + } + notifyItemChanged(pos) + } + }) + } + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager( + mContext, mViewBinding.rvNotificationV2Detail, mMessageAdapter + ) + setOnClickListenerViews(mViewBinding.btnNotificationV2ReadAll) + + mNotificationsViewModel.getMessageList(this) + } + + override fun liveDataObserve() { + mNotificationsViewModel.mNotificationsLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + lifecycleScope.launch(Dispatchers.IO) { + Util.dealMessage(this@apply) + setMessageData() + } + } + } + + override fun onRequestError(exceptionCode: String?) { + setMessageData() + } + }, isShowRequestErrorTip = false) + } + } + + private fun setMessageData() { + lifecycleScope.launch(Dispatchers.IO) { + MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.apply { + LogUtil.e("消æ¯åˆ—表个数:${size}") + //æŒ‰æœ€æ–°æ—¶é—´æŽ’åº + val sortedByList = this.sortedByDescending { it.sendTime } + runOnUiThread { + mMessageAdapter.setData(sortedByList.toMutableList(), true) + } + for (i in sortedByList){ + LogUtil.e(i.messageId+":"+i.message) + } + } + } + } + + private fun readAllMessage() { + lifecycleScope.launch(Dispatchers.IO) { + MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.apply { + var isUpdate = false + for (message in this) { + if (!message.isRead) { + message.isRead = true + isUpdate = true + MyDatabase.messageDao().insert(message) + } + } + runOnUiThread { + val list = mMessageAdapter.getData() + for (m in list) { + if (!m.isRead) { + m.isRead = true + } + } + mMessageAdapter.notifyItemRangeChanged(0, list.size) + } + if (isUpdate) XEventBus.post(EventName.RefreshMessage) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnNotificationV2ReadAll -> readAllMessage() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/ResetPasswordSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ResetPasswordSuccessActivity.kt new file mode 100644 index 0000000..754fc7f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/ResetPasswordSuccessActivity.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.ui.activity.account + +import android.view.View +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityResetPasswordSuccessBinding + +class ResetPasswordSuccessActivity : + BaseActivity(ActivityResetPasswordSuccessBinding::inflate) { + + override fun getTopBar() = null + + override fun initData() { + super.initData() + mViewBinding.apply { + ivPwdResetSuccessfulDone.load(R.drawable.pwd_reset_successful_done) + setOnClickListenerViews(btnPwdResetSuccessfulOk) + } + } + + override fun onClick(v: View?) { + finish() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/SignupSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/SignupSuccessActivity.kt new file mode 100644 index 0000000..0fb791a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/SignupSuccessActivity.kt @@ -0,0 +1,55 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import android.view.View +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivitySignupSuccessBinding +import com.abbidot.tracker.ui.activity.set.FirstPermissionsActivity +import com.abbidot.tracker.util.Util + +class SignupSuccessActivity : + BaseActivity(ActivitySignupSuccessBinding::inflate) { + + override fun getTopBar() = null + + override fun initData() { + super.initData() + + mViewBinding.apply { + ivSignupSuccessDone.load(R.drawable.pwd_reset_successful_done) + + setOnClickListenerViews(btnSignupSuccessOk) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSignupSuccessOk -> { + val hasPermissions = Util.checkNeedPermissionsEnabled(mContext) + if (hasPermissions) { +// val isExistNewInvite = MMKVUtil.getInt(MMKVKey.isExistNewInvite) +// if (isExistNewInvite == ConstantInt.NoShare) { +// intent.setClass(mContext, AddNewTracker1Activity::class.java) +// } else { +// intent.setClass(mContext, ShowInviteDeviceActivity::class.java) +// } + startActivityFinish( + Util.checkBindDeviceAndPetGoActivity( + mContext + ) + ) + } else { + val intent = Intent() + intent.setClass( + mContext, FirstPermissionsActivity::class.java + ) + startActivityFinish(intent) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/UserProfileActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/UserProfileActivity.kt new file mode 100644 index 0000000..649b7d9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/UserProfileActivity.kt @@ -0,0 +1,306 @@ +package com.abbidot.tracker.ui.activity.account + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import coil.load +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityUserProfileBinding +import com.abbidot.tracker.ui.common.CountryCommon +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.TakePhotoAndCompressViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.huantansheng.easyphotos.EasyPhotos +import com.huantansheng.easyphotos.models.album.entity.Photo + +class UserProfileActivity : + BaseActivity(ActivityUserProfileBinding::inflate) { + + private val mUserViewModel: UserProfileViewModel by viewModels() + private val mTakePhotoAndCompressViewModel: TakePhotoAndCompressViewModel by viewModels() + + private lateinit var mCountryCommon: CountryCommon + + //上传æˆåŠŸå¤´åƒ + private var mUploadImageUrl = "" + private var mTempHeadPath = "" + + override fun getTopBar() = mViewBinding.ilUserProfileTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pet_profile) +// mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + + ilUserProfileNameLayout.let { + it.tvInputNameTitle.text = getString(R.string.register_txt_name) + it.rlEtInputLayout.setBackgroundResource(R.drawable.shape12_gray_border_white_bg) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.ivInputRepresentImage.setImageResource(R.drawable.ico_list_next) +// ViewUtil.instance.setInputViewErrorHideClick( +// mContext, it.rlEtInputLayout, tvUserProfileNameErrorTip, it.etInputContent +// ) + } + ilUserProfileCountry.let { + it.tvInputNameTitle.text = getString(R.string.txt_country) + it.rlEtInputLayout.setBackgroundResource(R.drawable.shape12_gray_border_white_bg) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.ivInputRepresentImage.setImageResource(R.drawable.ico_list_next) +// ViewUtil.instance.setInputViewErrorHideClick( +// mContext, +// it.rlEtInputLayout, +// tvUserProfileSelectCountryErrorTip, +// it.etInputContent +// ) + } + ilUserProfileEmailLayout.let { + it.tvInputNameTitle.text = getString(R.string.txt_email_address) + it.rlEtInputLayout.setBackgroundResource(R.drawable.shape12_gray_border_white_bg) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.ivInputRepresentImage.setImageResource(R.drawable.ico_list_next) +// it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS +// ViewUtil.instance.setInputViewErrorHideClick( +// mContext, it.rlEtInputLayout, tvUserProfileEmailErrorTip, it.etInputContent +// ) + } + + mCountryCommon = + CountryCommon(mContext, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ilUserProfileCountry.etInputContent.setText(mCountryCommon.getCountry()) + userProfileSave() + } + }) + + setOnClickListenerViews( + btnUserProfileSave, + ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage, + ilUserProfileNameLayout.rlEtInputLayout, + ilUserProfileNameLayout.ivInputRepresentImage, + ilUserProfileCountry.rlEtInputLayout, + ilUserProfileCountry.ivInputRepresentImage, + ilUserProfileEmailLayout.rlEtInputLayout, + ilUserProfileEmailLayout.ivInputRepresentImage + ) + + mUploadImageUrl = MMKVUtil.getString(MMKVKey.HeadUrl) + ViewUtil.instance.imageLoadUrl( + ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage, + mUploadImageUrl, + R.drawable.pic_avatar_df + ) + } + + mTakePhotoAndCompressViewModel.registerCropImageActivityResult(this) + + mUserViewModel.getCountryCodes(this) + } + + override fun onResume() { + super.onResume() + mViewBinding.apply { + val username = MMKVUtil.getString(MMKVKey.UserName) + val email = MMKVUtil.getString(MMKVKey.Email) + ilUserProfileNameLayout.etInputContent.setText(username) + ilUserProfileEmailLayout.etInputContent.setText(email) + } + } + + override fun liveDataObserve() { + mUserViewModel.apply { + //获å–å›½å®¶ä»£ç  + mCountryCodeLiveData.observe(this@UserProfileActivity) { + getUserInfo(this@UserProfileActivity) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mCountryCommon.setCountryCodeData(this) + val countryCode = MMKVUtil.getString(MMKVKey.CountryCode) + val country = mCountryCommon.codeToCountry(countryCode) + mViewBinding.ilUserProfileCountry.etInputContent.setText(country) + } + } + }) + } + //获å–ç”¨æˆ·ä¿¡æ¯ + mUserInfoLiveData.observe(this@UserProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { info -> + mViewBinding.ilUserProfileNameLayout.etInputContent.setText(info.userName) + mViewBinding.ilUserProfileEmailLayout.etInputContent.setText(info.email) + mUploadImageUrl = info.imgurl + ViewUtil.instance.imageLoadUrl( + mViewBinding.ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage, + mUploadImageUrl, + R.drawable.pic_avatar_df + ) + } + } + }) + } + + //ä¸Šä¼ å¤´åƒ + mUploadImageLiveData.observe(this@UserProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() +// showToast(R.string.txt_upload_successful) + mUploadImageUrl = data!! + mViewBinding.ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage.load(mUploadImageUrl) + userProfileSave() + } + }) + } + + mUpdateUserInfoLiveData.observe(this@UserProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.UpdateUserInfo) + showToast(R.string.txt_change_successful) + } + }) + } + +// mUserLogoffLiveData.observe(this@UserProfileActivity) { +// dealRequestResult(it, object : GetResultCallback { +// override fun onResult(any: Any) { +// Util.logOut(this@UserProfileActivity, lifecycleScope) +// } +// }) +// } + } + mTakePhotoAndCompressViewModel.mPhotoPathLiveData.observe(this) { + if (it.size > 0) { + mTempHeadPath = it[0].path +// mViewBinding.ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage.load(it[0]) + mUserViewModel.uploadImage(this@UserProfileActivity, mTempHeadPath) + } + } +// XEventBus.observe(this, EventName.UpdateUserInfo) { +// val email = MMKVUtil.getString(MMKVKey.Email) +// mViewBinding.ilUserProfileEmailLayout.etInputContent.setText(email) +// } + } + +// /** +// * 注销账户 +// */ +// private fun closeAccount() { +// ViewUtil.instance.showDialog( +// mContext, R.string.txt_close_account_tips, object : BaseDialog.OnOkClickListener { +// override fun onOkClick(dialog: BaseDialog<*>) { +// dialog.dismiss() +// mUserViewModel.logoff(this@UserProfileActivity) +// } +// }, okTextResId = R.string.txt_sure +// ) +// } + + private fun userProfileSave() { + mViewBinding.apply { + val name = ilUserProfileNameLayout.etInputContent.text.toString() + val country = ilUserProfileCountry.etInputContent.text.toString() + val email = ilUserProfileEmailLayout.etInputContent.text.toString() + var isSure = true + if (TextUtils.isEmpty(name)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilUserProfileNameLayout.rlEtInputLayout, tvUserProfileNameErrorTip + ) + } + if (TextUtils.isEmpty(country)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, + ilUserProfileCountry.rlEtInputLayout, + tvUserProfileSelectCountryErrorTip + ) + } + if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext, ilUserProfileEmailLayout.rlEtInputLayout, tvUserProfileEmailErrorTip + ) + } + if (!isSure) return + + mUserViewModel.updateUserInfo( + this@UserProfileActivity, + "", + mUploadImageUrl, + mCountryCommon.getCountryCode(), + name + ) + } + } + + private fun dealPhoto(data: Intent?) { + if (null != data) { + //返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + val resultPhotos: ArrayList? = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS) + //返回图片地å€é›†åˆæ—¶å¦‚果你需è¦çŸ¥é“用户选择图片时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ï¼Œç”¨å¦‚ä¸‹æ–¹æ³•èŽ·å– +// data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false) + mTakePhotoAndCompressViewModel.goCropAndCompressImage(resultPhotos) + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (RESULT_OK == resultCode) { + //相机或相册回调 + if (requestCode == ResultCode.ResultCode_1) { + dealPhoto(data) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilUserProfileCountry.rlEtInputLayout, ilUserProfileCountry.ivInputRepresentImage -> mCountryCommon.showCountryCodeDialog() + ilUserProfileEmailLayout.rlEtInputLayout, ilUserProfileEmailLayout.ivInputRepresentImage -> Intent( + mContext, EmailAddressActivity::class.java + ).let { + startActivity(it) + } + + ilUserProfileNameLayout.rlEtInputLayout, ilUserProfileNameLayout.ivInputRepresentImage -> Intent( + mContext, ChangeNameActivity::class.java + ).let { + startActivity(it) + } + + btnUserProfileSave -> { + if (TextUtils.isEmpty(mTempHeadPath)) { + userProfileSave() + } else { + mUserViewModel.uploadImage(this@UserProfileActivity, mTempHeadPath) + } + } + + ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage -> ViewUtil.instance.goSelectPhoto( + this@UserProfileActivity, ResultCode.ResultCode_1 + ) + +// mRightImageButton -> closeAccount() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/data/DataBoardActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/data/DataBoardActivity.kt new file mode 100644 index 0000000..40f025d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/data/DataBoardActivity.kt @@ -0,0 +1,182 @@ +package com.abbidot.tracker.ui.activity.data + +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityDataBoardBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataDetailViewModel + +class DataBoardActivity : + BaseActivity(ActivityDataBoardBinding::inflate) { + + private val mDataDetailViewModel: DataDetailViewModel by viewModels() + + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.dataBoardTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_data_board) + + intent?.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } +// if (null == mPetBean) finish() + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + ilDataBoardTotalDistance.tvDataBoardUnitItem.text = + Util.getMetricUnits(mContext, ConstantInt.Type4) + ilDataBoardAvgActivityTime.let { + it.tvDataBoardTitleItem.text = getString(R.string.txt_avg_activity_time) + it.tvDataBoardUnitItem.text = getString(R.string.txt_min) + } + ilDataBoardAvgCalories.let { + it.tvDataBoardTitleItem.text = getString(R.string.txt_avg_calories) + it.tvDataBoardUnitItem.text = getString(R.string.txt_calorie_unit) + } + ilDataBoardAvgSleepTime.let { + it.tvDataBoardTitleItem.text = getString(R.string.txt_avg_sleep_time) + it.tvDataBoardUnitItem.text = getString(R.string.txt_min) + it.tvDataBoardHrValueItem.visibility = View.VISIBLE + it.tvDataBoardHrUnitItem.visibility = View.VISIBLE + } + setOnClickListenerViews(btnDataBoardSave) +// rsDataBoardSetGoalView.setValue(0) + } + + mPetBean?.apply { + ViewUtil.instance.setPetTypeHead( + mViewBinding.ivDataBoardPetHead.appHeadImage, imgurl, petType + ) + mDataDetailViewModel.getPetActivityDetailInfo(this@DataBoardActivity, petId, deviceId) + } + } + + override fun liveDataObserve() { + mDataDetailViewModel.apply { + mPetActivityInfoLiveData.observe(this@DataBoardActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { activeTimeBean -> + setActivityInfoData(activeTimeBean) + } + } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + mViewBinding.rsDataBoardSetGoalView.setValue(0) + } + }) + } + + mSetGoalLiveData.observe(this@DataBoardActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { + XEventBus.post(EventName.SetGoal) + MMKVUtil.putInt( + MMKVKey.ActivityGoal, mViewBinding.rsDataBoardSetGoalView.getValue() + ) + showToast(R.string.txt_save_successful, isFinish = true) + } + } + }) + } + } + } + + private fun setActivityInfoData(activeTimeBean: ActiveTimeBean) { + mViewBinding.apply { + activeTimeBean.let { + ViewUtil.instance.viewNumberValueAnimator( + ilDataBoardTotalDistance.tvDataBoardValueItem, + 0, + Util.metricConvertUnits(it.distance.toFloat(), ConstantInt.Type4, 2), + animatorDuration = 1500L + ) + ViewUtil.instance.viewNumberValueAnimator( + ilDataBoardAvgActivityTime.tvDataBoardValueItem, + 0, + it.avgActiveTime / 60, + animatorDuration = 1500L + ) + ViewUtil.instance.viewNumberValueAnimator( + ilDataBoardAvgCalories.tvDataBoardValueItem, + 0, + if (it.avgCalories == 0) 0 else 9 / it.avgCalories, + animatorDuration = 1500L + ) + val avgSleepTimeHr = it.avgSleepTime / 3600 + val avgSleepTimeMin = (it.avgSleepTime % 3600) / 60 + ViewUtil.instance.viewNumberValueAnimator( + ilDataBoardAvgSleepTime.tvDataBoardHrValueItem, + 0, + avgSleepTimeHr, + animatorDuration = 1500L + ) + ViewUtil.instance.viewNumberValueAnimator( + ilDataBoardAvgSleepTime.tvDataBoardValueItem, + 0, + avgSleepTimeMin, + animatorDuration = 1500L + ) + rsDataBoardSetGoalView.setValue(it.goal) + } + } + } + + private fun savePetGoal() { + mPetBean?.apply { + mDataDetailViewModel.setGoal( + this@DataBoardActivity, deviceId, mViewBinding.rsDataBoardSetGoalView.getValue() + ) + } + } + + override fun leftBackOnClick() { + mViewBinding.apply { + val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal, ConstantInt.DefaultSportGoal) + if (rsDataBoardSetGoalView.getValue() == goal) super.leftBackOnClick() + else ViewUtil.instance.showDialog( + mContext, + R.string.txt_weather_save, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + savePetGoal() + } + }, + okTextResId = R.string.txt_sure, + cancelListener = object : BaseDialog.OnDialogCancelListener { + override fun onCancelClick(dialog: BaseDialog<*>) { + dialog.dismiss() + finish() + } + }) + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnDataBoardSave -> savePetGoal() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreActivityActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreActivityActivity.kt new file mode 100644 index 0000000..889f3a5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreActivityActivity.kt @@ -0,0 +1,350 @@ +package com.abbidot.tracker.ui.activity.data + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityMoreActivityBinding +import com.abbidot.tracker.dialog.ShowCalenderDialog +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataDetailViewModel +import com.haibin.calendarview.Calendar + +class MoreActivityActivity : + BaseActivity(ActivityMoreActivityBinding::inflate) { + + private val mDataDetailViewModel: DataDetailViewModel by viewModels() + + private var mCalenderDialog: ShowCalenderDialog? = null + private lateinit var mMonthsAbbr: Array + + private var mPetBean: PetBean? = null + + private var mToday = "" + private var mActiveTimeBean: ActiveTimeBean? = null + + override fun getTopBar() = mViewBinding.moreActivityTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_activity) + mRightImageButton = addRightImageButton(R.drawable.selector_share_icon_pressed1) + + mMonthsAbbr = resources.getStringArray(R.array.array_month_abbr) + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + btnMoreActivityEditGoal.visibility = View.GONE + } + + mPetBean?.let { + ViewUtil.instance.setPetTypeHead( + ilMoreActivityPetHead.appHeadImage, it.imgurl, it.petType + ) + tvMoreActivityPetName.text = it.petName + } + tvActivitySelectCalendarShow.text = + Utils.formatTime(System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_EN4) + + setOnClickListenerViews(tvActivitySelectCalendarShow, btnMoreActivityEditGoal) + + hcvActivityDataHorizontalCalenderView.setOnDaySelectedListener { hasChanged, year, month, day, week, items -> + val curDate = "$year-${Utils.fill2Digits(month)}-${Utils.fill2Digits(day)}" + val curTimestamp = Utils.stringToTimestamp(curDate, Utils.DATE_FORMAT_PATTERN_CN) + val enDate = Utils.stringToDate( + curDate, Utils.DATE_FORMAT_PATTERN_CN, Utils.DATE_FORMAT_PATTERN_EN4 + ) +// mCalenderDialog?.setSelectDate(curTimestamp) + tvActivitySelectCalendarShow.text = enDate + getActiveTimeByDay(curDate) + } + + ilMoreActiveTime.apply { + ivSportDataType.setImageResource(R.drawable.icon_active_time) + tvSportDataTitle.text = getString(R.string.txt_time) + tvSportDataUnit.text = getString(R.string.txt_min) + } + ilMoreActiveCalories.apply { + ivSportDataType.setImageResource(R.drawable.icon_calories) + tvSportDataTitle.text = getString(R.string.data_active_calories) + tvSportDataUnit.text = getString(R.string.txt_calorie_unit) + } + ilMoreActiveCaloriesAvg.apply { + ivSportDataType.setImageResource(R.drawable.icon_calories) + tvSportDataTitle.text = getString(R.string.txt_7days_avg) + tvSportDataUnit.text = getString(R.string.txt_calorie_unit) + } + + ilMoreActiveLast30TimeAvg.apply { + ivSportDataType.setImageResource(R.drawable.icon_active_time) + tvSportDataTitle.text = getString(R.string.txt_time_avg) + tvSportDataUnit.text = getString(R.string.txt_min) + } + ilMoreActiveLast30CaloriesAvg.apply { + ivSportDataType.setImageResource(R.drawable.icon_calories) + tvSportDataTitle.text = getString(R.string.txt_calories_avg) + tvSportDataUnit.text = getString(R.string.txt_calorie_unit) + } + } + + initSportData() + + mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) + getActiveTimeByDay(mToday) + } + + /** + * é»˜è®¤çš„æ•°æ® + */ + private fun initSportData() { + val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal) + mViewBinding.apply { + moreActivityTimeProgress.progress = 0 + tvMoreActivityGoalPercent.text = + String.format(getString(R.string.txt_goal_percent), "0") + tvMoreActivityGoal.text = + String.format(getString(R.string.txt_min_unit_lower), "0/$goal") + ilMoreActiveTime.tvSportDataContent.text = "0" + ilMoreActiveCalories.tvSportDataContent.text = "0" + ilMoreActiveCaloriesAvg.tvSportDataContent.text = "0" + val distanceUnit = Util.getMetricUnits(mContext, ConstantInt.Type4) + ilMoreActiveDistance.let { + it.tvSportDataContent.text = "0" + it.tvSportDataUnit.text = distanceUnit + } + tvActivityTotalDistanceUnit.text = distanceUnit + ilMoreActiveLast30TimeAvg.tvSportDataContent.text = "0" + ilMoreActiveLast30CaloriesAvg.tvSportDataContent.text = "0" + tvActivityTotalTimeHour.visibility = View.INVISIBLE + tvActivityTotalTimeHourTitle.visibility = View.INVISIBLE + tvActivityTotalTimeMin.text = "0" + tvActivityTotalDistance.text = "0" + + moreActiveTimeView.setData(mutableListOf()) + last7dayActiveChartView.setData(mutableListOf()) + last30dayActiveLineChartView.setData(mutableListOf()) + } + } + + override fun liveDataObserve() { + mDataDetailViewModel.mActiveDetailLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + setActiveData(this) + } + } + }) + } + + XEventBus.observe(this, EventName.SetGoal) { + mActiveTimeBean?.apply { + val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal) + setGoal(goal) + } + } + } + + private fun setGoal(goalTime: Int) { + mViewBinding.apply { + mActiveTimeBean?.let { + val goal = if (goalTime < ConstantInt.MinSportGoal) ConstantInt.DefaultSportGoal + else goalTime + val activeMin = it.activeTime / 60 + tvMoreActivityGoal.text = + String.format(getString(R.string.txt_min_unit_lower), "$activeMin/$goal") + var goalPercent = activeMin / goal.toFloat() + if (goalPercent > 1) { + goalPercent = 1f + } + goalPercent *= 100 + ViewUtil.instance.viewNumberValueAnimator( + tvMoreActivityGoalPercent, + 0, + goalPercent.toInt(), + getString(R.string.txt_goal_percent) + ) + ViewUtil.instance.viewNumberValueAnimator( + moreActivityTimeProgress, 0, goalPercent.toInt() + ) + } + } + } + + private fun setActiveData(activeTimeBean: ActiveTimeBean) { + mActiveTimeBean = activeTimeBean + mViewBinding.apply { + activeTimeBean.let { + setGoal(it.goalTime) + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveTime.tvSportDataContent, 0, it.activeTime / 60 + ) + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveCalories.tvSportDataContent, 0, it.calories + ) + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveDistance.tvSportDataContent, + 0, + Util.metricConvertUnits(it.distance.toFloat(), ConstantInt.Type4, 2) + ) + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveCaloriesAvg.tvSportDataContent, 0, it.calories / 7 + ) + ViewUtil.instance.viewNumberValueAnimator( + tvActivityTotalDistance, 0, Util.metricConvertUnits( + it.totalDistance.toFloat(), ConstantInt.Type4, 2 + ) + ) + val h = it.totalTimes / 3600 + if (h == 0) { + tvActivityTotalTimeHour.visibility = View.INVISIBLE + tvActivityTotalTimeHourTitle.visibility = View.INVISIBLE + } else { + tvActivityTotalTimeHour.visibility = View.VISIBLE + tvActivityTotalTimeHourTitle.visibility = View.VISIBLE + ViewUtil.instance.viewNumberValueAnimator(tvActivityTotalTimeHour, 0, h) + } + ViewUtil.instance.viewNumberValueAnimator( + tvActivityTotalTimeMin, 0, (it.totalTimes % 3600) / 60 + ) + + if (!TextUtils.isEmpty(it.activeValue)) { + val activeTimeList = mutableListOf() + val activeList = it.activeValue.split(",") + for (i in activeList.indices step 2) { + val time = activeList[i].toInt() + activeList[i + 1].toInt() + activeTimeList.add(time / 60) + } + moreActiveTimeView.setData(activeTimeList) + } + + it.sevenDatas?.let { s -> + if (s.size > 0) { + val yAxis = mutableListOf() + val data = mutableListOf() + for (a in s) { + val week = Utils.stringToDate( + a.dayTime, Utils.DATE_FORMAT_PATTERN_CN, Utils.WEEK_FORMAT_PATTERN + ) + if (a.dayTime == mToday) yAxis.add(getString(R.string.txt_today)) + else yAxis.add(week) + data.add(a.activeTime / 60) + } + last7dayActiveChartView.setData(data, yAxis) + } + } + it.thirtyDatas?.let { t -> + if (t.size > 0) { + val subList = if (t.size > 30) t.subList(0, 30) else t + val xAxis = mutableListOf() + val data = mutableListOf() + var step = 0 + var stepValue = 0 + var timeSum = 0 + var kcalSum = 0.0 + for (i in 0 until subList.size) { + val a = subList[i] + if (i == stepValue) { + val date = Utils.stringToDate( + a.dayTime, + Utils.DATE_FORMAT_PATTERN_CN, + Utils.DATE_FORMAT_PATTERN_EN5 + ) + if (a.dayTime == mToday) xAxis.add(getString(R.string.txt_today)) + else xAxis.add(date) + step++ + stepValue = 6 * step - 1 + } + val min = a.activeTime / 60 + timeSum += min + kcalSum += a.calories + data.add(min) + + LogUtil.e(a.dayTime + ",${t.size}") + } + +// val min = it.activeTime / 60 +// timeSum += min +// kcalSum += it.calories + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveLast30TimeAvg.tvSportDataContent, 0, timeSum / data.size + ) + ViewUtil.instance.viewNumberValueAnimator( + ilMoreActiveLast30CaloriesAvg.tvSportDataContent, 0, kcalSum / data.size + ) + //åå‘输出 + xAxis.reverse() + data.reverse() + last30dayActiveLineChartView.setData(data, xAxis) + } + } + } + } + } + + private fun getActiveTimeByDay(dayTime: String) { + initSportData() + mPetBean?.apply { + mDataDetailViewModel.getActiveTimeByDay( + this@MoreActivityActivity, deviceId, dayTime, petId + ) + } + } + + private fun showCalenderDialog() { + val cTimestamp = Utils.stringToTimestamp( + mViewBinding.tvActivitySelectCalendarShow.text.toString(), Utils.DATE_FORMAT_PATTERN_EN4 + ) + val calenderDialog = + ShowCalenderDialog(mContext, object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is Calendar) { + mViewBinding.hcvActivityDataHorizontalCalenderView.setSelectedDate( + any.year, any.month, any.day + ) + } + } + }, calenderShowTimestamp = cTimestamp, minLastDayRange = 364) + calenderDialog.show() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + tvActivitySelectCalendarShow -> showCalenderDialog() + btnMoreActivityEditGoal -> mPetBean?.let { pet -> + Intent(mContext, DataBoardActivity::class.java).let { + it.putExtra(ConstantString.Pet, pet) + startActivity(it) + } + } + + mRightImageButton -> Intent(mContext, SharePetActivityActivity::class.java).let { + it.putExtra(ConstantString.Pet, mPetBean) + it.putExtra(ConstantString.HistoryDataBean, mActiveTimeBean) + startActivity(it) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreSleepActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreSleepActivity.kt new file mode 100644 index 0000000..251ba99 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/data/MoreSleepActivity.kt @@ -0,0 +1,215 @@ +package com.abbidot.tracker.ui.activity.data + +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.SleepTimeBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityMoreSleepBinding +import com.abbidot.tracker.dialog.ShowCalenderDialog +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataDetailViewModel +import com.haibin.calendarview.Calendar + +class MoreSleepActivity : + BaseActivity(ActivityMoreSleepBinding::inflate) { + + private val mDataDetailViewModel: DataDetailViewModel by viewModels() + + private var mCalenderDialog: ShowCalenderDialog? = null + + private var mPetBean: PetBean? = null + + private var mToday = "" + + override fun getTopBar() = mViewBinding.moreSleepTopBar.titleTopBar + + override fun initData() { + super.initData() + setStatusBarDark() + setTopBarTitle(R.string.txt_resting) + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + root.background = ContextCompat.getDrawable(mContext, R.drawable.icon_more_sleep_bg) + mTopBar!!.titleView?.setTextColor(ContextCompat.getColor(mContext, R.color.white)) + setLeftBackImage(R.drawable.icon_black_back_svg) +// mRightImageButton = addRightImageButton(R.drawable.selector_share_icon_pressed2) + + mPetBean?.let { + ViewUtil.instance.setPetTypeHead( + ilMoreSleepPetHead.appHeadImage, it.imgurl, it.petType + ) + tvMoreSleepPetName.text = it.petName + } + tvSleepSelectCalendarShow.text = + Utils.formatTime(System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_EN4) + + setOnClickListenerViews(tvSleepSelectCalendarShow) + + sleepDataHorizontalCalenderView.setOnDaySelectedListener { hasChanged, year, month, day, week, items -> + val curDate = "$year-${Utils.fill2Digits(month)}-${Utils.fill2Digits(day)}" + val curTimestamp = Utils.stringToTimestamp(curDate, Utils.DATE_FORMAT_PATTERN_CN) + val enDate = Utils.stringToDate( + curDate, Utils.DATE_FORMAT_PATTERN_CN, Utils.DATE_FORMAT_PATTERN_EN4 + ) +// mCalenderDialog?.setSelectDate(curTimestamp) + tvSleepSelectCalendarShow.text = enDate + getSleepTimeByDay(curDate) + } + + sleepDataHorizontalCalenderView.setTodaySelectionBgTextColor( + R.drawable.shape36_drak_green_color_bg, R.color.select_color2 + ) + } + + initSleepData() + + mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) + getSleepTimeByDay(mToday) + } + + override fun liveDataObserve() { + mDataDetailViewModel.mSleepDetailLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + setSleepData(this) + } + } + }) + } + } + + /** + * é»˜è®¤çš„æ•°æ® + */ + private fun initSleepData() { + mViewBinding.apply { + tvMoreSleepTimeSum.text = "0h 0m" + tvTotalSleepTimeHourTitle.visibility = View.INVISIBLE + tvTotalSleepTimeHour.visibility = View.INVISIBLE + tvTotalSleepTimeMin.text = "0" + + moreSleepRingView.setData(0f, 1f) + last7daySleepChartView.setData(mutableListOf()) + last30daySleepLineChartView.setData(mutableListOf()) + } + } + + private fun getSleepTimeByDay(dayTime: String) { + initSleepData() + mPetBean?.apply { + mDataDetailViewModel.getSleepTimeByDay(this@MoreSleepActivity, deviceId, dayTime, petId) + } + } + + private fun setSleepData(sleepTimeBean: SleepTimeBean) { + mViewBinding.apply { + sleepTimeBean.let { + + ViewUtil.instance.setValueAnimator(0, it.sleepTime, 1500) { v -> + val value = v.animatedValue as Int + val h = value / 3600 + val m = (value % 3600) / 60 + val str = "${h}h ${m}m" + tvMoreSleepTimeSum.text = str + } + + val h = it.avgSleepTime / 3600 + val m = (it.avgSleepTime % 3600) / 60 + moreSleepRingView.setData(it.activeTime / 60f, it.sleepTime / 60f) + if (h == 0) { + tvTotalSleepTimeHourTitle.visibility = View.INVISIBLE + tvTotalSleepTimeHour.visibility = View.INVISIBLE + } else { + tvTotalSleepTimeHourTitle.visibility = View.VISIBLE + tvTotalSleepTimeHour.visibility = View.VISIBLE + ViewUtil.instance.viewNumberValueAnimator(tvTotalSleepTimeHour, 0, h) + } + ViewUtil.instance.viewNumberValueAnimator(tvTotalSleepTimeMin, 0, m) + + it.sevenDatas?.let { s -> + if (s.size > 0) { + val yAxis = mutableListOf() + val data = mutableListOf() + for (a in s) { + val week = Utils.stringToDate( + a.dayTime, Utils.DATE_FORMAT_PATTERN_CN, Utils.WEEK_FORMAT_PATTERN + ) + if (a.dayTime == mToday) yAxis.add(getString(R.string.txt_today)) + else yAxis.add(week) + data.add(a.sleepTime / 60) + } + last7daySleepChartView.setData(data, yAxis, true) + } + } + + it.thirtyDatas?.let { t -> + if (t.size > 0) { + val subList = if (t.size > 30) t.subList(0, 30) else t + val xAxis = mutableListOf() + val data = mutableListOf() + var step = 0 + var stepValue = 0 + for (i in 0 until subList.size) { + val a = subList[i] + if (i == stepValue) { + val date = Utils.stringToDate( + a.dayTime, + Utils.DATE_FORMAT_PATTERN_CN, + Utils.DATE_FORMAT_PATTERN_EN5 + ) + if (a.dayTime == mToday) xAxis.add(getString(R.string.txt_today)) + else xAxis.add(date) + step++ + stepValue = 6 * step - 1 + } + val min = a.sleepTime / 60 + data.add(min) + } + //åå‘输出 + xAxis.reverse() + data.reverse() + last30daySleepLineChartView.setData(data, xAxis) + } + } + } + } + } + + private fun showCalenderDialog() { + val cTimestamp = Utils.stringToTimestamp( + mViewBinding.tvSleepSelectCalendarShow.text.toString(), Utils.DATE_FORMAT_PATTERN_EN4 + ) + val calenderDialog = + ShowCalenderDialog(mContext, object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is Calendar) { + mViewBinding.sleepDataHorizontalCalenderView.setSelectedDate( + any.year, any.month, any.day + ) + } + } + }, calenderShowTimestamp = cTimestamp, minLastDayRange = 364) + calenderDialog.show() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + tvSleepSelectCalendarShow -> showCalenderDialog() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/data/SharePetActivityActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/data/SharePetActivityActivity.kt new file mode 100644 index 0000000..66cb29e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/data/SharePetActivityActivity.kt @@ -0,0 +1,285 @@ +package com.abbidot.tracker.ui.activity.data + +import android.content.Intent +import android.graphics.Bitmap +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import coil.load +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.BuildConfig +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivitySharePetActivityBinding +import com.abbidot.tracker.util.FileUtil +import com.abbidot.tracker.util.ImageUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.TakePhotoAndCompressViewModel +import com.huantansheng.easyphotos.EasyPhotos +import com.huantansheng.easyphotos.models.album.entity.Photo +import com.huantansheng.easyphotos.utils.bitmap.BitmapUtils +import com.huantansheng.easyphotos.utils.bitmap.SaveBitmapCallBack +import com.huantansheng.easyphotos.utils.uri.UriUtils +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet +import java.io.File +import java.io.IOException + + +class SharePetActivityActivity : + BaseActivity(ActivitySharePetActivityBinding::inflate) { + + private val mTakePhotoAndCompressViewModel: TakePhotoAndCompressViewModel by viewModels() + +// private lateinit var mFacebookShareDialog: ShareDialog +// private lateinit var mFacebookCallbackManager: CallbackManager + + override fun getTopBar() = mViewBinding.ilSharePetActivityTopBar.titleTopBar + + override fun initData() { + super.initData() + setLeftBackImage(R.drawable.icon_white_back_svg) + if (null == mRightTextButton) { + mRightTextButton = addRightTextButton(R.string.txt_share) + } + + mViewBinding.apply { + + intent.extras?.apply { + Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java)?.let { + ViewUtil.instance.setPetTypeHead( + ilSharePetActivityPetHead.appHeadImage, it.imgurl, it.petType + ) + tvSharePetActivityPetName.text = it.petName + } + Util.getParcelableAdaptive( + intent, ConstantString.HistoryDataBean, ActiveTimeBean::class.java + )?.let { + tvSharePetActivityTime.text = Utils.stringToDate( + it.dayTime, Utils.DATE_FORMAT_PATTERN_CN, Utils.DATE_FORMAT_PATTERN_EN7 + ) + ViewUtil.instance.viewNumberValueAnimator( + ilSharePetActivityActivityTime.tvSportDataContent, 0, it.activeTime / 60 + ) + ViewUtil.instance.viewNumberValueAnimator( + ilSharePetActivityActivityCalories.tvSportDataContent, 0, it.calories + ) + } + } + + val colorBg = ContextCompat.getColor(mContext, R.color.transparent) + ilSharePetActivityActivityTime.let { + it.root.setBackgroundColor(colorBg) + it.tvSportDataUnit.setText(R.string.txt_min) + it.tvSportDataTitle.setText(R.string.txt_activity_time) + it.ivSportDataType.setImageResource(R.drawable.icon_active_time) + } + ilSharePetActivityActivityCalories.let { + it.root.setBackgroundColor(colorBg) + it.tvSportDataUnit.setText(R.string.txt_calorie_unit) + it.tvSportDataTitle.setText(R.string.data_active_calories) + it.ivSportDataType.setImageResource(R.drawable.icon_calories) + } + setOnClickListenerViews(mRightTextButton, ivSharePetActivityChangePhotoBtn) + } + +// mFacebookCallbackManager = CallbackManager.Factory.create() +// mFacebookShareDialog = ShareDialog(mActivity) +// mFacebookShareDialog.registerCallback( +// mFacebookCallbackManager, object : FacebookCallback { +// override fun onCancel() { +// LogUtil.e("1111") +// showToast(R.string.txt_cancel) +// } +// +// override fun onError(error: FacebookException) { +// LogUtil.e("2222,${error.message}") +// showToast("onError,${error.message}") +// } +// +// override fun onSuccess(result: Sharer.Result) { +// LogUtil.e("3333,$result") +// showToast(R.string.txt_successful) +// } +// }, ResultCode.ResultCode_2 +// ) + + //先设置文件fileProvider + EasyPhotos.createCamera(this@SharePetActivityActivity, false) + .setFileProviderAuthority("${BuildConfig.APPLICATION_ID}.fileprovider") + + mTakePhotoAndCompressViewModel.registerCropImageActivityResult(this, 3, 4) + } + + override fun liveDataObserve() { + mTakePhotoAndCompressViewModel.mPhotoPathLiveData.observe(this) { + if (it.size > 0) { + mViewBinding.ivSharePetActivityPhoto.load(it[0]) + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (RESULT_OK == resultCode) { + //相机或相册回调 + if (requestCode == ResultCode.ResultCode_1 && null != data) { + //返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + val resultPhotos: ArrayList = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS)!! + //返回图片地å€é›†åˆæ—¶å¦‚果你需è¦çŸ¥é“用户选择图片时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ï¼Œç”¨å¦‚ä¸‹æ–¹æ³•èŽ·å– +// data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false) + mTakePhotoAndCompressViewModel.goCropAndCompressImage(resultPhotos) + } else if (requestCode == ResultCode.ResultCode_2) { +// mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data) + } + } + } + + private fun getBitmap(bitmapCallback: (Bitmap) -> Unit) { + mViewBinding.apply { + ivSharePetActivityChangePhotoBtn.visibility = View.GONE + ivSharePetActivityChangePhotoBtn.postDelayed({ + ImageUtil.viewToBitmap(rlSharePetActivityInfoLayout) { bitmap -> + bitmapCallback.invoke(bitmap) + ivSharePetActivityChangePhotoBtn.visibility = View.VISIBLE + } + }, 300) + } + } + + /** + * ä¿å­˜å›¾ç‰‡åˆ°æœ¬åœ° + */ + private fun saveToPhoto() { + getBitmap { bitmap -> + val dir = FileUtil.getDiskCacheDirectory(mContext, FileUtil.SHARE_DIRECTORY_NAME) + BitmapUtils.saveBitmapToDir(this, + dir.path, + FileUtil.SHARE_DIRECTORY_NAME, + bitmap, + true, + object : SaveBitmapCallBack { + override fun onSuccess(file: File) { + LogUtil.e("onSuccess,${file.path}") + showToast(R.string.txt_save_successful) + EasyPhotos.recycle(bitmap) + } + + override fun onIOFailed(exception: IOException) { + LogUtil.e("onIOFailed,${exception.message}") + showToast(R.string.txt_fail) + EasyPhotos.recycle(bitmap) + } + + override fun onCreateDirFailed() { + LogUtil.e("onCreateDirFailed") + showToast(R.string.txt_fail) + EasyPhotos.recycle(bitmap) + } + }) + } + } + + /** + * Facebook分享 + */ +// private fun shareToFacebook() { +// getBitmap { bitmap -> +// val photo = SharePhoto.Builder().setBitmap(bitmap).build() +// val content = SharePhotoContent.Builder().addPhoto(photo).build() +// mFacebookShareDialog.show(content) +// } +// } + + private fun showShareMenu() { + QMUIBottomSheet.BottomGridSheetBuilder(mContext).apply { + addItem( + R.drawable.ico_save_to_phone, + "ä¿å­˜åˆ°æœ¬åœ°", + 0, + QMUIBottomSheet.BottomGridSheetBuilder.SECOND_LINE + ).addItem( + R.drawable.ico_save_to_facebook, + "Facebook", + 1, + QMUIBottomSheet.BottomGridSheetBuilder.SECOND_LINE + ).setAddCancelBtn(true).setOnSheetItemClickListener { dialog, itemView -> + dialog.dismiss() + when (itemView.tag as Int) { + 0 -> saveToPhoto() +// 1 -> shareToFacebook() + } + }.build().show() + } + } + + + /** + * 创建分享的éšç¤ºæ„图 + */ + private fun createShareIntent(file: File) { + // Create the new Intent using the 'Send' action. + val shareIntent = Intent(Intent.ACTION_SEND) + // Set the MIME type + shareIntent.type = "image/*" + // Create the URI from the media + val uri = UriUtils.getUri(mContext, file) + // Add the URI to the Intent. + shareIntent.putExtra(Intent.EXTRA_STREAM, uri) + //设置分享牌信为Instagram Story +// share.setPackage("com.instagram.android")//使用 Instagram 的包å + + // Broadcast the Intent. + startActivity(Intent.createChooser(shareIntent, "Share to")) + } + + + private fun shareImage() { + getBitmap { bitmap -> + val dir = FileUtil.getDiskCacheDirectory(mContext, FileUtil.SHARE_DIRECTORY_NAME) + BitmapUtils.saveBitmapToDir(this, + dir.path, + FileUtil.SHARE_DIRECTORY_NAME, + bitmap, + false, + object : SaveBitmapCallBack { + override fun onSuccess(file: File) { + LogUtil.e("onSuccess,${file.path}") + createShareIntent(file) + EasyPhotos.recycle(bitmap) + } + + override fun onIOFailed(exception: IOException) { + LogUtil.e("onIOFailed,${exception.message}") + showToast(R.string.txt_fail) + EasyPhotos.recycle(bitmap) + } + + override fun onCreateDirFailed() { + LogUtil.e("onCreateDirFailed") + showToast(R.string.txt_fail) + EasyPhotos.recycle(bitmap) + } + }) + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ivSharePetActivityChangePhotoBtn -> ViewUtil.instance.goSelectPhoto( + this@SharePetActivityActivity, ResultCode.ResultCode_1 + ) + + mRightTextButton -> shareImage() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker1Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker1Activity.kt new file mode 100644 index 0000000..cd28245 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker1Activity.kt @@ -0,0 +1,115 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import coil.load +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityAddNewTracker1Binding +import com.abbidot.tracker.ui.activity.account.LoginV2Activity +import com.abbidot.tracker.ui.activity.pet.ShowInviteDeviceActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.FamilyViewModel + +class AddNewTracker1Activity : + BaseActivity(ActivityAddNewTracker1Binding::inflate) { + + private val mFamilyViewModel: FamilyViewModel by viewModels() + + private var isFirstBind = false + + override fun getTopBar() = mViewBinding.ilAddNewTracker1TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_add_new_tracker) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + } + + mViewBinding.apply { + ivChargePowerOnGif.load(R.drawable.charge_power_on) + + if (!isFirstBind) { + tvChargePowerOnBackLoginBtn.visibility = View.GONE + + } + setOnClickListenerViews(btnChargePowerOnNext, tvChargePowerOnBackLoginBtn) + } + + //这个页é¢åˆ¤æ–­æœ‰æ²¡æœ‰æ–°çš„邀请,ä¸ç”¨ç®¡åˆ é™¤çš„ + mFamilyViewModel.getDeviceInviteInfo(this) + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshDevice) { + finish() + } + + //获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + mFamilyViewModel.mInviteInfoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + if (inviteArray.isNotEmpty()) { + Intent(mContext, ShowInviteDeviceActivity::class.java).let { intent -> + intent.putParcelableArrayListExtra( + ConstantString.Type, inviteArray as ArrayList + ) + startActivityFinish(intent) + } + } + } + } + }) + } + } + + private var mTempTime = 0L + override fun leftBackOnClick() { + if (isFirstBind) { + // 2s内冿¬¡é€‰æ‹©æœ‰æ•ˆ + if (System.currentTimeMillis() - mTempTime > 2000) { + showToast(R.string.txt_exit_return) + mTempTime = System.currentTimeMillis() + } else { + finish() + System.gc() + } + } else { + super.leftBackOnClick() + } + } + + /** + * 检查获å–定ä½è“牙æƒé™ + */ + private fun checkPermissions() { + Util.checkBluetoothPermissionsEnabled(mContext, { + val intent = Intent(mContext, AddNewTracker2Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + }) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnChargePowerOnNext -> checkPermissions() + tvChargePowerOnBackLoginBtn -> startActivityFinish( + Intent( + mContext, LoginV2Activity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker2Activity.kt new file mode 100644 index 0000000..70ac3fb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker2Activity.kt @@ -0,0 +1,123 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.view.View +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddNewTracker2Binding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.clj.fastble.callback.BleScanCallback +import com.clj.fastble.data.BleDevice +import com.clj.fastble.scan.BleScanRuleConfig +import com.clj.fastble.utils.HexUtil + +class AddNewTracker2Activity : + BaseActivity(ActivityAddNewTracker2Binding::inflate) { + + private var isFirstBind = false + private lateinit var mScanDeviceList: ArrayList + + override fun getTopBar() = mViewBinding.ilAddNewTracker2TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_add_new_tracker) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + } + + mScanDeviceList = ArrayList() + + mViewBinding.apply { + lavAddNewTracker2Lottie.let { + it.setAnimation("lottie/searching_tracker.json") + it.postDelayed({ + it.playAnimation() + }, 500) + } + } + + Util.checkBluetoothPermissionsEnabled(mContext, { + startScanBle() + }) + } + + private fun startScanBle() { + SRBleUtil.instance.cancelBleScan("AddNewTracker2Activity,å·²ç»åœ¨æ‰«æè“牙,å–æ¶ˆè“牙扫æ") + + mScanDeviceList.clear() + // 扫æè¶…时时间,å¯é€‰ + val scanRuleConfig = BleScanRuleConfig.Builder().setScanTimeOut(15000).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + LogUtil.e("开始扫æ...$success") + } + + override fun onScanning(bleDevice: BleDevice?) { + LogUtil.d("onScanning....$bleDevice") + bleDevice?.apply { + if (null != name && name.contains("Pet_Tracker")) { + val start = 45 + val end = start + 6 + val subArray = scanRecord.sliceArray(start until end) + LogUtil.e("截å–åŽçš„外显id广播=${HexUtil.formatHexString(subArray, true)}") + val deviceOutId = subArray.decodeToString() + DataBean().let { + it.name = deviceOutId + mScanDeviceList.add(it) + } + } + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + LogUtil.e("automaticConnection--扫æå®Œæˆ...${scanResultList?.size}") + scanFinished() + } + }) + } + + private fun scanFinished() { + if (mScanDeviceList.size > 0) { + val intent = Intent(mContext, AddNewTracker3Activity::class.java) + intent.putParcelableArrayListExtra(ConstantString.DeviceInfo, mScanDeviceList) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivityFinish(intent) + } else { + mViewBinding.lavAddNewTracker2Lottie.visibility = View.GONE + ViewUtil.instance.showDialog(mContext, + R.string.txt_no_search_device, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mViewBinding.lavAddNewTracker2Lottie.visibility = View.VISIBLE + startScanBle() + } + }, + okTextResId = R.string.txt_ok, + cancelTextResId = R.string.txt_cancel, + cancelListener = object : BaseDialog.OnDialogCancelListener { + override fun onCancelClick(dialog: BaseDialog<*>) { + dialog.dismiss() + finish() + } + }) + } + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.lavAddNewTracker2Lottie.cancelAnimation() + SRBleUtil.instance.cancelBleScan() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt new file mode 100644 index 0000000..f3e72de --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt @@ -0,0 +1,166 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.view.View +import android.widget.NumberPicker +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityAddNewTracker3Binding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.clj.fastble.BleManager + +class AddNewTracker3Activity : + BaseActivity(ActivityAddNewTracker3Binding::inflate), + NumberPicker.OnValueChangeListener { + + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private var isFirstBind = false + private var mDeviceOutId = "" + private var mDeviceId = "" + private var mScanDeviceList: ArrayList? = null + + override fun getTopBar() = mViewBinding.ilAddNewTracker3TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_add_new_tracker) + setLeftBackImage(R.drawable.icon_white_back_svg) + mRightImageButton = addRightImageButton(R.drawable.icon_refresh) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mDeviceOutId = getString(ConstantString.DeviceOutId, "") + mScanDeviceList = Util.getParcelableArrayListAdaptive( + intent, ConstantString.DeviceInfo, DataBean::class.java + ) + } + + if (null == mScanDeviceList) finish() + + mViewBinding.apply { + + mScanDeviceList?.let { + if (it.size == 1) { + mDeviceOutId = it[0].name + tvAddNewTracker3DeviceOutId.visibility = View.VISIBLE + rlAddNewTracker3DeviceLayout.visibility = View.GONE + tvAddNewTracker3DeviceOutId.text = mDeviceOutId + } else if (it.size > 1) { + mDeviceOutId = it[0].name + val deviceOutIds = mutableListOf() + for (d in it) { + deviceOutIds.add(d.name) + } + tvAddNewTracker3DeviceOutId.visibility = View.GONE + rlAddNewTracker3DeviceLayout.visibility = View.VISIBLE + npAddNewTracker3DeviceList.let { np -> + ViewUtil.instance.setNumberPickerAttributes( + mContext, + np, + 0, + it.size - 1, + 0, + 26, + valueChangeListener = this@AddNewTracker3Activity, + removeUpDownLine = true, + loopSelector = false + ) + np.displayedValues = deviceOutIds.toTypedArray() + } + } + } + + setOnClickListenerViews(btnPairTrackerNo, btnPairTrackerYes, mRightImageButton) + } + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + setButtonEnabled(mViewBinding.btnPairTrackerYes, ConstantInt.Type1) + if (ble.conState == ConState.CONNECTED) { + val intent = Intent(mContext, AddPairedSuccessActivity::class.java) + intent.putExtra(ConstantString.DeviceOutId, mDeviceOutId) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + intent.putExtra(ConstantString.DeviceId, mDeviceId) + intent.putExtra(ConstantString.Mac, ble.mac) + startActivity(intent) + } + } + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + if (conState == ConState.DEVICE_NOT_FOUND) { + setButtonEnabled(mViewBinding.btnPairTrackerYes, ConstantInt.Type1) + showToast(R.string.txt_ble_connect_fail) + } + } + + XEventBus.observe(this, EventName.RefreshDevice) { + finish() + } + + mTrackerSetViewModel.mAddBindDeviceLiveData.observe(this) { + setButtonEnabled(mViewBinding.btnPairTrackerYes, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mDeviceId = deviceId + setButtonEnabled(mViewBinding.btnPairTrackerYes, ConstantInt.Type0) + //连接è“牙,方便å‘逿¿€æ´»æŒ‡ä»¤ + mConnectionDeviceViewModel.connectDeviceToDeviceOutId( + this@AddNewTracker3Activity, mDeviceOutId + ) + } + } + }) + } + } + + override fun onValueChange(picker: NumberPicker?, oldVal: Int, newVal: Int) { + mScanDeviceList?.let { + mDeviceOutId = it[newVal].name + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPairTrackerNo -> { + val intent = Intent(mContext, AddNewTracker4Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + + btnPairTrackerYes -> { + BleManager.getInstance().disconnectAllDevice() + setButtonEnabled(mViewBinding.btnPairTrackerYes, ConstantInt.Type0) + mTrackerSetViewModel.bindDevice( + this@AddNewTracker3Activity, mDeviceOutId + ) + } + + mRightImageButton -> { + val intent = Intent(mContext, AddNewTracker2Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivityFinish(intent) + } + } + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker4Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker4Activity.kt new file mode 100644 index 0000000..d33e6ad --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker4Activity.kt @@ -0,0 +1,94 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddNewTracker4Binding +import com.abbidot.tracker.util.ViewUtil +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo + +class AddNewTracker4Activity : + BaseActivity(ActivityAddNewTracker4Binding::inflate) { + + private var isFirstBind = false + + override fun getTopBar() = mViewBinding.ilAddNewTracker4TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_add_new_tracker) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + } + + mViewBinding.apply { + + vetAddNewTracker4EditText.setEditClickListener { + tvAddNewTracker4Error.visibility = View.GONE + vetAddNewTracker4EditText.setBoxBackground( + ContextCompat.getDrawable( + mContext, R.drawable.shape8_gray_border_white_bg + ) + ) + } + setOnClickListenerViews(btnAddNewTrackerAdd) + } + + setListenKeyboardChange() + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshDevice) { + finish() + } + } + + private fun addTrackerError(errorTip: String) { + mViewBinding.apply { + vetAddNewTracker4EditText.let { v -> + YoYo.with(Techniques.Shake).onStart { + v.setBoxBackground( + ContextCompat.getDrawable( + mContext, R.drawable.shape8_red_border_white_bg + ) + ) + if (tvAddNewTracker4Error.visibility == View.GONE) { + ViewUtil.instance.viewShowFadeInAnimation(btnAddNewTrackerAdd, 800) + } + ViewUtil.instance.viewShowFadeInAnimation(tvAddNewTracker4Error, 800) + }.duration(50).playOn(v) + } + } + } + + private fun addNewTracker() { + mViewBinding.apply { + val deviceOutId = vetAddNewTracker4EditText.content + if (TextUtils.isEmpty(deviceOutId) || deviceOutId.length < 6) { + addTrackerError(getString(R.string.txt_add_tracker_tip)) + return + } + val intent = Intent(mContext, AddPairedSuccessActivity::class.java) + intent.putExtra(ConstantString.DeviceOutId, deviceOutId) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnAddNewTrackerAdd -> addNewTracker() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt new file mode 100644 index 0000000..ff5a751 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddPairedSuccessActivity.kt @@ -0,0 +1,161 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityAddPairedSuccessBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel +import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity +import com.abbidot.tracker.ui.activity.subscribe.SubscriptionPlanActivity + +class AddPairedSuccessActivity : + BaseActivity(ActivityAddPairedSuccessBinding::inflate) { + + private val mAddTrackerViewModel: AddTrackerDeviceViewModel by viewModels() + + private lateinit var mSubscriptionsOrderBean: SubscriptionsOrderBean + + private var isFirstBind = false + private var mDeviceOutId = "" + private var mDeviceId = "" + private var mMac = "" + + override fun getTopBar() = mViewBinding.ilAddPairedSuccessTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mDeviceId = getString(ConstantString.DeviceId, "") + mMac = getString(ConstantString.Mac, "") + mDeviceOutId = getString(ConstantString.DeviceOutId, "") + } + + mSubscriptionsOrderBean = SubscriptionsOrderBean() + + mViewBinding.apply { + tvPairSuccessDeviceOutId.text = mDeviceOutId + setOnClickListenerViews(btnPairSuccessActivate) + } + } + + override fun liveDataObserve() { + mAddTrackerViewModel.apply { + //获å–设备套é¤å¯ç”¨çŠ¶æ€ + mDeviceOrderStatusLiveData.observe(this@AddPairedSuccessActivity) { + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + + MMKVUtil.putString(MMKVKey.FirstDeviceId, mDeviceId) + MMKVUtil.putString(MMKVKey.FirstDeviceOutId, mDeviceOutId) + MMKVUtil.putString(MMKVKey.FirstDeviceMac, mMac) + + mSubscriptionsOrderBean.let { o -> + o.deviceId = mDeviceId + o.userId = MMKVUtil.getString(MMKVKey.UserId) + } + + //åˆ¤æ–­è®¾å¤‡æ˜¯å¦æœ‰å¯ç”¨å¥—é¤ + if (availableOrder == ConstantInt.Type1) { + setButtonEnabled( + mViewBinding.btnPairSuccessActivate, ConstantInt.Type0 + ) + //刷新设备绑定 + mAddTrackerViewModel.updatePayDeviceState( + this@AddPairedSuccessActivity, mDeviceId + ) + } else { + mAddTrackerViewModel.getIccId( + this@AddPairedSuccessActivity, mDeviceOutId + ) + } + } + } + }) + } + + //获å–设备simå¡IccId + mGetIccIdLiveData.observe(this@AddPairedSuccessActivity) { + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mSubscriptionsOrderBean.deviceOutId = mDeviceOutId + mSubscriptionsOrderBean.iccid = iccid + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0) + + val intent = Intent(mContext, SubscriptionPlanActivity::class.java) + intent.putExtra(ConstantString.LkSetMeal, mSubscriptionsOrderBean) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivityFinish(intent) + } + } + }) + } + + //æ›´æ–°è®¾å¤‡ç»‘å®šçŠ¶æ€ + mUpdatePayDeviceStateLiveData.observe(this@AddPairedSuccessActivity) { + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind) + XEventBus.post(EventName.RefreshDevice) + if (isFirstBind) { + val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivityFinish(intent) + } + finish() + } + + override fun onRequestError(exceptionCode: String?) { + LogUtil.e("支付æˆåŠŸåŽï¼Œæ›´æ–°ç»‘定状æ€------->请求宠物数æ®é”™è¯¯onRequestErrorï¼Œå†æ¬¡è¯·æ±‚") + if (exceptionCode == mNetworkRequestsFailLimit) { + } else { + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0) + mAddTrackerViewModel.updatePayDeviceState( + this@AddPairedSuccessActivity, mSubscriptionsOrderBean.deviceId + ) + } + } + }) + } + } + } + + + private fun addBindActivateDevice() { + if (TextUtils.isEmpty(mDeviceOutId)) { + showToast(R.string.txt_no_dfu) + return + } + setButtonEnabled(mViewBinding.btnPairSuccessActivate, ConstantInt.Type0) + mAddTrackerViewModel.getDeviceOrderStatus( + this@AddPairedSuccessActivity, mDeviceOutId + ) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPairSuccessActivate -> addBindActivateDevice() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker1Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker1Activity.kt new file mode 100644 index 0000000..b91b845 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker1Activity.kt @@ -0,0 +1,51 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityDeleteTracker1Binding +import com.abbidot.tracker.util.Util + +class DeleteTracker1Activity : + BaseActivity(ActivityDeleteTracker1Binding::inflate) { + + private var mDeviceBean: DeviceBean? = null + private var isOnlyBindOneDevice = false + + override fun getTopBar() = mViewBinding.ilDeleteTracker1TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + isOnlyBindOneDevice = getBoolean(ConstantString.isCheck, false) + mDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.DeviceInfo, DeviceBean::class.java + ) + } + + mViewBinding.apply { + setOnClickListenerViews(btnCancelDeleteTracker1, btnNextDeleteTracker1) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnCancelDeleteTracker1 -> finish() + btnNextDeleteTracker1 -> { + Intent(mContext, DeleteTracker2Activity::class.java).let { + it.putExtra(ConstantString.DeviceInfo, mDeviceBean) + it.putExtra(ConstantString.isCheck, isOnlyBindOneDevice) + startActivityFinish(it) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker2Activity.kt new file mode 100644 index 0000000..b57b2d2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/DeleteTracker2Activity.kt @@ -0,0 +1,263 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.graphics.Typeface +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityDeleteTracker2Binding +import com.abbidot.tracker.dialog.CommonDialog1 +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.clj.fastble.BleManager +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class DeleteTracker2Activity : + BaseActivity(ActivityDeleteTracker2Binding::inflate) { + + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + + private var mDeviceBean: DeviceBean? = null + private var isOnlyBindOneDevice = false + + override fun getTopBar() = mViewBinding.ilDeleteTracker2TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + isOnlyBindOneDevice = getBoolean(ConstantString.isCheck, false) + mDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.DeviceInfo, DeviceBean::class.java + ) + } + + mViewBinding.apply { + setButtonEnabled(btnDeleteDeleteTracker2) + setOnClickListenerViews( + btnCancelDeleteTracker2, + btnDeleteDeleteTracker2, + ilDeleteTracker2BluetoothTips.trbBleConnectState + ) + + mDeviceBean?.let { device -> + val str = String.format(getString(R.string.txt_con_tracker_dec), device.deviceOutId) + tvDeleteTracker2Dec.text = str + + connectBle() + } + } + } + + private fun connectBle() { + mDeviceBean?.let { device -> + //是å¦è¿žæŽ¥äº†è“牙 + if (BleManager.getInstance().isConnected(device.macId)) { + setButtonEnabled(mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type1) + mViewBinding.ilDeleteTracker2BluetoothTips.trbBleConnectState.let { + it.setBackgroundColor( + ContextCompat.getColor(mContext, R.color.cyan_color1) + ) + it.text = getString(R.string.tracker_manage_set_ble_connect) + } + } else { + mConnectionDeviceViewModel.connectDeviceToMac( + this@DeleteTracker2Activity, device.macId + ) + } + } + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { trackDevice: BleTrackDeviceBean -> + showLoading(false) + mDeviceBean?.apply { + if (trackDevice.mac == macId) { + mViewBinding.ilDeleteTracker2BluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (trackDevice.conState == ConState.CONNECTED) { + setButtonEnabled( + mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type1 + ) + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { + setButtonEnabled( + mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type0 + ) + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) +// ViewUtil.instance.bleConState( +// this@DeleteTracker2Activity, trackDevice.conState, Gravity.CENTER +// ) + } + } + } + } + + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + setButtonEnabled(mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type0) + if (conState == ConState.DEVICE_NOT_FOUND) { + ViewUtil.instance.showDialog( + mContext, + R.string.txt_no_search_device, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + } + }, + okTextResId = R.string.txt_sure, + cancelTextResId = R.string.txt_cancel + ) + } + mViewBinding.ilDeleteTracker2BluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState) + } + } + + //接收è“ç‰™è¿”å›žæ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mDeviceBean?.apply { + if (macId == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + + //解绑设备/删除设备 + mTrackerSetViewModel.mUnbindDeviceLiveData.observe(this@DeleteTracker2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { +// showToast(R.string.txt_delete_success) + lifecycleScope.launch { + withContext(Dispatchers.IO) { + mDeviceBean?.let { device -> + SRBleUtil.instance.disconnectToMac(device.macId) + //删除设备æˆåŠŸåŽ,把本地数æ®åº“中的设备也删除 + MyDatabase.deviceDao().deleteByParams( + ConstantString.DeviceId, + device.deviceId, + MyDatabase.DeviceTableName + ) + runOnUiThread { + showDeleteDialog() + } + } + } + } + } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.btnCancelDeleteTracker2, ConstantInt.Type1) + setButtonEnabled(mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type1) + } + }) + } + } + + private fun showDeleteDialog() { + CommonDialog1( + mContext, + "", + getString(R.string.txt_delete_succe), + false, + 5f, + Typeface.BOLD, + R.color.data_black_color, + false, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + if (isOnlyBindOneDevice) { + XEventBus.post(EventName.LogOut) + MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.Type0) + MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.Type0) + val intent = Intent(mContext, AddNewTracker1Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, true) + startActivityFinish(intent) + } else { + XEventBus.post(EventName.DeleteDevice) + finish() + } + } + }).show() + } + + /** + * è§£æžæ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 0x19 && data1 == 1 && data2 == 0) { + mDeviceBean?.apply { + mTrackerSetViewModel.unbindDevice(this@DeleteTracker2Activity, deviceId) + } + } + } + } + + private fun deleteTracker() { + mDeviceBean?.apply { + //是å¦è¿žæŽ¥äº†è“牙 + if (BleManager.getInstance().isConnected(macId)) { + SRBleUtil.instance.getConnectMacDevice(macId)?.let { + setButtonEnabled(mViewBinding.btnDeleteDeleteTracker2, ConstantInt.Type0) + setButtonEnabled(mViewBinding.btnCancelDeleteTracker2, ConstantInt.Type0) + SRBleUtil.instance.writeData(it.bleDevice, SRBleCmdUtil.instance.factoryReset()) + } + } else { + showToast(R.string.tracker_manage_set_ble_unconnect) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnCancelDeleteTracker2 -> finish() + btnDeleteDeleteTracker2 -> deleteTracker() + ilDeleteTracker2BluetoothTips.trbBleConnectState -> mDeviceBean?.apply { + ViewUtil.instance.connectionBtn( + mContext, + ilDeleteTracker2BluetoothTips.trbBleConnectState.text.toString(), + macId + ) { + connectBle() + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/MyTrackerV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/MyTrackerV2Activity.kt new file mode 100644 index 0000000..de1ef34 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/MyTrackerV2Activity.kt @@ -0,0 +1,577 @@ +package com.abbidot.tracker.ui.activity.device + +import android.content.Intent +import android.text.TextUtils +import android.view.LayoutInflater +import android.view.View +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.AssignOptionsAdapter +import com.abbidot.tracker.adapter.MyTrackerV2Adapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityMyTrackerV2Binding +import com.abbidot.tracker.ui.activity.pet.PetProfileActivity +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.PetRelationViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class MyTrackerV2Activity : + BaseActivity(ActivityMyTrackerV2Binding::inflate) { + + private val mTrackerViewModel: TrackerInfoViewModel by viewModels() + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + private val mPetRelationViewModel: PetRelationViewModel by viewModels() + + private lateinit var mMyTrackerAdapter: MyTrackerV2Adapter + private lateinit var mAssignOptionsAdapter: AssignOptionsAdapter + + private var mQMUIBottomSheet: QMUIBottomSheet? = null + + private lateinit var mUnAssignPetList: MutableList + private lateinit var mUnAssignDeviceList: MutableList + + //当剿“作的DeviceBean下标 + private var mCurrentBeanOption = 0 + + //是底部弹窗跳转添加的 + private var isShowBottomSheetAdd = false + + //是å¦åªæœ‰ç»‘定一个的设备 + private var isOnlyBindOneDevice = false + + override fun getTopBar() = mViewBinding.ilMyTrackerV2TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.tracker_manage_mine) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mUnAssignPetList = mutableListOf() + mUnAssignDeviceList = mutableListOf() + + mViewBinding.apply { + val trackerList = mutableListOf() + trackerList.add(DeviceBean()) + mMyTrackerAdapter = MyTrackerV2Adapter(mContext, trackerList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, + rvMyTrackerV2List, + mMyTrackerAdapter, + top = AppUtils.dpToPx(10), + bottom = AppUtils.dpToPx(10) + ) + + mAssignOptionsAdapter = AssignOptionsAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val dataBean = mAssignOptionsAdapter.getData()[pos] + if (pos == 0) { + isShowBottomSheetAdd = true + //处ç†è®¾å¤‡ç±»åž‹ + if (dataBean.menuType == ConstantInt.SpecialType) { + startActivity(Intent(mContext, AddNewTracker1Activity::class.java)) + } else { + startActivity(Intent(mContext, PetProfileActivity::class.java)) + } + } else { + //å…³è”其他宠物/设备 + val device = mMyTrackerAdapter.getData()[mCurrentBeanOption] + if (dataBean.menuType == ConstantInt.SpecialType) { + if (TextUtils.isEmpty(device.deviceOutId)) { + mPetRelationViewModel.bindPet( + this@MyTrackerV2Activity, dataBean.id, device.pet?.petId!! + ) + } else mTrackerSetViewModel.assignOtherPetTracker( + this@MyTrackerV2Activity, + device.pet?.petId!!, + device.deviceId, + dataBean.id + ) + } else { + if (null == device.pet) { + mPetRelationViewModel.bindPet( + this@MyTrackerV2Activity, device.deviceId, dataBean.id + ) + } else mPetRelationViewModel.assignOtherPet( + this@MyTrackerV2Activity, + device.deviceId, + device.pet?.petId!!, + dataBean.id + ) + } + } + } + }) + } + } + + mTrackerViewModel.getDeviceList(this, 1) + } + + override fun liveDataObserve() { + //更新宠物信æ¯,添加/编辑宠物 + XEventBus.observe(this, EventName.RefreshPet) { + if (isShowBottomSheetAdd) mPetRelationViewModel.getUnbindPetList(this@MyTrackerV2Activity) + else mTrackerViewModel.getDeviceList(this, 1) + } + //添加了设备 + XEventBus.observe(this, EventName.RefreshDevice) { + if (isShowBottomSheetAdd) mTrackerViewModel.getUnbindTrackerList(this@MyTrackerV2Activity) + else mTrackerViewModel.getDeviceList(this, 1) + } + //删除设备 + XEventBus.observe(this, EventName.DeleteDevice) { + mTrackerViewModel.getDeviceList(this, 1) + } + //删除设备 + XEventBus.observe(this, EventName.LogOut) { + //删除了最åŽä¸€ä¸ªè®¾å¤‡ + finish() + } + + mTrackerViewModel.apply { + //获å–设备列表 + getDeviceListLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + dismissBottomSheet() + isOnlyBindOneDevice = false + //ç»‘å®šçš„è®¾å¤‡æ•°é‡ + var bindDeviceNumber = 0 + it.getOrNull()?.let { list -> + lifecycleScope.launch { + withContext(Dispatchers.IO) { + for (device in list) { + //ä¿å­˜æœ¬åœ°æ•°æ®åº“ + if (!TextUtils.isEmpty(device.deviceOutId) && null != device.pet) { + bindDeviceNumber++ + MyDatabase.deviceDao().insert(device) + } else if (!TextUtils.isEmpty(device.deviceOutId) && null == device.pet) { + //删除本地没绑定的设备 + MyDatabase.deviceDao().deleteByParams( + ConstantString.DeviceId, + device.deviceId, + MyDatabase.DeviceTableName + ) + } + } + if (bindDeviceNumber == 1) isOnlyBindOneDevice = true + } + list.add(DeviceBean()) + mMyTrackerAdapter.setData(list, true) + } + } + } + }) + } + //èŽ·å–æœªç»‘定宠物的设备 + mUnbindTrackerListLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mUnAssignDeviceList.clear() + it.getOrNull()?.let { deviceBeans -> + mUnAssignDeviceList.addAll(deviceBeans) + } + showAssignOptions(mUnAssignDeviceList, false) + } + }, isShowNoDataTip = false) + } + } + + mTrackerSetViewModel.apply { + //解绑设备/删除设备 +// mUnbindDeviceLiveData.observe(this@MyTrackerV2Activity) { +// dealRequestResult(it, object : GetResultCallback { +// override fun onResult(any: Any) { +// showToast(R.string.txt_delete_success) +// XEventBus.post(EventName.DeleteDevice) +// lifecycleScope.launch { +// withContext(Dispatchers.IO) { +// val device = mMyTrackerAdapter.getData()[mCurrentBeanOption] +// SRBleUtil.instance.disconnectToMac(device.macId) +// //删除设备æˆåŠŸåŽ,把本地数æ®åº“中的设备也删除 +// MyDatabase.deviceDao().deleteByParams( +// ConstantString.DeviceId, +// device.deviceId, +// MyDatabase.DeviceTableName +// ) +// } +// mUnAssignDeviceList.clear() +// mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) +// } +// } +// }) +// } + //å…³è”其他设备 + mAssignOtherTrackerLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + dismissBottomSheet() + XEventBus.post(EventName.RefreshPet) +// mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + mUnAssignPetList.clear() + } + }) + } + } + + mPetRelationViewModel.apply { + //èŽ·å–æœªç»‘定设备的宠物 + mUnbindPetListLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mUnAssignPetList.clear() + it.getOrNull()?.let { petBeans -> + mUnAssignPetList.addAll(petBeans) + } + showAssignOptions(mUnAssignPetList, true) + } + }, isShowNoDataTip = false) + } + //给设备绑定其他宠物 + mAssignOtherPetLiveData.observe(this@MyTrackerV2Activity) { + dismissBottomSheet() + XEventBus.post(EventName.RefreshPet) +// mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + mUnAssignPetList.clear() + } + //绑定设备/宠物 + mBindPetLiveData.observe(this@MyTrackerV2Activity) { + dismissBottomSheet() + XEventBus.post(EventName.RefreshPet) +// mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + mUnAssignPetList.clear() + mUnAssignDeviceList.clear() + } + //解绑宠物 + mUnbindPetLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + val device = mMyTrackerAdapter.getData()[mCurrentBeanOption] + //解绑æˆåŠŸåŽ,把本地数æ®åº“中的设备也删除 + MyDatabase.deviceDao().deleteByParams( + ConstantString.DeviceId, + device.deviceId, + MyDatabase.DeviceTableName + ) + } + mUnAssignDeviceList.clear() + mUnAssignPetList.clear() + XEventBus.post(EventName.RefreshPet) +// mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + } + } + }) + } + //删除宠物 + mDeletePetLiveData.observe(this@MyTrackerV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.DeletePet) + mUnAssignPetList.clear() + mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + } + }) + } + } + } + + /** + * 获å–å“ªä¸ªæœªç»‘å®šçš„æ•°æ® + */ + fun getAssignData(position: Int) { + mCurrentBeanOption = position + mMyTrackerAdapter.getData()[position].apply { + if (TextUtils.isEmpty(deviceOutId)) { + getUnAssignDeviceData() + } else if (null == pet) { + getUnAssignPetData() + } + } + } + + private fun getUnAssignDeviceData() { + if (mUnAssignDeviceList.size == 0) mTrackerViewModel.getUnbindTrackerList(this@MyTrackerV2Activity) + else showAssignOptions(mUnAssignDeviceList, false) + } + + private fun getUnAssignPetData() { + if (mUnAssignPetList.size == 0) mPetRelationViewModel.getUnbindPetList(this@MyTrackerV2Activity) + else showAssignOptions(mUnAssignPetList, true) + } + + /** + * æ˜¾ç¤ºå¯æ·»åŠ çš„è®¾å¤‡æˆ–è€…å® ç‰© + */ + private fun showAssignOptions(any: Any, isPet: Boolean) { + if (any is MutableList<*>) { + val list = mutableListOf() + if (isPet) { + list.add(DataBean("+ " + getString(R.string.tracker_manage_add_pet), "")) + } else { + DataBean("+ " + getString(R.string.txt_new_tracker), "").apply { + menuType = ConstantInt.SpecialType + list.add(this) + } + } + for (i in 0 until any.size) { + val a = any[i] + if (a is PetBean) { + DataBean(a.petName, a.imgurl).apply { + menuType = a.petType + id = a.petId + list.add(this) + } + } else if (a is DeviceBean) { + DataBean(a.deviceOutId, "").apply { + menuType = ConstantInt.SpecialType + id = a.deviceId + list.add(this) + } + } + } + mAssignOptionsAdapter.setData(list, true) + } + + if (null == mQMUIBottomSheet) { + val builder = ViewUtil.instance.showBottomSheetList(mContext, null).apply { + val view = + LayoutInflater.from(mContext).inflate(R.layout.layout_assign_options_list, null) + addContentFooterView(view) + val recyclerView = view.findViewById(R.id.rv_assign_options_list) + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager( + mContext, recyclerView, mAssignOptionsAdapter + ) +// setOnBottomDialogDismissListener { +// isShowBottomSheetAdd = false +// } + } + mQMUIBottomSheet = builder.build().apply { + setOnCancelListener { + if (isShowBottomSheetAdd) { + isShowBottomSheetAdd = false + mTrackerViewModel.getDeviceList(this@MyTrackerV2Activity, 1) + } + } + setCanceledOnTouchOutside(false) + } + } + mQMUIBottomSheet?.show() + } + + /** + * æ¶ˆå¤±å¯æ·»åŠ çš„è®¾å¤‡æˆ–è€…å® ç‰©çš„åº•éƒ¨å¼¹çª— + */ + private fun dismissBottomSheet() { + isShowBottomSheetAdd = false + mQMUIBottomSheet?.dismiss() + } + + /** + *底部弹出设备æ“作èœå• + */ + fun showDeviceBottomSheetMenu(pos: Int) { + mCurrentBeanOption = pos + val device = mMyTrackerAdapter.getData()[pos] + ViewUtil.instance.showBottomSheetList(mContext, { dialog, itemView, position, tag -> + dialog.dismiss() + when (position) { + 0 -> if (null == device.pet) deleteDevice(device) + else getUnAssignDeviceData() + + 1 -> if (!isOnlyBindOneDevice) unAssignDeviceDialogTips(device) + else deleteDevice(device) + + 2 -> deleteDevice(device) + } + }, title = device.deviceOutId).apply { + if (null == device.pet) { + addItem( + getString(R.string.txt_delete) + " ${device.deviceOutId}" + ) + } else { + addItem(getString(R.string.txt_assign_other_tracker)) + if (!isOnlyBindOneDevice) { + addItem( + String.format(getString(R.string.txt_unassign_other), device.deviceOutId) + ) + } + addItem( + getString(R.string.txt_delete) + " ${device.deviceOutId}" + ) + } + }.build().show() + } + + /** + *底部弹出宠物æ“作èœå• + */ + fun showPetBottomSheetMenu(pos: Int) { + mCurrentBeanOption = pos + val device = mMyTrackerAdapter.getData()[pos] + var petName = "" + device.pet?.let { + petName = it.petName + } + ViewUtil.instance.showBottomSheetList(mContext, { dialog, itemView, position, tag -> + dialog.dismiss() + when (position) { + 0 -> { + //å…³è”其他宠物 + if (!TextUtils.isEmpty(device.deviceOutId)) { + getUnAssignPetData() + } else { + //编辑 + goEditPet(device) + } + } + + 1 -> { + //有绑定对应的设备 + if (!TextUtils.isEmpty(device.deviceOutId)) { + //åªæœ‰æœ€åŽä¸€å¯¹è®¾å¤‡ï¼Œåªæœ‰ç¼–辑 + if (isOnlyBindOneDevice) goEditPet(device) + //解绑宠物 + else unAssignDeviceDialogTips(device) + } else { + //删除 + deletePetDialogTips(device) + } + } + //编辑 + 2 -> goEditPet(device) + 3 -> deletePetDialogTips(device) + } + }, title = petName).apply { + //有绑定对应的设备 + if (!TextUtils.isEmpty(device.deviceOutId)) { + addItem(getString(R.string.txt_assign_other_pet)) + if (!isOnlyBindOneDevice) addItem( + String.format(getString(R.string.txt_unassign_other), petName) + ) + addItem(getString(R.string.pet_manage_detail_edit) + " $petName") + if (!isOnlyBindOneDevice) addItem( + getString(R.string.txt_delete) + " $petName" + ) + } else { + addItem(getString(R.string.pet_manage_detail_edit) + " $petName") + addItem(getString(R.string.txt_delete) + " $petName") + } + }.build().show() + } + + /** + * 跳转宠物编辑 + */ + private fun goEditPet(device: DeviceBean) { + device.pet?.apply { + val intent = Intent( + mContext, PetProfileActivity::class.java + ) + intent.putExtra(ConstantString.Edit, true) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + + /** + * 添加红色的底部item + */ +// private fun addBottomSheetRedItem( +// text: String, bottomListSheetBuilder: QMUIBottomSheet.BottomListSheetBuilder +// ) { +// QMUIBottomSheetListItemModel(text, text).let { +// it.skinTextColorAttr(R.attr.qmui_config_color_red) +// bottomListSheetBuilder.addItem(it) +// } +// } + + /** + * 删除设备 + */ + private fun deleteDevice(device: DeviceBean) { + ViewUtil.instance.showDialog( + mContext, getString(R.string.txt_delete_tips), object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + Intent(mContext, DeleteTracker1Activity::class.java).let { + it.putExtra(ConstantString.DeviceInfo, device) + val isUnbindLastOne = if (isOnlyBindOneDevice && null == device.pet) { + false + } else isOnlyBindOneDevice + it.putExtra(ConstantString.isCheck, isUnbindLastOne) + startActivity(it) + } +// mTrackerSetViewModel.unbindDevice(this@MyTrackerV2Activity, device.deviceId) + } + }, okTextResId = R.string.txt_sure + ) + } + + /** + * 解绑宠物/设备 + */ + private fun unAssignDeviceDialogTips(device: DeviceBean) { + device.apply { + pet?.let { + val string = String.format( + getString(R.string.txt_unassign_pet_tracker), it.petName, deviceOutId + ) + ViewUtil.instance.showDialog( + mContext, string, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mPetRelationViewModel.unbindPet( + this@MyTrackerV2Activity, deviceId, it.petId + ) + } + }, okTextResId = R.string.txt_sure + ) + } + } + } + + /** + * 删除宠物 + */ + private fun deletePetDialogTips(device: DeviceBean) { + device.apply { + pet?.let { + val string = String.format( + getString(R.string.txt_delete_pet_data), it.petName + ) + ViewUtil.instance.showDialog( + mContext, string, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mPetRelationViewModel.deletePet( + this@MyTrackerV2Activity, it.petId + ) + } + }, okTextResId = R.string.txt_sure + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt new file mode 100644 index 0000000..29dd39e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt @@ -0,0 +1,791 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.annotation.SuppressLint +import android.text.TextUtils +import android.view.Gravity +import android.view.MotionEvent +import android.view.View +import androidx.activity.viewModels +import androidx.core.view.isVisible +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.SelectFencesTypeCardShadeAdapter +import com.abbidot.tracker.adapter.VirtualFencesZoneShadeAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.GetFencesBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityAddEditFencesZoneBinding +import com.abbidot.tracker.ui.common.map.FencesAddEditMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.FencesManageViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.OnCircleViewScaleClickListener +import com.abbidot.tracker.widget.OnPolygonViewPointPullClickListener +import com.abbidot.tracker.widget.OnRectViewRotateScaleClickListener +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo + +/** + * æ·»åŠ ç¼–è¾‘å›´æ  + */ +open class AddAndEditFencesZoneBaseActivity : + BaseActivity(ActivityAddEditFencesZoneBinding::inflate), + FencesAddEditMapCommon.OnActivityCallBack, OnRectViewRotateScaleClickListener, + OnCircleViewScaleClickListener, OnPolygonViewPointPullClickListener { + + val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + private val mFencesManageViewModel: FencesManageViewModel by viewModels() + private val mFencesMapViewModel: FencesMapViewModel by viewModels() + + private lateinit var mFragment: Fragment + lateinit var mFencesMapCommon: FencesAddEditMapCommon + + lateinit var mFencesZoneShapeList: MutableList + + lateinit var mFencesZoneShapeAdapter: VirtualFencesZoneShadeAdapter + lateinit var mFencesZoneTypeList: MutableList + + lateinit var mSelectTypeShadeAdapter: SelectFencesTypeCardShadeAdapter + + lateinit var mFencesBean: FencesBean + var mPetBean: PetBean? = null + var mFencesList: GetFencesBean? = null + var isEditFences = false + + private var mShowCenterLocationType = ConstantInt.OtherLocationType + private val mDefaultFencesName = + arrayOf("Home", "Office", "Garden", "Park", "Play", "Unsafe", "Vegetable Garden", "Water") + + //æ˜¯å¦æ˜¯å«æ˜Ÿåœ°å›¾ + private var isSatelliteMap = false + private lateinit var mHaveFencesList: MutableList + + private lateinit var mDistanceUnit: String + + override fun getTopBar() = mViewBinding.addEditFencesZoneTopBar.titleTopBar + + @SuppressLint("ClickableViewAccessibility") + override fun initData() { + super.initData() +// setLeftBackImage(R.drawable.icon_white_back_svg) + val mapTypeSp = Util.getMapTypeSp() + isSatelliteMap = mapTypeSp == ConstantInt.Type1 + + mDistanceUnit = Util.getMetricUnits(mContext, ConstantInt.Type3) + + mHaveFencesList = mutableListOf() + mPetBean = + Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java)?.apply { + mFencesBean.deviceId = deviceId + mFencesBean.deviceServiceId = deviceServiceId + } + mFencesList = + Util.getParcelableAdaptive(intent, ConstantString.Fence, GetFencesBean::class.java) + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivFencesZoneRefreshBtn, mShowCenterLocationType + ) + ilFencesZoneNameInput.tvInputNameTitle.text = getString(R.string.txt_fence_name) + fencesZoneCircleView.setOnCircleViewScaleClickListener(this@AddAndEditFencesZoneBaseActivity) + fencesZoneRectView.setOnRectViewRotateScaleClickListener(this@AddAndEditFencesZoneBaseActivity) + fencesZonePolygonView.setOnPolygonViewPointPullClickListener(this@AddAndEditFencesZoneBaseActivity) + + mFencesMapCommon = FencesAddEditMapCommon() + mFragment = mFencesMapCommon.getMapFragment( + mContext, + mFencesBean, + fencesZoneCircleView, + fencesZoneRectView, + fencesZonePolygonView, + isEditFences, + this@AddAndEditFencesZoneBaseActivity + ) { +// mFencesList?.apply { +// mPetBean?.let { +// mFencesMapCommon.setPetHeadAndCurrentLocation( +// it.imgurl, latitude, longitude +// ) +// } +// } + mapLoadOk() + } + supportFragmentManager.commit { + add(R.id.fc_fences_map_fragment, mFragment) + } + + addListData() + + mFencesZoneShapeAdapter = + VirtualFencesZoneShadeAdapter(mContext, mFencesZoneShapeList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + if (mFencesZoneShapeList[pos].selected) return + ViewUtil.instance.updateDataBeanOnlySelectedItem( + this@apply, mFencesZoneShapeList, pos + ) + setFenceShape(pos + 1) + mFencesMapCommon.calculateDistanceAndGetPointLatLng( + this@AddAndEditFencesZoneBaseActivity, 600 + ) + } + }) + } + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, rvFencesZoneShapeList, mFencesZoneShapeAdapter + ) + + mSelectTypeShadeAdapter = + SelectFencesTypeCardShadeAdapter(mContext, mFencesZoneTypeList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ViewUtil.instance.updateDataBeanOnlySelectedItem( + this@apply, mFencesZoneTypeList, pos + ) + if (mFencesBean.fenceType == 2) mFencesBean.fenceNameType = pos + 6 + else mFencesBean.fenceNameType = pos + 1 + setFenceName() + } + }) + } + ViewUtil.instance.setRecyclerViewGridLayout( + mContext, rvFencesZoneImageTypeList, mSelectTypeShadeAdapter, 5 + ) + + setOnClickListenerViews( + ivFencesZoneRefreshBtn, + ivFencesZoneMapSwitchBtn, + tvFencesZoneShapeResetBtn, + btnCancelFencesZone, + btnSaveFencesZone + ) + + var oldY = 0f + val slideDis = 50 + rlAddEditFencesZoneInfoLayout.setOnTouchListener { v, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + oldY = event.y + } + + MotionEvent.ACTION_MOVE -> { + } + + MotionEvent.ACTION_UP -> { + if (event.y - oldY > slideDis) { + downLayout() + } else if (event.y - oldY < -slideDis) { + slideUpLayout() + } + } + } + false + } + //监å¬å¸ƒå±€å˜åŒ– + rlAddEditFencesZoneInfoLayout.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> + bottomMarginOverlap() + } + } + + setListenKeyboardChange() + + setFenceName() + } + + open fun mapLoadOk() { + drawFences() + } + + /** + * 设置围æ åå­— + */ + private fun setFenceName() { + mViewBinding.ilFencesZoneNameInput.apply { + val inputContent = etInputContent.text.toString() + if (TextUtils.isEmpty(inputContent)) { + etInputContent.setText(mDefaultFencesName[mFencesBean.fenceNameType - 1]) + } else { + var isDefaultFencesName = false + for (str in mDefaultFencesName) { + if (str == inputContent) { + isDefaultFencesName = true + break + } + } + if (isDefaultFencesName) etInputContent.setText(mDefaultFencesName[mFencesBean.fenceNameType - 1]) + } + } + } + + /** + * 设置显示哪ç§å›´æ æ ·å¼ + */ + fun setFenceShape(shapeType: Int) { + if (mFencesMapCommon.isMapLoadOk()) showLoading(true) + mViewBinding.fencesZoneCircleView.visibility = View.GONE + mViewBinding.fencesZoneRectView.visibility = View.GONE + mViewBinding.fencesZonePolygonView.visibility = View.GONE + when (shapeType) { + ConstantInt.CircleShapeType -> mViewBinding.fencesZoneCircleView.visibility = + View.VISIBLE + + ConstantInt.RectangleShapeType -> mViewBinding.fencesZoneRectView.visibility = + View.VISIBLE + + ConstantInt.PolygonShapeType -> mViewBinding.fencesZonePolygonView.visibility = + View.VISIBLE + } + mFencesBean.fenceShapeType = shapeType + } + + override fun liveDataObserve() { + //å地ç†ç¼–ç  + mGeoCoderViewModel.mLatLonAddressLiveData.observe(this) { + if (mFencesBean.startDrag) return@observe + mViewBinding.tvFencesZoneGpsLocation.apply { + mFencesBean.address = it +// visibility = if (TextUtils.isEmpty(it)) { +// View.INVISIBLE +// } else { +// mFencesBean.address = it +// if (mViewBinding.ilFencesZoneNameInput.root.visibility == View.GONE) View.GONE +// else View.VISIBLE +// } +// text = it + } + } + } + + /** + * åœ°å›¾ä¸Šç”»å·²æ·»åŠ çš„å›´æ  + */ + fun drawFences() { + mFencesList?.apply { + nogoFenceList?.let { + mHaveFencesList.addAll(it.toList()) + } + normalFenceList?.let { + mHaveFencesList.addAll(it.toList()) + } + + if (mHaveFencesList.size > 0) mFencesMapViewModel.setImageFencesData( + mContext, mHaveFencesList, mFragment, isSatelliteMap = isSatelliteMap + ) + } + } + + /** + * 添加围æ é€šçŸ¥ + */ + fun addLiveDataObserve() { + mFencesManageViewModel.mFencesAddLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + sendNotifyData() + successTips(R.string.txt_save_successful) + } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.btnSaveFencesZone, ConstantInt.Type1) + } + }) + } + } + + /** + * 编辑更新围æ é€šçŸ¥ + */ + fun editLiveDataObserve() { + mFencesManageViewModel.mDeleteFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.DeleteFences) + sendNotifyData() + showToast( + R.string.txt_delete_success, isFinish = true, gravity = Gravity.CENTER + ) + } + }) + } + mFencesManageViewModel.mUpdateFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + sendNotifyData() + successTips(R.string.txt_save_successful) + } + }) + } + } + + private fun sendNotifyData() { + mPetBean?.apply { + SRBleUtil.instance.isConnectBleSendNotifyData(macID) + } + } + + /** + * 修改æˆåŠŸæç¤º + */ + private fun successTips(resStringId: Int) { + XEventBus.post(EventName.RefreshFences) + showToast(resStringId, isFinish = true, gravity = Gravity.CENTER) + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + bottomMarginOverlap() + } + + private fun slideUpLayout() { + mViewBinding.apply { + LogUtil.i("上滑") +// tvFencesZoneGpsLocation.visibility = View.VISIBLE +// tvFencesZoneShapeResetBtn.visibility = View.VISIBLE + ilFencesZoneNameInput.root.visibility = View.VISIBLE + rvFencesZoneImageTypeList.visibility = View.VISIBLE + tvFencesZoneShapeTitle.visibility = View.VISIBLE + rvFencesZoneShapeList.visibility = View.VISIBLE + ivFencesZoneRefreshBtn.visibility = View.GONE + ivFencesZoneMapSwitchBtn.visibility = View.GONE + +// mFencesMapCommon.resetFencesCentre(mFencesBean) + + YoYo.with(Techniques.BounceInUp).duration(800).onEnd { + ViewUtil.instance.viewShowFadeInAnimation(ivFencesZoneRefreshBtn) + ViewUtil.instance.viewShowFadeInAnimation(ivFencesZoneMapSwitchBtn) + }.playOn(rlAddEditFencesZoneInfoLayout) + } + } + + private fun downLayout() { + mViewBinding.apply { + LogUtil.i("下滑") + tvFencesZoneGpsLocation.visibility = View.GONE + tvFencesZoneShapeResetBtn.visibility = View.GONE + ilFencesZoneNameInput.root.visibility = View.GONE + rvFencesZoneImageTypeList.visibility = View.GONE + tvFencesZoneShapeTitle.visibility = View.GONE + rvFencesZoneShapeList.visibility = View.GONE + rlAddEditFencesZoneInfoLayout.visibility = View.GONE + ivFencesZoneRefreshBtn.visibility = View.GONE + ivFencesZoneMapSwitchBtn.visibility = View.GONE + +// mFencesMapCommon.resetFencesCentre(mFencesBean) + + YoYo.with(Techniques.BounceIn).onStart { + rlAddEditFencesZoneInfoLayout.visibility = View.VISIBLE + }.onEnd { + ViewUtil.instance.viewShowFadeInAnimation(ivFencesZoneRefreshBtn) + ViewUtil.instance.viewShowFadeInAnimation(ivFencesZoneMapSwitchBtn) + }.duration(800).playOn(rlAddEditFencesZoneInfoLayout) + } + } + + /** + * 釿–°è®¾ç½®å¸ƒå±€ä½ç½® + */ + private fun bottomMarginOverlap() { + mViewBinding.apply { + ViewUtil.instance.setMapViewBottomMarginOverlap( + rlAddEditFencesZoneMapLayout, + rlAddEditFencesZoneInfoLayout.height, + AppUtils.dpToPx(20) + ) + + //釿–°è®¾ç½®å›´æ ä¸­å¿ƒ + mFencesMapCommon.resetFencesCentre( + this@AddAndEditFencesZoneBaseActivity, fencesZoneCircleView, mFencesBean + ) + } + } + + private fun addListData() { + mFencesZoneShapeList = mutableListOf() + with(DataBean()) { + imageId = R.drawable.icon_fence_circle_shape_svg + selectImageId = R.drawable.icon_fence_circle_shape_select_svg + selected = true + mFencesZoneShapeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_fence_rect_shape_svg + selectImageId = R.drawable.icon_fence_rect_shape_select_svg + mFencesZoneShapeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_fence_polygon_shape_svg + selectImageId = R.drawable.icon_fence_polygon_shape_select_svg + mFencesZoneShapeList.add(this) + } + + mFencesZoneTypeList = mutableListOf() + } + + /** + * å®‰å…¨åŒºåŸŸå›´æ æ•°æ®åˆå§‹åŒ– + * @param isEditFences 编辑围æ ä¸éœ€è¦åˆå§‹åŒ–å¤§å° + */ + fun safeZoneInitData(isEditFences: Boolean = false) { + mViewBinding.apply { + safeZoneToMapTypeChangeColor() + + if (!isEditFences) { + fencesZoneCircleView.initDefaultRadius() + fencesZoneRectView.initDefaultWidthHeight() + fencesZonePolygonView.initDefaultWidthHeightSize() + } + + with(DataBean()) { + imageId = R.drawable.icon_save_zone_type1_svg + selected = true + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_save_zone_type2_svg + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_save_zone_type3_svg + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_save_zone_type4_svg + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_save_zone_type5_svg + mFencesZoneTypeList.add(this) + } + mSelectTypeShadeAdapter.setData(mFencesZoneTypeList, true) + } + } + + /** + * å±é™©åŒºåŸŸå›´æ æ•°æ®åˆå§‹åŒ– + * @param isEditFences 编辑围æ ä¸éœ€è¦åˆå§‹åŒ–å¤§å° + */ + fun noGoZoneInitData(isEditFences: Boolean = false) { + mViewBinding.apply { + fencesZoneCircleView.setColorAndImage( + mContext, + R.color.red_color2, + R.color.red_color3, + R.drawable.icon_fences_zone_gps_red_svg, + R.drawable.icon_fence_circle_scale_red_svg + ) + fencesZoneRectView.setColorAndImage( + mContext, + R.color.red_color2, + R.color.red_color3, + R.drawable.icon_fences_zone_gps_red_svg, + R.drawable.icon_fence_rect_zoom_red_svg, + R.drawable.icon_fence_dot_red_svg, + R.drawable.icon_fence_rect_red_rotate_svg + ) + fencesZonePolygonView.setColorAndImage( + mContext, + R.color.red_color2, + R.color.red_color3, + R.drawable.icon_fences_zone_gps_red_svg, + R.drawable.icon_fence_polygon_operate_red_svg + ) + + if (!isEditFences) { + fencesZoneCircleView.initDefaultRadius() + fencesZoneRectView.initDefaultWidthHeight() + fencesZonePolygonView.initDefaultWidthHeightSize() + } + + with(DataBean()) { + imageId = R.drawable.icon_no_zone_type1_svg + selected = true + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_no_zone_type2_svg + mFencesZoneTypeList.add(this) + } + with(DataBean()) { + imageId = R.drawable.icon_no_zone_type3_svg + mFencesZoneTypeList.add(this) + } + mSelectTypeShadeAdapter.setData(mFencesZoneTypeList, true) + } + } + + /** + * å®‰å…¨å›´æ æ ¹æ®åœ°å›¾ç±»åž‹æ”¹å˜é¢œè‰² + */ + private fun safeZoneToMapTypeChangeColor() { + mViewBinding.apply { + if (isSatelliteMap) { + fencesZoneCircleView.setColorAndImage( + mContext, + R.color.select_color2, + locationDrawableRes = R.drawable.icon_fences_zone_gps_green_svg + ) + fencesZoneRectView.setColorAndImage( + mContext, + R.color.select_color2, + locationDrawableRes = R.drawable.icon_fences_zone_gps_green_svg + ) + fencesZonePolygonView.setColorAndImage( + mContext, + R.color.select_color2, + locationDrawableRes = R.drawable.icon_fences_zone_gps_green_svg + ) + } else { + fencesZoneCircleView.setColorAndImage( + mContext, + R.color.select_color, + locationDrawableRes = R.drawable.icon_fences_zone_gps_svg + ) + fencesZoneRectView.setColorAndImage( + mContext, + R.color.select_color, + locationDrawableRes = R.drawable.icon_fences_zone_gps_svg + ) + fencesZonePolygonView.setColorAndImage( + mContext, + R.color.select_color, + locationDrawableRes = R.drawable.icon_fences_zone_gps_svg + ) + } + } + } + + /** + * ä¿å­˜å›´æ ` + */ + fun saveFences(fencesBean: FencesBean) { + val fenceName = mViewBinding.ilFencesZoneNameInput.etInputContent.text.toString() + if (TextUtils.isEmpty(fenceName)) { + showToast(R.string.txt_not_null, gravity = Gravity.CENTER) + return + } + fencesBean.apply { + setButtonEnabled(mViewBinding.btnSaveFencesZone, ConstantInt.Type0) + name = fenceName + when (fenceShapeType) { + ConstantInt.CircleShapeType -> { + mFencesManageViewModel.addCircleFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + + ConstantInt.RectangleShapeType -> { + mFencesManageViewModel.addRectFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + + else -> { + mFencesManageViewModel.addPolygonFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + } + } + } + + /** + * æ›´æ–°å›´æ  + */ + fun updateFences(fencesBean: FencesBean) { + val fenceName = mViewBinding.ilFencesZoneNameInput.etInputContent.text.toString() + if (TextUtils.isEmpty(fenceName)) { + showToast(R.string.txt_not_null, gravity = Gravity.CENTER) + return + } + fencesBean.apply { + name = fenceName + when (fenceShapeType) { + ConstantInt.CircleShapeType -> { + mFencesManageViewModel.updateCircleFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + + ConstantInt.RectangleShapeType -> { + mFencesManageViewModel.updateRectFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + + else -> { + mFencesManageViewModel.updatePolygonFence( + this@AddAndEditFencesZoneBaseActivity, fencesBean + ) + } + } + } + } + + /** + * åˆ é™¤å›´æ  + */ + fun deleteFences(fencesBean: FencesBean) { + fencesBean.apply { + mFencesManageViewModel.deleteFence( + this@AddAndEditFencesZoneBaseActivity, fenceId, deviceServiceId + ) + } + } + + /** + * æ¢å¤é»˜è®¤å›´æ å¤§å° + */ + private fun recoverDefaultFencesView() { + mViewBinding.apply { + if (fencesZoneCircleView.isVisible) fencesZoneCircleView.initDefaultRadius() + if (fencesZoneRectView.isVisible) fencesZoneRectView.initDefaultWidthHeight() + if (fencesZonePolygonView.isVisible) fencesZonePolygonView.initDefaultWidthHeightSize() + mFencesMapCommon.calculateDistanceAndGetPointLatLng(this@AddAndEditFencesZoneBaseActivity) + } + } + + override fun rectRotateClick() { + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun rectScaleClick() { + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun rectStartDragClick() { + mFencesBean.startDrag = true + } + + override fun rectEndDragClick() { + mFencesBean.startDrag = false + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun circleScaleClick() { + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun circleStartDragClick() { + mFencesBean.startDrag = true + } + + override fun circleEndDragClick() { + mFencesBean.startDrag = false + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun polygonPointPullClick() { + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + override fun polygonStartDragClick() { + mFencesBean.startDrag = true + } + + override fun polygonEndDragClick() { + mFencesBean.startDrag = false + mFencesMapCommon.calculateDistanceAndGetPointLatLng(delayMillis = 0) + } + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + private fun switchMapType() { + mViewBinding.apply { + isSatelliteMap = !isSatelliteMap + mFencesMapCommon.switchSatelliteAndNormalMapType() + if (mHaveFencesList.size > 0) mFencesMapViewModel.setImageFencesData( + mContext, mHaveFencesList, mFragment, isSatelliteMap = isSatelliteMap + ) + if (mFencesBean.fenceType == ConstantInt.SafeZone) { + safeZoneToMapTypeChangeColor() + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ivFencesZoneRefreshBtn -> { + when (mShowCenterLocationType) { +// ConstantInt.PetLocationType -> { +// mShowCenterLocationType = ConstantInt.UserLocationType +// } + + ConstantInt.UserLocationType -> { + mShowCenterLocationType = ConstantInt.OtherLocationType + } + + ConstantInt.OtherLocationType -> { + mShowCenterLocationType = ConstantInt.UserLocationType + } + } + mFencesBean.let { + mFencesMapCommon.switchShowLocation( + mShowCenterLocationType, it.latitudeCenter, it.longitudeCenter + ) + } + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivFencesZoneRefreshBtn, mShowCenterLocationType + ) + } + + tvFencesZoneShapeResetBtn -> recoverDefaultFencesView() + btnCancelFencesZone -> finish() + ivFencesZoneMapSwitchBtn -> switchMapType() + } + } + } + + override fun calculationDistance(distances: Array) { + if (mFencesBean.startDrag) return + LogUtil.e("选点计算è·ç¦»è¿”回${distances.toList()}") + when (mFencesBean.fenceShapeType) { + ConstantInt.CircleShapeType -> { + mFencesBean.radius = Utils.roundOffToInt(distances[0].toDouble()) +// val radiusStr = Util.metricConvertUnits( +// mContext, distances[0].toFloat(), ConstantInt.Type3, 2 +// ).toString() + mDistanceUnit + val radiusStr = mFencesBean.radius.toString() + mDistanceUnit + mViewBinding.fencesZoneCircleView.setShowDisDistance(radiusStr) + } + + ConstantInt.RectangleShapeType -> { + mFencesBean.longDistance = Utils.roundOffToInt(distances[0].toDouble()) + mFencesBean.shortDistance = Utils.roundOffToInt(distances[1].toDouble()) +// val longStr = Util.metricConvertUnits( +// mContext, distances[0].toFloat(), ConstantInt.Type3, 2 +// ).toString() + mDistanceUnit +// val shortStr = Util.metricConvertUnits( +// mContext, distances[0].toFloat(), ConstantInt.Type3, 2 +// ).toString() + mDistanceUnit + val longStr = mFencesBean.longDistance.toString() + mDistanceUnit + val shortStr = mFencesBean.shortDistance.toString() + mDistanceUnit + mViewBinding.fencesZoneRectView.setShowDisDistance(longStr, shortStr) + } + + else -> { + } + } + //ç»çº¬åº¦è½¬æˆåœ°å€æ˜¾ç¤º + mFencesMapCommon.getLatLonAddress(mGeoCoderViewModel, mFencesBean) + showLoading(false) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddNoGoZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddNoGoZoneActivity.kt new file mode 100644 index 0000000..1a75277 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddNoGoZoneActivity.kt @@ -0,0 +1,42 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt + +/** + *Created by .yzq on 2024/1/24/024. + * @link + * @description: + */ +class AddNoGoZoneActivity : AddAndEditFencesZoneBaseActivity() { + + override fun initData() { + setTopBarTitle(R.string.txt_add_no_go_zone) + mFencesBean = FencesBean().apply { + fenceType = 2 + fenceNameType = 6 + } + super.initData() + mFencesMapCommon.setMapZoom(18f) + mViewBinding.apply { + noGoZoneInitData() + setFenceShape(ConstantInt.CircleShapeType) + } + } + + override fun liveDataObserve() { + super.liveDataObserve() + addLiveDataObserve() + } + + override fun onClick(v: View?) { + super.onClick(v) + mViewBinding.apply { + when(v!!){ + btnSaveFencesZone -> saveFences(mFencesBean) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddSafeZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddSafeZoneActivity.kt new file mode 100644 index 0000000..e251e2e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddSafeZoneActivity.kt @@ -0,0 +1,39 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt + +/** + *Created by .yzq on 2024/1/24/024. + * @link + * @description: + */ +class AddSafeZoneActivity : AddAndEditFencesZoneBaseActivity() { + + override fun initData() { + setTopBarTitle(R.string.txt_add_safe_zone) + mFencesBean = FencesBean() + super.initData() + mFencesMapCommon.setMapZoom(18f) + mViewBinding.apply { + setFenceShape(ConstantInt.CircleShapeType) + safeZoneInitData() + } + } + + override fun liveDataObserve() { + super.liveDataObserve() + addLiveDataObserve() + } + + override fun onClick(v: View?) { + super.onClick(v) + mViewBinding.apply { + when(v!!){ + btnSaveFencesZone -> saveFences(mFencesBean) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditNoGoZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditNoGoZoneActivity.kt new file mode 100644 index 0000000..e80794d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditNoGoZoneActivity.kt @@ -0,0 +1,72 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class EditNoGoZoneActivity : AddAndEditFencesZoneBaseActivity() { + override fun initData() { + setTopBarTitle(R.string.txt_edit_no_go_zone) + + isEditFences = true + val editFences = + Util.getParcelableAdaptive(intent, ConstantString.CurrentFence, FencesBean::class.java) + if (null == editFences) finish() + else mFencesBean = editFences + + super.initData() + + mFencesBean.apply { + mFencesMapCommon.restoreEditFencesSetMapZoom(mContext, this) + //ä¿å­˜å地ç†ä¿¡æ¯ ,下次直接使用 + mGeoCoderViewModel.mAddress = address + mGeoCoderViewModel.mLat = latitudeCenter + mGeoCoderViewModel.mLon = longitudeCenter + mViewBinding.ilFencesZoneNameInput.etInputContent.setText(name) + } + + mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + noGoZoneInitData(true) + } + + override fun liveDataObserve() { + super.liveDataObserve() + editLiveDataObserve() + } + + override fun mapLoadOk() { + mFencesList?.apply { + nogoFenceList?.let { + for (fences in it) { + if (mFencesBean.fenceId == fences.fenceId) { + it.remove(fences) + break + } + } + } + drawFences() + } + + mFencesBean.apply { + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mFencesZoneShapeAdapter, mFencesZoneShapeList, fenceShapeType - 1 + ) + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mSelectTypeShadeAdapter, mFencesZoneTypeList, fenceNameType - 6 + ) + } + } + + override fun onClick(v: View?) { + super.onClick(v) + mViewBinding.apply { + when (v!!) { + btnSaveFencesZone -> updateFences(mFencesBean) + mRightImageButton -> deleteFences(mFencesBean) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditSafeZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditSafeZoneActivity.kt new file mode 100644 index 0000000..19e5762 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/EditSafeZoneActivity.kt @@ -0,0 +1,79 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +/** + *Created by .yzq on 2024/1/24/024. + * @link + * @description: + */ +class EditSafeZoneActivity : AddAndEditFencesZoneBaseActivity() { + + override fun initData() { + setTopBarTitle(R.string.txt_edit_safe_zone) + + isEditFences = true + val editFences = + Util.getParcelableAdaptive(intent, ConstantString.CurrentFence, FencesBean::class.java) + if (null == editFences) finish() + else mFencesBean = editFences + + super.initData() + + mFencesBean.apply { + mFencesMapCommon.restoreEditFencesSetMapZoom(mContext,this) + //ä¿å­˜å地ç†ä¿¡æ¯ ,下次直接使用 + mGeoCoderViewModel.mAddress = address + mGeoCoderViewModel.mLat = latitudeCenter + mGeoCoderViewModel.mLon = longitudeCenter + mViewBinding.ilFencesZoneNameInput.etInputContent.setText(name) + } + + mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + safeZoneInitData(true) + } + + override fun liveDataObserve() { + super.liveDataObserve() + editLiveDataObserve() + } + + override fun mapLoadOk() { + mFencesList?.apply { + normalFenceList?.let { + for (fences in it) { + if (mFencesBean.fenceId == fences.fenceId) { + it.remove(fences) + break + } + } + } + + drawFences() + } + + mFencesBean.apply { + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mFencesZoneShapeAdapter, mFencesZoneShapeList, fenceShapeType - 1 + ) + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mSelectTypeShadeAdapter, mFencesZoneTypeList, fenceNameType - 1 + ) + } + } + + override fun onClick(v: View?) { + super.onClick(v) + mViewBinding.apply { + when (v!!) { + btnSaveFencesZone -> updateFences(mFencesBean) + mRightImageButton -> deleteFences(mFencesBean) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/PreviewFencesZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/PreviewFencesZoneActivity.kt new file mode 100644 index 0000000..552bcd3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/PreviewFencesZoneActivity.kt @@ -0,0 +1,355 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.content.Intent +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.GetFencesBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityPreviewFencesZoneBinding +import com.abbidot.tracker.ui.common.map.PreviewFencesZoneCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FencesManageViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo + +/** + * é¢„è§ˆæŸ¥çœ‹å›´æ  + */ +class PreviewFencesZoneActivity : + BaseActivity(ActivityPreviewFencesZoneBinding::inflate) { + + private val mFencesMapViewModel: FencesMapViewModel by viewModels() + private val mFencesManageViewModel: FencesManageViewModel by viewModels() + + private var mCurrentFences: FencesBean? = null + private var mGetFencesBean: GetFencesBean? = null + private var mPetBean: PetBean? = null + private var mCurrentDeviceId = "" + + private lateinit var mFragment: Fragment + private lateinit var mPreviewFencesMapCommon: PreviewFencesZoneCommon + private var mShowCenterLocationType = ConstantInt.OtherLocationType + + //æ˜¯å¦æ˜¯å½“å‰é¡µé¢åˆ é™¤ï¼Œæ”¾åœ¨é‡å¤æ”¶åˆ°æœ¬é¡µé¢åˆ é™¤é€šçŸ¥ + private var isCurrentActivityDelete = false + + //æ˜¯å¦æ˜¯å«æ˜Ÿåœ°å›¾ + private var isSatelliteMap = false + private lateinit var mFencesList: MutableList + + override fun getTopBar() = mViewBinding.previewFencesZoneTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + } + + val mapTypeSp = Util.getMapTypeSp() + isSatelliteMap = mapTypeSp == ConstantInt.Type1 + + mFencesList = mutableListOf() + + intent?.apply { + extras?.let { + mCurrentFences = + Util.getParcelableAdaptive(intent, ConstantString.Fence, FencesBean::class.java) + mPetBean = + Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + ?.apply { + mCurrentDeviceId = deviceId + mCurrentFences?.deviceServiceId = deviceServiceId + mCurrentFences?.deviceId = deviceId + } + } + } + + mPreviewFencesMapCommon = PreviewFencesZoneCommon() + mFragment = mPreviewFencesMapCommon.getMapFragment( + mContext, + ) { + mCurrentFences?.apply { + setCurrentFencesInfo(this) + } + mFencesManageViewModel.getFenceList( + this@PreviewFencesZoneActivity, mCurrentDeviceId + ) + } + supportFragmentManager.commit { + add(R.id.fc_preview_fences_map_fragment, mFragment) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + mCurrentFences?.apply { + deviceId = mCurrentDeviceId + } + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivPreviewFencesRefreshBtn, mShowCenterLocationType + ) + val duration = 2500L + YoYo.with(Techniques.FadeIn).duration(duration).onEnd { + ivPreviewFencesMapSwitchBtn.visibility = View.VISIBLE + ivPreviewFencesRefreshBtn.visibility = View.VISIBLE + }.playOn(rlPreviewFencesInfoLayout) +// ViewUtil.instance.viewShowFadeInAnimation(rlPreviewFencesInfoLayout, duration) + + setOnClickListenerViews( + btnPreviewFencesEdit, + ivPreviewFencesMapSwitchBtn, + ivPreviewFencesRefreshBtn, + mRightImageButton, + cbPreviewFencesSwitch + ) + + if (share != ConstantInt.NoShare) { + btnPreviewFencesEdit.visibility = View.GONE + btnPreviewFencesActive.visibility = View.GONE + cbPreviewFencesSwitch.visibility = View.GONE + tvPreviewFencesActiveTxt.visibility = View.GONE + } + } + } + + override fun liveDataObserve() { + //èŽ·å–æ‰€æœ‰å›´æ è¿”回 + mFencesManageViewModel.mFencesLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mGetFencesBean = it.getOrNull() + mGetFencesBean?.apply { + setFencesData(this) + } + } + }) + } + + mFencesManageViewModel.mUpdateFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshFences) + mViewBinding.cbPreviewFencesSwitch.isChecked = + !mViewBinding.cbPreviewFencesSwitch.isChecked + showToast(R.string.txt_change_successful, gravity = Gravity.CENTER) + mCurrentFences?.apply { + isOn = + if (mViewBinding.cbPreviewFencesSwitch.isChecked) ConstantInt.Open else ConstantInt.Close + mFencesManageViewModel.getFenceList( + this@PreviewFencesZoneActivity, mCurrentDeviceId + ) + } + } + }) + } + + mFencesManageViewModel.mDeleteFenceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + isCurrentActivityDelete = true + XEventBus.post(EventName.DeleteFences) + showToast(R.string.txt_delete_success, true, gravity = Gravity.CENTER) + } + }) + } + + //接收更新围æ è¿”回通知 + XEventBus.observe(this, EventName.RefreshFences) { + mFencesManageViewModel.getFenceList( + this@PreviewFencesZoneActivity, mCurrentDeviceId + ) + } + + //接收删除围æ è¿”回通知 + XEventBus.observe(this, EventName.DeleteFences) { + if (!isCurrentActivityDelete) finish() + } + } + + /** + * 设置当å‰å›´æ çš„ä¿¡æ¯ + */ + private fun setCurrentFencesInfo(fencesBean: FencesBean) { + mViewBinding.apply { + val fenceNameTypeImage = + ViewUtil.instance.getFenceNameImageType(fencesBean.fenceNameType) + ilPreviewFencesTypeImage.ivSelectTypeImage.setImageResource(fenceNameTypeImage) + tvPreviewFencesName.text = fencesBean.name + tvPreviewFencesLocation.text = fencesBean.address + cbPreviewFencesSwitch.isChecked = fencesBean.isOn == ConstantInt.Open + mPreviewFencesMapCommon.restorePreviewFencesSetMapZoom(mContext, fencesBean) + + mShowCenterLocationType = ConstantInt.OtherLocationType + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivPreviewFencesRefreshBtn, mShowCenterLocationType + ) + mPreviewFencesMapCommon.switchShowLocation( + mShowCenterLocationType, fencesBean.latitudeCenter, fencesBean.longitudeCenter + ) + } + } + + private fun setFencesData(getFencesBean: GetFencesBean) { + getFencesBean.apply { + mFencesList.clear() + normalFenceList?.apply { + for (fencesBean in this) { + if (fencesBean.fenceId == mCurrentFences?.fenceId) { + mCurrentFences = fencesBean + break + } + } + mFencesList.addAll(this.toList()) + } + nogoFenceList?.apply { + for (fencesBean in this) { + if (fencesBean.fenceId == mCurrentFences?.fenceId) { + mCurrentFences = fencesBean + break + } + } + mFencesList.addAll(this.toList()) + } + + var currentFencesId = "" + mCurrentFences?.apply { + currentFencesId = fenceId + setCurrentFencesInfo(this) + } + mFencesMapViewModel.setImageFencesData( + mContext, mFencesList, mFragment, currentFencesId, isSatelliteMap + ) + + mPetBean?.let { + mCurrentFences?.deviceServiceId = it.deviceServiceId + mCurrentFences?.deviceId = it.deviceId + mPreviewFencesMapCommon.setPetCurrentLocation( + it.imgurl, it.petType, latitude, longitude + ) + } + } + } + + /** + * ä¿®æ”¹å¼€å…³çŠ¶æ€ + */ + private fun changeOnAndOff(fencesBean: FencesBean) { + mViewBinding.cbPreviewFencesSwitch.isChecked = !mViewBinding.cbPreviewFencesSwitch.isChecked + fencesBean.apply { + isOn = if (isOn == ConstantInt.Open) { + ConstantInt.Close + } else { + ConstantInt.Open + } + when (fenceShapeType) { + ConstantInt.CircleShapeType -> { + mFencesManageViewModel.updateCircleFence( + this@PreviewFencesZoneActivity, this + ) + } + + ConstantInt.RectangleShapeType -> { + mFencesManageViewModel.updateRectFence( + this@PreviewFencesZoneActivity, this + ) + } + + else -> { + mFencesManageViewModel.updatePolygonFence( + this@PreviewFencesZoneActivity, this + ) + } + } + } + + } + + + /** + * åˆ é™¤å›´æ  + */ + private fun deleteFences() { + mCurrentFences?.apply { + mFencesManageViewModel.deleteFence( + this@PreviewFencesZoneActivity, fenceId, deviceServiceId + ) + } + } + + private fun goEditFences() { + Util.checkLocationPermissionsGpsEnabled(mContext, { + mCurrentFences?.apply { + val intent = if (fenceType == ConstantInt.SafeZone) Intent( + mContext, EditSafeZoneActivity::class.java + ) + else Intent(mContext, EditNoGoZoneActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Fence, mGetFencesBean) + intent.putExtra(ConstantString.CurrentFence, mCurrentFences) + startActivity(intent) + } + }) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPreviewFencesEdit -> goEditFences() + + mRightImageButton -> deleteFences() + cbPreviewFencesSwitch -> mCurrentFences?.apply { changeOnAndOff(this) } + + ivPreviewFencesMapSwitchBtn -> { + isSatelliteMap = !isSatelliteMap + mPreviewFencesMapCommon.switchSatelliteAndNormalMapType() + //切æ¢å«æ˜Ÿåœ°å›¾ï¼Œå›´æ æ¢é¢œè‰² + mCurrentFences?.apply { + mFencesMapViewModel.setImageFencesData( + mContext, mFencesList, mFragment, fenceId, isSatelliteMap + ) + } + } + + ivPreviewFencesRefreshBtn -> { + when (mShowCenterLocationType) { + ConstantInt.PetLocationType -> { + mShowCenterLocationType = ConstantInt.UserLocationType + } + + ConstantInt.UserLocationType -> { + mShowCenterLocationType = ConstantInt.OtherLocationType + } + + ConstantInt.OtherLocationType -> { + mShowCenterLocationType = ConstantInt.PetLocationType + } + } + mCurrentFences?.apply { + mPreviewFencesMapCommon.switchShowLocation( + mShowCenterLocationType, latitudeCenter, longitudeCenter + ) + } + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivPreviewFencesRefreshBtn, mShowCenterLocationType + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/VirtualFencesActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/VirtualFencesActivity.kt new file mode 100644 index 0000000..c112c29 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/VirtualFencesActivity.kt @@ -0,0 +1,252 @@ +package com.abbidot.tracker.ui.activity.device.fences + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.FencesZoneAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.GetFencesBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityVirtualFencesBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FencesManageViewModel +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + * 虚拟围æ åˆ—表 + */ +class VirtualFencesActivity : + BaseActivity(ActivityVirtualFencesBinding::inflate) { + + private val mFencesManageViewModel: FencesManageViewModel by viewModels() + + private lateinit var mFencesAdapter: FencesZoneAdapter + private lateinit var mFencesList: MutableList + + private lateinit var mFencesNoGoAdapter: FencesZoneAdapter + private lateinit var mFencesNoGoList: MutableList + private var mPetBean: PetBean? = null + private var mGetFencesBean: GetFencesBean? = null + + override fun getTopBar() = mViewBinding.virtualFencesTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_my_pet_fence) + setLeftBackImage(R.drawable.icon_white_back_svg) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + + mFencesList = mutableListOf() + mFencesNoGoList = mutableListOf() + + mViewBinding.apply { + + mFencesAdapter = FencesZoneAdapter(mContext, mFencesList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goPreviewFencesZone(mFencesList[pos]) + } + }) + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + if (mFencesList.size + mFencesNoGoList.size >= 5) { + return + } + goAddSafeZone() + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvFencesSafeZone, mFencesAdapter, top = QMUIDisplayHelper.dpToPx(18) + ) + mFencesNoGoAdapter = FencesZoneAdapter(mContext, mFencesNoGoList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goPreviewFencesZone(mFencesNoGoList[pos]) + } + }) + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + if (mFencesList.size + mFencesNoGoList.size >= 5) { + return + } + goAddNoGoZone() + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvFencesNoGoZone, mFencesNoGoAdapter, top = QMUIDisplayHelper.dpToPx(18) + ) + + setOnClickListenerViews(btnAddFencesNoGoZone, btnAddFencesSafeZone) + + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + btnAddFencesNoGoZone.visibility = View.INVISIBLE + btnAddFencesSafeZone.visibility = View.INVISIBLE + } + + val fencesCount = String.format(getString(R.string.txt_fences_set), "0/5") + tvVirtualFencesCount.text = fencesCount + } + + mPetBean?.apply { + mFencesManageViewModel.getFenceList(this@VirtualFencesActivity, deviceId) + } + } + + override fun liveDataObserve() { + //接收更新围æ è¿”回通知 + XEventBus.observe(this, EventName.RefreshFences) { + mPetBean?.apply { + mFencesManageViewModel.getFenceList(this@VirtualFencesActivity, deviceId) + } + } + //接收删除围æ è¿”回通知 + XEventBus.observe(this, EventName.DeleteFences) { + mPetBean?.apply { + mFencesManageViewModel.getFenceList(this@VirtualFencesActivity, deviceId) + } + } + //èŽ·å–æ‰€æœ‰å›´æ è¿”回 + mFencesManageViewModel.mFencesLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mGetFencesBean = it.getOrNull() + mGetFencesBean?.apply { + setFencesData(this) + } + } + }) + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + mFencesAdapter.showNoDataAddButton(false) + mFencesNoGoAdapter.showNoDataAddButton(false) + } + } + } + + private fun setFencesData(getFencesBean: GetFencesBean) { + mFencesList.clear() + mFencesNoGoList.clear() + mFencesAdapter.setData(mFencesList, true) + mFencesNoGoAdapter.setData(mFencesNoGoList, true) +// mSelectLabelsAdapter.notifyItemRangeChanged(0, mSelectLabelList.size) + getFencesBean.normalFenceList?.apply { + mFencesList.addAll(this.toList()) + mFencesAdapter.setData(mFencesList, true) + } + getFencesBean.nogoFenceList?.apply { + mFencesNoGoList.addAll(this.toList()) + mFencesNoGoAdapter.setData(mFencesNoGoList, true) + } + + val fencesCount = mFencesList.size + mFencesNoGoList.size + + mViewBinding.apply { + svVirtualFencesLayout.visibility = View.VISIBLE + + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + if (mFencesList.size == 0) btnAddFencesSafeZone.visibility = View.INVISIBLE + else btnAddFencesSafeZone.visibility = View.VISIBLE + + if (mFencesNoGoList.size == 0) btnAddFencesNoGoZone.visibility = View.INVISIBLE + else btnAddFencesNoGoZone.visibility = View.VISIBLE + + //å›´æ æœ‰ä¸€ç§è¶…过5个,å¦å¤–一ç§ä¸èƒ½åˆ›å»º + if (mFencesList.size >= 5) { + mFencesNoGoAdapter.showNoDataAddButton(false) + btnAddFencesNoGoZone.visibility = View.INVISIBLE + } else { + mFencesNoGoAdapter.showNoDataAddButton(true) + btnAddFencesNoGoZone.visibility = View.VISIBLE + } + if (mFencesNoGoList.size >= 5) { + mFencesAdapter.showNoDataAddButton(false) + btnAddFencesSafeZone.visibility = View.INVISIBLE + } else { + mFencesAdapter.showNoDataAddButton(true) + btnAddFencesSafeZone.visibility = View.VISIBLE + } + + if (fencesCount >= 5) { + btnAddFencesNoGoZone.visibility = View.INVISIBLE + btnAddFencesSafeZone.visibility = View.INVISIBLE + } else { + btnAddFencesNoGoZone.visibility = View.VISIBLE + btnAddFencesSafeZone.visibility = View.VISIBLE + } + } + + val countString = String.format(getString(R.string.txt_fences_set), "$fencesCount/5") + tvVirtualFencesCount.text = countString + } + } + + private fun goPreviewFencesZone(fencesBean: FencesBean) { + Util.checkLocationPermissionsGpsEnabled(mContext, { + mPetBean?.apply { + val intent = Intent(mContext, PreviewFencesZoneActivity::class.java) + intent.putExtra(ConstantString.Fence, fencesBean) + intent.putExtra(ConstantString.Pet, mPetBean) + startActivity(intent) + } + }) + } + + private fun goAddSafeZone() { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) return + Util.checkLocationPermissionsGpsEnabled(mContext, { + val intent = Intent(mContext, AddSafeZoneActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Fence, mGetFencesBean) + startActivity(intent) + }) + } + + private fun goAddNoGoZone() { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) return + Util.checkLocationPermissionsGpsEnabled(mContext, { + val intent = Intent(mContext, AddNoGoZoneActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Fence, mGetFencesBean) + startActivity(intent) + }) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnAddFencesSafeZone -> { + if (mFencesList.size + mFencesNoGoList.size >= 5) { + showToast(R.string.txt_created_many_fences) + return + } + goAddSafeZone() + } + + btnAddFencesNoGoZone -> { + if (mFencesList.size + mFencesNoGoList.size >= 5) { + showToast(R.string.txt_created_many_fences) + return + } + goAddNoGoZone() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt new file mode 100644 index 0000000..3d18324 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LedLightActivity.kt @@ -0,0 +1,387 @@ +package com.abbidot.tracker.ui.activity.device.set + +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.core.view.isGone +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.LedLightColorAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityLedLightBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.LedLightViewModel +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import com.clj.fastble.BleManager +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo + + +/** + * LedLight颜色光æºè®¾ç½® + */ +class LedLightActivity : BaseActivity(ActivityLedLightBinding::inflate) { + + private val mLedLightViewModel: LedLightViewModel by viewModels() + private val mTrackerManageSetViewModel: TrackerInfoViewModel by viewModels() + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private var mPetBean: PetBean? = null + private var mMapDeviceBean: MapDeviceBean? = null + private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + private lateinit var mLedLightColorAdapter: LedLightColorAdapter + private lateinit var mLedModeList: MutableList + + //防止多次按返回键执行 + private var isFinishSave = false + + override fun getTopBar() = mViewBinding.ilLedLightBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.tracker_manage_set_led) + setLeftBackImage(R.drawable.icon_white_back_svg) +// initStatus() + + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + + mLedModeList = mutableListOf( + getString(R.string.tracker_light_mode_sustained), + getString(R.string.tracker_light_mode_breathing), +// getString(R.string.tracker_light_mode_slow_flash), + getString(R.string.tracker_light_mode_flash) + ) + + ViewUtil.instance.showQMUICommonListItemView( + mContext, + mViewBinding.ledLightOpenAndClose, + null, + getString(R.string.tracker_manage_set_led) + ) + mViewBinding.ledLightOpenAndClose.switch.apply { + setOnCheckedChangeListener { _, isChecked -> + mMapDeviceBean?.let { + if (isChecked) { + it.ledSwitch = ConstantInt.Open + setBleLedMode(it.ledMode) + } else { + it.ledSwitch = ConstantInt.Close + setBleLedMode(0) + } + } + } + } + + val builder = ViewUtil.instance.showBottomSheetList(mContext, { dialog, _, position, _ -> + mMapDeviceBean?.apply { + dialog.dismiss() + ledMode = position + 1 + mViewBinding.ledLightMode.detailText = mLedModeList[position] + mViewBinding.ledLightOpenAndClose.switch.let { + if (it.isChecked) { + setBleLedMode(ledMode) + } else { + it.isChecked = true + } + } + } + }) + for (i in 0 until mLedModeList.size) builder.addItem(mLedModeList[i]) + + mViewBinding.ledLightMode.apply { + ViewUtil.instance.showQMUICommonListItemView(mContext, this, { + builder.build().show() + }, getString(R.string.txt_light_mode)) +// mMapDeviceBean?.apply { +// detailText = when { +// ledMode - 1 >= mLedModeList.size -> { +// mLedModeList[mLedModeList.size - 1] +// } +// +// ledMode == 0 -> { +// mLedModeList[0] +// } +// +// else -> mLedModeList[ledMode - 1] +// } +// } + } + + val colorListResId = mutableListOf( + R.color.white, + R.color.colormenu, + R.color.corner_color, + R.color.blue_light, + R.color.deep_blue, + R.color.red_blue, + R.color.yellow_color, + R.color.yellow_red_color + ) + mLedLightColorAdapter = LedLightColorAdapter(mContext, colorListResId) + mLedLightColorAdapter.setOnItemClickListener(object : + BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + setLedLightColor(ContextCompat.getColor(mContext, colorListResId[pos])) + } + }) + + + mViewBinding.apply { + ilLedLightIssueLayout.let { + it.tvIssueOneBigTitle.setText(R.string.txt_led_light_set) + it.tvIssueTwoSmallOneTitle.setText(R.string.txt_bluetooth_setup) + it.tvIssueTwoSmallOneTitle.setText(R.string.txt_bluetooth_setup) + it.tvIssueTwoSmallTitleOneContent.setText(R.string.txt_bluetooth_setup_dec) + it.tvIssueTwoSmallTwoTitle.setText(R.string.txt_network_setup) + it.tvIssueTwoSmallTitleTwoContent.setText(R.string.txt_network_setup_dec) + } + ViewUtil.instance.setRecyclerViewGridLayout( + mContext, + colorSelectRecyclerView, + mLedLightColorAdapter, + spanCount = 2, + bottom = AppUtils.dpToPx(9), + itemWidth = AppUtils.dpToPx(30), + offset = AppUtils.dpToPx(290) + ) + + selectColorPaintView.setOnColorSelectListener { + setLedLightColor(it) + } + + setOnClickListenerViews( + ledLightBluetoothTips.trbBleConnectState, + btnLedLightSetSave, + btnLedLightIssue, + ilLedLightIssueLayout.tvCloseIssueBtn + ) + } + + mPetBean?.apply { + //查找是å¦è¿žæŽ¥äº†è“牙 + SRBleUtil.instance.getConnectMacDevice(macID)?.let { + updateConState(it) + } + mTrackerManageSetViewModel.getPetTrackerInfo(this@LedLightActivity, deviceId) + } + } + + override fun liveDataObserve() { + mTrackerManageSetViewModel.mTrackerInfoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + mMapDeviceBean = data + setDeviceData(data) + } + } + }) + } + mLedLightViewModel.mSetLedLightLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { +// XEventBus.post(EventName.UpdateData + "TrackerManageSetActivity") +// XEventBus.post(EventName.UpdateData + "TrackerManageFragment") + mPetBean?.apply { + SRBleUtil.instance.isConnectBleSendNotifyData(macID) + } + showToast(R.string.txt_change_successful, isFinish = true) + } + }) + } + + //接收开è“牙æ“作,ç„¶åŽæœç´¢è¿žæŽ¥è®¾å¤‡ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + mViewBinding.ledLightBluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState) + } + } + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + mPetBean?.apply { + if (ble.mac == macID) { + updateConState(ble) + } + } + } + } + + private fun setDeviceData(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + mViewBinding.ledLightOpenAndClose.switch.isChecked = ledSwitch == ConstantInt.Open + + setLedLightColor( + Color.rgb(ledRedValue, ledGreenValue, ledBlueValue), true + ) + if (ledMode == 0 || ledMode > mLedModeList.size) ledMode = 1 + mViewBinding.ledLightMode.detailText = mLedModeList[ledMode - 1] + } + } + + /** + * æ›´æ–°è®¾å¤‡è¿žæŽ¥çŠ¶æ€ + */ + private fun updateConState(trackBleDevice: BleTrackDeviceBean) { + mBleTrackDeviceBean = trackBleDevice + mViewBinding.ledLightBluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (trackBleDevice.conState == ConState.CONNECTED) { + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { +// showToast(R.string.txt_ble_connect_fail) + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) + } + ViewUtil.instance.bleConStateToast(this, trackBleDevice.conState, Gravity.CENTER) + } + + private fun setBleLedMode(mode: Int) { + mBleTrackDeviceBean?.apply { + SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode) + } + } + + override fun leftBackOnClick() { + if (isFinishSave) return + //æ˜¯å¦æ˜¯è“牙连接了,修改设备数æ®è¿”å›žï¼ŒåŒæ­¥æœåС噍 + if (null != mBleTrackDeviceBean) { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(mBleTrackDeviceBean!!.bleDevice)) { + finishAndSave() + } else { + super.leftBackOnClick() + } + } else { + super.leftBackOnClick() + } + } + + /** + * ä¿å­˜è®¾ç½®æ•°æ® + */ + private fun finishAndSave() { + mMapDeviceBean?.apply { + isFinishSave = true + mLedLightViewModel.setLedLight(this@LedLightActivity, this) + } + } + + /** + * @param show åªæ˜¾ç¤º,ä¸ä½œä¸ºå‘½ä»¤å¤„ç† + */ + private fun setLedLightColor(color: Int, show: Boolean = false) { + val drawableColor = ColorDrawable(color) + mViewBinding.currentSelectColor.appHeadImage.setImageDrawable(drawableColor) +// mViewBinding.ledLightBarColorImage.setBackgroundColor(color) + + val red = color and 0xff0000 shr 16 + val green = color and 0x00ff00 shr 8 + val blue = color and 0x0000ff + + mMapDeviceBean?.apply { + ledRedValue = red + ledGreenValue = green + ledBlueValue = blue + } + +// mViewBinding.tvLedLightCurrentRgb.text = String.format("#%06X", -0x1 and color) + mViewBinding.tvLedLightCurrentRgb.text = String.format("#%06X", 0xffffff and color) + + if (!show) { + mBleTrackDeviceBean?.let { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(it.bleDevice)) { + SRBleUtil.instance.writeData( + it.bleDevice, SRBleCmdUtil.instance.ledColor( + SRBleCmdUtil.CMD_WRITE, red, green, blue + ) + ) + } + } + } + } + + /** + * 断开连接设备 + */ + private fun operateDeviceTips(messageID: Int, type: Int = 0) { + ViewUtil.instance.showDialog(mContext, messageID, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + when (type) { + 0 -> { + mBleTrackDeviceBean?.let { + mConnectionDeviceViewModel.disconnect(it.bleDevice) + } + } + } + } + }, okTextResId = R.string.start_txt_yes) + } + + /** + * 手动连接/断开设备 + */ + private fun connectionBtn(btnString: String) { + mPetBean?.apply { + ViewUtil.instance.connectionBtn(mContext, btnString, macID) { + mConnectionDeviceViewModel.connectDeviceToMac(this@LedLightActivity, macID) + } + } + } + + /** + * 显示led问题 + */ + private fun showLedIssue() { + mViewBinding.apply { + if (ilLedLightIssueLayout.root.isGone) { + YoYo.with(Techniques.BounceInUp).duration(700).onStart { + ilLedLightIssueLayout.root.visibility = View.VISIBLE + }.playOn(ilLedLightIssueLayout.root) + } else { + YoYo.with(Techniques.SlideOutDown).duration(600).onEnd { + ilLedLightIssueLayout.root.visibility = View.GONE + }.playOn(ilLedLightIssueLayout.root) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v) { + //手动连接设备 + ledLightBluetoothTips.trbBleConnectState -> connectionBtn(ledLightBluetoothTips.trbBleConnectState.text.toString()) + btnLedLightSetSave -> finishAndSave() + btnLedLightIssue -> showLedIssue() + ilLedLightIssueLayout.tvCloseIssueBtn -> showLedIssue() + } + } + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.selectColorPaintView.recycle() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LiveDurationSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LiveDurationSetActivity.kt new file mode 100644 index 0000000..98da5f0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/LiveDurationSetActivity.kt @@ -0,0 +1,106 @@ +package com.abbidot.tracker.ui.activity.device.set + +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.DurationSetAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityLiveDurationSetBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.TrackerSetViewModel + +class LiveDurationSetActivity : + BaseActivity(ActivityLiveDurationSetBinding::inflate) { + + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + + private lateinit var mDurationSetAdapter: DurationSetAdapter + + //选中的下标 + private var mSelectIndex = -1 + + private var mMapDeviceBean: MapDeviceBean? = null + + override fun getTopBar() = mViewBinding.ilLiveDurationSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_live_duration) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mMapDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.MapDeviceBean, MapDeviceBean::class.java + ) + } + + setListData() + + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvLiveDurationSetList, mDurationSetAdapter, top = AppUtils.dpToPx(10) + ) + } + } + + override fun liveDataObserve() { + mTrackerSetViewModel.mSetLiveTimeLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_change_successful) + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mDurationSetAdapter, mDurationSetAdapter.getData(), mSelectIndex + ) + } + }) + } + } + + private fun setListData() { + val durationList = mutableListOf() + val timeList = mutableListOf(5, 10, 15, 30, 60) + for (time in timeList) { + DataBean().apply { + imageId = time + name = String.format(getString(R.string.txt_duration_min_unit), time) + durationList.add(this) + } + } + + mMapDeviceBean?.apply { + for (i in 0 until durationList.size) { + val data = durationList[i] + if (liveTime / 60 == data.imageId) { + mSelectIndex = i + data.selected = true + break + } + } + } + mDurationSetAdapter = DurationSetAdapter(this, durationList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + setLiveDuration(pos) + } + }) + } + } + + fun setLiveDuration(pos: Int) { + if (mSelectIndex == pos) return + mMapDeviceBean?.apply { + mSelectIndex = pos + val dataBean = mDurationSetAdapter.getData()[pos] + mTrackerSetViewModel.setLiveTime( + this@LiveDurationSetActivity, deviceId, dataBean.imageId + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/PowerOffActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/PowerOffActivity.kt new file mode 100644 index 0000000..a7be887 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/PowerOffActivity.kt @@ -0,0 +1,150 @@ +package com.abbidot.tracker.ui.activity.device.set + +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityPowerOffBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.clj.fastble.BleManager + +class PowerOffActivity : BaseActivity(ActivityPowerOffBinding::inflate) { + + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.ilPowerOffTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + setOnClickListenerViews(btnPowerOffYes,ilPowerOffBluetoothTips.trbBleConnectState) + } + + connectBle() + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + showLoading(false) + mViewBinding.ilPowerOffBluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (ble.conState == ConState.CONNECTED) { + ViewUtil.instance.viewShowFadeInAnimation(mViewBinding.btnPowerOffYes) + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { + ViewUtil.instance.viewHideFadeInAnimation( + mViewBinding.btnPowerOffYes, hideType = View.INVISIBLE + ) + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) + } + } + + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + ViewUtil.instance.viewHideFadeInAnimation( + mViewBinding.btnPowerOffYes, hideType = View.INVISIBLE + ) + mViewBinding.ilPowerOffBluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState) + } + } + + //接收å‘逿Œ‡ä»¤åŽè®¾å¤‡è¿”å›žçš„æ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPetBean?.let { + if (it.macID == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + } + + /** + * è§£æžæ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 4 && data1 == 1 && data2 == 0) { + showToast(R.string.txt_done, true) + } + } + } + + private fun connectBle() { + mPetBean?.apply { + //是å¦è¿žæŽ¥äº†è“牙 + if (BleManager.getInstance().isConnected(macID)) { + ViewUtil.instance.viewShowFadeInAnimation(mViewBinding.btnPowerOffYes) + mViewBinding.ilPowerOffBluetoothTips.trbBleConnectState.let { + it.setBackgroundColor( + ContextCompat.getColor(mContext, R.color.cyan_color1) + ) + it.text = getString(R.string.tracker_manage_set_ble_connect) + } + } else { + mConnectionDeviceViewModel.connectDeviceToMac( + this@PowerOffActivity, macID + ) + } + } + } + + private fun bleTurnOff() { + mPetBean?.apply { + SRBleUtil.instance.getConnectMacDevice(macID)?.let { + setButtonEnabled(mViewBinding.btnPowerOffYes) + val cmd = SRBleCmdUtil.instance.shutdownDevice() + SRBleUtil.instance.writeData(it.bleDevice, cmd) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPowerOffYes -> bleTurnOff() + + ilPowerOffBluetoothTips.trbBleConnectState -> { + mPetBean?.apply { + ViewUtil.instance.connectionBtn( + mContext, + ilPowerOffBluetoothTips.trbBleConnectState.text.toString(), + macID + ) { + connectBle() + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/TrackingDurationSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/TrackingDurationSetActivity.kt new file mode 100644 index 0000000..c6155ad --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/set/TrackingDurationSetActivity.kt @@ -0,0 +1,110 @@ +package com.abbidot.tracker.ui.activity.device.set + +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.DurationSetAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityTrackingDurationSetBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.TrackerSetViewModel + +class TrackingDurationSetActivity : + BaseActivity(ActivityTrackingDurationSetBinding::inflate) { + + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + + private lateinit var mDurationSetAdapter: DurationSetAdapter + + //选中的下标 + private var mSelectIndex = -1 + + private var mMapDeviceBean: MapDeviceBean? = null + + override fun getTopBar() = mViewBinding.ilTrackingDurationSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.tracker_manage_set_duration) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mMapDeviceBean = Util.getParcelableAdaptive( + intent, ConstantString.MapDeviceBean, MapDeviceBean::class.java + ) + } + + setListData() + + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvTrackingDurationSetList, mDurationSetAdapter, top = AppUtils.dpToPx(10) + ) + } + } + + override fun liveDataObserve() { + mTrackerSetViewModel.mReportIntervalLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_change_successful) + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mDurationSetAdapter, mDurationSetAdapter.getData(), mSelectIndex + ) + mMapDeviceBean?.apply { + SRBleUtil.instance.isConnectBleSendNotifyData(deviceMacId) + } + } + }) + } + } + + private fun setListData() { + val durationList = mutableListOf() + val timeList = mutableListOf(1, 3, 5, 10, 15) + for (time in timeList) { + DataBean().apply { + imageId = time + name = String.format(getString(R.string.txt_duration_min_unit), time) + durationList.add(this) + } + } + mMapDeviceBean?.apply { + for (i in 0 until durationList.size) { + val data = durationList[i] + if (gnssInterval / 60 == data.imageId) { + mSelectIndex = i + data.selected = true + break + } + } + } + mDurationSetAdapter = DurationSetAdapter(this, durationList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + setTrackingDuration(pos) + } + }) + } + } + + fun setTrackingDuration(pos: Int) { + if (mSelectIndex == pos) return + mMapDeviceBean?.apply { + mSelectIndex = pos + val dataBean = mDurationSetAdapter.getData()[pos] + mTrackerSetViewModel.reportInterval( + this@TrackingDurationSetActivity, deviceServerId, dataBean.imageId + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPasswordActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPasswordActivity.kt new file mode 100644 index 0000000..3b6df32 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPasswordActivity.kt @@ -0,0 +1,309 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.content.Intent +import android.text.InputFilter +import android.view.Gravity +import android.view.View +import android.widget.RelativeLayout +import androidx.activity.viewModels +import androidx.core.view.marginBottom +import androidx.core.widget.addTextChangedListener +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.bean.WiFiBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddWifiPasswordBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.CountDownTimerViewModel +import com.clj.fastble.BleManager +import com.clj.fastble.utils.HexUtil +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +class AddWifiPasswordActivity : + BaseActivity(ActivityAddWifiPasswordBinding::inflate) { + + private var isShowPassword = false + private var mConnectingPointNum = 1 + + private var mWiFiBean: WiFiBean? = null + private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + private var mPetBean: PetBean? = null + + private var mDecWiFiAddressData: HistoryDataBean? = null + private var isFirstBind = false + private var mPetCurrentLat = 0.0 + private var mPetCurrentLon = 0.0 + + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + + override fun getTopBar() = mViewBinding.ilAddWifiPwdTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mWiFiBean = + Util.getParcelableAdaptive(intent, ConstantString.WiFi, WiFiBean::class.java) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + + mDecWiFiAddressData = Util.getParcelableAdaptive( + intent, ConstantString.HistoryDataBean, HistoryDataBean::class.java + ) + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) + mPetCurrentLon = getDouble(ConstantString.Longitude, 0.0) + } + + mViewBinding.apply { + + mWiFiBean?.let { + tvAddWifiPwdName.text = it.name + } + + ilAddWifiPwdPassword.let { + it.tvInputNameTitle.text = getString(R.string.login_txt_password) + it.etInputContent.setHint(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + val filters = arrayOf(InputFilter.LengthFilter(32)) + it.etInputContent.filters = filters + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvAddWifiPwdErrorTip, it.etInputContent + ) + it.etInputContent.addTextChangedListener { edit -> + edit?.let { e -> + btnAddWifiPwdConnect.isEnabled = e.length >= 8 + } + } + } + + lavAddWifiPwdAnim.setAnimation("lottie/dfu_loading.json") + + setOnClickListenerViews( + ilAddWifiPwdPassword.ivInputRepresentImage, btnAddWifiPwdConnect, btnAddWifiPwdSkip + ) + } + + setListenKeyboardChange(1) + + mPetBean?.apply { + mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID) + } + + mWiFiBean?.let { + if (it.auth_type == ConstantInt.Type0) { + mViewBinding.ilAddWifiPwdPassword.root.visibility = View.GONE + noPasswordConnect() + } + } + } + + override fun liveDataObserve() { + mCountDownTimerViewModel.apply { + mCountDowningLiveData.observe(this@AddWifiPasswordActivity) { + var connectingPoint = "" + when (mConnectingPointNum) { + 1 -> connectingPoint = "." + 2 -> connectingPoint = ".." + 3 -> connectingPoint = "..." + } + mConnectingPointNum++ + val str = getString(R.string.txt_connect_ing) + connectingPoint + mViewBinding.btnAddWifiPwdConnect.text = str + } + mCountDownEndLiveData.observe(this@AddWifiPasswordActivity) { + mConnectingPointNum = 1 + mCountDownTimerViewModel.startCountDown(3) + } + } + + //接收è“ç‰™è¿”å›žæ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPetBean?.apply { + if (macID == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + } + + /** + * * è§£æžè“ç‰™è¿”å›žçš„æ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 33 && data1 == 1) { + sendPasswordEnd() + when (data2) { + 0 -> { + mViewBinding.btnAddWifiPwdConnect.isEnabled = false + showToast(R.string.txt_successful, gravity = Gravity.CENTER) + mViewBinding.root.postDelayed({ + goEditWifiActivity() + }, 1000) + } + + 6 -> showToast(R.string.txt_fail) + else -> ViewUtil.instance.setInputViewErrorShow( + mContext, + mViewBinding.ilAddWifiPwdPassword.rlEtInputLayout, + mViewBinding.tvAddWifiPwdErrorTip + ) + } + } + } + } + + override fun showSoftKeyboardCallback() { + super.showSoftKeyboardCallback() + mViewBinding.btnAddWifiPwdSkip.apply { + val setBottomMargin = AppUtils.dpToPx(320) + if (setBottomMargin != marginBottom) { + val params = layoutParams as RelativeLayout.LayoutParams + params.bottomMargin = setBottomMargin + layoutParams = params + } + } + } + + override fun hideSoftKeyboardCallback() { + super.hideSoftKeyboardCallback() + mViewBinding.btnAddWifiPwdSkip.apply { + val setBottomMargin = AppUtils.dpToPx(28) + if (setBottomMargin != marginBottom) { + val params = layoutParams as RelativeLayout.LayoutParams + params.bottomMargin = setBottomMargin + layoutParams = params + } + } + } + + private fun sendPasswordStart() { + showLoading(true, R.string.txt_please_wait) + mViewBinding.apply { + btnAddWifiPwdConnect.isEnabled = false + lavAddWifiPwdAnim.playAnimation() + lavAddWifiPwdAnim.visibility = View.VISIBLE + } + mCountDownTimerViewModel.startCountDown(3) + } + + private fun sendPasswordEnd() { + showLoading(false) + mViewBinding.btnAddWifiPwdConnect.apply { + isEnabled = true + setText(R.string.txt_connect) + } + mViewBinding.lavAddWifiPwdAnim.apply { + cancelAnimation() + visibility = View.GONE + } + mCountDownTimerViewModel.stopCountDown() + } + + private fun noPasswordConnect() { + mBleTrackDeviceBean?.let { ble -> + mWiFiBean?.let { + sendPasswordStart() + val cmdByteArray = SRBleCmdUtil.instance.setConnectWiFi(it.mac, "", it.auth_type) + SRBleUtil.instance.writeData(ble.bleDevice, cmdByteArray) + } + } + } + + private fun savePassword() { + val wifiPassword = mViewBinding.ilAddWifiPwdPassword.etInputContent.text.toString() + + mBleTrackDeviceBean?.apply { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(bleDevice)) { + mWiFiBean?.let { + lifecycleScope.launch { + sendPasswordStart() + val cmdByteArray = + SRBleCmdUtil.instance.setConnectWiFi(it.mac, wifiPassword, it.auth_type) + LogUtil.e( + "长度=${cmdByteArray.size},è¦å‘é€çš„包:" + HexUtil.formatHexString( + cmdByteArray, true + ) + ) + //å‘é€ç¬¬ä¸€ä¸ªåŒ… + if (cmdByteArray.size > 20) { + SRBleUtil.instance.writeData(bleDevice, cmdByteArray.sliceArray(0..19)) + } else SRBleUtil.instance.writeData(bleDevice, cmdByteArray) + for (i in 1 until SRBleCmdUtil.instance.byteToInt(cmdByteArray[2])) { + var cmdPackage = cmdByteArray.sliceArray(0..2) + //当å‰çš„包åºå· + cmdPackage = cmdPackage.plus((i + 1).toByte()) + val startIndex = 20 + 16 * (i - 1) + cmdPackage = if (cmdByteArray.size - 20 - 16 * (i - 1) > 16) { + cmdPackage.plus(cmdByteArray.sliceArray(startIndex until 20 + 16 * i)) + } else cmdPackage.plus(cmdByteArray.sliceArray(startIndex until cmdByteArray.size)) + + delay(500) + SRBleUtil.instance.writeData(bleDevice, cmdPackage) + } + } + } + } else showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) + } + } + + private fun goEditWifiActivity() { + Util.checkLocationPermissionsGpsEnabled(mContext, { + val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java) + intent.putExtra(ConstantString.WiFi, mWiFiBean) + mDecWiFiAddressData?.let { + intent.putExtra(ConstantString.HistoryDataBean, it) + } + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Latitude, mPetCurrentLat) + intent.putExtra(ConstantString.Longitude, mPetCurrentLon) + startActivityFinish(intent) + }) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilAddWifiPwdPassword.ivInputRepresentImage -> { + isShowPassword = !isShowPassword + ViewUtil.instance.showAndHidePasswordClick( + ilAddWifiPwdPassword.etInputContent, + ilAddWifiPwdPassword.ivInputRepresentImage, + isShowPassword + ) + } + + btnAddWifiPwdSkip -> goEditWifiActivity() + + btnAddWifiPwdConnect -> mWiFiBean?.let { + if (it.auth_type == ConstantInt.Type0) noPasswordConnect() + else savePassword() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt new file mode 100644 index 0000000..9784596 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone1Activity.kt @@ -0,0 +1,235 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.animation.ValueAnimator +import android.content.Intent +import android.view.Gravity +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.activity.viewModels +import androidx.core.animation.doOnEnd +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddWifiPowerZone1Binding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.clj.fastble.BleManager + +class AddWifiPowerZone1Activity : + BaseActivity(ActivityAddWifiPowerZone1Binding::inflate) { + + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private val mAnimatorDuration = 2000L + private var mHaveSignal = true + + private var mPetBean: PetBean? = null + private var isFirstBind = false + private var mPetCurrentLat = 0.0 + private var mPetCurrentLon = 0.0 + + override fun getTopBar() = mViewBinding.ilAddWifiZone1TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) + mPetCurrentLon = getDouble(ConstantString.Longitude, 0.0) + } + + if (isFirstBind) setLeftBackImage(0) + else setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + mPetBean?.let { + ViewUtil.instance.setPetTypeHead( + ivAddWifiZone1PetHead.appHeadImage, it.imgurl, it.petType + ) + } + + tvAddWifiZone1LaterBtn.visibility = if (isFirstBind) View.VISIBLE + else View.INVISIBLE + + svAddWifiZone1Signal.setValue(2) + setOnClickListenerViews( + btnAddWifiZone1Next, + tvAddWifiZone1LaterBtn, + ilAddWifiZone1BluetoothTips.trbBleConnectState + ) + mHaveSignalAnimator.start() + } + + connectBle() + } + + override fun liveDataObserve() { + //添加æˆåŠŸç»“æŸé¡µé¢ + XEventBus.observe(this, EventName.RefreshWiFiZone) { + finish() + } + + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + showLoading(false) + mViewBinding.ilAddWifiZone1BluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (ble.conState == ConState.CONNECTED) { + mPetBean?.macID = ble.mac + ViewUtil.instance.viewShowFadeInAnimation(mViewBinding.btnAddWifiZone1Next) + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { + ViewUtil.instance.viewHideFadeInAnimation(mViewBinding.btnAddWifiZone1Next) + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) + ViewUtil.instance.bleConStateToast(this, ble.conState, Gravity.CENTER) + } + } + + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + ViewUtil.instance.viewHideFadeInAnimation(mViewBinding.btnAddWifiZone1Next) + if (conState == ConState.DEVICE_NOT_FOUND) { + ViewUtil.instance.showDialog( + mContext, + R.string.txt_no_search_device, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + } + }, + okTextResId = R.string.txt_sure, + cancelTextResId = R.string.txt_cancel + ) + } + mViewBinding.ilAddWifiZone1BluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState) + } + } + } + + private val mHaveSignalAnimator = ValueAnimator.ofInt(0, 3).apply { + duration = mAnimatorDuration +// repeatCount = ValueAnimator.INFINITE + //匀速å˜åŒ– + interpolator = LinearInterpolator() + addUpdateListener { + val value = it.animatedValue as Int + mViewBinding.svAddWifiZone1Signal.setValue(value) + } + + doOnEnd { + startDelay = 3000 + if (mHaveSignal) { + mViewBinding.rvAddWifiZone1Room.playCloseAnimator() + setIntValues(3, 0) + } else { + mViewBinding.rvAddWifiZone1Room.playOpenAnimator() + setIntValues(0, 3) + } + mHaveSignal = !mHaveSignal + start() + } + } + + private fun connectBle() { + mPetBean?.apply { +// if (isFirstBind) +// mConnectionDeviceViewModel.connectDeviceToDeviceOutId( +// this@AddWifiPowerZone1Activity, deviceOutId +// ) + + //是å¦è¿žæŽ¥äº†è“牙 + if (BleManager.getInstance().isConnected(macID)) { + ViewUtil.instance.viewShowFadeInAnimation(mViewBinding.btnAddWifiZone1Next) + mViewBinding.ilAddWifiZone1BluetoothTips.trbBleConnectState.let { + it.setBackgroundColor( + ContextCompat.getColor(mContext, R.color.cyan_color1) + ) + it.text = getString(R.string.tracker_manage_set_ble_connect) + } + } else { + mConnectionDeviceViewModel.connectDeviceToMac( + this@AddWifiPowerZone1Activity, macID + ) + } + } + } + + private fun goNext() { + Util.checkLocationPermissionsGpsEnabled(mContext, { + Intent(mContext, AddWifiPowerZone2Activity::class.java).let { + mPetBean?.let { pet -> + it.putExtra(ConstantString.Pet, pet) + } + it.putExtra(ConstantString.isFirstBind, isFirstBind) + it.putExtra(ConstantString.Latitude, mPetCurrentLat) + it.putExtra(ConstantString.Longitude, mPetCurrentLon) + if (isFirstBind) { + startActivityFinish(it) + } else { + startActivity(it) + } + } + }) + } + + /** + * 手动连接/断开设备 + */ + private fun connectionBtn(btnString: String) { + if (btnString == getString(R.string.tracker_manage_set_ble_unconnect)) { + connectBle() + } else if (btnString == getString(R.string.tracker_manage_set_ble_connect)) { + ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { + mPetBean?.apply { + SRBleUtil.instance.disconnectToMac(macID) + } +// if (isFirstBind) { +// BleManager.getInstance().disconnectAllDevice() +// } else { +// mPetBean?.apply { +// SRBleUtil.instance.disconnectToMac(macID) +// } +// } + } + } + } + + override fun listenBackPressed() { + if (!isFirstBind) super.listenBackPressed() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnAddWifiZone1Next -> goNext() + + tvAddWifiZone1LaterBtn -> startActivityFinish( + Intent( + mContext, HomeV2Activity::class.java + ) + ) + + ilAddWifiZone1BluetoothTips.trbBleConnectState -> connectionBtn( + ilAddWifiZone1BluetoothTips.trbBleConnectState.text.toString() + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone2Activity.kt new file mode 100644 index 0000000..fff7aff --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone2Activity.kt @@ -0,0 +1,106 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.content.Intent +import android.view.View +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddWifiPowerZone2Binding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.common.map.WifiZone2MapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class AddWifiPowerZone2Activity : + BaseActivity(ActivityAddWifiPowerZone2Binding::inflate) { + + private lateinit var mWifiZone2MapCommon: WifiZone2MapCommon + private lateinit var mFragment: Fragment + + private var mPetBean: PetBean? = null + private var mPetCurrentLat = 0.0 + private var isFirstBind = false + private var mPetCurrentLon = 0.0 + + override fun getTopBar() = mViewBinding.ilAddWifiZone2TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) + mPetCurrentLon = getDouble(ConstantString.Longitude, 0.0) + } + + if (isFirstBind) setLeftBackImage(0) + else setLeftBackImage(R.drawable.icon_white_back_svg) + + mWifiZone2MapCommon = WifiZone2MapCommon() + mFragment = mWifiZone2MapCommon.getMapFragment(mContext) + + mViewBinding.apply { + tvWifiZone2LaterBtn.visibility = if (isFirstBind) View.VISIBLE + else View.INVISIBLE + supportFragmentManager.commit { + add(R.id.fc_wifi_power_zone2_map_fragment, mFragment) + } + + setOnClickListenerViews(btnAddWifiZone2Next, tbRefreshLocationBtn, tvWifiZone2LaterBtn) + } + } + + override fun liveDataObserve() { + //添加æˆåŠŸç»“æŸé¡µé¢ + XEventBus.observe(this, EventName.RefreshWiFiZone) { + finish() + } + } + + private fun goNext() { + val petAddressData = mWifiZone2MapCommon.getDecWiFiAddressData() + if (null == petAddressData || petAddressData.latitude == 0.0 || petAddressData.longitude == 0.0) { + } else { + val intent = Intent(mContext, AddWifiPowerZone3Activity::class.java) + mPetBean?.let { pet -> + intent.putExtra(ConstantString.Pet, pet) + } + intent.putExtra(ConstantString.Latitude, mPetCurrentLat) + intent.putExtra(ConstantString.Longitude, mPetCurrentLon) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + intent.putExtra(ConstantString.HistoryDataBean, petAddressData) + startActivity(intent) + } + } + + override fun listenBackPressed() { + if (!isFirstBind) super.listenBackPressed() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnAddWifiZone2Next -> Util.checkBluetoothPermissionsEnabled(mContext, { + goNext() + }) + + tvWifiZone2LaterBtn -> { +// XEventBus.post(EventName.RefreshWiFiZone) + startActivityFinish(Intent(mContext, HomeV2Activity::class.java)) + } + + tbRefreshLocationBtn -> { + ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v) + mWifiZone2MapCommon.refreshLocation() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt new file mode 100644 index 0000000..63f2ecb --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt @@ -0,0 +1,287 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.animation.AnimatorSet +import android.content.Intent +import android.view.Gravity +import android.view.View +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.WiFiListAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.bean.WiFiBleListBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityAddWifiPowerZone3Binding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.google.gson.Gson + + +class AddWifiPowerZone3Activity : + BaseActivity(ActivityAddWifiPowerZone3Binding::inflate) { + + // private lateinit var mWifiManager: WifiManager + private lateinit var mWiFiListAdapter: WiFiListAdapter + + //è§£æžåŽjsonæ•°æ® + private var mReceiveWifiJsonData = "" + + private lateinit var mGson: Gson + + private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + + private var mDecWiFiAddressData: HistoryDataBean? = null + private var isFirstBind = false + private var mPetBean: PetBean? = null + private var mPetCurrentLat = 0.0 + private var mPetCurrentLon = 0.0 + + private var mAnimatorSet: AnimatorSet? = null + + override fun getTopBar() = mViewBinding.ilAddWifiZone3TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + mRightImageButton = addRightImageButton(R.drawable.icon_refresh) + + intent.extras?.apply { + mDecWiFiAddressData = Util.getParcelableAdaptive( + intent, ConstantString.HistoryDataBean, HistoryDataBean::class.java + ) + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) + mPetCurrentLon = getDouble(ConstantString.Longitude, 0.0) + } + + if (null == mPetBean) finish() + + mGson = Gson() +// mWifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager + + mViewBinding.apply { + mWiFiListAdapter = WiFiListAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goSetWifiPassword(pos) + } + }) + } + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager( + mContext, rvAddWifiZone3WifiNetwork, mWiFiListAdapter + ) + } + + //查找是å¦è¿žæŽ¥äº†è“牙 + mPetBean?.apply { + SRBleUtil.instance.getConnectMacDevice(macID)?.let { + updateConState(it) + } + + if (BleManager.getInstance().isConnected(macID)) { + sendWiFiCmd() + } else { + showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) + } + } + +// checkPermission() + } + + private fun sendWiFiCmd() { + mBleTrackDeviceBean?.apply { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(bleDevice)) { + showLoading(true, R.string.txt_please_wait) + mRightImageButton?.let { + it.isEnabled = false + mAnimatorSet = ViewUtil.instance.viewAlphaAndRotationObjectAnimator(it, true) + } + mWiFiListAdapter.setData(null) + SRBleUtil.instance.writeData( + bleDevice, SRBleCmdUtil.instance.getWiFiZoneList() + ) + } else showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) + } + } + + override fun liveDataObserve() { + //添加æˆåŠŸç»“æŸé¡µé¢ + XEventBus.observe(this, EventName.RefreshWiFiZone) { + finish() + } + + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe( + this, EventName.ConnectDeviceState + ) { trackBleDevice: BleTrackDeviceBean -> + mPetBean?.apply { + if (trackBleDevice.mac == macID) { + updateConState(trackBleDevice) + } + } + } + + //接收è“ç‰™è¿”å›žæ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPetBean?.apply { + if (macID == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + } + + private fun goSetWifiPassword(pos: Int) { + if (mWiFiListAdapter.getData().isNotEmpty()) { + val wiFiBean = mWiFiListAdapter.getData()[pos] + val intent = Intent(mContext, AddWifiPasswordActivity::class.java) + intent.putExtra(ConstantString.WiFi, wiFiBean) + mDecWiFiAddressData?.let { + intent.putExtra(ConstantString.HistoryDataBean, it) + } + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Latitude, mPetCurrentLat) + intent.putExtra(ConstantString.Longitude, mPetCurrentLon) + startActivity(intent) + } + } + + /** + * è§£æžè“ç‰™è¿”å›žçš„æ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 0x0F && data1 == 0x00) { + if (data2 == 0) { + val data3 = SRBleCmdUtil.instance.byteToInt(data[3]) + val data4 = SRBleCmdUtil.instance.byteToInt(data[4]) + //当å‰ç¬¬ä¸€ä¸ªåŒ… + if (data4 == 1) { + mReceiveWifiJsonData = "" + } + + val dataLength = data[5] + // 截å–byteArrayçš„å­æ•°ç»„,从索引start到end-1 + val start = 6 // 截å–开始的索引 + val end = start + dataLength // 截å–结æŸçš„索引(ä¸åŒ…括) + val subArray = data.sliceArray(start until end) + val byteToString = subArray.decodeToString() + mReceiveWifiJsonData += byteToString + + //最åŽä¸€ä¸ªåŒ… + if (data3 == data4) { + mAnimatorSet?.cancel() + mRightImageButton?.isEnabled = true + LogUtil.e("接å—到的完整JSON字符串:$mReceiveWifiJsonData") + // 定义TypeTokenæ¥è¡¨ç¤ºItem类型的列表 +// val itemType = object : TypeToken>() {}.type +// val wifiList = mGson.fromJson>( +// mGson.toJson(mReceiveWifiJsonData), +// itemType +// ) + try { + val wifiList = mGson.fromJson( + mReceiveWifiJsonData, WiFiBleListBean::class.java + ) + mWiFiListAdapter.setData(wifiList.wifi, true) + + showLoading(false) + } catch (_: Exception) { + sendWiFiCmd() + } + } + } else { + mAnimatorSet?.cancel() + mRightImageButton?.isEnabled = true + showToast(R.string.no_data) + } + } + } + } + + /** + * æ›´æ–°è®¾å¤‡è¿žæŽ¥çŠ¶æ€ + */ + private fun updateConState(trackBleDevice: BleTrackDeviceBean) { + mBleTrackDeviceBean = trackBleDevice + if (trackBleDevice.conState == ConState.CONNECTED) { +// showToast(R.string.tracker_manage_set_ble_connect) + } else { + showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) + } + } + +// private fun checkPermission() { +// //从 Android 6.0(API 23ï¼‰å¼€å§‹ï¼Œå®šä½æƒé™çŽ°åœ¨è¢«ç”¨äºŽ Wi-Fi 扫æ +// Util.checkPermissions(mContext, object : Util.RequestPermissionCallback { +// override fun onRequestPermissionSuccess() { +// addListData() +// } +// +// override fun onRequestPermissionFail() { +// showToast(R.string.txt_wifi_permission) +// } +// }, getString(R.string.txt_wifi_permission), Manifest.permission.ACCESS_FINE_LOCATION) +// } + +// private fun addListData() { +// val list = getConnectedWifiSSID() +// mWiFiListAdapter.setData(list, true) +// } + + /* + /** + * 接收开å¯wifiæ“作 + */ + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + checkPermission() + } + + @SuppressLint("MissingPermission") + private fun getConnectedWifiSSID(): MutableList? { + // 首先,你需è¦å¼€å¯WiFi扫æ + if (mWifiManager.isWifiEnabled) { + val scanResults = mWifiManager.scanResults + scanResults.sortBy { -it.level } + return scanResults + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { +// val intent = Intent(Settings.Panel.ACTION_WIFI) +// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) +// startActivity(intent) + + val intent = Intent(Settings.Panel.ACTION_WIFI) + launchActivity(mActivityResultLauncher, intent) + } else { + mWifiManager.isWifiEnabled = true + } + } + return null + } + */ + + override fun onClick(v: View?) { + when (v!!) { + mRightImageButton -> sendWiFiCmd() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt new file mode 100644 index 0000000..3bcc7cd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt @@ -0,0 +1,473 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.content.Intent +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.SelectFencesTypeCardShadeAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.bean.WiFiBean +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityEditPowerZoneBinding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.common.map.EditWifiZoneMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.WiFiZoneViewModel +import com.clj.fastble.BleManager + + +class EditWifiPowerZoneActivity : + BaseActivity(ActivityEditPowerZoneBinding::inflate) { + + private val mWiFiZoneViewModel: WiFiZoneViewModel by viewModels() + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private lateinit var mSelectTypeShadeAdapter: SelectFencesTypeCardShadeAdapter + private var mWiFiBean: WiFiBean? = null + + private lateinit var mWiFiZoneBean: WiFiZoneBean + + private var mPetBean: PetBean? = null + private var mPetCurrentLat = 0.0 + private var mPetCurrentLon = 0.0 + + private lateinit var mEditZoneMapCommon: EditWifiZoneMapCommon + private lateinit var mFragment: Fragment + + private var mShowCenterLocationType = ConstantInt.OtherLocationType + + //æ˜¯å¦æ˜¯ç¼–辑 + private var isEdit = false + private var isFirstBind = false + private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + + override fun getTopBar() = mViewBinding.editPowerZoneTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_edit_power_zone) + setLeftBackImage(R.drawable.icon_white_back_svg) + + initWifiData() + + if (isEdit) mRightImageButton = addRightImageButton(R.drawable.icon_gray_delete_svg) + + mEditZoneMapCommon = EditWifiZoneMapCommon() + mFragment = mEditZoneMapCommon.getMapFragment(mContext, mWiFiZoneBean) { mapLoadOk() } + + mViewBinding.apply { + ilWifiNameInputLayout.tvInputNameTitle.text = getString(R.string.txt_zone_name) + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivEditWifiZoneRefreshBtn, mShowCenterLocationType + ) + setOnClickListenerViews( + ivEditWifiZoneRefreshBtn, + btnSaveWifiZone, + ivEditWifiZoneMapTypeBtn, + btnCancelWifiZone, + mRightImageButton, + ilEditPowerZoneBluetoothTips.trbBleConnectState + ) + + setListData() + + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, rvEditWifiZoneType, mSelectTypeShadeAdapter, right = AppUtils.dpToPx(8) + ) + + supportFragmentManager.commit { + add(R.id.fc_edit_power_zone_map_fragment, mFragment) + } + + setListenKeyboardChange() + + if (null != mBleTrackDeviceBean) { + ilEditPowerZoneBluetoothTips.trbBleConnectState.let { + it.setBackgroundColor(ContextCompat.getColor(mContext, R.color.cyan_color1)) + it.text = getString(R.string.tracker_manage_set_ble_connect) + } + } + } + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿”å›žæ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPetBean?.apply { + if (macID == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { trackDevice: BleTrackDeviceBean -> + showLoading(false) + mViewBinding.ilEditPowerZoneBluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (trackDevice.conState == ConState.CONNECTED) { + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) + } + } + + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + mViewBinding.ilEditPowerZoneBluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState, Gravity.CENTER) + } + } + + mWiFiZoneViewModel.apply { + mAddWiFiZoneLiveData.observe(this@EditWifiPowerZoneActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshWiFiZone) + if (isFirstBind) { + showToast(R.string.txt_add_successful, gravity = Gravity.CENTER) + mViewBinding.root.postDelayed({ + startActivityFinish( + Intent( + mContext, HomeV2Activity::class.java + ) + ) + }, 1500) + } else { + showToast(R.string.txt_add_successful, true, gravity = Gravity.CENTER) + } + } + }) + } + + mUpdateWiFiZoneLiveData.observe(this@EditWifiPowerZoneActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshWiFiZone) + showToast(R.string.txt_change_successful, true, gravity = Gravity.CENTER) + } + }) + } + + mDeleteWiFiZoneLiveData.observe(this@EditWifiPowerZoneActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.DeleteWiFiZone) + showToast(R.string.txt_delete_success, true, gravity = Gravity.CENTER) + } + }) + } + } + } + + /** + * 地图加载好了 + */ + private fun mapLoadOk() { + mWiFiZoneBean.apply { + mEditZoneMapCommon.setShowWifiLocation(latitude, longitude, isEdit) + mPetBean?.let { + mEditZoneMapCommon.setPetLatLon( + it.imgurl, it.petType, mPetCurrentLat, mPetCurrentLon + ) + } + } + } + + private fun initWifiData() { + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + //设备里的wifiæ•°æ®,添加使用到 + mWiFiBean = + Util.getParcelableAdaptive(intent, ConstantString.WiFi, WiFiBean::class.java) + //选地å€é¡µé¢çš„æ•°æ® + val decPetAddressData = Util.getParcelableAdaptive( + intent, ConstantString.HistoryDataBean, HistoryDataBean::class.java + ) + //宠物相关数æ®ï¼ŒåŒ…括deviceId + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + //编辑传过æ¥çš„wiFiZoneæ•°æ® + val wiFiZoneBean = Util.getParcelableAdaptive( + intent, ConstantString.WiFiZone, WiFiZoneBean::class.java + ) + if (null == wiFiZoneBean) { + isEdit = false + mWiFiZoneBean = WiFiZoneBean() + decPetAddressData?.let { + mWiFiZoneBean.address = it.address + mWiFiZoneBean.latitude = it.latitude + mWiFiZoneBean.longitude = it.longitude + } + } else { + isEdit = true + mWiFiZoneBean = wiFiZoneBean + } + mPetBean?.let { + mWiFiZoneBean.deviceId = it.deviceId + //查找当å‰Mac的设备 + mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(it.macID) + } + + mPetCurrentLat = getDouble(ConstantString.Latitude, 0.0) + mPetCurrentLon = getDouble(ConstantString.Longitude, 0.0) + } + + mWiFiZoneBean.apply { + mWiFiBean?.let { + wifiName = it.name + wifiMac = it.mac + wifiZoneName = getString(R.string.txt_home) + } + mViewBinding.let { + it.tvWifiNameContent.text = wifiName + it.tvWifiGpsLocation.text = address + it.ilWifiNameInputLayout.etInputContent.setText(wifiZoneName) + it.tvWifiGpsLocation.text = address + } + } + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + mViewBinding.apply { + ViewUtil.instance.setMapViewBottomMarginOverlap( + rlEditPowerZoneMapLayout, rlEditWifiInfoLayout.height, AppUtils.dpToPx(20) + ) + } + } + + private fun setListData() { + val typeList = mutableListOf() + DataBean().apply { + imageId = R.drawable.icon_wifi_zone_home_type_svg + typeList.add(this) + } + DataBean().apply { + imageId = R.drawable.icon_wifi_zone_office_type_svg + typeList.add(this) + } + mSelectTypeShadeAdapter = SelectFencesTypeCardShadeAdapter(mContext, typeList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mSelectTypeShadeAdapter, typeList, pos + ) + mWiFiZoneBean.type = pos + 1 + mViewBinding.apply { + ilWifiNameInputLayout.let { + val zoneName = it.etInputContent.text.toString() + if (TextUtils.isEmpty(zoneName)) { + val name = if (pos == 0) getString(R.string.txt_home) + else getString(R.string.txt_office) + mWiFiZoneBean.wifiZoneName = name + it.etInputContent.setText(name) + } else if (zoneName == getString(R.string.txt_home)) { + val name = getString(R.string.txt_office) + mWiFiZoneBean.wifiZoneName = name + it.etInputContent.setText(name) + } else if (zoneName == getString(R.string.txt_office)) { + val name = getString(R.string.txt_home) + mWiFiZoneBean.wifiZoneName = name + it.etInputContent.setText(name) + } + } + } + } + }) + } + + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mSelectTypeShadeAdapter, typeList, mWiFiZoneBean.type - 1 + ) + } + + private fun saveWiFiZone() { + val name = mViewBinding.ilWifiNameInputLayout.etInputContent.text.toString() + if (!TextUtils.isEmpty(name)) { + mWiFiZoneBean.wifiZoneName = name + } + if (isEdit) { + mWiFiZoneViewModel.updateWifiZone(this, mWiFiZoneBean) + } else { + sendAddWiFiZoneCmd() + } + } + + private fun deleteWifiZone() { + ViewUtil.instance.showDialog( + mContext, R.string.txt_delete_tips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + sendDeleteWiFiZoneCmd() + } + }, okTextResId = R.string.txt_sure + ) + } + + /** + * è§£æžæ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + + mRightImageButton?.isEnabled = true + + if (data1 == 0x01 && data2 == 0x00) { + //添加wifi 指令æˆåŠŸ + if (data0 == 0x10) { + LogUtil.e("设置设备wifi指令æˆåŠŸ") + mWiFiZoneViewModel.addWifiZone(this, mWiFiZoneBean) + } + //删除æˆåŠŸ + else if (data0 == 0x11) { + LogUtil.e("删除设备wifi指令æˆåŠŸ") + mWiFiZoneViewModel.deleteWifiZone(this@EditWifiPowerZoneActivity, mWiFiZoneBean) + } + } else if (data1 == 0x01 && data2 == 0x01) { + showLoading(false) + setButtonEnabled(mViewBinding.btnSaveWifiZone,ConstantInt.Type1) + showToast(R.string.txt_duplicate_wifi_not, gravity = Gravity.CENTER) + } else { + setButtonEnabled(mViewBinding.btnSaveWifiZone,ConstantInt.Type1) + showLoading(false) + showToast("Fail", gravity = Gravity.CENTER) + LogUtil.e("设备wifi指令失败") + } + } + } + + + /** + * 添加WiFi指令 + */ + private fun sendAddWiFiZoneCmd() { + senCmd(SRBleCmdUtil.instance.setWiFiZone(mWiFiZoneBean)) + } + + /** + * 删除WiFi指令 + */ + private fun sendDeleteWiFiZoneCmd() { + senCmd(SRBleCmdUtil.instance.deleteWiFiZone(mWiFiZoneBean.wifiMac)) + } + + private fun senCmd(cmd: ByteArray) { + mBleTrackDeviceBean?.apply { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(bleDevice)) { + showLoading(true, R.string.txt_please_wait) + mRightImageButton?.isEnabled = false + setButtonEnabled(mViewBinding.btnSaveWifiZone,ConstantInt.Type0) + SRBleUtil.instance.writeData(bleDevice, cmd) + } else { + showToast(R.string.tracker_manage_set_ble_unconnect, gravity = Gravity.CENTER) + } + } + } + + /** + * 手动连接/断开设备 + */ + private fun connectionBtn(btnString: String) { + mPetBean?.apply { + if (btnString == getString(R.string.tracker_manage_set_ble_unconnect)) { + if (isFirstBind) mConnectionDeviceViewModel.connectDeviceToDeviceOutId( + this@EditWifiPowerZoneActivity, deviceOutId + ) + else mConnectionDeviceViewModel.connectDeviceToMac( + this@EditWifiPowerZoneActivity, macID + ) + } else if (btnString == getString(R.string.tracker_manage_set_ble_connect)) { + ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { + if (isFirstBind) { + BleManager.getInstance().disconnectAllDevice() + } else { + SRBleUtil.instance.disconnectToMac(macID) + } + } + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ivEditWifiZoneRefreshBtn -> { + mWiFiZoneBean.let { + when (mShowCenterLocationType) { + ConstantInt.PetLocationType -> { + mShowCenterLocationType = ConstantInt.UserLocationType + } + + ConstantInt.UserLocationType -> { + mShowCenterLocationType = ConstantInt.OtherLocationType + } + + ConstantInt.OtherLocationType -> { + mShowCenterLocationType = + if (mPetCurrentLat == 0.0 && mPetCurrentLon == 0.0) { + ConstantInt.UserLocationType + } else { + ConstantInt.PetLocationType + } + } + } + mEditZoneMapCommon.switchShowLocation( + mShowCenterLocationType, it.latitude, it.longitude + ) + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivEditWifiZoneRefreshBtn, mShowCenterLocationType + ) + } + } + + ivEditWifiZoneMapTypeBtn -> mEditZoneMapCommon.switchSatelliteAndNormalMapType() + + btnSaveWifiZone -> saveWiFiZone() + mRightImageButton -> deleteWifiZone() + btnCancelWifiZone -> { + if (isFirstBind) { + finish() + } else { + if (!isEdit) XEventBus.post(EventName.RefreshWiFiZone) + finish() + } + } + + ilEditPowerZoneBluetoothTips.trbBleConnectState -> connectionBtn( + ilEditPowerZoneBluetoothTips.trbBleConnectState.text.toString() + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt new file mode 100644 index 0000000..789b830 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/PowerSavingSetActivity.kt @@ -0,0 +1,164 @@ +package com.abbidot.tracker.ui.activity.device.wifi + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.WiFiZoneAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityPowerSavingSetBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.WiFiZoneViewModel +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +class PowerSavingSetActivity : + BaseActivity(ActivityPowerSavingSetBinding::inflate) { + + private val mWiFiZoneViewModel: WiFiZoneViewModel by viewModels() + + private lateinit var mZoneAdapter: WiFiZoneAdapter + + private var mPetBean: PetBean? = null + private var mPetCurrentLat = 0.0 + private var mPetCurrentLon = 0.0 + + override fun getTopBar() = mViewBinding.ilPowerSavingSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_power_saving_set) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + + mZoneAdapter = WiFiZoneAdapter(mContext, null).apply { + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + goAddWifiZone() + } + }) + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goEditWiFiZone(pos) + } + }) + } + + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvPowerSavingZone, mZoneAdapter, top = QMUIDisplayHelper.dpToPx(16) + ) + + setOnClickListenerViews(btnPowerSavingSetAdd) + } + + mPetBean?.apply { + mWiFiZoneViewModel.getWifiZoneList(this@PowerSavingSetActivity, deviceId) + } + } + + override fun liveDataObserve() { + //添加æˆåŠŸåˆ·æ–°é¡µé¢ + XEventBus.observe(this, EventName.RefreshWiFiZone) { + mPetBean?.apply { + mWiFiZoneViewModel.getWifiZoneList(this@PowerSavingSetActivity, deviceId) + } + } + XEventBus.observe(this, EventName.DeleteWiFiZone) { + mPetBean?.apply { + mWiFiZoneViewModel.getWifiZoneList(this@PowerSavingSetActivity, deviceId) + } + } + + mWiFiZoneViewModel.mWiFiZoneListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mZoneAdapter.setData(null) + mPetCurrentLat = latitude + mPetCurrentLon = longitude + list?.let { wifi -> + setWifiListData(wifi) + } + } + } + }) + + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + mZoneAdapter.showNoDataAddButton(false) + } + } + } + + private fun goEditWiFiZone(pos: Int) { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + return + } + Util.checkLocationPermissionsGpsEnabled(mContext, { + if (mZoneAdapter.getData().isNotEmpty()) { + val wiFiZoneBean = mZoneAdapter.getData()[pos] + val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java) + intent.putExtra(ConstantString.WiFiZone, wiFiZoneBean) +// mDecWiFiAddressData?.let { +// intent.putExtra(ConstantString.HistoryDataBean, it) +// } + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.Latitude, mPetCurrentLat) + intent.putExtra(ConstantString.Longitude, mPetCurrentLon) + startActivity(intent) + } + }) + } + + private fun setWifiListData(list: MutableList) { + list.apply { + mViewBinding.let { + if (size > 0) { + it.btnPowerSavingSetAdd.visibility = if (size == 2) View.INVISIBLE + else View.VISIBLE + mZoneAdapter.setData(list, true) + } else { + it.btnPowerSavingSetAdd.visibility = View.INVISIBLE + } + + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share != ConstantInt.NoShare) { + it.btnPowerSavingSetAdd.visibility = View.INVISIBLE + } + } + } + } + + private fun goAddWifiZone() { + Intent(mContext, AddWifiPowerZone1Activity::class.java).apply { + mPetBean?.let { + putExtra(ConstantString.Pet, it) + } + putExtra(ConstantString.Latitude, mPetCurrentLat) + putExtra(ConstantString.Longitude, mPetCurrentLon) + startActivity(this) + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPowerSavingSetAdd -> goAddWifiZone() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt new file mode 100644 index 0000000..d900746 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt @@ -0,0 +1,275 @@ +package com.abbidot.tracker.ui.activity.help + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.FeedbackImageAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityFeedbackBinding +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FeedbackViewModel +import com.abbidot.tracker.vm.TakePhotoAndCompressViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.huantansheng.easyphotos.EasyPhotos +import com.huantansheng.easyphotos.models.album.entity.Photo +import kotlinx.coroutines.launch + +/** + * å馈 + */ +class FeedbackActivity : BaseActivity(ActivityFeedbackBinding::inflate) { + + private val mTakePhotoAndCompressViewModel: TakePhotoAndCompressViewModel by viewModels() + private val mFeedbackViewModel: FeedbackViewModel by viewModels() + private val mUserInfoViewModel: UserProfileViewModel by viewModels() + + //å馈问题类型 type 1为APP 2为设备 3其它 + private var mFeedbackType = 1 + + //é™åˆ¶ç…§ç‰‡æ•°é‡ + private val mLimitPhotoCount = 5 + private lateinit var mUploadImageUrlList: MutableList + + //å·²ä¸Šä¼ å›¾ç‰‡çš„æ•°é‡ + private var mUploadImageIndex = 0 + + private lateinit var mFeedbackImageAdapter: FeedbackImageAdapter + + override fun getTopBar() = mViewBinding.ilSettingFeedbackBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_feedback_title) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mUploadImageUrlList = mutableListOf() + mFeedbackImageAdapter = FeedbackImageAdapter(mContext, this, null) + + mViewBinding.apply { + ilFeedbackPhoneLayout.let { + it.tvInputMustFill.visibility = View.VISIBLE + it.tvInputNameTitle.setText(R.string.txt_enter_email_tip) + it.etInputContent.setHint(R.string.txt_email_address) + } + + ViewUtil.instance.setRecyclerViewHorizontalLinearLayout( + mContext, settingFeedbackImageRv, mFeedbackImageAdapter, right = AppUtils.dpToPx(12) + ) + + radiogroupSettingFeedbackType.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + radiobuttonFeedbackAppUse.id -> { + mFeedbackType = 1 + } + + radiobuttonFeedbackProductUse.id -> { + mFeedbackType = 2 + } + + radiobuttonFeedbackProductSuggest.id -> { + mFeedbackType = 3 + } + } + } + + setOnClickListenerViews(btnSubmitSettingFeedback, llSelectImageBtnLayout) + + setViewClickHideInputMethod(llSettingFeedbackLayout) + } + + setListenKeyboardChange() + } + + override fun liveDataObserve() { + mTakePhotoAndCompressViewModel.mPhotoPathLiveData.observe(this) { + lifecycleScope.launch { + val list = mutableListOf() + list.addAll(mFeedbackImageAdapter.getData()) + it.forEach { file -> + ViewUtil.instance.addMenuBean(list, "", imageUrl = file.path) + } + mFeedbackImageAdapter.setData(list, true) + mViewBinding.apply { + settingFeedbackImageRv.scrollToPosition(list.size - 1) + if (list.size == mLimitPhotoCount) { + setBtnUploadState(false) + } + } + } + } + + mUserInfoViewModel.mUploadImageLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + mUploadImageUrlList.add(data) + LogUtil.e("第${mUploadImageIndex + 1}张图片上传完æˆ") + mUploadImageIndex++ + uploadImageList() + } + }) + } + + mFeedbackViewModel.mFeedbackResultLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_feedback_success, isFinish = true) + } + }) + } + } + + /** + * 设置是å¦å¯ä»¥ä¸Šä¼ æŒ‰é’®çŠ¶æ€ + */ + private fun setBtnUploadState(isCanUpload: Boolean) { + mViewBinding.apply { + llSelectImageBtnLayout.isEnabled = isCanUpload + if (isCanUpload) { + tvFeedbackChooseFileTitle.setTextColor( + ContextCompat.getColor( + mContext, R.color.data_black_color + ) + ) + ivFeedbackChooseFileImage.drawable.setTint( + ContextCompat.getColor( + mContext, R.color.data_black_color + ) + ) + } else { + tvFeedbackChooseFileTitle.setTextColor( + ContextCompat.getColor( + mContext, R.color.gray_color10 + ) + ) + ivFeedbackChooseFileImage.drawable.setTint( + ContextCompat.getColor( + mContext, R.color.gray_color10 + ) + ) + } + } + } + + fun deletePhoto(list: MutableList, item: MenuTxtBean) { + lifecycleScope.launch { + for (i in 0 until list.size) { + val menuTxtBean = list[i] + if (menuTxtBean.imageUrl == item.imageUrl) { + list.removeAt(i) + mFeedbackImageAdapter.notifyItemRemoved(i) + setBtnUploadState(true) + break + } + } + } + } + + /** + * 开始æäº¤å馈 + */ + private fun startSubmitFeedback() { + if (mViewBinding.radiogroupSettingFeedbackType.checkedRadioButtonId < 0) { + showToast(R.string.txt_feedback_notype) + return + } + val feedbackContent = mViewBinding.edSettingFeedbackContent.text.toString() + val feedbackEmail = mViewBinding.ilFeedbackPhoneLayout.etInputContent.text.toString() + if (TextUtils.isEmpty(feedbackContent) || TextUtils.isEmpty(feedbackEmail)) { + showToast(R.string.txt_not_null) + return + } + if (!Utils.isValidEmail(feedbackEmail)) { + showToast(R.string.txt_valid_email) + return + } + + mUploadImageIndex = 0 + mUploadImageUrlList.clear() + uploadImageList() + } + + /** + * 多张图片上传 + */ + private fun uploadImageList() { + val photoList = mFeedbackImageAdapter.getData() + if (photoList.size > mUploadImageIndex) { + val imageUrl = photoList[mUploadImageIndex].imageUrl + if (TextUtils.isEmpty(imageUrl)) { + mUploadImageIndex++ + uploadImageList() + } else { + mUserInfoViewModel.uploadImage(this, imageUrl) + } + } else { + LogUtil.e("图片已全部上传") + submitFeedbackOk() + } + } + + /** + * å®Œæˆæäº¤å馈 + */ + private fun submitFeedbackOk() { + val feedbackContent = mViewBinding.edSettingFeedbackContent.text.toString() + val feedbackEmail = mViewBinding.ilFeedbackPhoneLayout.etInputContent.text.toString() + val userId = MMKVUtil.getString(MMKVKey.UserId) + val imageUrls = mUploadImageUrlList.joinToString(",") + mFeedbackViewModel.feedback( + this, mFeedbackType, userId, feedbackContent, imageUrls, feedbackEmail + ) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (RESULT_OK == resultCode) { + //相机或相册回调 + if (requestCode == ResultCode.ResultCode_1) { + if (null != data) { + //返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + val resultPhotos: ArrayList = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS)!! + mTakePhotoAndCompressViewModel.dealCompressPhoto(mContext, resultPhotos) + } + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + mViewBinding.btnSubmitSettingFeedback -> startSubmitFeedback() + + mViewBinding.llSelectImageBtnLayout -> { + if (mFeedbackImageAdapter.getData().size == mLimitPhotoCount) { + showToast( + String.format( + getString(R.string.selector_reach_max_image_hint_easy_photos), + mLimitPhotoCount + ) + ) + return@apply + } + ViewUtil.instance.goSelectPhoto( + this@FeedbackActivity, + ResultCode.ResultCode_1, + count = mLimitPhotoCount - mFeedbackImageAdapter.getData().size + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpActiveTrackerActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpActiveTrackerActivity.kt new file mode 100644 index 0000000..1b26fef --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpActiveTrackerActivity.kt @@ -0,0 +1,16 @@ +package com.abbidot.tracker.ui.activity.help + +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityHelpActiveTrackerBinding + +class HelpActiveTrackerActivity : BaseActivity(ActivityHelpActiveTrackerBinding::inflate) { + + override fun getTopBar()=mViewBinding.ilHelpActiveTrackerBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_active_tracker) + setLeftBackImage(R.drawable.icon_white_back_svg) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpCreatePetFenceActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpCreatePetFenceActivity.kt new file mode 100644 index 0000000..1b69fae --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpCreatePetFenceActivity.kt @@ -0,0 +1,54 @@ +package com.abbidot.tracker.ui.activity.help + +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HelpTextImageTypeAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.databinding.ActivityHelpCreatePetFenceBinding +import com.abbidot.tracker.util.ViewUtil + +class HelpCreatePetFenceActivity : + BaseActivity(ActivityHelpCreatePetFenceBinding::inflate) { + + private lateinit var mHelpCreateFenceAdapter: HelpTextImageTypeAdapter + + override fun getTopBar() = mViewBinding.ilHelpCreatePetFenceBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_create_pet_fence) + setLeftBackImage(R.drawable.icon_white_back_svg) + + val menuList = mutableListOf() + ViewUtil.instance.addMenuBean( + menuList, getString(R.string.txt_create_fence_tip1), menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, "", imageResId = R.drawable.create_fence_help1, menuType = MultipleEntity.IMG + ) + ViewUtil.instance.addMenuBean( + menuList, getString(R.string.txt_create_fence_tip2), menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, "", imageResId = R.drawable.create_fence_help2, menuType = MultipleEntity.IMG + ) + ViewUtil.instance.addMenuBean( + menuList, getString(R.string.txt_create_fence_tip3), menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, "", imageResId = R.drawable.create_fence_help3, menuType = MultipleEntity.IMG + ) + ViewUtil.instance.addMenuBean( + menuList, getString(R.string.txt_create_fence_tip4), menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, "", imageResId = R.drawable.create_fence_help4, menuType = MultipleEntity.IMG + ) + + mHelpCreateFenceAdapter = HelpTextImageTypeAdapter(menuList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, mViewBinding.rvHelpCreatePetFenceContent, mHelpCreateFenceAdapter + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpPowerOnOffActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpPowerOnOffActivity.kt new file mode 100644 index 0000000..2e753c1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpPowerOnOffActivity.kt @@ -0,0 +1,26 @@ +package com.abbidot.tracker.ui.activity.help + +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityHelpPowerOnOffBinding + +class HelpPowerOnOffActivity : + BaseActivity(ActivityHelpPowerOnOffBinding::inflate) { + + override fun getTopBar() = mViewBinding.ilHelpPowerOnOffBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_power_on_off) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + ivHelpPowerOnOffGif.load(R.drawable.charge_power_on) + ivHelpShakeGif.load(R.drawable.gif_shake_on) + ilHelpPowerOnOffTitle.tvHelpTitleOne.setText(R.string.txt_power_on_off_tip) + ilHelpShakeTitle.tvHelpTitleOne.setText(R.string.txt_power_on_off_install_tip) + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerBatteryActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerBatteryActivity.kt new file mode 100644 index 0000000..a9015ff --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerBatteryActivity.kt @@ -0,0 +1,120 @@ +package com.abbidot.tracker.ui.activity.help + +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HelpTextImageTypeAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.databinding.ActivityHelpTrackerBatteryBinding +import com.abbidot.tracker.util.ViewUtil + +class HelpTrackerBatteryActivity : + BaseActivity(ActivityHelpTrackerBatteryBinding::inflate) { + + private lateinit var mHelpBatteryAdapter: HelpTextImageTypeAdapter + + override fun getTopBar() = mViewBinding.ilHelpTrackerBatteryBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_tracker_battery_life) + setLeftBackImage(R.drawable.icon_white_back_svg) + + val menuList = mutableListOf() + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_tracker_sleeping_mode)) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_low_power), + menuType = MultipleEntity.IMG_TEXT, + colorRedId = R.color.help_color1 + ) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip1), + menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, + "", + imageResId = R.drawable.battery_life_help1, + menuType = MultipleEntity.IMG + ) + + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_in_wifi_zone)) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_low_power_usage), + menuType = MultipleEntity.IMG_TEXT, + colorRedId = R.color.help_color2 + ) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip2), + menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, "", imageResId = R.drawable.battery_life_help2, menuType = MultipleEntity.IMG + ) + + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_outside_wifi_zone)) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_standard_power_usage), + menuType = MultipleEntity.IMG_TEXT, + colorRedId = R.color.help_color3 + ) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip3), + menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, + "", + imageResId = R.drawable.battery_life_help3, + menuType = MultipleEntity.IMG + ) + + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_gps_update_interval)) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip4), + menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip5), + menuType = MultipleEntity.IMG_TEXT_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, + "", + imageResId = R.drawable.battery_life_help4, + menuType = MultipleEntity.IMG + ) + + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_in_live_mode)) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_highest_power_usage), + menuType = MultipleEntity.IMG_TEXT, + colorRedId = R.color.help_color4 + ) + ViewUtil.instance.addMenuBean( + menuList, + getString(R.string.txt_tracker_battery_tip6), + menuType = MultipleEntity.IMG_IMG + ) + ViewUtil.instance.addMenuBean( + menuList, + "", + imageResId = R.drawable.battery_life_help5, + menuType = MultipleEntity.IMG + ) + + mHelpBatteryAdapter = HelpTextImageTypeAdapter(menuList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, mViewBinding.rvHelpTrackerBatteryContent, mHelpBatteryAdapter + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerStatusActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerStatusActivity.kt new file mode 100644 index 0000000..c0c2111 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HelpTrackerStatusActivity.kt @@ -0,0 +1,18 @@ +package com.abbidot.tracker.ui.activity.help + +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityHelpTrackerStatusBinding + +class HelpTrackerStatusActivity : + BaseActivity(ActivityHelpTrackerStatusBinding::inflate) { + + override fun getTopBar() = mViewBinding.ilHelpTrackerStatusBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_check_tracker_status) + setLeftBackImage(R.drawable.icon_white_back_svg) + mViewBinding.ilHelpTrackerStatusTitle1.tvHelpTitleOne.setText(R.string.txt_check_tracker_status_top_tip) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/HowWorkActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HowWorkActivity.kt new file mode 100644 index 0000000..0120b48 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/HowWorkActivity.kt @@ -0,0 +1,48 @@ +package com.abbidot.tracker.ui.activity.help + +import android.content.Intent +import android.view.View +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HowWorkAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.databinding.ActivityHowWorkBinding +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +class HowWorkActivity : BaseActivity(ActivityHowWorkBinding::inflate) { + + private lateinit var mHowWorkAdapter: HowWorkAdapter + + override fun getTopBar() = mViewBinding.ilHowWorkBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_tracker_guide) + setLeftBackImage(R.drawable.icon_white_back_svg) + + val menuList = mutableListOf() + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_power_on_off)) + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_active_tracker)) + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_check_tracker_status)) + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_tracker_battery_life)) + ViewUtil.instance.addMenuBean(menuList, getString(R.string.txt_create_pet_fence)) + mHowWorkAdapter = HowWorkAdapter(this, menuList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + when (pos) { + 0 -> startActivity(Intent(mContext, HelpPowerOnOffActivity::class.java)) + 1 -> startActivity(Intent(mContext, HelpActiveTrackerActivity::class.java)) + 2 -> startActivity(Intent(mContext, HelpTrackerStatusActivity::class.java)) + 3 -> startActivity(Intent(mContext, HelpTrackerBatteryActivity::class.java)) + 4 -> startActivity(Intent(mContext, HelpCreatePetFenceActivity::class.java)) + } + } + }) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, mViewBinding.rvHowWorkList, this, top = QMUIDisplayHelper.dpToPx(4) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt new file mode 100644 index 0000000..0502c38 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV2.kt @@ -0,0 +1,969 @@ +package com.abbidot.tracker.ui.activity.map + +import android.content.Intent +import android.graphics.Typeface +import android.view.View +import android.widget.RelativeLayout +import androidx.activity.viewModels +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HomeMapDeviceMsgAdapter +import com.abbidot.tracker.adapter.HomeMapDeviceStateAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.LiveDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityLiveV2Binding +import com.abbidot.tracker.dialog.CommonDialog1 +import com.abbidot.tracker.dialog.SelectMapTypeDialog +import com.abbidot.tracker.ui.DebugActivity +import com.abbidot.tracker.ui.common.map.HomeMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.CountDownTimerViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.FindBleDeviceViewModel +import com.abbidot.tracker.vm.MapLiveViewModel +import com.abbidot.tracker.vm.MapViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.abbidot.tracker.widget.MapDeviceNetView +import com.clj.fastble.BleManager +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import javax.inject.Inject + +@AndroidEntryPoint +class LiveActivityV2 : BaseActivity(ActivityLiveV2Binding::inflate) { + + private val mFencesMapViewModel: FencesMapViewModel by viewModels() + private val mMapViewModel: MapViewModel by viewModels() + private val mFindBleDeviceViewModel: FindBleDeviceViewModel by viewModels() + private val mMapLiveViewModel: MapLiveViewModel by viewModels() + private val mTrackerManageViewModel: TrackerSetViewModel by viewModels() + private val mCountDownViewModel: CountDownTimerViewModel by viewModels() + private val mConDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private var mSelectMapTypeDialog: SelectMapTypeDialog? = null + + private lateinit var mDeviceStateList: MutableList + private lateinit var mDeviceStateAdapter: HomeMapDeviceStateAdapter + private lateinit var mDeviceMsgList: MutableList + private lateinit var mDeviceMsgAdapter: HomeMapDeviceMsgAdapter + + @Inject + lateinit var mHomeMapCommon: HomeMapCommon + private lateinit var mFragment: Fragment + + private var mMapDeviceBean: MapDeviceBean? = null + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isAnimMoveCamera = true + + //æ˜¯å¦æ˜¾ç¤ºå›´æ  + private var isShowFence = true + + //åœ°å›¾ç±»åž‹ï¼Œæ ‡å‡†å’Œå«æ˜Ÿåœ°å›¾ + private var mMapType = ConstantInt.Type0 + private var mShowCenterLocation = ConstantInt.PetLocationType + + //æ˜¯å¦æ˜¯ç›´æ’­è·³è½¬ + private var isLiveJump = true + private var mLiveStatus = 1 + private var mPetBean: PetBean? = null + private var mTrackBleDevice: BleTrackDeviceBean? = null + + //直播是å¦å¼€å§‹ + private var isStartLive = false + + // private val mLiveStateTips = mutableListOf( +// R.string.txt_starting_live, R.string.txt_con_network, R.string.txt_gps_position +// ) + private var mStartLiveIndex = 0 + + //ç›´æ’­æ—¶é—´ 分钟 + private var mLiveTime = 5 + private lateinit var mSpeedUnit: String + private lateinit var mDistanceUnit: String + + //æ˜¯å¦æ‰“开了找设备的声音 + private var isOpenSound = false + + //设备Ledç¯å¼€å…³ + private var isLedOpen = false + + override fun getTopBar() = null + + override fun initData() { + super.initData() + mSpeedUnit = Util.getMetricUnits(mContext, ConstantInt.Type2) + mDistanceUnit = Util.getMetricUnits(mContext, ConstantInt.Type3) + intent.extras?.apply { + isLiveJump = getBoolean(ConstantString.JumpActivity, true) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + isShowFence = Util.getShowFenceSp() + + mViewBinding.apply { + ilLiveV2BluetoothFindDevice.ivMapLiveV2BleConState.setValue(0) + mFragment = mHomeMapCommon.getMapFragment( + mContext, miLiveV2MapAddressView, dnLiveV2MapNetView + ) { mapLoadOk() } + dnLiveV2MapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivMapLiveV2RefreshBtn, mShowCenterLocation + ) + ilLiveV2OperateLayout.tvLiveV2Speed.text = "--$mSpeedUnit" + ilLiveV2OperateLayout.tvLiveV2Distance.text = "--$mDistanceUnit" + llLiveV2MapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type) + lavLiveV2StateAnim.let { + it.setAnimation("lottie/loading_dog.json") + it.playAnimation() + } + + mDeviceStateList = mutableListOf() + mDeviceMsgList = mutableListOf() + mMapViewModel.addDeviceDefaultStateData(mContext, mDeviceStateList) + mDeviceStateAdapter = HomeMapDeviceStateAdapter(mContext, mDeviceStateList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvMapLiveV2DeviceState, mDeviceStateAdapter, bottom = 10 + ) + + mDeviceMsgAdapter = HomeMapDeviceMsgAdapter(mContext, mDeviceMsgList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvLiveV2MapDeviceMsg, mDeviceMsgAdapter, bottom = 10 + ) + + ilLiveV2BluetoothFindDevice.liveV2BluetoothSignal.setValue(0) + ilLiveV2BluetoothFindDevice.findBleDeviceRadoView.setValue(0) + + setOnClickListenerViews( + ilLiveV2OperateLayout.llLiveV2StopLive, + ivMapLiveV2RefreshBtn, + ivMapLiveV2BluetoothBtn, + ilLiveV2BluetoothFindDevice.btnLiveV2StopRadar, + llLiveV2MapTopPet.ivTopPetBtnSmall, + ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.root, + ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch, + ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch, + ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.root, + ilLiveV2BluetoothFindDevice.ivLiveV2FindDeviceSound, + ilLiveV2OperateLayout.btnLiveV2Issue, + ilMapLiveV2IssueLayout.tvCloseIssueBtn + ) + + supportFragmentManager.commit { + add(R.id.fc_live_v2_map_fragment, mFragment) + } + + mPetBean?.let { pet -> + if (!isLiveJump) { + findBleDevice(pet.macID) + llLiveV2StateLayout.visibility = View.GONE + } + + if (AppUtils.isDebug()) { + llLiveV2MapTopPet.homeDataPetHeadSmall.root.setOnLongClickListener { + goToDebugActivity(pet) + true + } + } + } + } + } + + override fun liveDataObserve() { + mCountDownViewModel.mCountDownEndLiveData.observe(this) { + when (mStartLiveIndex) { +// 0 -> { +// mStartLiveIndex++ +// //显示Connecting to network 30ç§’ +// mViewBinding.tvLiveV2StateContent.setText(mLiveStateTips[mStartLiveIndex]) +// mCountDownViewModel.startCountDown(30) +// } +// +// 1 -> { +// mStartLiveIndex++ +// //显示GPS positioning +// mCountDownViewModel.startCountDown(3 * 60) +// mViewBinding.tvLiveV2StateContent.setText(mLiveStateTips[mStartLiveIndex]) +// } +// +// 2 -> { +// if (isStartLive) { +// mStartLiveIndex++ +// //显示Starting 5-min Live +// val str = String.format(getString(R.string.txt_start_min_live), mLiveTime) +// mViewBinding.tvLiveV2StateContent.text = str +// mCountDownViewModel.startCountDown(2) +// } else { +// //ç›´æ’­è¶…æ—¶ +// mLiveStatus = -1 +// stopLive() +// } +// } +// + 2 -> { + mViewBinding.llLiveV2StateLayout.visibility = View.VISIBLE + mStartLiveIndex++ + //显示Starting 5-min Live + val str = String.format(getString(R.string.txt_start_min_live), "$mLiveTime") + mViewBinding.tvLiveV2StateContent.text = str + mCountDownViewModel.startCountDown(5) + } + + 3 -> mViewBinding.llLiveV2StateLayout.visibility = View.GONE + } + } + //获å–当å‰å® ç‰©ä½ç½®å’Œå›´æ ä¿¡æ¯ + mMapViewModel.mMapDeviceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + mMapDeviceBean = data + setMapData(data) + mMapViewModel.setDeviceStateAndWarningData( + mContext, + mPetBean, + data, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvLiveV2MapDeviceMsg, + true + ) + } + } + + override fun onRequestError(exceptionCode: String?) { + LogUtil.e("LiveV2Activity获å–当å‰å® ç‰©ä½ç½®å’Œå›´æ ä¿¡æ¯onRequestErrorï¼Œå†æ¬¡è¯·æ±‚") + if (exceptionCode == mNetworkRequestsFailLimit) { + finish() + } else { + mPetBean?.apply { + //获å–首页设备信æ¯çŠ¶æ€ + mMapViewModel.getMapDeviceStatus(deviceId, false) + } + } + } + }, showLoading = false) + } + + mMapLiveViewModel.mMapLiveStatusLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mPetBean?.apply { +// SRBleUtil.instance.isConnectBleSendNotifyData(macID) + when (mLiveStatus) { + //ç›´æ’­è¶…æ—¶ + -1 -> { + XEventBus.post(EventName.LiveOpenTimeOut) + finish() + } + //ç›´æ’­ç»“æŸ + 0 -> { + mViewBinding.llLiveV2StateLayout.visibility = View.GONE +// showToast(R.string.txt_change_successful, true) + finish() + } + //直播开始 + else -> { + //ç›´æ’­å¼€å¯åŽï¼Œå°±åŽ»èŽ·å–直播轨迹 + mMapLiveViewModel.mGetPetLivePointTimeStamp = + System.currentTimeMillis() / 1000 + mMapLiveViewModel.getPetLivePoint(deviceId) + } + } + } + } + + override fun onRequestError(exceptionCode: String?) { + LogUtil.e("HomeV2Activityç›´æ’­å¼€å¯é”™è¯¯onRequestErrorï¼Œå†æ¬¡è¯·æ±‚") + if (exceptionCode == mNetworkRequestsFailLimit) { + finish() + } else { + mPetBean?.apply { + mMapLiveViewModel.setupDeviceLiveStatus( + this@LiveActivityV2, deviceId, mLiveStatus + ) + } + } + } + }) + } + + //获å–直播轨迹 + mMapLiveViewModel.mMapLiveLiveData.observe(this) { + mHomeMapCommon.startRefreshUserLocation() + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + setTrackData(this) + } + } + }, isShowRequestErrorTip = false) + } + + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe( + this, EventName.ConnectDeviceState + ) { trackBleDevice: BleTrackDeviceBean -> + mMapDeviceBean?.apply { + if (trackBleDevice.mac == deviceMacId) { + updateConState(trackBleDevice) + } + } + } + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + if (conState == ConState.DEVICE_NOT_FOUND) { + openNetLive() + } + } + + mTrackerManageViewModel.mLedSwitchLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { +// mViewBinding.cbLiveV2DeviceLightSwitch.isChecked = +// !mViewBinding.cbLiveV2DeviceLightSwitch.isChecked +// showToast(R.string.txt_please_wait) + } + }) + } + + //è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> + mPetBean?.apply { + if (macID == reportData.mac) updateBleReportData(reportData) + } + } + + //接收å‘逿Œ‡ä»¤åŽè®¾å¤‡è¿”å›žçš„æ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPetBean?.apply { + if (macID == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + } + + + /** + * 跳转debugè°ƒè¯•é¡µé¢ + */ + private fun goToDebugActivity(petBean: PetBean) { + val intent = Intent(mContext, DebugActivity::class.java) + ArrayList().apply { + add(petBean) + intent.putParcelableArrayListExtra(ConstantString.Pet, this) + } + intent.putExtra(ConstantString.Index, 0) + startActivity(intent) + } + + /** + * è§£æžè“ç‰™è¿”å›žçš„æ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 0x06 && data1 == 1) { + val data3 = SRBleCmdUtil.instance.byteToInt(data[3]) + //å¼€å¯ç›´æ’­ + if (data2 == 1 && data3 == 0) { + LogUtil.e("å¼€å¯ç›´æ’­") + } else if (data2 == 0 && data3 == 0) { + //åœæ­¢è½¨è¿¹Liveç›´æ’­ + LogUtil.e("//åœæ­¢è½¨è¿¹Liveç›´æ’­") + } + } + } + } + + /** + * å¼€å¯ç½‘络上报直播 + */ + private fun openNetLive() { + if (isLiveJump) { + mPetBean?.apply { + if (!BleManager.getInstance().isConnected(macID)) { + //刚开始显示Starting Live. + mCountDownViewModel.startCountDown(2) + mMapLiveViewModel.setupDeviceLiveStatus( + this@LiveActivityV2, deviceId, mLiveStatus + ) + } + } + } + } + + /** + * æ›´æ–°è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + */ + private fun updateBleReportData(bleReportDataBean: BleReportDataBean) { + mHomeMapCommon.startRefreshUserLocation() + bleReportDataBean.apply { + if (haveDeviceStateData) { + if (null == mMapDeviceBean) mMapDeviceBean = MapDeviceBean() + mMapDeviceBean?.let { + Util.bleReportDataToMapDevice(it, bleReportDataBean) + + val isOpen = ledSwitch > ConstantInt.Close + mViewBinding.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked = + isOpen + mViewBinding.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch.isChecked = + isOpen + + if (haveLocationData && liveFlag == ConstantInt.Type1) { + if (!isStartLive) { + isStartLive = true + liveStartTip() + } + lifecycleScope.launch { + locationList?.let { location -> + liveDrawLines(location) + } + } + mHomeMapCommon.setMapDeviceBean(it) + } else if (liveFlag == ConstantInt.Type0) { + //ç›´æ’­è‡ªåŠ¨ç»“æŸ + if (isStartLive) { + XEventBus.post(EventName.LiveAutoEnd) + finish() + } + } + } + + mMapViewModel.setDeviceStateAndWarningData( + mContext, + mPetBean, + mMapDeviceBean!!, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvLiveV2MapDeviceMsg + ) + } + } + } + + /** + * 远程设置led开关 + */ + private fun setLedSwitch() { + isLedOpen = !isLedOpen + mViewBinding.apply { + //å±è”½ç‚¹å‡»å°±å˜çŠ¶æ€ +// cbLiveV2DeviceLightSwitch.isChecked = !cbLiveV2DeviceLightSwitch.isChecked + ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked = isLedOpen + ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch.isChecked = + isLedOpen + val ledSwitch = if (isLedOpen) ConstantInt.Open + else ConstantInt.Close + + setLedSwitch(ledSwitch) + mMapDeviceBean?.apply { + mTrackerManageViewModel.setLedSwitch(null, deviceServerId, ledSwitch) + } + } + } + + /** + *å‘é€è®¾å¤‡å¼€å¯å…³é—­ledè“牙指令 + */ + private fun setLedSwitch(mode: Int) { + mTrackBleDevice?.apply { + SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode) + } + } + + /** + * æ›´æ–°è®¾å¤‡è¿žæŽ¥çŠ¶æ€ + */ + private fun updateConState(trackBleDevice: BleTrackDeviceBean) { + mTrackBleDevice = trackBleDevice + if (trackBleDevice.conState == ConState.CONNECTED) { + if (isLiveJump) { + if (isStartLive) { + mMapLiveViewModel.stopGetData() + } else { + mCountDownViewModel.startCountDown(2) + lifecycleScope.launch { + //延时几秒å‘逿¶ˆæ¯ + delay(1000) + trackBleDevice.apply { + SRBleUtil.instance.writeData( + bleDevice, SRBleCmdUtil.instance.setLiveSwitch(1, mLiveTime * 60L) + ) + } + } + } + } +// showToast(R.string.tracker_manage_set_ble_connect) +// mViewBinding.ilLiveV2BluetoothFindDevice.ivMapLiveV2BleConState.setValue(2) + } else if (trackBleDevice.conState == ConState.CONNECTION_FAIL) { + if (isLiveJump) { + openNetLive() + } + } else if (trackBleDevice.conState == ConState.DISCONNECTED) { + if (isLiveJump && isStartLive) { + mPetBean?.apply { + //ç›´æ’­å¼€å¯åŽï¼Œå°±åŽ»èŽ·å–直播轨迹 + mMapLiveViewModel.mGetPetLivePointTimeStamp = System.currentTimeMillis() / 1000 + mMapLiveViewModel.getPetLivePoint(deviceId) + } + } + } else { +// showToast(R.string.tracker_manage_set_ble_unconnect) +// mViewBinding.ilLiveV2BluetoothFindDevice.ivMapLiveV2BleConState.setValue(0) + } + } + + + /** + * 显示地图类型选择弹窗 + */ + private fun showMapTypeDialog() { + if (null == mSelectMapTypeDialog) { + mSelectMapTypeDialog = ViewUtil.instance.getMapTypeDialog( + mContext, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mMapType = Util.getMapTypeSp() + if (pos == mMapType) { + return + } + mHomeMapCommon.switchSatelliteAndNormalMapType() + } + }) { v, isChecked -> + if (v.id == R.id.cb_dialog_map_fences_switch) { + isShowFence = isChecked + MMKVUtil.putBoolean(MMKVKey.ShowFence, isChecked) + if (isChecked) { + mMapDeviceBean?.fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext, fences, mFragment) + } + } else { + mFencesMapViewModel.setFencesData(mContext, null, mFragment) + } + } + } + } else { + mSelectMapTypeDialog!!.mapTypeSpToUpdate() + } + mSelectMapTypeDialog?.show() + } + + /** + * è®¾ç½®åœ°å›¾ç›¸å…³æ•°æ® + */ + private fun setMapData(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + mLiveTime = liveTime / 60 + + mPetBean?.apply { + //查找是å¦è¿žæŽ¥äº†è“牙 + val bleConDevice = SRBleUtil.instance.getConnectMacDevice(macID) + if (null == bleConDevice) { + if (isLiveJump) { + openNetLive() + //没有连接,一进入页é¢å°±å°è¯•连接 + mConDeviceViewModel.connectDeviceToMac(this@LiveActivityV2, macID) + } + } else { + updateConState(bleConDevice) + } + } + + mViewBinding.let { + isLedOpen = ledSwitch == ConstantInt.Open + it.ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked = + isLedOpen + it.ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch.isChecked = + isLedOpen +// it.tvLiveV2Speed.text = String.format( +// getString(R.string.txt_mph_unit), +// Utils.formatDecimal(Util.kmhToMph(speed.toDouble())) +// ) + } + + if (isShowFence) { + fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext, fences, mFragment) + } + } + + mHomeMapCommon.let { + it.setMapDeviceBean(this) + it.refreshPetCurrentLocation(latitude, longitude, isAnimMoveCamera) + it.startRippleCircleAnim() + isAnimMoveCamera = false +// val userAndPetDistance = it.getUserAndPetDistance() +// mViewBinding.tvLiveV2Distance.text = String.format( +// getString(R.string.txt_ft_unit), Utils.formatDecimal(userAndPetDistance) +// ) + } + } + } + + + /** + * 显示选择宠物弹窗 + */ + private fun showPetNameAndHead() { + mPetBean?.apply { + showLoading(true) + mViewBinding.llLiveV2MapTopPet.homeDataPetNameSmall.let { + it.text = petName + it.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0) + } + mViewBinding.llLiveV2MapTopPet.homeDataPetHeadSmall.appHeadImage.let { + ViewUtil.instance.setPetTypeHead(it, imgurl, petType) + ViewUtil.instance.viewAlphaAndRotationObjectAnimator(it) + } + //釿–°è®¾ç½®åœ°å›¾å® ç‰©å¤´åƒ + mHomeMapCommon.setPetHeadIcon(imgurl, petType) + + //获å–首页设备信æ¯çŠ¶æ€ + mMapViewModel.getMapDeviceStatus(deviceId, false) + } + } + + private fun setTrackData(liveDataBean: LiveDataBean) { + //测试ç»çº¬åº¦ç§»åЍ +// mFencesViewModel.setFencesData(mContext!!, isInFence, mFencesList, mFragment) + + mViewBinding.apply { + + liveDataBean.deviceInfo?.apply { + if (liveFlag == ConstantInt.Type0) { + //ç›´æ’­è‡ªåŠ¨ç»“æŸ + if (isStartLive) { + XEventBus.post(EventName.LiveAutoEnd) + finish() + } + return + } else if (liveFlag == ConstantInt.Type1) { + if (!isStartLive) { + liveStartTip() + isStartLive = true + } + } + + val speedStr = Util.metricConvertUnits( + speed, ConstantInt.Type2, 2 + ).toString() + mSpeedUnit + ilLiveV2OperateLayout.tvLiveV2Speed.text = speedStr + + mHomeMapCommon.setMapDeviceBean(this) + val isOpen = ledSwitch == ConstantInt.Open + ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch.isChecked = isOpen + ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch.isChecked = + isOpen + mMapViewModel.setDeviceStateAndWarningData( + mContext, + mPetBean, + this, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + rvLiveV2MapDeviceMsg, + true + ) + + liveDataBean.livePoints?.apply { + if (size > 0) { + mMapLiveViewModel.mGetPetLivePointTimeStamp = + System.currentTimeMillis() / 1000 + //åªæœ‰ä¸€ä¸ªç‚¹çš„æ—¶å€™,ä¸ç”¨ä¼‘眠 + val sleepTime = + if (size - 1 > 0) mMapLiveViewModel.mRefreshTime / (size - 1) * 1000L + else 0 + lifecycleScope.launch { + forEach { + liveDrawLine(it.latitude, it.longitude) + //休眠几秒å†ç”»çº¿ + if (sleepTime > 0) delay(sleepTime) + } + } + } + } + } + } + } + + /** + * 直播开始æç¤º + */ + private fun liveStartTip() { + LogUtil.e("直播开始了") +// mStartLiveIndex = 2 + //直播开始显示Starting 5-min Live +// mCountDownViewModel.startCountDown(2) + } + + /** + * 直播画线 + */ + private fun liveDrawLine(latitude: Double, longitude: Double) { + if (mStartLiveIndex == 0) { + mStartLiveIndex = 2 + //直播开始显示Starting 5-min Live + mCountDownViewModel.startCountDown(1) + } + mHomeMapCommon.addTrackLine(latitude, longitude) + val userAndPetDistance = mHomeMapCommon.getUserAndPetDistance() + val distanceStr = Util.metricConvertUnits( + userAndPetDistance.toFloat(), ConstantInt.Type3, 2 + ).toString() + mDistanceUnit + mViewBinding.ilLiveV2OperateLayout.tvLiveV2Distance.text = distanceStr + } + + /** + * 直播画线 + */ + private fun liveDrawLines(trackList: MutableList) { + if (mStartLiveIndex == 0) { + mStartLiveIndex = 2 + //直播开始显示Starting 5-min Live + mCountDownViewModel.startCountDown(1) + } + mHomeMapCommon.addTrackLines(trackList) + val userAndPetDistance = mHomeMapCommon.getUserAndPetDistance() + val distanceStr = Util.metricConvertUnits( + userAndPetDistance.toFloat(), ConstantInt.Type3, 2 + ).toString() + mDistanceUnit + mViewBinding.ilLiveV2OperateLayout.tvLiveV2Distance.text = distanceStr + } + + /** + * 显示éšè—找è“牙设备布局 + */ + private fun showAndHideFindLayout() { + mViewBinding.apply { + miLiveV2MapAddressView.visibility = View.GONE + val relativeLayout = ivMapLiveV2RefreshBtn.layoutParams as RelativeLayout.LayoutParams + ivMapLiveV2RefreshBtn.visibility = View.GONE + if (ilLiveV2BluetoothFindDevice.root.visibility == View.GONE) { + //找è“牙设备布局显示 + YoYo.with(Techniques.BounceInUp).duration(800).onStart { + ilLiveV2OperateLayout.root.visibility = View.GONE + ilLiveV2BluetoothFindDevice.root.visibility = View.VISIBLE + }.onEnd { + //åˆ·æ–°å®šä½æŒ‰é’®æ˜¾ç¤ºåŠ¨ç”» + ViewUtil.instance.viewShowFadeInAnimation(ivMapLiveV2RefreshBtn) + }.playOn(ilLiveV2BluetoothFindDevice.root) + + ivMapLiveV2BluetoothBtn.visibility = View.GONE + relativeLayout.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM) + relativeLayout.addRule(RelativeLayout.ABOVE, R.id.il_live_v2_bluetooth_find_device) + } else { + //找è“牙设备布局退出 + YoYo.with(Techniques.SlideOutDown).duration(600).onEnd { + ilLiveV2BluetoothFindDevice.root.visibility = View.GONE + ilLiveV2OperateLayout.root.visibility = View.VISIBLE + }.playOn(ilLiveV2BluetoothFindDevice.root) + //ç›´æ’­æ“作按钮布局显示 + YoYo.with(Techniques.BounceInUp).duration(800).delay(400).onEnd { + //è“牙图标按钮显示动画 + ViewUtil.instance.viewShowFadeInAnimation(ivMapLiveV2BluetoothBtn) + //åˆ·æ–°å®šä½æŒ‰é’®æ˜¾ç¤ºåŠ¨ç”» + ViewUtil.instance.viewShowFadeInAnimation(ivMapLiveV2RefreshBtn) + }.playOn(ilLiveV2OperateLayout.root) + + relativeLayout.removeRule(RelativeLayout.ABOVE) + relativeLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM) + } + + root.postDelayed({ + miLiveV2MapAddressView.visibility = View.VISIBLE + mHomeMapCommon.setMarkerInfoViewOffset() + }, 1000) + } + } + + /** + * 显示直播问题 + */ + private fun showLiveIssue() { + mViewBinding.apply { + miLiveV2MapAddressView.visibility = View.GONE + if (ilMapLiveV2IssueLayout.root.visibility == View.GONE) { + YoYo.with(Techniques.BounceInUp).duration(700).onStart { + ilLiveV2OperateLayout.root.visibility = View.GONE + ilMapLiveV2IssueLayout.root.visibility = View.VISIBLE + }.playOn(ilMapLiveV2IssueLayout.root) + } else { + YoYo.with(Techniques.SlideOutDown).duration(600).onEnd { + ilMapLiveV2IssueLayout.root.visibility = View.GONE + YoYo.with(Techniques.BounceInUp).duration(600).onStart { + ilLiveV2OperateLayout.root.visibility = View.VISIBLE + }.playOn(ilLiveV2OperateLayout.root) + }.playOn(ilMapLiveV2IssueLayout.root) + } + + root.postDelayed({ + miLiveV2MapAddressView.visibility = View.VISIBLE + mHomeMapCommon.setMarkerInfoViewOffset() + }, 1000) + } + } + + /** + * 地图加载好了 + */ + private fun mapLoadOk() { + showPetNameAndHead() + } + + /** + * 找è“牙设备 + */ + private fun findBleDevice(mac: String) { + Util.checkBluetoothPermissionsEnabled(mContext, { + showAndHideFindLayout() + mViewBinding.ilLiveV2BluetoothFindDevice.apply { + mFindBleDeviceViewModel.startScanFind( + this@LiveActivityV2, + mac.uppercase(), + liveV2BluetoothSignal, + findBleDeviceRadoView, + ivMapLiveV2BleConState + ) + } + }) + } + + // override fun onBackPressed() { +// stopMapLive() +// } + override fun listenBackPressed() { + if (isLiveJump) stopMapLive() + else super.listenBackPressed() + } + + private fun stopMapLive() { + CommonDialog1( + mContext, + "", + getString(R.string.txt_stop_live_tips), + false, + 5f, + Typeface.BOLD, + R.color.data_black_color, + canceledOnTouchOutside = true, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + mMapDeviceBean?.apply { + mLiveStatus = 0 + stopLive() + } + } + }).show() + } + + /** + * åœæ­¢ç›´æ’­ + */ + private fun stopLive() { + mTrackBleDevice?.apply { + SRBleUtil.instance.writeData( + bleDevice, SRBleCmdUtil.instance.setLiveSwitch(0, 0) + ) + } + mMapLiveViewModel.setupDeviceLiveStatus( + this@LiveActivityV2, mPetBean!!.deviceId, 0 + ) + } + + /** + * è®¾ç½®æ‰¾è®¾å¤‡å£°éŸ³éŸ³é‡ + */ + private fun setSound() { + if (isOpenSound) { + mFindBleDeviceViewModel.setVolume(0) + mViewBinding.ilLiveV2BluetoothFindDevice.ivLiveV2FindDeviceSound.setImageResource(R.drawable.icon_sound_off_svg) + } else { + mFindBleDeviceViewModel.setVolume(mFindBleDeviceViewModel.mMaxVolume) + mViewBinding.ilLiveV2BluetoothFindDevice.ivLiveV2FindDeviceSound.setImageResource(R.drawable.icon_sound_on_svg) + } + isOpenSound = !isOpenSound + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ivMapLiveV2RefreshBtn -> { + mShowCenterLocation = if (mShowCenterLocation == ConstantInt.PetLocationType) { + ConstantInt.UserLocationType + } else { + ConstantInt.PetLocationType + } + ViewUtil.instance.setMapSwitchLocationButtonImage( + ivMapLiveV2RefreshBtn, mShowCenterLocation + ) + mHomeMapCommon.switchShowLocation(mShowCenterLocation) + } + + ivMapLiveV2BluetoothBtn -> mPetBean?.apply { + findBleDevice(macID) + } + + ilLiveV2BluetoothFindDevice.btnLiveV2StopRadar -> { + if (isLiveJump) { + showAndHideFindLayout() + mFindBleDeviceViewModel.stopFindDevice() + } else { + finish() + } + } + + llLiveV2MapTopPet.ivTopPetBtnSmall -> showMapTypeDialog() + ilLiveV2OperateLayout.llLiveV2StopLive -> stopMapLive() + ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.root, ilLiveV2OperateLayout.ilLiveV2DataLightSwitch.cbDeviceLightSwitch, ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.cbDeviceLightSwitch, ilLiveV2BluetoothFindDevice.ilLiveV2RadarLightSwitch.root -> setLedSwitch() + + ilLiveV2OperateLayout.btnLiveV2Issue -> showLiveIssue() + ilMapLiveV2IssueLayout.tvCloseIssueBtn -> showLiveIssue() + ilLiveV2BluetoothFindDevice.ivLiveV2FindDeviceSound -> setSound() + } + } + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.lavLiveV2StateAnim.cancelAnimation() +// stopLive() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgeDetailActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgeDetailActivity.kt new file mode 100644 index 0000000..5e03d8d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgeDetailActivity.kt @@ -0,0 +1,58 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityBadgeDetailBinding +import com.abbidot.tracker.util.Util + +class BadgeDetailActivity : + BaseActivity(ActivityBadgeDetailBinding::inflate) { + + private var mDataBean: DataBean? = null + + override fun getTopBar() = mViewBinding.petBadgesDetailTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.pet_manage_detail_title2) + + intent.extras?.apply { + mDataBean = + Util.getParcelableAdaptive(intent, ConstantString.PetLabels, DataBean::class.java) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + mDataBean?.let { + setTopBarTitle(it.name) + tvPetBadgesDetailDec.text = it.unit + ivPetBadgesDetailImage.setImageResource(it.imageId) + + if (it.state == ConstantInt.Open) { + ivPetBadgesDetailImage.setBackgroundResource(R.drawable.icon_badges_unlock_bg_svg) + tvPetBadgesDetailState.setText(R.string.txt_congratulations) + tvPetBadgesDetailUnlockTime.text = it.value + tvPetBadgesDetailUnlockTime.visibility = View.VISIBLE + } else { + ivPetBadgesDetailImage.setBackgroundResource(0) + tvPetBadgesDetailState.setText(R.string.txt_how_to_get) + tvPetBadgesDetailUnlockTime.visibility = View.INVISIBLE + } + } + + setOnClickListenerViews(btnPetBadgesDetailOk) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPetBadgesDetailOk -> finish() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgesListActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgesListActivity.kt new file mode 100644 index 0000000..3aee50a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/BadgesListActivity.kt @@ -0,0 +1,66 @@ +package com.abbidot.tracker.ui.activity.pet + +import androidx.activity.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.PetsParentBadgesAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.ParentBadgeBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityBadgesListBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.PetInfoViewModel + +class BadgesListActivity : + BaseActivity(ActivityBadgesListBinding::inflate) { + + private val mPetViewModel: PetInfoViewModel by viewModels() + + private lateinit var mParentBadgesAdapter: PetsParentBadgesAdapter + + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.petBadgesListTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_badges) + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + val parentBadges = mutableListOf() + ParentBadgeBean().apply { + parentName = getString(R.string.txt_adventure) + + val badges = if (null==mPetBean) mPetViewModel.getBadges(mContext, "") + else mPetViewModel.getBadges(mContext, mPetBean!!.createDate) +// for (i in 0 until 23) badges.add(DataBean()) + badgeList = badges + parentBadges.add(this) + } +// ParentBadgeBean().apply { +// parentName = getString(R.string.txt_social) +// val badges = mutableListOf() +// for (i in 0 until 3) badges.add(DataBean()) +// badgeList = badges +// parentBadges.add(this) +// } +// ParentBadgeBean().apply { +// parentName = getString(R.string.txt_sporty) +// val badges = mutableListOf() +// for (i in 0 until 3) badges.add(DataBean()) +// badgeList = badges +// parentBadges.add(this) +// } + mParentBadgesAdapter = PetsParentBadgesAdapter(mContext, parentBadges) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvPetParentBadgesList, mParentBadgesAdapter + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/FamilyMembersActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/FamilyMembersActivity.kt new file mode 100644 index 0000000..454f43b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/FamilyMembersActivity.kt @@ -0,0 +1,135 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.FamilyMembersAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityFamilyMembersBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FamilyViewModel + +/** + * 家人æˆå‘˜ + */ +class FamilyMembersActivity : + BaseActivity(ActivityFamilyMembersBinding::inflate) { + + private val mFamilyViewModel: FamilyViewModel by viewModels() + + private lateinit var mFamilyMembersAdapter: FamilyMembersAdapter + + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.familyMembersTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_members) + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mFamilyMembersAdapter = FamilyMembersAdapter(mContext, null) + + mViewBinding.apply { + + mPetBean?.let { + ViewUtil.instance.setPetTypeHead( + ilFamilyMembersPetHead.appHeadImage, it.imgurl, it.petType + ) + mFamilyViewModel.getFamilies(this@FamilyMembersActivity, it.deviceId) + } + + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvFamilyMembers, mFamilyMembersAdapter, bottom = AppUtils.dpToPx(12) + ) + setOnClickListenerViews(btnFamilyMembersAddInvite) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshFamily) { + mPetBean?.apply { + mFamilyViewModel.getFamilies(this@FamilyMembersActivity, deviceId) + } + } + + mFamilyViewModel.apply { + mFamilyListLiveData.observe(this@FamilyMembersActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mFamilyMembersAdapter.setData(null) + it.getOrNull()?.let { familyPet -> + familyPet.families?.let { list -> + mFamilyMembersAdapter.setData(list, true) + } + } + } + }) + } + + mFamilyRemoveLiveData.observe(this@FamilyMembersActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.DeleteFamily) + showToast(R.string.txt_delete_success) + mPetBean?.apply { + mFamilyViewModel.getFamilies(this@FamilyMembersActivity, deviceId) + } + } + }) + } + + mInviteLiveData.observe(this@FamilyMembersActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.tracker_manage_set_add_family_succ) + } + }) + } + } + } + + fun deleteFamily(familyBean: FamilyBean) { + val str = String.format( + mContext.getString(R.string.txt_family_delete), familyBean.acceptEmail + ) + ViewUtil.instance.showDialog(mContext, str, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mFamilyViewModel.removeFamily(this@FamilyMembersActivity, familyBean.familyId) + } + }, okTextResId = R.string.start_txt_yes) + } + + fun resendFamily(familyBean: FamilyBean) { + mFamilyViewModel.invite(this, familyBean) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnFamilyMembersAddInvite -> { + mPetBean?.let { pet -> + Intent(mContext, InviteFamilyActivity::class.java).let { + it.putExtra(ConstantString.Pet, pet) + startActivity(it) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/InviteFamilyActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/InviteFamilyActivity.kt new file mode 100644 index 0000000..5ba8876 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/InviteFamilyActivity.kt @@ -0,0 +1,184 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.text.InputType +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +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.adapter.FamilyAvatarAdapter +import com.abbidot.tracker.adapter.FamilyRelationAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityInviteFamilyBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.FamilyViewModel + +/** + * 邀请家人 + */ +class InviteFamilyActivity : + BaseActivity(ActivityInviteFamilyBinding::inflate) { + + private val mFamilyViewModel: FamilyViewModel by viewModels() + + private lateinit var mRelationAdapter: FamilyRelationAdapter + private lateinit var mAvatarAdapter: FamilyAvatarAdapter + private lateinit var mFamilyBean: FamilyBean + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.inviteFamilyTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.tracker_manage_set_add_family_invite) + + mFamilyBean = FamilyBean().apply { + userId = MMKVUtil.getString(MMKVKey.UserId) + userName = MMKVUtil.getString(MMKVKey.UserName) + sendEmail = MMKVUtil.getString(MMKVKey.Email) + } + + intent.extras?.apply { + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mPetBean?.apply { + mFamilyBean.let { + it.deviceId = deviceId + it.petId = petId + it.petName = petName + } + } + + mViewBinding.apply { + ilInviteFamilyEmail.let { + it.tvInputNameTitle.text = getString(R.string.txt_email_address) + it.etInputContent.setHint(R.string.txt_email_address) + it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + ViewUtil.instance.setInputViewErrorHideClick( + mContext, it.rlEtInputLayout, tvEmailErrorTipInviteFamily, it.etInputContent + ) + } + + setData() + + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, rvInviteFamilyRelation, mRelationAdapter, right = AppUtils.dpToPx(12) + ) + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, rvInviteFamilyAvatar, mAvatarAdapter, right = AppUtils.dpToPx(16) + ) + + setViewClickHideInputMethod(vInviteFamilyAnimate) + setViewClickHideInputMethod(llInviteFamilyLayout) + setViewClickHideInputMethod(rvInviteFamilyAvatar) + setOnClickListenerViews(btnInviteFamilyInvite) + } + + setListenKeyboardChange(210) + } + + override fun liveDataObserve() { + mFamilyViewModel.mInviteLiveData.observe(this) { + mViewBinding.btnInviteFamilyInvite.isEnabled = true + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshFamily) + showToast(R.string.tracker_manage_set_add_family_succ, true) + } + }) + } + } + + private fun setData() { + val relationList = mutableListOf() + DataBean().apply { + name = getString(R.string.tracker_manage_set_family) + selected = true + relationList.add(this) + } + DataBean().apply { + name = getString(R.string.txt_friend) + relationList.add(this) + } + DataBean().apply { + name = getString(R.string.txt_love) + relationList.add(this) + } + DataBean().apply { + name = getString(R.string.txt_colleague) + relationList.add(this) + } + mRelationAdapter = FamilyRelationAdapter(mContext, relationList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mRelationAdapter, relationList, pos + ) + mFamilyBean.relation = pos + 1 + } + }) + } + + val avatarList = mutableListOf() + DataBean().apply { + imageId = R.drawable.icon_family_boy_avatar + selected = true + avatarList.add(this) + } + DataBean().apply { + imageId = R.drawable.icon_family_girl_avatar + avatarList.add(this) + } + mAvatarAdapter = FamilyAvatarAdapter(mContext, avatarList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + hideInputMethod(mViewBinding.root) + ViewUtil.instance.updateDataBeanOnlySelectedItem( + mAvatarAdapter, avatarList, pos + ) + mFamilyBean.avatar = pos + 1 + } + }) + } + } + + private fun inviteOk() { + mViewBinding.apply { + val email = ilInviteFamilyEmail.etInputContent.text.toString() + if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { + ViewUtil.instance.setInputViewErrorShow( + mContext, ilInviteFamilyEmail.rlEtInputLayout, tvEmailErrorTipInviteFamily + ) + return + } + mFamilyBean.acceptEmail = email + btnInviteFamilyInvite.isEnabled = false + mFamilyViewModel.invite(this@InviteFamilyActivity, mFamilyBean) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnInviteFamilyInvite -> inviteOk() + } + } + } + + override fun onDestroy() { + super.onDestroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetHeightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetHeightActivity.kt new file mode 100644 index 0000000..b59f228 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetHeightActivity.kt @@ -0,0 +1,176 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.content.Intent +import android.os.Build +import android.view.View +import android.widget.NumberPicker +import android.widget.NumberPicker.OnValueChangeListener +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityPetHeightBinding +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class PetHeightActivity : BaseActivity(ActivityPetHeightBinding::inflate), + OnValueChangeListener { + + private var mPetBean: PetBean? = null + private var isFirstBind = false + + override fun getTopBar() = mViewBinding.ilPetHeightTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.acccount_height) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + var maxTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.HeightType, ConstantInt.MaxType + ) + var minTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.HeightType, ConstantInt.MinType + ) + var defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + ConstantInt.DogPetType, ConstantInt.HeightType + ) + var defaultValue2 = 0 + mPetBean?.apply { + if (petType == ConstantInt.CatPetType) mViewBinding.ivSetHeightPetType.setImageResource( + R.drawable.icon_cat_height_tip_svg + ) + defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + petType, ConstantInt.HeightType + ) + minTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.HeightType, ConstantInt.MinType + ) + maxTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.HeightType, ConstantInt.MaxType + ) + if (height > 0) { + var convertHeight = Util.metricConvertUnits(height, ConstantInt.Type0) + if (convertHeight < minTensValue) { + convertHeight = minTensValue.toFloat() + } + val values = convertHeight.toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + } + + mViewBinding.apply { + if (isFirstBind) btnPetHeightSave.setText(R.string.register_txt_next) + root.setBackgroundResource(R.color.white) + tvShowHeightUnit.text = Util.getMetricUnits(mContext, ConstantInt.Type0) + npDialogPetHeightTens.let { +// ReflectHelper.of(it).setField("SELECTOR_WHEEL_ITEM_COUNT", 2) +// // 获å–Class实例 +// val clazz = it.javaClass +// // 获å–Field实例 +// val field = clazz.getDeclaredField("SELECTOR_WHEEL_ITEM_COUNT") +// // æå‡è®¿é—®æƒé™ +// field.isAccessible = true +// // 修改字段值 +// field.set(it, 2) + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + minTensValue, + maxTensValue, + defaultValue1, + 20, + NumberPickerValueFill0Format(), + this@PetHeightActivity + ) + } + + val valueList = mutableListOf() + for (i in 0..9) { + valueList.add("$i") + } + npDialogPetHeightUnit.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + 0, + 9, + defaultValue2, + 20, + valueChangeListener = this@PetHeightActivity + ) + it.displayedValues = valueList.toTypedArray() + } + npDialogHeightUnitSwitch.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, it, 0, 1, 0, 20 + ) + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + it.selectionDividerHeight = 0 + } + val unitArray = arrayOf(getString(R.string.txt_in), getString(R.string.txt_cm)) + it.displayedValues = unitArray + } + + setOnClickListenerViews(btnPetHeightSave) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + } + + private fun saveHeight() { + val value = + "${mViewBinding.npDialogPetHeightTens.value}.${mViewBinding.npDialogPetHeightUnit.value}" + if (isFirstBind) { + mPetBean?.apply { + height = Util.convertMetricUnits(value.toFloat(), ConstantInt.Type0) + val intent = Intent(mContext, PetWeightActivity::class.java) + intent.putExtra(ConstantString.Pet, this) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } else { +// val petHeight = Util.convertMetricUnits(mContext, value.toFloat(), ConstantInt.Type0) + val intent = Intent() + intent.putExtra(ConstantString.PetHeight, value.toFloat()) + setResult(ResultCode.ResultCode_2, intent) + finish() + } + } + + override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) { + mViewBinding.apply { + when (picker) { + npDialogPetHeightTens -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npDialogPetHeightUnit, btnPetHeightSave + ) + + npDialogPetHeightUnit -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npDialogPetHeightTens, btnPetHeightSave + ) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnPetHeightSave -> saveHeight() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt new file mode 100644 index 0000000..6cfcbf8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt @@ -0,0 +1,600 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import coil.load +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.PetLabelsAdapter +import com.abbidot.tracker.adapter.TextViewAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.LabelBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityPetProfileBinding +import com.abbidot.tracker.dialog.CommonListDialog +import com.abbidot.tracker.dialog.SelectPetLabelDialog +import com.abbidot.tracker.dialog.SetPetWeightDialog +import com.abbidot.tracker.dialog.ShowCalenderDialog +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.PetInfoViewModel +import com.abbidot.tracker.vm.TakePhotoAndCompressViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.haibin.calendarview.Calendar +import com.huantansheng.easyphotos.EasyPhotos +import com.huantansheng.easyphotos.models.album.entity.Photo + +/** + * 宠物Profile + */ +class PetProfileActivity : + BaseActivity(ActivityPetProfileBinding::inflate), + BaseDialog.OnDialogOkListener { + + private val mPetViewModel: PetInfoViewModel by viewModels() + private val mTakePhotoAndCompressViewModel: TakePhotoAndCompressViewModel by viewModels() + private val mUserInfoViewModel: UserProfileViewModel by viewModels() + + private var mProfileTypeDialog: CommonListDialog? = null + private lateinit var mTypeAdapter: TextViewAdapter + private var mBirthdayDialog: ShowCalenderDialog? = null + private var mProfileSexDialog: CommonListDialog? = null + private lateinit var mSexAdapter: TextViewAdapter + private var mSetWeightDialog: SetPetWeightDialog? = null + + private var mSelectLabelDialog: SelectPetLabelDialog? = null + private lateinit var mLabelsAdapter: PetLabelsAdapter + private lateinit var mSelectLabelList: MutableList + private lateinit var mSelectLabelsAdapter: PetLabelsAdapter + + private var mPetBean: PetBean? = null + private lateinit var mOldPetBean: PetBean + + //选å–å¤´åƒæœ¬åœ°è·¯å¾„ + private var mSelectPetHeadPath = "" + + //是å¦ç¼–辑 + private var isEdit = false + + override fun getTopBar() = mViewBinding.petProfileTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_pet_profile) + + intent?.extras?.apply { + isEdit = getBoolean(ConstantString.Edit, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + if (null == mPetBean) mPetBean = PetBean() + + mOldPetBean = mPetBean!!.copy() + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + ilPetProfileType.let { + it.tvInputNameTitle.text = getString(R.string.txt_type) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + } + ilPetProfileBreed.let { + it.tvInputNameTitle.text = getString(R.string.acccount_breed) + } + ilPetProfileBirthday.let { + it.tvInputNameTitle.text = getString(R.string.acccount_birthday) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.ivInputRepresentImage.setImageResource(R.drawable.icon_profile_birthday_edit_svg) + } + ilPetProfileSex.let { + it.tvInputNameTitle.text = getString(R.string.txt_sex) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + } + ilPetProfileWeight.let { + it.tvInputNameTitle.text = getString(R.string.acccount_weight) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.tvInputUnitDescribe.visibility = View.VISIBLE + it.tvInputUnitDescribe.text = Util.getMetricUnits(mContext, ConstantInt.Type1) + } + ilPetProfileHeight.let { + it.tvInputNameTitle.text = getString(R.string.acccount_height) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.tvInputUnitDescribe.visibility = View.VISIBLE + it.tvInputUnitDescribe.text = Util.getMetricUnits(mContext, ConstantInt.Type0) + } + + setListData() + mSelectLabelList = mutableListOf() + mSelectLabelsAdapter = PetLabelsAdapter(mContext, mSelectLabelList) + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, + rvPetProfileLabel, + mSelectLabelsAdapter, + right = AppUtils.dpToPx(6), + bottom = AppUtils.dpToPx(8) + ) + + setOnClickListenerViews( + ilPetProfileType.root, + ilPetProfileType.ivInputRepresentImage, + ilPetProfileBirthday.root, + ilPetProfileBirthday.ivInputRepresentImage, + ilPetProfileSex.root, + ilPetProfileSex.ivInputRepresentImage, + ilPetProfileWeight.root, + ilPetProfileWeight.ivInputRepresentImage, + ilPetProfileHeight.root, + ilPetProfileHeight.ivInputRepresentImage, + rlPetProfileLabels, + ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage, + btnPetProfileSave + ) + + setViewClickHideInputMethod(llPetProfileHeadLayout) + setViewClickHideInputMethod(ilPetProfileHeadLayout.root) + } + + mTakePhotoAndCompressViewModel.registerCropImageActivityResult(this) + + setPetData() + mPetViewModel.getPetLabels(this) + + setListenKeyboardChange() + } + + override fun liveDataObserve() { + mPetViewModel.apply { + mPetLabelsLiveData.observe(this@PetProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { labels -> + val labelList = mutableListOf() + for (i in 0 until labels.size) { + LabelBean().run { + name = labels[i] + if (mSelectLabelList.size > 0) { + for (label in mSelectLabelList) { + if (name == label.name) check = true + } + } + labelList.add(this) + } + } + mLabelsAdapter.setData(labelList, true) + } + } + }) + } + + mAddPetLiveData.observe(this@PetProfileActivity) { + setButtonEnabled(mViewBinding.btnPetProfileSave, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshPet) + showToast(R.string.txt_add_successful, isFinish = true) + } + }) + } + + mUpdatePetInfoLiveData.observe(this@PetProfileActivity) { + setButtonEnabled(mViewBinding.btnPetProfileSave, ConstantInt.Type1) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshPet) + showToast(R.string.txt_change_successful, isFinish = true) + } + }) + } + } + + mTakePhotoAndCompressViewModel.mPhotoPathLiveData.observe(this) { + if (it.size > 0) { + mSelectPetHeadPath = it[0].path + mViewBinding.ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage.load(it[0]) + } + } + + mUserInfoViewModel.mUploadImageLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { +// showToast(R.string.txt_upload_successful) + mPetBean?.imgurl = this + addAndUpdatePetProfile() + } + } + }) + } + } + + override fun leftBackOnClick() { + var name = mViewBinding.ilPetProfileNameLayout.etInputContent.text.toString() + val breed = mViewBinding.ilPetProfileBreed.etInputContent.text.toString() + name = name.trimStart() + name = name.trimEnd() + mPetBean?.let { + it.petName = name + it.breed = breed + + if (mOldPetBean.hasSameContent(it)) super.leftBackOnClick() + else ViewUtil.instance.showDialog( + mContext, + R.string.txt_weather_save, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + savePetProfile() + } + }, + okTextResId = R.string.txt_sure, + cancelListener = object : BaseDialog.OnDialogCancelListener { + override fun onCancelClick(dialog: BaseDialog<*>) { + dialog.dismiss() + finish() + } + }) + } + } + + private fun setPetData() { + mViewBinding.apply { + mPetBean?.let { + ViewUtil.instance.setPetTypeHead( + ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage, it.imgurl, it.petType + ) + + if (isEdit) { + ilPetProfileNameLayout.etInputContent.setText(it.petName) + ilPetProfileType.etInputContent.setText( + mPetViewModel.getTypeName( + mContext, it.petType + ) + ) + ilPetProfileBreed.etInputContent.setText(it.breed) + ilPetProfileSex.etInputContent.setText( + mPetViewModel.getSexName( + mContext, it.gender + ) + ) + ilPetProfileBirthday.etInputContent.setText( + Utils.stringToDate( + it.birthdayDate, + Utils.DATE_FORMAT_PATTERN_CN, + Utils.DATE_FORMAT_PATTERN_EN3 + ) + ) + ilPetProfileWeight.etInputContent.setText( + Util.metricConvertUnits( + it.weight, ConstantInt.Type1 + ).toString() + ) + ilPetProfileHeight.etInputContent.setText( + Util.metricConvertUnits( + it.height, ConstantInt.Type0 + ).toString() + ) + mSelectLabelList = mPetViewModel.getLabelData(it.labels) + mSelectLabelsAdapter.setData(mSelectLabelList, true) + } + } + } + } + + + private fun setListData() { + val typeList = mutableListOf() + DataBean().run { + name = getString(R.string.txt_dog) + menuType = ConstantInt.DogPetType + typeList.add(this) + } + DataBean().run { + name = getString(R.string.txt_cat) + menuType = ConstantInt.CatPetType + typeList.add(this) + } + DataBean().run { + name = getString(R.string.txt_other) + menuType = ConstantInt.OtherPetType + typeList.add(this) + } + mTypeAdapter = TextViewAdapter(mContext, typeList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val dataBean = typeList[pos] + mPetBean?.apply { + petType = dataBean.menuType + if (TextUtils.isEmpty(mSelectPetHeadPath) && TextUtils.isEmpty(imgurl)) ViewUtil.instance.setPetTypeHead( + mViewBinding.ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage, + imgurl, + petType + ) + mSetWeightDialog?.updatePetData(this) + } + mViewBinding.ilPetProfileType.etInputContent.setText(dataBean.name) + mProfileTypeDialog?.dismiss() + } + }) + } + + val sexList = mutableListOf() + DataBean().run { + name = getString(R.string.pet_manage_gender_male) + menuType = ConstantInt.Man + sexList.add(this) + } + DataBean().run { + name = getString(R.string.pet_manage_gender_female) + menuType = ConstantInt.WoMan + sexList.add(this) + } + mSexAdapter = TextViewAdapter(mContext, sexList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val dataBean = sexList[pos] + mPetBean?.apply { + gender = dataBean.menuType + } + mViewBinding.ilPetProfileSex.etInputContent.setText(dataBean.name) + mProfileSexDialog?.dismiss() + } + }) + } + + mLabelsAdapter = PetLabelsAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + if (mLabelsAdapter.getData().isNotEmpty()) { + val label = mLabelsAdapter.getData()[pos] + label.check = !label.check + notifyItemChanged(pos) + } + } + }) + } + } + + /** + * 显示已选的标签 + */ + private fun showSelectPetLabels() { + val labelList = mLabelsAdapter.getData() + mSelectLabelList.clear() + mSelectLabelsAdapter.notifyItemRangeChanged(0, mSelectLabelList.size) + for (lab in labelList) { + if (lab.check) { + LabelBean().apply { + name = lab.name + mSelectLabelList.add(this) + } + } + } + mSelectLabelsAdapter.setData(mSelectLabelList, true) + + val textColor = if (mSelectLabelList.size > 0) ContextCompat.getColor( + mContext, R.color.data_black_color + ) + else ContextCompat.getColor(mContext, R.color.block_color2) + mViewBinding.tvPetProfileLabelTitle.setTextColor(textColor) + + mViewBinding.svPetProfile.fullScroll(View.FOCUS_DOWN) + + mPetBean?.apply { + labels = if (mSelectLabelList.size > 0) mSelectLabelList.joinToString(",") { it.name } + else "" + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (RESULT_OK == resultCode) { + //相机或相册回调 + if (requestCode == ResultCode.ResultCode_1 && null != data) { + //返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + val resultPhotos: ArrayList = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS)!! + //返回图片地å€é›†åˆæ—¶å¦‚果你需è¦çŸ¥é“用户选择图片时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ï¼Œç”¨å¦‚ä¸‹æ–¹æ³•èŽ·å– +// data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false) + mTakePhotoAndCompressViewModel.goCropAndCompressImage(resultPhotos) + } + } + } + + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + if (null != it.data) { + if (it.resultCode == ResultCode.ResultCode_2) { + //接收身高设置页é¢çš„值 + it.data?.extras?.getFloat(ConstantString.PetHeight)?.apply { + mViewBinding.ilPetProfileHeight.etInputContent.setText("$this") + mPetBean?.height = Util.convertMetricUnits(this, ConstantInt.Type0) + } + } else if (it.resultCode == ResultCode.ResultCode_3) { + //接收体é‡è®¾ç½®é¡µé¢çš„值 + it.data?.extras?.getFloat(ConstantString.PetWeight)?.apply { + mViewBinding.ilPetProfileWeight.etInputContent.setText("$this") + mPetBean?.weight = Util.convertMetricUnits(this, ConstantInt.Type1) + } + } + } + } + + /** + * 显示宠物类型弹窗 + */ + private fun showPetTypeDialog() { + if (null == mProfileTypeDialog) { + mProfileTypeDialog = CommonListDialog(mContext, mTypeAdapter, 3, 3) + } + mProfileTypeDialog?.show() + } + + /** + * 显示生日弹窗 + */ + private fun showBirthdayDialog() { + if (null == mBirthdayDialog) { + val calendar = java.util.Calendar.getInstance() + val cYear = calendar.get(java.util.Calendar.YEAR) + var cShowTimestamp = 0L + mPetBean?.apply { + cShowTimestamp = Utils.stringToTimestamp(birthdayDate, Utils.DATE_FORMAT_PATTERN_CN) + } + mBirthdayDialog = ShowCalenderDialog( + mContext, object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is Calendar) { + val selectBirthday = Utils.formatTime( + any.timeInMillis, Utils.DATE_FORMAT_PATTERN_EN3 + ) + mViewBinding.ilPetProfileBirthday.etInputContent.setText( + selectBirthday + ) + mPetBean?.apply { + birthdayDate = Utils.formatTime( + any.timeInMillis, Utils.DATE_FORMAT_PATTERN_CN + ) + } + } + } + }, minYear = cYear - 20, calenderShowTimestamp = cShowTimestamp + ) + } + mBirthdayDialog?.show() + } + + /** + * 显示性别弹窗 + */ + private fun showSexDialog() { + if (null == mProfileSexDialog) { + mProfileSexDialog = CommonListDialog(mContext, mSexAdapter, 3, 3) + } + mProfileSexDialog?.show() + } + + /** + * 显示体é‡å¼¹çª— + */ + private fun showWeightDialog() { + mPetBean?.apply { + if (null == mSetWeightDialog) { + mSetWeightDialog = + SetPetWeightDialog(mContext, this, object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is String) { + mViewBinding.ilPetProfileWeight.etInputContent.setText(any) + weight = Util.convertMetricUnits( + any.toFloat(), ConstantInt.Type1 + ) + } + } + }) + } + mSetWeightDialog?.show() + } + } + + /** + * 显示标签弹窗 + */ + private fun showLabelDialog() { + if (null == mSelectLabelDialog) { + mSelectLabelDialog = SelectPetLabelDialog(mContext, mLabelsAdapter).apply { + setOkListener(this@PetProfileActivity) + } + } + mSelectLabelDialog?.show() + } + + private fun addAndUpdatePetProfile() { + mPetBean?.apply { + if (isEdit) { + mPetViewModel.updatePetInfo(this@PetProfileActivity, this) + } else { + mPetViewModel.addPet(this@PetProfileActivity, this) + } + } + } + + private fun savePetProfile() { + mViewBinding.apply { + var name = ilPetProfileNameLayout.etInputContent.text.toString() + val type = ilPetProfileType.etInputContent.text.toString() + val breed = ilPetProfileBreed.etInputContent.text.toString() + val birthday = ilPetProfileBirthday.etInputContent.text.toString() + val sex = ilPetProfileSex.etInputContent.text.toString() + val weight = ilPetProfileWeight.etInputContent.text.toString() + val height = ilPetProfileHeight.etInputContent.text.toString() + if (TextUtils.isEmpty(name) || TextUtils.isEmpty(type) || TextUtils.isEmpty( + birthday + ) || TextUtils.isEmpty(sex) || TextUtils.isEmpty(weight) || TextUtils.isEmpty(height) + ) { + showToast(R.string.txt_not_null) + return@apply + } + name = name.trimStart() + name = name.trimEnd() + mPetBean?.let { + it.petName = name + it.breed = breed + } + setButtonEnabled(btnPetProfileSave, ConstantInt.Type0) + if (TextUtils.isEmpty(mSelectPetHeadPath)) { + addAndUpdatePetProfile() + } else { + mUserInfoViewModel.uploadImage(this@PetProfileActivity, mSelectPetHeadPath) + } + } + } + + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + showSelectPetLabels() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage -> ViewUtil.instance.goSelectPhoto( + this@PetProfileActivity, ResultCode.ResultCode_1 + ) + + ilPetProfileType.root, ilPetProfileType.ivInputRepresentImage -> showPetTypeDialog() + ilPetProfileBirthday.root, ilPetProfileBirthday.ivInputRepresentImage -> showBirthdayDialog() + ilPetProfileSex.root, ilPetProfileSex.ivInputRepresentImage -> showSexDialog() + ilPetProfileWeight.root, ilPetProfileWeight.ivInputRepresentImage -> { + val intent = Intent(mContext, PetWeightActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + launchActivity(mActivityResultLauncher, intent) + } + + ilPetProfileHeight.root, ilPetProfileHeight.ivInputRepresentImage -> { + val intent = Intent(mContext, PetHeightActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + launchActivity(mActivityResultLauncher, intent) + } + + rlPetProfileLabels -> showLabelDialog() + btnPetProfileSave -> savePetProfile() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetWeightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetWeightActivity.kt new file mode 100644 index 0000000..a9de691 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetWeightActivity.kt @@ -0,0 +1,158 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.content.Intent +import android.view.View +import android.widget.NumberPicker +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityPetWeightBinding +import com.abbidot.tracker.ui.activity.pet.first.FirstPetProfileActivity +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class PetWeightActivity : BaseActivity(ActivityPetWeightBinding::inflate), + NumberPicker.OnValueChangeListener { + + private var mPetBean: PetBean? = null + private var isFirstBind = false + + override fun getTopBar() = mViewBinding.ilPetWeightTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.acccount_weight) + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + var maxTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.WeightType, ConstantInt.MaxType + ) + var minTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.WeightType, ConstantInt.MinType + ) + var defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + ConstantInt.DogPetType, ConstantInt.WeightType + ) + var defaultValue2 = 0 + mPetBean?.apply { + if (petType == ConstantInt.CatPetType) mViewBinding.ivSetPetWeightImage.setImageResource( + R.drawable.icon_cat_image_svg + ) + defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + petType, ConstantInt.WeightType + ) + minTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.WeightType, ConstantInt.MinType + ) + maxTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.WeightType, ConstantInt.MaxType + ) + if (weight > 0) { + var convertHeight = Util.metricConvertUnits(weight, ConstantInt.Type1) + if (convertHeight > maxTensValue) { + convertHeight = maxTensValue.toFloat() + 0.9f + } else if (convertHeight < minTensValue) { + convertHeight = minTensValue.toFloat() + } + val values = convertHeight.toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + } + + mViewBinding.apply { + if (isFirstBind) btnSetPetWeightSave.setText(R.string.register_txt_next) + root.setBackgroundResource(R.color.white) + + tvSetPetWeightUnit.text = Util.getMetricUnits(mContext, ConstantInt.Type1) + + npSetPetWeightTens.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + minTensValue, + maxTensValue, + defaultValue1, + 20, + NumberPickerValueFill0Format(), + this@PetWeightActivity + ) + } + + val valueList = mutableListOf() + for (i in 0..9) { + valueList.add("$i") + } + npSetPetWeightUnit.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + 0, + 9, + defaultValue2, + 20, + valueChangeListener = this@PetWeightActivity + ) + it.displayedValues = valueList.toTypedArray() + } + setOnClickListenerViews(btnSetPetWeightSave) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + } + + private fun saveWeight() { + val value = + "${mViewBinding.npSetPetWeightTens.value}.${mViewBinding.npSetPetWeightUnit.value}" + if (isFirstBind) { + mPetBean?.apply { + weight = Util.convertMetricUnits(value.toFloat(), ConstantInt.Type1) + val intent = Intent(mContext, FirstPetProfileActivity::class.java) + intent.putExtra(ConstantString.Pet, this) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } else { +// val petWeight = Util.convertMetricUnits(mContext, value.toFloat(), ConstantInt.Type1) + val intent = Intent() + intent.putExtra(ConstantString.PetWeight, value.toFloat()) + setResult(ResultCode.ResultCode_3, intent) + finish() + } + } + + override fun onValueChange(picker: NumberPicker?, oldVal: Int, newVal: Int) { + mViewBinding.apply { + when (picker) { + npSetPetWeightTens -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npSetPetWeightUnit, btnSetPetWeightSave + ) + + npSetPetWeightUnit -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npSetPetWeightTens, btnSetPetWeightSave + ) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSetPetWeightSave -> saveWeight() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/ShowInviteDeviceActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/ShowInviteDeviceActivity.kt new file mode 100644 index 0000000..9ad447a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/ShowInviteDeviceActivity.kt @@ -0,0 +1,83 @@ +package com.abbidot.tracker.ui.activity.pet + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityShowInviteDeviceBinding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.FamilyViewModel + +class ShowInviteDeviceActivity : + BaseActivity(ActivityShowInviteDeviceBinding::inflate) { + + private val mFamilyViewModel: FamilyViewModel by viewModels() + + override fun getTopBar() = mViewBinding.ilShowInviteDeviceTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + setOnClickListenerViews(btnShowInviteDeviceOk) + } + + val inviteArray = Util.getParcelableArrayListAdaptive( + intent, ConstantString.Type, FamilyBean::class.java + ) + if (inviteArray.isNullOrEmpty()) { + mFamilyViewModel.getDeviceInviteInfo(this) + } else { + showInviteDialog(inviteArray) + } + } + + override fun liveDataObserve() { + //获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + mFamilyViewModel.mInviteInfoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + MMKVUtil.putInt(MMKVKey.isExistNewInvite, 0) + it.getOrNull()?.apply { + if (inviteArray.isNotEmpty()) showInviteDialog(inviteArray) + } + } + }) + } + } + + private fun showInviteDialog(inviteArray: MutableList) { + MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.Type1) + MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.Type1) + for (item in inviteArray) { + val content = String.format( + getString(R.string.txt_invites_you_check), item.userName, item.petName + ) + mViewBinding.tvShowInviteDeviceName.text = content + break + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnShowInviteDeviceOk -> startActivityFinish( + Intent( + mContext, HomeV2Activity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt new file mode 100644 index 0000000..93754ba --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstMeasurementUnitsActivity.kt @@ -0,0 +1,160 @@ +package com.abbidot.tracker.ui.activity.pet.first + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityFirstMeasurementUnitsBinding +import com.abbidot.tracker.ui.activity.pet.PetHeightActivity +import com.abbidot.tracker.ui.common.UnitSelectDialog +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + +/** + * 默认英制 + * Imperial: in\lbs\mph\ft + * Metric: cm\kg\km/h\m,km + * + * 英制范围: +身高数æ®èŒƒå›´ï¼š1.0~99.9 inï¼› +体釿•°æ®èŒƒå›´ï¼š1.0~349.9 lbs。 + +公制范围: +身高数æ®èŒƒå›´ï¼š1.0~199.9 cmï¼› +体釿•°æ®èŒƒå›´ï¼š1.0~159.9 kg。 + */ +class FirstMeasurementUnitsActivity : + BaseActivity(ActivityFirstMeasurementUnitsBinding::inflate) { + + private val mUserProfileViewModel: UserProfileViewModel by viewModels() + + private var isFirstBind = false + private var mPetBean: PetBean? = null + + private lateinit var mUnitSelectDialog: UnitSelectDialog + private var mMeasurementUnit = 1 + +// private var mWeightUnitDialog: CommonListDialog? = null + + override fun getTopBar() = mViewBinding.ilFirstMeasurementUnitsTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + ilFirstMeasurementUnitsSelect.let { + it.tvInputNameTitle.setText(R.string.txt_set_measurement_units) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + + val unit = Util.getMeasureUnitName(mContext) + it.etInputContent.setText(unit) + } + + setOnClickListenerViews( + btnFirstMeasurementUnitsSave, + ilFirstMeasurementUnitsSelect.rlEtInputLayout, + ilFirstMeasurementUnitsSelect.ivInputRepresentImage + ) + + mUnitSelectDialog = UnitSelectDialog(mContext) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + mUserProfileViewModel.mUpdateMeasureUnitLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + setPetUnit() + } + } + }) + } + } + + +// private fun showWeightUnitDialog() { +// if (null == mWeightUnitDialog) { +// val weightUnitList = mutableListOf() +// DataBean().run { +// name = getString(R.string.txt_lb) +// weightUnitList.add(this) +// } +// DataBean().run { +// name = getString(R.string.txt_kg) +// weightUnitList.add(this) +// } +// val weightUnitAdapter = TextViewAdapter(mContext, weightUnitList).apply { +// setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { +// override fun onItemClick(itemView: View?, pos: Int) { +// mViewBinding.ilFirstMeasurementUnitsWeight.etInputContent.setText( +// weightUnitList[pos].name +// ) +// mWeightUnitDialog?.dismiss() +// } +// }) +// } +// mWeightUnitDialog = CommonListDialog(mContext, weightUnitAdapter, 3, 3) +// } +// mWeightUnitDialog?.show() +// } + + private fun setPetUnit() { + mViewBinding.apply { + MMKVUtil.putInt(MMKVKey.MeasureUnit, mMeasurementUnit) + if (isFirstBind) { + val intent = Intent(mContext, PetHeightActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } else finish() + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilFirstMeasurementUnitsSelect.rlEtInputLayout, ilFirstMeasurementUnitsSelect.ivInputRepresentImage -> mUnitSelectDialog.showUnitDialog( + object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is Int) { + mMeasurementUnit = any + val unit = + if (any == ConstantInt.Type1) getString(R.string.txt_imperial) + else getString(R.string.txt_metric) + ilFirstMeasurementUnitsSelect.etInputContent.setText( + unit + ) + } + } + }) + + btnFirstMeasurementUnitsSave -> mUserProfileViewModel.updateMeasureUnit( + this@FirstMeasurementUnitsActivity, mMeasurementUnit + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstPetProfileActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstPetProfileActivity.kt new file mode 100644 index 0000000..07caf83 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstPetProfileActivity.kt @@ -0,0 +1,290 @@ +package com.abbidot.tracker.ui.activity.pet.first + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import coil.load +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityFirstPetProfileBinding +import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity +import com.abbidot.tracker.ui.common.PetProfileCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.PetInfoViewModel +import com.abbidot.tracker.vm.PetRelationViewModel +import com.abbidot.tracker.vm.TakePhotoAndCompressViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.huantansheng.easyphotos.EasyPhotos +import com.huantansheng.easyphotos.models.album.entity.Photo +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class FirstPetProfileActivity : + BaseActivity(ActivityFirstPetProfileBinding::inflate), + BaseDialog.OnDialogOkListener { + + private val mPetViewModel: PetInfoViewModel by viewModels() + private val mTrackerViewModel: TrackerInfoViewModel by viewModels() + private val mPetRelationViewModel: PetRelationViewModel by viewModels() + private val mTakePhotoAndCompressViewModel: TakePhotoAndCompressViewModel by viewModels() + private val mUserInfoViewModel: UserProfileViewModel by viewModels() + + private var isFirstBind = false + private var mPetBean: PetBean? = null + + //选å–å¤´åƒæœ¬åœ°è·¯å¾„ + private var mSelectPetHeadPath = "" + + private lateinit var mProfileCommon: PetProfileCommon + + override fun getTopBar() = mViewBinding.ilFirstPetProfileTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + + mProfileCommon = PetProfileCommon(mContext, rvFirstPetProfileLabel, mPetBean) + + ViewUtil.instance.setPetTypeHead( + ilFirstPetProfileHeadLayout.ilPetProfileHead.appHeadImage, "", 1 + ) + mPetBean?.apply { + tvFirstPetProfilePetName.text = petName + ViewUtil.instance.setPetTypeHead( + ilFirstPetProfileHeadLayout.ilPetProfileHead.appHeadImage, imgurl, petType + ) + } + + ilFirstPetProfileBreed.let { + it.tvInputNameTitle.text = getString(R.string.acccount_breed) + } + ilFirstPetProfileBirthday.let { + it.tvInputNameTitle.text = getString(R.string.acccount_birthday) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + it.ivInputRepresentImage.setImageResource(R.drawable.icon_profile_birthday_edit_svg) + } + ilFirstPetProfileSex.let { + it.tvInputNameTitle.text = getString(R.string.txt_sex) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + } + + mProfileCommon.setSexListData(ilFirstPetProfileSex.etInputContent) + + setOnClickListenerViews( + rlFirstPetProfileLabels, + ilFirstPetProfileBirthday.root, + ilFirstPetProfileSex.root, + ilFirstPetProfileHeadLayout.ilPetProfileHead.appHeadImage, + btnFirstPetProfileNext, + tvFirstPetProfileLaterBtn + ) + } + + mTakePhotoAndCompressViewModel.registerCropImageActivityResult(this) + + mPetViewModel.getPetLabels(this) + } + + override fun liveDataObserve() { + //获å–设备列表,方便把设备ä¿å­˜åˆ°æœ¬åœ° + mTrackerViewModel.getDeviceListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + lifecycleScope.launch { + withContext(Dispatchers.IO) { + for (device in list) { + //ä¿å­˜æœ¬åœ°æ•°æ®åº“ + if (!TextUtils.isEmpty(device.deviceOutId) && null != device.pet) { + MyDatabase.deviceDao().insert(device) + } + } + } + } + } + + showToast(R.string.txt_bind_success, isFinish = true) + mViewBinding.root.postDelayed({ + MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.isBind) + mPetBean?.apply { + val intent = Intent(mContext, AddWifiPowerZone1Activity::class.java) + intent.putExtra(ConstantString.Pet, this) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + }, 1500) + } + }) + } + + //设备绑定宠物 + mPetRelationViewModel.mBindPetLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + XEventBus.post(EventName.RefreshPet) + mTrackerViewModel.getDeviceList(this@FirstPetProfileActivity, 1) + } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.tvFirstPetProfileLaterBtn, ConstantInt.Type1) + setButtonEnabled(mViewBinding.btnFirstPetProfileNext, ConstantInt.Type1) + } + }) + } + + mPetViewModel.apply { + //获å–宠物标签 + mPetLabelsLiveData.observe(this@FirstPetProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { labels -> + mProfileCommon.getLabelData(labels) + } + } + }) + } + //添加宠物 + mAddPetLiveData.observe(this@FirstPetProfileActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { pet -> + mPetBean?.let { petBean -> + petBean.petId = pet.petId + mPetRelationViewModel.bindPet( + this@FirstPetProfileActivity, petBean.deviceId, petBean.petId + ) + } + } + } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.tvFirstPetProfileLaterBtn, ConstantInt.Type1) + setButtonEnabled(mViewBinding.btnFirstPetProfileNext, ConstantInt.Type1) + } + }) + } + } + //选å–照片 + mTakePhotoAndCompressViewModel.mPhotoPathLiveData.observe(this) { + if (it.size > 0) { + mSelectPetHeadPath = it[0].path + mViewBinding.ilFirstPetProfileHeadLayout.ilPetProfileHead.appHeadImage.load(it[0]) + } + } + + //上传照片 + mUserInfoViewModel.mUploadImageLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { +// showToast(R.string.txt_upload_successful) + mPetBean?.let { pet -> + pet.imgurl = this + mPetViewModel.addPet(this@FirstPetProfileActivity, pet) + } + } + } + }) + } + } + + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (RESULT_OK == resultCode) { + //相机或相册回调 + if (requestCode == ResultCode.ResultCode_1 && null != data) { + //返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + val resultPhotos: ArrayList = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS)!! + //返回图片地å€é›†åˆæ—¶å¦‚果你需è¦çŸ¥é“用户选择图片时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ï¼Œç”¨å¦‚ä¸‹æ–¹æ³•èŽ·å– +// data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false) + mTakePhotoAndCompressViewModel.goCropAndCompressImage(resultPhotos) + } + } + } + + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + mViewBinding.apply { + mProfileCommon.showSelectPetLabels(tvFirstPetProfileLabelTitle, svFirstPetProfile) + } + } + + private fun saveProfile() { + mViewBinding.apply { + val breed = ilFirstPetProfileBreed.etInputContent.text.toString() + val birthday = ilFirstPetProfileBirthday.etInputContent.text.toString() + val sex = ilFirstPetProfileSex.etInputContent.text.toString() + if (TextUtils.isEmpty(birthday) || TextUtils.isEmpty(sex)) { + showToast(R.string.txt_not_null) + return + } + setButtonEnabled(btnFirstPetProfileNext, ConstantInt.Type0) + mPetBean?.let { + it.breed = breed + } + + addPet() + } + } + + private fun addPet() { + setButtonEnabled(mViewBinding.tvFirstPetProfileLaterBtn, ConstantInt.Type0) + setButtonEnabled(mViewBinding.btnFirstPetProfileNext, ConstantInt.Type0) + if (TextUtils.isEmpty(mSelectPetHeadPath)) { + mPetBean?.apply { + mPetViewModel.addPet(this@FirstPetProfileActivity, this) + } + } else { + mUserInfoViewModel.uploadImage(this@FirstPetProfileActivity, mSelectPetHeadPath) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilFirstPetProfileHeadLayout.ilPetProfileHead.appHeadImage -> ViewUtil.instance.goSelectPhoto( + this@FirstPetProfileActivity, ResultCode.ResultCode_1 + ) + + rlFirstPetProfileLabels -> mProfileCommon.showLabelDialog(this@FirstPetProfileActivity) + + ilFirstPetProfileBirthday.root -> mProfileCommon.showBirthdayDialog(mViewBinding.ilFirstPetProfileBirthday.etInputContent) + + ilFirstPetProfileSex.root -> mProfileCommon.showSexDialog() + + btnFirstPetProfileNext -> saveProfile() + tvFirstPetProfileLaterBtn -> addPet() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetHeightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetHeightActivity.kt new file mode 100644 index 0000000..1a23a65 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetHeightActivity.kt @@ -0,0 +1,144 @@ +package com.abbidot.tracker.ui.activity.pet.first + +import android.content.Intent +import android.view.View +import android.widget.NumberPicker +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityFirstSetPetHeightBinding +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class FirstSetPetHeightActivity : + BaseActivity(ActivityFirstSetPetHeightBinding::inflate), + NumberPicker.OnValueChangeListener { + + private var isFirstBind = false + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.ilFirstSetPetHeightTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + var maxTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.HeightType, ConstantInt.MaxType + ) + var minTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.HeightType, ConstantInt.MinType + ) + var defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + ConstantInt.DogPetType, ConstantInt.HeightType + ) + var defaultValue2 = 0 + mPetBean?.apply { + if (petType == ConstantInt.CatPetType) mViewBinding.ivFirstSetPetHeightType.setImageResource( + R.drawable.icon_cat_height_tip_svg + ) + defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + petType, ConstantInt.HeightType + ) + minTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.HeightType, ConstantInt.MinType + ) + maxTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.HeightType, ConstantInt.MaxType + ) + if (height > 0) { + val values = + Util.metricConvertUnits(height, ConstantInt.Type0).toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + + tvFirstSetPetHeightUnit.text = Util.getMetricUnits(mContext, ConstantInt.Type0) + npFirstSetPetHeightTens.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + minTensValue, + maxTensValue, + defaultValue1, + 20, + NumberPickerValueFill0Format(), + this@FirstSetPetHeightActivity + ) + } + + val valueList = mutableListOf() + for (i in 0..9) { + valueList.add("$i") + } + npFirstSetPetHeightUnit.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + 0, + 9, + defaultValue2, + 20, + valueChangeListener = this@FirstSetPetHeightActivity + ) + it.displayedValues = valueList.toTypedArray() + } + + setOnClickListenerViews(btnFirstSetPetHeightNext) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + } + + private fun saveHeight() { + mPetBean?.apply { + val value = + "${mViewBinding.npFirstSetPetHeightTens.value}.${mViewBinding.npFirstSetPetHeightUnit.value}" + height = Util.convertMetricUnits(value.toFloat(), ConstantInt.Type0) + val intent = Intent(mContext, FirstSetPetWeightActivity::class.java) + intent.putExtra(ConstantString.Pet, this) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnFirstSetPetHeightNext -> saveHeight() + } + } + } + + override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) { + mViewBinding.apply { + when (picker) { + npFirstSetPetHeightTens -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npFirstSetPetHeightUnit, btnFirstSetPetHeightNext + ) + + npFirstSetPetHeightUnit -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npFirstSetPetHeightTens, btnFirstSetPetHeightNext + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetTypeActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetTypeActivity.kt new file mode 100644 index 0000000..856e144 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetTypeActivity.kt @@ -0,0 +1,105 @@ +package com.abbidot.tracker.ui.activity.pet.first + +import android.content.Intent +import android.text.TextUtils +import android.view.View +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityFirstSetPetTypeBinding +import com.abbidot.tracker.ui.activity.account.LoginV2Activity + +class FirstSetPetTypeActivity : + BaseActivity(ActivityFirstSetPetTypeBinding::inflate) { + + private var isFirstBind = false + private var mDeviceOutId = "" + private var mDeviceId = "" + private lateinit var mPetBean: PetBean + + override fun getTopBar() = mViewBinding.ilFirstSetPetTypeTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + mPetBean = PetBean() + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + } + + mDeviceId = MMKVUtil.getString(MMKVKey.FirstDeviceId) + mDeviceOutId = MMKVUtil.getString(MMKVKey.FirstDeviceOutId) + mPetBean.let { + it.deviceId = mDeviceId + it.deviceOutId = mDeviceOutId + it.macID = MMKVUtil.getString(MMKVKey.FirstDeviceMac) + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + + rgFirstSetPetTypeGroup.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + rbFirstSetPetTypeDog.id -> { + mPetBean.petType = ConstantInt.DogPetType + } + + rbFirstSetPetTypeCat.id -> { + mPetBean.petType = ConstantInt.CatPetType + } + } + } + + setViewClickHideInputMethod(llFirstSetPetTypeLayout) + + setOnClickListenerViews(btnFirstSetPetTypeNext, btnFirstSetPetTypeBackLogin) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + } + + override fun listenBackPressed() { + + } + + private fun petTypeNext() { + mViewBinding.apply { + var name = ilFirstSetPetTypePetName.etInputContent.text.toString() + if (TextUtils.isEmpty(name)) { + showToast(R.string.txt_not_null) + return + } + name = name.trimStart() + name = name.trimEnd() + mPetBean.petName = name + val intent = Intent(mContext, FirstMeasurementUnitsActivity::class.java) + intent.putExtra(ConstantString.Pet, mPetBean) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnFirstSetPetTypeNext -> petTypeNext() + btnFirstSetPetTypeBackLogin -> startActivityFinish( + Intent( + mContext, LoginV2Activity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetWeightActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetWeightActivity.kt new file mode 100644 index 0000000..4deece6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/first/FirstSetPetWeightActivity.kt @@ -0,0 +1,144 @@ +package com.abbidot.tracker.ui.activity.pet.first + +import android.content.Intent +import android.view.View +import android.widget.NumberPicker +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityFirstSetPetWeightBinding +import com.abbidot.tracker.util.NumberPickerValueFill0Format +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class FirstSetPetWeightActivity : + BaseActivity(ActivityFirstSetPetWeightBinding::inflate), + NumberPicker.OnValueChangeListener { + + private var isFirstBind = false + private var mPetBean: PetBean? = null + + override fun getTopBar() = mViewBinding.ilFirstSetPetWeightTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle("") + + intent.extras?.apply { + isFirstBind = getBoolean(ConstantString.isFirstBind, false) + mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) + } + + var maxTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.WeightType, ConstantInt.MaxType + ) + var minTensValue = Util.getPetHeightAndWeightRangeValue( + ConstantInt.DogPetType, ConstantInt.WeightType, ConstantInt.MinType + ) + var defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + ConstantInt.DogPetType, ConstantInt.WeightType + ) + var defaultValue2 = 0 + mPetBean?.apply { + if (petType == ConstantInt.CatPetType) mViewBinding.ivFirstSetPetWeightImage.setImageResource( + R.drawable.icon_cat_image_svg + ) + defaultValue1 = Util.getPetHeightAndWeightDefaultValue( + petType, ConstantInt.WeightType + ) + minTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.WeightType, ConstantInt.MinType + ) + maxTensValue = Util.getPetHeightAndWeightRangeValue( + petType, ConstantInt.WeightType, ConstantInt.MaxType + ) + if (weight > 0) { + val values = + Util.metricConvertUnits(weight, ConstantInt.Type1).toString().split(".") + defaultValue1 = values[0].toInt() + defaultValue2 = values[1].toInt() + } + } + + mViewBinding.apply { + root.setBackgroundResource(R.color.white) + + tvFirstSetPetWeightUnit.text = Util.getMetricUnits(mContext, ConstantInt.Type1) + + npFirstSetPetWeightTens.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + minTensValue, + maxTensValue, + defaultValue1, + 20, + NumberPickerValueFill0Format(), + this@FirstSetPetWeightActivity + ) + } + + val valueList = mutableListOf() + for (i in 0..9) { + valueList.add("$i") + } + npFirstSetPetWeightUnit.let { + ViewUtil.instance.setNumberPickerAttributes( + mContext, + it, + 0, + 9, + defaultValue2, + 20, + valueChangeListener = this@FirstSetPetWeightActivity + ) + it.displayedValues = valueList.toTypedArray() + } + setOnClickListenerViews(btnFirstSetPetWeightNext) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.RefreshPet) { + finish() + } + } + + private fun saveWeight() { + mPetBean?.apply { + val value = + "${mViewBinding.npFirstSetPetWeightTens.value}.${mViewBinding.npFirstSetPetWeightUnit.value}" + weight = Util.convertMetricUnits(value.toFloat(), ConstantInt.Type1) + val intent = Intent(mContext, FirstPetProfileActivity::class.java) + intent.putExtra(ConstantString.Pet, this) + intent.putExtra(ConstantString.isFirstBind, isFirstBind) + startActivity(intent) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnFirstSetPetWeightNext -> saveWeight() + } + } + } + + override fun onValueChange(picker: NumberPicker?, oldVal: Int, newVal: Int) { + mViewBinding.apply { + when (picker) { + npFirstSetPetWeightTens -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npFirstSetPetWeightUnit, btnFirstSetPetWeightNext + ) + + npFirstSetPetWeightUnit -> ViewUtil.instance.numberPickerLinkageValueNo0( + newVal, npFirstSetPetWeightTens, btnFirstSetPetWeightNext + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/set/AboutActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/set/AboutActivity.kt new file mode 100644 index 0000000..8196727 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/set/AboutActivity.kt @@ -0,0 +1,65 @@ +package com.abbidot.tracker.ui.activity.set + +import android.text.TextUtils +import android.view.View +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.databinding.ActivityAboutBinding +import com.abbidot.tracker.ui.activity.WebViewActivity +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIPackageHelper +import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView + +class AboutActivity : BaseActivity(ActivityAboutBinding::inflate) { + + private val mWebsiteUrl = "www.abbidot.com" + + override fun getTopBar() = mViewBinding.ilAboutTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_setting_about) + setLeftBackImage(R.drawable.icon_white_back_svg) + + val version = QMUIPackageHelper.getAppVersion(mContext) + val versionStr = String.format(getString(R.string.txt_about_version), ": V$version") + + mViewBinding.apply { + tvAboutVersion.text = versionStr + + //æœåŠ¡åè®® + setButtonData(aboutServiceContract.trackerManageSettingItem, + getString(R.string.txt_service_contract)) + //éšç§æ”¿ç­– + setButtonData(aboutPrivacyPolicy.trackerManageSettingItem, + getString(R.string.txt_privacy_policy)) + //官网 + setButtonData(aboutOfficialWebsite.trackerManageSettingItem, + getString(R.string.txt_website), mWebsiteUrl) + } + } + + private fun setButtonData(commonItemView: QMUICommonListItemView, + title: String, + content: String = "") { + commonItemView.apply { + text = title + if (!TextUtils.isEmpty(content)) detailText = content + setOnClickListenerViews(this) + } + } + + + override fun onClick(v: View?) { + when (v!!.id) { + //æœåŠ¡åè®® + R.id.about_service_contract -> ViewUtil.instance.goServiceContract(mActivity) + //éšç§æ”¿ç­– + R.id.about_privacy_policy -> ViewUtil.instance.goPrivacyPolicy(mActivity) + //官网 + R.id.about_official_website -> WebViewActivity.startWebViewActivity( + mActivity, + getString(R.string.txt_website), mWebsiteUrl) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/set/AdvancedSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/set/AdvancedSetActivity.kt new file mode 100644 index 0000000..6e0bbd3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/set/AdvancedSetActivity.kt @@ -0,0 +1,127 @@ +package com.abbidot.tracker.ui.activity.set + +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityAdvancedSetBinding +import com.abbidot.tracker.util.FileUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +class AdvancedSetActivity : + BaseActivity(ActivityAdvancedSetBinding::inflate) { + + private val mUserViewModel: UserProfileViewModel by viewModels() + + private val mClearCacheTipsType = 1 + private val mCloseAccountTipsType = 2 + + override fun getTopBar() = mViewBinding.ilAdvancedSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_advanced_set) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + ilAdvancedSetClearCache.root.let { + it.text = getString(R.string.txt_setting_clear) + it.setImageDrawable( + ContextCompat.getDrawable( + mContext, R.drawable.icon_database_restore_svg + ) + ) + } + ilAdvancedSetPayManager.root.let { + it.text = getString(R.string.txt_delete_account) + it.setImageDrawable( + ContextCompat.getDrawable( + mContext, R.drawable.ico_account + ) + ) + } + ilAdvancedSetDeleteAccount.root.let { + it.text = getString(R.string.txt_delete_account) + it.setImageDrawable( + ContextCompat.getDrawable( + mContext, R.drawable.ico_account + ) + ) + } + + setOnClickListenerViews(ilAdvancedSetClearCache.root, ilAdvancedSetDeleteAccount.root) + } + + getCacheSize() + } + + override fun liveDataObserve() { + mUserViewModel.mUserLogoffLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + Util.logOut(this@AdvancedSetActivity, lifecycleScope) + } + }) + } + } + + private fun dialogShowType(type: Int, string: String) { + ViewUtil.instance.showDialog(mContext, string, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + when (type) { + mClearCacheTipsType -> clearCache() + mCloseAccountTipsType -> mUserViewModel.logoff(this@AdvancedSetActivity) + } + } + }, okTextResId = R.string.txt_sure) + } + + /** + * 清除缓存 + */ + private fun clearCache() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + FileUtil.clearCache(mActivity) + } + getCacheSize() + showToast(R.string.txt_clear_cache_success) + } + } + + /** + * 获å–ç¼“å­˜å¤§å° + */ + private fun getCacheSize() { + lifecycleScope.launch { + mViewBinding.ilAdvancedSetClearCache.root.detailText = withContext(Dispatchers.IO) { + FileUtil.getCacheSize(mActivity) + } + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilAdvancedSetClearCache.root -> dialogShowType( + mClearCacheTipsType, getString(R.string.txt_clear_cache_tips) + ) + + ilAdvancedSetDeleteAccount.root -> dialogShowType( + mCloseAccountTipsType, getString(R.string.txt_close_account_tips) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/set/FirstPermissionsActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/set/FirstPermissionsActivity.kt new file mode 100644 index 0000000..2dbe2a8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/set/FirstPermissionsActivity.kt @@ -0,0 +1,113 @@ +package com.abbidot.tracker.ui.activity.set + +import android.view.View +import androidx.core.view.isGone +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.adapter.FirstPermissionsAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.databinding.ActivityFirstPermissionsBinding +import com.abbidot.tracker.ui.common.PermissionsActivityCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + + +class FirstPermissionsActivity : + BaseActivity(ActivityFirstPermissionsBinding::inflate) { + + private lateinit var mPermissionsAdapter: FirstPermissionsAdapter + + lateinit var mPermissionsCommon: PermissionsActivityCommon + + override fun getTopBar() = null + + override fun initData() { + super.initData() + + mPermissionsCommon = PermissionsActivityCommon(mContext).apply { + registerGpsReceiver() + } + mPermissionsAdapter = + FirstPermissionsAdapter(mContext, mPermissionsCommon.addListData(mContext)).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mPermissionsCommon.updateDataBeanSelectedItem( + mPermissionsAdapter, getData(), pos + ) + } + }) + } + + mViewBinding.apply { + + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvFirstPermissionList, mPermissionsAdapter, top = AppUtils.dpToPx(12) + ) + + btnFirstPermissionNext.visibility = View.GONE + + setOnClickListenerViews(btnFirstPermissionNext) + } + } + + override fun liveDataObserve() { + //è“牙开关æ“作 + XEventBus.observe(this, EventName.BluetoothSwitch) { conState: Int -> + mPermissionsCommon.updatePermissionsState(mPermissionsAdapter, ConstantInt.SpecialType) + } + //gps开关æ“作 + XEventBus.observe(this, EventName.GPSSwitchState) { switchState: Int -> + mPermissionsCommon.updatePermissionsState(mPermissionsAdapter, ConstantInt.SpecialType) + } + } + + override fun onResume() { + super.onResume() + LogUtil.e("PermissionsActivity----------------->>>onResume") + mPermissionsCommon.updatePermissionsState(mPermissionsAdapter, ConstantInt.SpecialType) + } + + + override fun listenBackPressed() { + + } + + /** + * æ›´æ–°ä¸‹ä¸€æ­¥æŒ‰é’®çŠ¶æ€ + */ + fun updateNextBtnState() { + val list = mPermissionsAdapter.getData() + var showBtn = true + for (data in list) { + if (data.state == ConstantInt.Type0) { + showBtn = false + break + } + } + mViewBinding.apply { + if (showBtn && btnFirstPermissionNext.isGone) { + ViewUtil.instance.viewShowFadeInAnimation(btnFirstPermissionNext, 1000) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnFirstPermissionNext -> { + setButtonEnabled(v) + startActivityFinish(Util.checkBindDeviceAndPetGoActivity(mContext)) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + mPermissionsCommon.unregisterGpsReceiver() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/set/NotificationsSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/set/NotificationsSetActivity.kt new file mode 100644 index 0000000..0a0c31e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/set/NotificationsSetActivity.kt @@ -0,0 +1,133 @@ +package com.abbidot.tracker.ui.activity.set + +import android.widget.CompoundButton +import androidx.activity.viewModels +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.TextViewAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityNotificationsSetBinding +import com.abbidot.tracker.vm.AppSetViewModel + + +class NotificationsSetActivity : + BaseActivity(ActivityNotificationsSetBinding::inflate), + CompoundButton.OnCheckedChangeListener { + + private val mAppSetViewModel: AppSetViewModel by viewModels() + + override fun getTopBar() = mViewBinding.ilNotificationsSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_notifications_set) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + + ilNotificationsSetDisplayFences.cbNotificationsSetItemSwitch.setOnCheckedChangeListener( + this@NotificationsSetActivity + ) + + ilNotificationsSetTrackerStatus.let { + it.tvNotificationsSetItemTitle.setText(R.string.txt_tracker_status) + it.tvNotificationsSetItemDescription.setText(R.string.txt_tracker_status_desc) + it.cbNotificationsSetItemSwitch.setOnCheckedChangeListener(this@NotificationsSetActivity) + } + + ilNotificationsSetTrackerActivity.let { + it.tvNotificationsSetItemTitle.setText(R.string.txt_activity) + it.tvNotificationsSetItemDescription.setText(R.string.txt_activity_desc) + it.cbNotificationsSetItemSwitch.setOnCheckedChangeListener(this@NotificationsSetActivity) + } + + val list = mutableListOf() + for (i in 0 until 10) { + DataBean().apply { + name = "aaaa$i" + list.add(this) + } + } + val layoutManager = LinearLayoutManager(mContext) + layoutManager.orientation = LinearLayoutManager.VERTICAL + layoutManager.stackFromEnd = true + layoutManager.reverseLayout = true + layoutManager.isItemPrefetchEnabled = false + rvList.layoutManager = layoutManager + rvList.setHasFixedSize(true) + + + rvList.addOnScrollListener(object : RecyclerView.OnScrollListener() { + + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { + super.onScrollStateChanged(recyclerView, newState) + layoutManager.isItemPrefetchEnabled = newState == RecyclerView.SCROLL_STATE_IDLE + } + }) + val textViewAdapter = TextViewAdapter(mContext, list) + rvList.adapter = textViewAdapter + } + + mAppSetViewModel.getNotificationSet() + } + + override fun liveDataObserve() { + mAppSetViewModel.apply { + mGetNotificationLiveData.observe(this@NotificationsSetActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { data -> + for (d in data) { + when (d.notificationType) { + 1 -> mViewBinding.ilNotificationsSetDisplayFences.cbNotificationsSetItemSwitch.isChecked = + d.status == 1 + + 2 -> mViewBinding.ilNotificationsSetTrackerStatus.cbNotificationsSetItemSwitch.isChecked = + d.status == 1 + + 3 -> mViewBinding.ilNotificationsSetTrackerActivity.cbNotificationsSetItemSwitch.isChecked = + d.status == 1 + } + } + } + } + }) + } + + mSetNotificationLiveData.observe(this@NotificationsSetActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_change_successful) + } + }) + } + } + } + + private fun setNotificationType(notificationType: Int, isChecked: Boolean) { + val status = if (isChecked) 1 else 0 + mAppSetViewModel.setNotification(notificationType, status) + } + + override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { + if (!buttonView!!.isPressed) return + mViewBinding.apply { + when (buttonView) { + ilNotificationsSetDisplayFences.cbNotificationsSetItemSwitch -> setNotificationType( + 1, isChecked + ) + + ilNotificationsSetTrackerStatus.cbNotificationsSetItemSwitch -> setNotificationType( + 2, isChecked + ) + + ilNotificationsSetTrackerActivity.cbNotificationsSetItemSwitch -> setNotificationType( + 3, isChecked + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/set/PermissionsSetActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/set/PermissionsSetActivity.kt new file mode 100644 index 0000000..a651659 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/set/PermissionsSetActivity.kt @@ -0,0 +1,62 @@ +package com.abbidot.tracker.ui.activity.set + +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.PermissionsSetAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.databinding.ActivityPermissionsSetBinding +import com.abbidot.tracker.ui.common.PermissionsActivityCommon +import com.abbidot.tracker.util.ViewUtil + +class PermissionsSetActivity : + BaseActivity(ActivityPermissionsSetBinding::inflate) { + + lateinit var mPermissionsCommon: PermissionsActivityCommon + private lateinit var mPermissionsSetAdapter: PermissionsSetAdapter + + override fun getTopBar() = mViewBinding.ilPermissionsSetTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_permissions) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mPermissionsCommon = PermissionsActivityCommon(mContext).apply { + registerGpsReceiver() + } + mPermissionsSetAdapter = + PermissionsSetAdapter(mContext, mPermissionsCommon.addListData(mContext)) + + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvPermissionSetList, mPermissionsSetAdapter, top = AppUtils.dpToPx(12) + ) + } + } + + override fun liveDataObserve() { + //è“牙开关æ“作 + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + mPermissionsCommon.updatePermissionsState(mPermissionsSetAdapter, ConstantInt.Type0) + } + //gps开关æ“作 + XEventBus.observe(this, EventName.GPSSwitchState) { switchState: Int -> + mPermissionsCommon.updatePermissionsState(mPermissionsSetAdapter,ConstantInt.Type0) + } + } + + override fun onResume() { + super.onResume() + LogUtil.e("PermissionsSetActivity----------------->>>onResume") + mPermissionsCommon.updatePermissionsState(mPermissionsSetAdapter,ConstantInt.Type0) + } + + override fun onDestroy() { + super.onDestroy() + mPermissionsCommon.unregisterGpsReceiver() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/AddCreditCardPaymentActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/AddCreditCardPaymentActivity.kt new file mode 100644 index 0000000..1837991 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/AddCreditCardPaymentActivity.kt @@ -0,0 +1,359 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.res.ColorStateList +import android.graphics.Color +import android.text.InputFilter +import android.text.InputFilter.LengthFilter +import android.text.InputType +import android.text.TextUtils +import android.view.View +import android.view.View.OnFocusChangeListener +import androidx.appcompat.widget.AppCompatEditText +import androidx.core.widget.addTextChangedListener +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.ActivityAddCreditCardPaymentBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + + +class AddCreditCardPaymentActivity : + BaseActivity(ActivityAddCreditCardPaymentBinding::inflate), + OnFocusChangeListener { + + private var mCreditCard: CreditCardBean? = null + private var isEdit = false + + override fun getTopBar() = mViewBinding.ilAddPaymentMethodTopInfo.titleTopBar + + override fun initData() { + super.initData() + intent.extras?.apply { + mCreditCard = Util.getParcelableAdaptive( + intent, ConstantString.Card, CreditCardBean::class.java + ) + isEdit = getBoolean(ConstantString.Edit, false) + } + if (null == mCreditCard) mCreditCard = CreditCardBean() + + if (isEdit) { + setTopBarTitle(R.string.txt_edit_pay_method) + mRightImageButton = addRightImageButton(R.drawable.icon_delete_svg).apply { + imageTintList = ColorStateList.valueOf(Color.WHITE) + } + } else { + setTopBarTitle(R.string.txt_add_payment) + } + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + + ilAddCardNameOnCard.let { + it.tvInputView2NameTitle.setText(R.string.txt_name_card) + it.etInputView2Content.onFocusChangeListener = this@AddCreditCardPaymentActivity + showEditViewContent(it.etInputView2Content, mCreditCard!!.cardName) + } + + ilAddCardNumber.let { + it.tvInputView2NameTitle.setText(R.string.txt_card_number) + it.etInputView2Content.let { cardText -> + cardText.filters = arrayOf(LengthFilter(24)) + cardText.compoundDrawablePadding = AppUtils.dpToPx(6) + cardText.inputType = InputType.TYPE_CLASS_NUMBER + cardText.onFocusChangeListener = this@AddCreditCardPaymentActivity + cardText.addTextChangedListener { numberStr -> + numberStr?.apply { + val formatCardNumber = Util.formatCardNumber(numberStr.toString()) + if (formatCardNumber.length > numberStr.length) { + cardText.setText(formatCardNumber) + // 设置光标ä½ç½® + cardText.setSelection(formatCardNumber.length) + } + val cardLogoImageId = + Util.getCreditCardType(numberStr.toString().replace(" ", "")) + if (cardLogoImageId == 0) { + cardText.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, 0, 0 + ) + } else { + cardText.setCompoundDrawablesWithIntrinsicBounds( + cardLogoImageId, 0, 0, 0 + ) + } + } + } + } + showEditViewContent(it.etInputView2Content, mCreditCard!!.cardNumber) + } + etAddCardMmDdContent.let { + it.onFocusChangeListener = this@AddCreditCardPaymentActivity + it.addTextChangedListener { cardExpiry -> + formatCardExpiry(cardExpiry.toString()) + } + showEditViewContent(it, mCreditCard!!.expirationDate) + } + etAddCardCvcContent.let { + it.onFocusChangeListener = this@AddCreditCardPaymentActivity + showEditViewContent(it, mCreditCard!!.cvv) + } + cbAddCardSetPrimarySwitch.isChecked = mCreditCard!!.isPrimary + + setOnClickListenerViews( + btnSaveNewCreditCard, + ilAddCardNameOnCard.root, + ilAddCardNumber.root, + llAddCardCvcLayout, + llAddCardMmDdLayout + ) + } + } + + /** + * 编辑时显示还原内容 + */ + private fun showEditViewContent(editText: AppCompatEditText, content: String) { + if (TextUtils.isEmpty(content)) return + editText.apply { + visibility = View.VISIBLE + setText(content) + } + } + + /** + * æ ¼å¼åŒ–有效期 + */ + private fun formatCardExpiry(cardExpiry: String) { + var formatCardExpiry = cardExpiry + val separator = "/" + if (formatCardExpiry.length == 3) { + formatCardExpiry = if (formatCardExpiry.contains(separator)) { + cardExpiry.substring(0, 2) + } else { + cardExpiry.substring(0, 2) + separator + cardExpiry.last() + } + mViewBinding.etAddCardMmDdContent.apply { + setText(formatCardExpiry) + setSelection(formatCardExpiry.length) + } + } + } + + /** + * 点击输入框并显示 + */ + private fun setClickEditViewVisible(editText: AppCompatEditText) { + editText.apply { + visibility = View.VISIBLE + requestFocus() + //弹出软键盘 + showInputMethod(this) + } + } + + /** + * 输入框失去焦点éšè— + */ + private fun setEditViewNoFocusHide(editText: AppCompatEditText, hasFocus: Boolean) { + editText.apply { + val content = text.toString() + if (!hasFocus) { + if (TextUtils.isEmpty(content)) visibility = View.GONE + } + } + } + + override fun listenHideKeyboard() { + mViewBinding.apply { + setEditViewNoFocusHide(etAddCardCvcContent, false) + setEditViewNoFocusHide(etAddCardMmDdContent, false) + setEditViewNoFocusHide(ilAddCardNameOnCard.etInputView2Content, false) + setEditViewNoFocusHide(ilAddCardNumber.etInputView2Content, false) + } + } + + private fun confirmSaveCard() { + val cardNumber = + mViewBinding.ilAddCardNumber.etInputView2Content.text.toString().replace(" ", "") + val cardName = mViewBinding.ilAddCardNameOnCard.etInputView2Content.text.toString() + val creditCardValidity = mViewBinding.etAddCardMmDdContent.text.toString() + val cvv = mViewBinding.etAddCardCvcContent.text.toString() + + if (TextUtils.isEmpty(cardNumber) || TextUtils.isEmpty(cardName) || TextUtils.isEmpty( + creditCardValidity + ) || TextUtils.isEmpty(cvv) + ) { + showToast(R.string.txt_not_null) + return + } + + if (!creditCardValidity.contains("/")) { + showToast(R.string.txt_card_validity_format) + return + } else { + val dates = creditCardValidity.split("/") + try { + if (dates[0].toInt() > 12) { + showToast(R.string.txt_card_validity_format) + return + } + } catch (e: Exception) { + showToast(R.string.txt_card_validity_format) + return + } + } + if (Util.getCreditCardType(cardNumber) == 0 || cardNumber.length < 9) { + showToast(R.string.txt_card_number_format) + return + } + + lifecycleScope.launch(Dispatchers.IO) { + + val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + + if (!isEdit) { + var isCardExist = false + list?.apply { + if (isNotEmpty()) { + for (c in list) { + if (c.cardNumber == cardNumber) { + isCardExist = true + } + } + } + } + if (isCardExist) { + launch(Dispatchers.Main) { + ViewUtil.instance.showDialog( + mContext, + R.string.txt_credit_card_exists, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + lifecycleScope.launch(Dispatchers.IO) { + saveCard(list) + } + } + }, + okTextResId = R.string.start_txt_yes, + cancelTextResId = R.string.txt_no + ) + } + } else saveCard(list) + } + } + } + + /** + * ä¿å­˜ä¿¡ç”¨å¡ + */ + private fun saveCard(list: List?) { + mViewBinding.apply { + val cardNumber = ilAddCardNumber.etInputView2Content.text.toString().replace(" ", "") + val cardName = ilAddCardNameOnCard.etInputView2Content.text.toString() + val creditCardValidity = etAddCardMmDdContent.text.toString() + val cvv = etAddCardCvcContent.text.toString() + if (cbAddCardSetPrimarySwitch.isChecked) { + mCreditCard?.isPrimary = true + list?.apply { + if (isNotEmpty()) { + for (c in list) { + if (c.isPrimary) { + c.isPrimary = false + MyDatabase.creditCardDao().update(c) + } + } + } + } + } + + mCreditCard?.let { + if (isEdit) { + list?.apply { + if (isNotEmpty()) { + for (c in list) { + //å› å¡å·å”¯ä¸€ï¼Œç¼–辑å¡å·åˆ é™¤å­˜åœ¨çš„ä¿¡ç”¨å¡ + if (c.cardNumber == it.cardNumber) { + MyDatabase.creditCardDao().delete(c) + } + } + } + } + } + it.cardNumber = cardNumber + it.cardName = cardName + it.expirationDate = creditCardValidity + it.cvv = cvv + MyDatabase.creditCardDao().insert(it) + } + + runOnUiThread { +// val intent = Intent() +// intent.putExtra(ConstantString.Card, mCreditCard) + setResult(ResultCode.ResultCode_1, null) + showToast(R.string.txt_save_successful, isFinish = true) + } + } + } + + private fun deleteCard() { + ViewUtil.instance.showDialog( + mContext, R.string.txt_sure_delete_card, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + lifecycleScope.launch(Dispatchers.IO) { + mCreditCard?.apply { + MyDatabase.creditCardDao().delete(this) + } + } + dialog.dismiss() + setResult(ResultCode.ResultCode_1, null) + showToast(R.string.txt_delete_succe, isFinish = true) + } + }, okTextResId = R.string.start_txt_yes + ) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSaveNewCreditCard -> confirmSaveCard() + llAddCardMmDdLayout -> setClickEditViewVisible(etAddCardMmDdContent) + llAddCardCvcLayout -> setClickEditViewVisible(etAddCardCvcContent) + ilAddCardNameOnCard.root -> setClickEditViewVisible(ilAddCardNameOnCard.etInputView2Content) + ilAddCardNumber.root -> setClickEditViewVisible(ilAddCardNumber.etInputView2Content) + mRightImageButton -> deleteCard() + } + } + } + + override fun onFocusChange(v: View?, hasFocus: Boolean) { + mViewBinding.apply { + when (v!!) { + ilAddCardNameOnCard.etInputView2Content -> { + setEditViewNoFocusHide(ilAddCardNameOnCard.etInputView2Content, hasFocus) + } + + ilAddCardNumber.etInputView2Content -> { + setEditViewNoFocusHide(ilAddCardNumber.etInputView2Content, hasFocus) + } + + etAddCardMmDdContent -> { + setEditViewNoFocusHide(etAddCardMmDdContent, hasFocus) + } + + etAddCardCvcContent -> { + setEditViewNoFocusHide(etAddCardCvcContent, hasFocus) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt new file mode 100644 index 0000000..d98a39e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/ChoosePlanActivity.kt @@ -0,0 +1,155 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.ChoosePlanAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityChoosePlanBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +class ChoosePlanActivity : + BaseActivity(ActivityChoosePlanBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + private lateinit var mChoosePlanAdapter: ChoosePlanAdapter + + private var mSelectPlanIndex = 0 + private var mOrderBean: SubscriptionsOrderBean? = null + + //æ˜¯å¦æ˜¯å‡çº§å¥—é¤ + private var isUpgrade = false + + //设备充值类型,0=首次设备充值激活,1=å·²æ·»åŠ è®¾å¤‡å†æ¬¡æ·»åŠ è®¾å¤‡å……å€¼ï¼Œ2=给当å‰çš„设备续费或者å‡çº§å¥—é¤ + private var mRechargeType = ConstantInt.Type1 + + override fun getTopBar() = mViewBinding.ilChoosePlanTopBar.titleTopBar + + override fun initData() { + super.initData() + var packageTypeName = "" + intent.extras?.apply { + packageTypeName = getString(ConstantString.Title, "") + mOrderBean = Util.getParcelableAdaptive( + intent, ConstantString.LkSetMeal, SubscriptionsOrderBean::class.java + ) + isUpgrade = getBoolean(ConstantString.Upgrade, false) + mRechargeType = getInt(ConstantString.RechargeType, ConstantInt.Type1) + } + + if (isUpgrade) { + mRechargeType = ConstantInt.Type2 + setTopBarTitle(R.string.txt_upgrade_plan) + } else setTopBarTitle(R.string.txt_choose_your_plan) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + + mChoosePlanAdapter = ChoosePlanAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val list = getData() + if (pos > list.size - 1) return + val dataBean = list[pos] + if (dataBean.selected) return + for (i in 0 until list.size) { + val data = list[i] + if (data.selected) { + data.selected = false + notifyItemChanged(i) + break + } + } + dataBean.selected = true + mSelectPlanIndex = pos + notifyItemChanged(pos) + } + }) + } + + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvChoosePlanList, mChoosePlanAdapter, bottom = AppUtils.dpToPx(5) + ) + + setOnClickListenerViews(btnSelectChoosePlanContinue) + } + + mSubscriptionViewModel.getPackageList(packageTypeName) + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.PayBack) { + finish() + } + mSubscriptionViewModel.mPackageListLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + mOrderBean?.let { o -> + if (isUpgrade) { + val iterator = list.iterator() + while (iterator.hasNext()) { + val l = iterator.next() + //æ ¹æ®å¥—餿—¶é—´å¾€ä¸Šå‡çº§ + if (o.mealUnit == ConstantString.PackageUnitMonth) { + if (l.mealUnit == ConstantString.PackageUnitMonth && o.mealPeriod > l.period) { + iterator.remove() + } + } else if (o.mealUnit == ConstantString.PackageUnitYear) { + if (l.mealUnit == ConstantString.PackageUnitMonth) { + iterator.remove() + } else if (l.mealUnit == ConstantString.PackageUnitYear && o.mealPeriod > l.period) { + iterator.remove() + } + } +// val price = +// if (l.discountedPrice > 0.0) l.discountedPrice else l.planPrice +// val oPrice = +// if (o.mealDiscountPrice > 0.0) o.mealDiscountPrice else o.mealPrice +// if (oPrice >= price) iterator.remove() +// else if (l.mealUnit != ConstantString.PackageUnitYear) iterator.remove() + } + } + if (list.size > 0) { + list[0].selected = true + mChoosePlanAdapter.setData(list, true) + } + } + } + } + }) + } + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSelectChoosePlanContinue -> Intent( + mContext, SureSubscriptionPlanActivity::class.java + ).let { + if (mChoosePlanAdapter.getData().isNotEmpty()) { + val cPlan = mChoosePlanAdapter.getData()[mSelectPlanIndex] + it.putExtra(ConstantString.SetMeal, cPlan) + it.putExtra(ConstantString.Upgrade, isUpgrade) + it.putExtra(ConstantString.LkSetMeal, mOrderBean) + it.putExtra(ConstantString.RechargeType, mRechargeType) + startActivity(it) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/MySubscriptionActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/MySubscriptionActivity.kt new file mode 100644 index 0000000..73e325d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/MySubscriptionActivity.kt @@ -0,0 +1,92 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import androidx.activity.viewModels +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.MySubscriptionAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityMySubscriptionBinding +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +class MySubscriptionActivity : + BaseActivity(ActivityMySubscriptionBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + private lateinit var mSubscriptionAdapter: MySubscriptionAdapter + private var mPosition = 0 + + override fun getTopBar() = mViewBinding.ilMySubscriptionTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_subscription) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mViewBinding.apply { + mSubscriptionAdapter = MySubscriptionAdapter(mContext, null) +// .apply { +// setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { +// override fun onItemClick(itemView: View?, pos: Int) { +// Intent(mContext, SubscriptionDetailActivity::class.java).let { +// it.putExtra(ConstantString.SetMeal, getData()[pos]) +// startActivity(it) +// } +// } +// }) +// } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvMySubscriptionList, mSubscriptionAdapter, top = AppUtils.dpToPx(10) + ) + } + } + + override fun onResume() { + super.onResume() + mSubscriptionViewModel.getSubscriptionsOrder() + } + + override fun liveDataObserve() { +// XEventBus.observe(this, EventName.PayBack) { +// mSubscriptionViewModel.getSubscriptionsOrder() +// } + mSubscriptionViewModel.apply { + mSubscriptionsOrderLiveData.observe(this@MySubscriptionActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + mSubscriptionAdapter.setData(list, true) + } + } + }) + } + + mUpdateStatusListLiveData.observe(this@MySubscriptionActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_successful) + mSubscriptionAdapter.getData()[mPosition].let { bean -> + bean.subscriptionStatus = + if (bean.subscriptionStatus == ConstantInt.Close) ConstantInt.Open + else ConstantInt.Close + mSubscriptionAdapter.notifyItemChanged(mPosition) + mViewBinding.rvMySubscriptionList.smoothScrollToPosition(mPosition) + } + } + }) + } + } + } + + fun updateSubscriptionStatus(subscriptionId: String, status: Int, position: Int) { + mPosition = position + val messageId = if (0 == status) R.string.txt_auto_recharge_title + else R.string.txt_auto_recharge_content + ViewUtil.instance.operateDialogTips(mContext, messageId) { + mSubscriptionViewModel.updateSubscriptionStatus(subscriptionId, status) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentMethodActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentMethodActivity.kt new file mode 100644 index 0000000..a985d24 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentMethodActivity.kt @@ -0,0 +1,76 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import androidx.fragment.app.Fragment +import androidx.viewpager2.widget.ViewPager2 +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.ViewPagerAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivityPaymentMethodBinding +import com.abbidot.tracker.ui.fragment.subscribe.CreditCardPaymentFragment +import com.abbidot.tracker.ui.fragment.subscribe.PaypalPaymentFragment +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil + +class PaymentMethodActivity : + BaseActivity(ActivityPaymentMethodBinding::inflate) { + + var mOrderBean: SubscriptionsOrderBean? = null + + //设备充值类型,0=首次设备充值激活,1=å·²æ·»åŠ è®¾å¤‡å†æ¬¡æ·»åŠ è®¾å¤‡å……å€¼ï¼Œ2=给当å‰çš„设备续费或者å‡çº§å¥—é¤ + var mRechargeType = ConstantInt.Type1 + lateinit var mFragments: MutableList + + override fun getTopBar() = mViewBinding.ilPaymentMethodTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_payment_method) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mOrderBean = Util.getParcelableAdaptive( + intent, ConstantString.LkSetMeal, SubscriptionsOrderBean::class.java + ) + mRechargeType = getInt(ConstantString.RechargeType, ConstantInt.Type1) + } + + mFragments = mutableListOf( + CreditCardPaymentFragment.newInstance(mContext), + PaypalPaymentFragment.newInstance(mContext) + ) + + mViewBinding.apply { + rgSwitchPaymentMethod.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + rbPaymentMethodCreditCard.id -> vp2SwitchPaymentMethod.currentItem = 0 + rbPaymentMethodPaypal.id -> vp2SwitchPaymentMethod.currentItem = 1 + } + } + + vp2SwitchPaymentMethod.let { + it.adapter = ViewPagerAdapter(mFragments, this@PaymentMethodActivity) + ViewUtil.instance.setViewPager2Config(it, + object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + when (position) { + 0 -> rgSwitchPaymentMethod.check(rbPaymentMethodCreditCard.id) + 1 -> rgSwitchPaymentMethod.check(rbPaymentMethodPaypal.id) + } + } + }) + } + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.PayBack) { + finish() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt new file mode 100644 index 0000000..8637eea --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/PaymentSuccessActivity.kt @@ -0,0 +1,237 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.Intent +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import androidx.core.content.ContextCompat +import coil.load +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityPaymentSuccessBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel +import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.clj.fastble.BleManager + +class PaymentSuccessActivity : + BaseActivity(ActivityPaymentSuccessBinding::inflate) { + + private val mAddTrackerViewModel: AddTrackerDeviceViewModel by viewModels() + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + + private var mPayResult: PayResultBean? = null + private var mMac = "" + + override fun getTopBar() = null + + override fun initData() { + super.initData() + intent.extras?.apply { + mPayResult = Util.getParcelableAdaptive( + intent, ConstantString.Amount, PayResultBean::class.java + ) + } + + mViewBinding.apply { + ivPaymentSuccessAnim.load(R.drawable.pwd_reset_successful_done) + mPayResult?.let { + +// if (it.rechargeType == ConstantInt.Type0) { +// btnPaymentSuccessContinue.setText(R.string.txt_continue) +// } + if (it.rechargeType != ConstantInt.Type2) { + btnPaymentSuccessContinue.isEnabled = false + //刷新设备绑定 + mAddTrackerViewModel.updatePayDeviceState( + this@PaymentSuccessActivity, it.deviceId + ) + } + + tvPaymentSuccessDeviceId.text = it.deviceOutId + tvPaymentSuccessExpiresOnDate.text = Utils.stringToDate( + it.expirationTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN7 + ) + val times = Utils.getDayToYearMonthDay(it.surplusDays) + ilPaymentSuccessCountDownLayout.tvAddSuccessDeviceExpiresDays.text = times[0] + ilPaymentSuccessCountDownLayout.tvAddSuccessDeviceExpiresHours.text = times[1] + ilPaymentSuccessCountDownLayout.tvAddSuccessDeviceExpiresMin.text = times[2] + } + setOnClickListenerViews( + btnPaymentSuccessContinue, ilPaymentSuccessBluetoothTips.trbBleConnectState + ) + + mMac = MMKVUtil.getString(MMKVKey.FirstDeviceMac) + if (TextUtils.isEmpty(mMac)) { + ilPaymentSuccessBluetoothTips.root.visibility = View.GONE + } else { + connectBle(mMac) + } + } + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + mViewBinding.ilPaymentSuccessBluetoothTips.trbBleConnectState.let { view -> + val bgColor = if (ble.conState == ConState.CONNECTED) { + setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type1) + view.text = getString(R.string.tracker_manage_set_ble_connect) + ContextCompat.getColor(mContext, R.color.cyan_color1) + } else { + setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type0) + view.text = getString(R.string.tracker_manage_set_ble_unconnect) + ContextCompat.getColor(mContext, R.color.red_color4) + } + view.setBackgroundColor(bgColor) + ViewUtil.instance.bleConStateToast(this, ble.conState, Gravity.CENTER) + } + } + + //æœç´¢è“ç‰™çš„è®¾å¤‡çŠ¶æ€ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type0) + if (conState == ConState.DEVICE_NOT_FOUND) { +// ViewUtil.instance.showDialog( +// mContext, +// R.string.txt_no_search_device, +// object : BaseDialog.OnDialogOkListener { +// override fun onOkClick(dialog: BaseDialog<*>) { +// dialog.dismiss() +// } +// }, +// okTextResId = R.string.txt_sure, +// cancelTextResId = R.string.txt_cancel +// ) + } + mViewBinding.ilPaymentSuccessBluetoothTips.trbBleConnectState.let { view -> + ViewUtil.instance.bleConActionState(this, view, conState) + } + } + + //接收è“ç‰™è¿”å›žæ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + mPayResult?.apply { + if (mMac == receiveData.mac) { + val data = receiveData.data + setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type1) + parseData(data) + } + } + } + + + mAddTrackerViewModel.mUpdatePayDeviceStateLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mViewBinding.btnPaymentSuccessContinue.isEnabled = true + MMKVUtil.putInt(MMKVKey.isBindDevice, ConstantInt.isBind) + XEventBus.post(EventName.RefreshDevice) + } + + override fun onRequestError(exceptionCode: String?) { + LogUtil.e("支付æˆåŠŸåŽï¼Œæ›´æ–°ç»‘定状æ€------->请求宠物数æ®é”™è¯¯onRequestErrorï¼Œå†æ¬¡è¯·æ±‚") + if (exceptionCode == mNetworkRequestsFailLimit) { + } else { + mAddTrackerViewModel.updatePayDeviceState( + this@PaymentSuccessActivity, mPayResult!!.deviceId + ) + } + } + }) + } + } + + /** + * è§£æžæ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 0x1A && data1 == 1 && data2 == 0) { + XEventBus.post(EventName.PayBack) + mPayResult?.let { + if (it.rechargeType == ConstantInt.Type0) { + val intent = Intent(mContext, FirstSetPetTypeActivity::class.java) + intent.putExtra(ConstantString.isFirstBind, true) + startActivity(intent) + } + } + finish() + } + } + } + + private fun connectBle(mac: String) { + //是å¦è¿žæŽ¥äº†è“牙 + if (BleManager.getInstance().isConnected(mac)) { + mViewBinding.ilPaymentSuccessBluetoothTips.trbBleConnectState.let { + it.setBackgroundColor( + ContextCompat.getColor(mContext, R.color.cyan_color1) + ) + it.text = getString(R.string.tracker_manage_set_ble_connect) + } + } else { + setButtonEnabled(mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type0) + mConnectionDeviceViewModel.connectDeviceToMac( + this@PaymentSuccessActivity, mac + ) + } + } + + /** + * 手动连接/断开设备 + */ + private fun connectionBtn(btnString: String) { + mPayResult?.apply { + if (btnString == getString(R.string.tracker_manage_set_ble_unconnect)) { + connectBle(mMac) + } else if (btnString == getString(R.string.tracker_manage_set_ble_connect)) { +// ViewUtil.instance.operateDialogTips(mContext, R.string.txt_disconnect_tips) { +// SRBleUtil.instance.disconnectToMac(mac) +// } + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilPaymentSuccessBluetoothTips.trbBleConnectState -> connectionBtn( + ilPaymentSuccessBluetoothTips.trbBleConnectState.text.toString() + ) + + btnPaymentSuccessContinue -> { + SRBleUtil.instance.getConnectMacDevice(mMac)?.let { + setButtonEnabled( + mViewBinding.btnPaymentSuccessContinue, ConstantInt.Type0 + ) + SRBleUtil.instance.writeData( + it.bleDevice, SRBleCmdUtil.instance.setWorkingStatus() + ) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt new file mode 100644 index 0000000..0f850a9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/RequestRefundActivity.kt @@ -0,0 +1,113 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.text.TextUtils +import android.view.View +import androidx.activity.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivityRequestRefundBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +class RequestRefundActivity : + BaseActivity(ActivityRequestRefundBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + //å¥—é¤ + private var mSetMealBean: SubscriptionsOrderBean? = null + + override fun getTopBar() = mViewBinding.ilRequestRefundTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_request_refund) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mSetMealBean = Util.getParcelableAdaptive( + intent, ConstantString.SetMeal, SubscriptionsOrderBean::class.java + ) + + mViewBinding.apply { + mSetMealBean?.let { + val orderId = getString(R.string.txt_order_id) + " ${it.orderNum}" + tvRequestRefundOrderId.text = orderId + val planName = getString(R.string.txt_plan) + " ${it.mealName}" + tvRequestRefundPlanName.text = planName + val refundRefund = getString(R.string.txt_refund) + ": " + String.format( + mContext.getString(R.string.txt_money_unit), it.totalAmountWithTax + ) + tvRequestRefundRefund.text = refundRefund + } + + setOnClickListenerViews(btnRequestRefundRecharge) + } + } + + override fun liveDataObserve() { + mSubscriptionViewModel.apply { + mCommitRefundListLiveData.observe(this@RequestRefundActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + if (isCanRefund == ConstantInt.Type0) { + showToast(R.string.txt_successful, true) + } else { + mSetMealBean?.let { meal -> + mSubscriptionViewModel.refund(meal.orderNum) + } + } + } + } + + override fun onRequestError(exceptionCode: String?) { + setButtonEnabled(mViewBinding.btnRequestRefundRecharge) + } + }) + } + + mRefundLiveData.observe(this@RequestRefundActivity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + showToast(R.string.txt_successful, true) + } + }) + } + } + } + + private fun commitRefund() { + val typeMessage = mViewBinding.etRequestRefundTypeMessage.text.toString() + if (TextUtils.isEmpty(typeMessage)) { + showToast(R.string.txt_not_null) + setButtonEnabled(mViewBinding.btnRequestRefundRecharge) + return + } + mSetMealBean?.apply { + mSubscriptionViewModel.commitRefund( + orderNum, + transactionId, + (totalAmountWithTax * 100).toInt(), + subscriptionId, + mealName, + typeMessage, + deviceId, + deviceOutId, + payType + ) + } + } + + override fun onClick(v: View?) { + setButtonEnabled(v!!) + mViewBinding.apply { + when (v) { + btnRequestRefundRecharge -> commitRefund() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionDetailActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionDetailActivity.kt new file mode 100644 index 0000000..3b55265 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionDetailActivity.kt @@ -0,0 +1,84 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SetMealBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.databinding.ActivitySubscriptionDetailBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.CountDownTimerViewModel + +class SubscriptionDetailActivity : + BaseActivity(ActivitySubscriptionDetailBinding::inflate) { + + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + + private var mSetMealBean: SetMealBean? = null + + override fun getTopBar() = mViewBinding.ilSubscribeDetailTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_subscription_detail) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mSetMealBean = + Util.getParcelableAdaptive(intent, ConstantString.SetMeal, SetMealBean::class.java) + } + + mViewBinding.apply { + mSetMealBean?.let { + tvSubscribeDetailDeviceOutId.text = it.mealId + tvSubscribeDetailPlanType.text = if (it.hotType == ConstantInt.Type0) { + btnSubscribeDetailEnd.visibility = View.VISIBLE + ilSubscribeDetailCountDown.root.visibility = View.GONE + btnSubscribeDetailRecharge.visibility = View.GONE + getString(R.string.txt_auto_renew) + } else { + btnSubscribeDetailRecharge.visibility = View.VISIBLE + ilSubscribeDetailCountDown.root.visibility = View.VISIBLE + btnSubscribeDetailEnd.visibility = View.GONE + mCountDownTimerViewModel.startCountDown( + (it.createdDate.toLong() - System.currentTimeMillis()) / 1000, 60 + ) + it.name + } + tvSubscribeDetailRenewYear.text = + String.format(mContext.getString(R.string.txt_renew_year), it.accountFee) + tvSubscribeDetailRenewsOn.text = + Utils.formatTime(it.createdDate.toLong(), Utils.DATE_FORMAT_PATTERN_EN6) + } + setOnClickListenerViews(btnSubscribeDetailRecharge, btnSubscribeDetailEnd) + } + } + + override fun liveDataObserve() { + mCountDownTimerViewModel.mCountDowningLiveData.observe(this) { + mViewBinding.ilSubscribeDetailCountDown.apply { + val times = Utils.getSecondToDayHourMin(it) + tvAddSuccessDeviceExpiresDays.text = times[0] + tvAddSuccessDeviceExpiresHours.text = times[1] + tvAddSuccessDeviceExpiresMin.text = times[2] + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSubscribeDetailEnd -> finish() + btnSubscribeDetailRecharge -> startActivity( + Intent( + mContext, SubscriptionPlanActivity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionHistoryActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionHistoryActivity.kt new file mode 100644 index 0000000..769e89c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionHistoryActivity.kt @@ -0,0 +1,60 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import androidx.activity.viewModels +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.SubscriptionHistoryAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivitySubscriptionHistoryBinding +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +class SubscriptionHistoryActivity : + BaseActivity(ActivitySubscriptionHistoryBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + private lateinit var mHistoryAdapter: SubscriptionHistoryAdapter + private var mDeviceId = "" + + override fun getTopBar() = mViewBinding.ilSubscriptionHistoryTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_subscription_history) + setLeftBackImage(R.drawable.icon_white_back_svg) + + mHistoryAdapter = SubscriptionHistoryAdapter(this@SubscriptionHistoryActivity, null) + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvSubscriptionHistoryList, mHistoryAdapter, bottom = AppUtils.dpToPx(12) + ) + } + + intent?.extras?.apply { + mDeviceId = getString(ConstantString.DeviceId, "") + } + } + + override fun onResume() { + super.onResume() + mSubscriptionViewModel.getSubscriptionsHistory(mDeviceId) + } + + override fun liveDataObserve() { +// XEventBus.observe(this, EventName.UpdateData) { +// mSubscriptionViewModel.getSubscriptionsHistory(mDeviceId) +// } + mSubscriptionViewModel.mSubscriptionsHistoryLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + mHistoryAdapter.setData(list, true) + } + } + }) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt new file mode 100644 index 0000000..52c1804 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SubscriptionPlanActivity.kt @@ -0,0 +1,140 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.Intent +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.SubscriptionPlanAdapter +import com.abbidot.tracker.adapter.SubscriptionPlanDetailAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivitySubscriptionPlanBinding +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionManageViewModel + +/** + * 选择订阅计划 + */ +class SubscriptionPlanActivity : + BaseActivity(ActivitySubscriptionPlanBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + private lateinit var mPlanAdapter: SubscriptionPlanAdapter + private lateinit var mPlanDetailAdapter: SubscriptionPlanDetailAdapter + + private var mSelectPlanIndex = 0 + + private var mOrderBean: SubscriptionsOrderBean? = null + + //设备充值类型,0=首次设备充值激活,1=å·²æ·»åŠ è®¾å¤‡å†æ¬¡æ·»åŠ è®¾å¤‡å……å€¼ï¼Œ2=给当å‰çš„设备续费或者å‡çº§å¥—é¤ + private var mRechargeType = ConstantInt.Type1 + + override fun getTopBar() = mViewBinding.subscribePlanTopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_choose_your_plan) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mOrderBean = Util.getParcelableAdaptive( + intent, ConstantString.LkSetMeal, SubscriptionsOrderBean::class.java + ) + val isFirstBind = getBoolean(ConstantString.isFirstBind, false) + if (isFirstBind) mRechargeType = ConstantInt.Type0 + } + + addListData() + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewGridLayout( + mContext, + rvSubscribePlanList, + mPlanAdapter, + 2, + AppUtils.dpToPx(140), + offset = AppUtils.dpToPx(44) + ) + + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, rvSubscribePlanDetailList, mPlanDetailAdapter, bottom = AppUtils.dpToPx(8) + ) + + setOnClickListenerViews(btnSelectSubscribePlanContinue) + } + + mSubscriptionViewModel.getPackageType() + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.PayBack) { + finish() + } + mSubscriptionViewModel.mPackageTypeLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { list -> + list[0].selected = true + mPlanAdapter.setData(list, true) + mPlanDetailAdapter.setData(list[0].list, true) + } + } + }) + } + } + + private fun addListData() { + mPlanAdapter = SubscriptionPlanAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val list = getData() + if (pos > list.size - 1) return + val dataBean = list[pos] + if (dataBean.selected) return + for (i in 0 until list.size) { + val data = list[i] + if (data.selected) { + data.selected = false + notifyItemChanged(i) + break + } + } + dataBean.selected = true + mSelectPlanIndex = pos + notifyItemChanged(pos) + + mPlanDetailAdapter.setData(dataBean.list, true) + } + }) + } + + mPlanDetailAdapter = SubscriptionPlanDetailAdapter(mContext, null) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSelectSubscribePlanContinue -> Intent( + mContext, ChoosePlanActivity::class.java + ).let { + if (mPlanAdapter.getData().isNotEmpty()) { + it.putExtra( + ConstantString.Title, mPlanAdapter.getData()[mSelectPlanIndex].name + ) + it.putExtra(ConstantString.LkSetMeal, mOrderBean) + it.putExtra(ConstantString.RechargeType, mRechargeType) + startActivity(it) + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt new file mode 100644 index 0000000..c815546 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt @@ -0,0 +1,350 @@ +package com.abbidot.tracker.ui.activity.subscribe + +import android.content.Intent +import android.graphics.Paint +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.activity.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +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.adapter.SureSubscribeSummaryAdapter +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.PackageBean +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.ActivitySureSubscriptionPlanBinding +import com.abbidot.tracker.ui.activity.WebViewActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionManageViewModel +import kotlin.math.abs + +class SureSubscriptionPlanActivity : + BaseActivity(ActivitySureSubscriptionPlanBinding::inflate) { + + private val mSubscriptionViewModel: SubscriptionManageViewModel by viewModels() + + private var mPackageBean: PackageBean? = null + private var mOrderBean: SubscriptionsOrderBean? = null + + //æ¯å¹´çš„ä¿é™©æœåŠ¡è´¹ç”¨ + private val mInsuranceMoney = 12.90 + + //ä¿é™©æ€»è´¹ç”¨ + private var mSumInsuranceMoney = 0.0 + + //税率 + private val mTaxRate = 0.0825 + + //付款的总金é¢(å«ç¨Ž) + private var mTotalWithTaxMoney = 0.0 + + //付款的总金é¢(ä¸å«ç¨Ž) + private var mTotalMoney = 0.0 + + //æ˜¯å¦æ˜¯å‡çº§å¥—é¤ + private var isUpgrade = false + + //设备充值类型,0=首次设备充值激活,1=å·²æ·»åŠ è®¾å¤‡å†æ¬¡æ·»åŠ è®¾å¤‡å……å€¼ï¼Œ2=给当å‰çš„设备续费或者å‡çº§å¥—é¤ + private var mRechargeType = ConstantInt.Type1 + + //å‡çº§å¥—é¤è¿˜å‰©ä¸‹å¤šå°‘差价 + private var mResidualMoney = 0.0 + + private lateinit var mSummaryAdapter: SureSubscribeSummaryAdapter + + override fun getTopBar() = mViewBinding.sureSubscribePlan1TopBar.titleTopBar + + override fun initData() { + super.initData() + setTopBarTitle(R.string.txt_confirm_plan) + setLeftBackImage(R.drawable.icon_white_back_svg) + + intent.extras?.apply { + mPackageBean = + Util.getParcelableAdaptive(intent, ConstantString.SetMeal, PackageBean::class.java) + mOrderBean = Util.getParcelableAdaptive( + intent, ConstantString.LkSetMeal, SubscriptionsOrderBean::class.java + ) + isUpgrade = getBoolean(ConstantString.Upgrade, false) + mRechargeType = getInt(ConstantString.RechargeType, ConstantInt.Type1) + } + + mSummaryAdapter = SureSubscribeSummaryAdapter(this, mutableListOf()) + + mOrderBean?.let { + if (isUpgrade) { + it.isUpdateOrder = ConstantInt.Type1 + //套餿€»å¤©æ•° + val totalDay = if (it.mealUnit == ConstantString.PackageUnitYear) { + it.mealPeriod * 365 + } else { + 30 + } + mResidualMoney = + ((it.totalAmountWithTax - it.tax - it.reactivatePrice) / totalDay) * it.surplusDays + } else { + it.isUpdateOrder = ConstantInt.Type0 + } + } + + mViewBinding.apply { + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext, + ilSubscribePlanSummary.rvSureSubscribePlanSummary, + mSummaryAdapter, + bottom = AppUtils.dpToPx(4) + ) + + mOrderBean?.let { + ilSubscribePlanDetail.tvSureSubscribePlanDeviceId.text = it.deviceOutId + val nowTimestamp = System.currentTimeMillis() + + mPackageBean?.let { p -> + val renewalString = if (p.mealUnit == ConstantString.PackageUnitYear) { + ilSubscribePlanDetail.tvSureSubscribePlanPer.text = + String.format(getString(R.string.txt_year_unit), p.period) + val renewalTimestamp = + Utils.getAfterHowTimestamp(nowTimestamp, p.period * 365L) + val renewalDate = + Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7) + String.format( + getString(R.string.txt_renewal_year), + Utils.formatDecimal(p.autoRenewPrice, 2), + renewalDate + ) + } else { + ilSubscribePlanDetail.tvSureSubscribePlanPer.text = + String.format(getString(R.string.txt_month_unit), p.period) + val renewalTimestamp = Utils.getAfterHowTimestamp(nowTimestamp, 30L) + val renewalDate = + Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7) + String.format( + getString(R.string.txt_renewal_month), + Utils.formatDecimal(p.autoRenewPrice, 2), + renewalDate + ) + } + ilSubscribePlanDetail.tvSureSubscribePlanUnderused.text = renewalString + + val insuranceMoneyString = + "${p.period} x $${Utils.formatDecimal(mInsuranceMoney, 2)}" + ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePer.text = + insuranceMoneyString + + val packageName = "${p.planName}(${p.planCategory})" + ilSubscribePlanDetail.tvSureSubscribePlanName.text = packageName + val price = if (p.discountedPrice > 0.0) p.discountedPrice else p.planPrice + val priceString = String.format( + getString(R.string.txt_money_unit), Utils.formatDecimal(price, 2) + ) + ilSubscribePlanDetail.tvSureSubscribePlanMoney.text = priceString + + ViewUtil.instance.addMenuBean( + mSummaryAdapter.getData(), + p.planName, + Utils.formatDecimal(price, 2), + colorRedId = R.color.data_black_color + ) + mTotalMoney += price + mSumInsuranceMoney = + Utils.formatDecimal(mInsuranceMoney * p.period, 2).toDouble() + ViewUtil.instance.addMenuBean( + mSummaryAdapter.getData(), + getString(R.string.txt_annual_care_text), + Utils.formatDecimal(mSumInsuranceMoney, 2), + colorRedId = R.color.data_black_color + ) + mTotalMoney += mSumInsuranceMoney + + if (isUpgrade) { + mTotalMoney -= mResidualMoney + ViewUtil.instance.addMenuBean( + mSummaryAdapter.getData(), + getString(R.string.txt_residual_value), + Utils.formatDecimal(mResidualMoney, 2), + colorRedId = R.color.red_color5, + isSwitch = true + ) + } + ViewUtil.instance.addMenuBean( + mSummaryAdapter.getData(), + getString(R.string.txt_sales_tax), + "0", + colorRedId = R.color.data_black_color + ) + } + + //åˆ¤æ–­å¥—é¤æ˜¯å¦è¿‡æœŸ + if (!TextUtils.isEmpty(it.orderNum) && it.surplusDays == 0L && it.subscriptionStatus == ConstantInt.Close) { + mOrderBean?.reactivation = 1 + mSubscriptionViewModel.getReactivationFee(it.orderNum) + } else { + mOrderBean?.reactivation = 0 + mOrderBean?.reactivatePrice = 0.0 + updateMoney() + } + } + + //添加下划线 + ilSubscribePlanDetail.tvSureSubscribePlanTermsConditions.paint.flags = + Paint.UNDERLINE_TEXT_FLAG + + ilSubscribePlanInsurance.cbSureSubscribeInsureSwitch.setOnCheckedChangeListener { buttonView, isChecked -> + mOrderBean?.let { order -> + if (isUpgrade && order.annualCareType == ConstantInt.Type1) { + ilSubscribePlanInsurance.cbSureSubscribeInsureSwitch.isChecked = !isChecked + showToast(R.string.txt_annual_care_included, gravity = Gravity.CENTER) + return@setOnCheckedChangeListener + } + val list = mSummaryAdapter.getData() + if (isChecked) { + MenuTxtBean( + getString(R.string.txt_annual_care_text), + Utils.formatDecimal(mSumInsuranceMoney, 2) + ).let { + it.colorRedId = R.color.data_black_color + list.add(1, it) + } + mTotalMoney += mSumInsuranceMoney + } else { + list.removeAt(1) + mTotalMoney -= mSumInsuranceMoney + mSummaryAdapter.notifyItemRemoved(1) + } + updateMoney() + } + } + setOnClickListenerViews( + btnSureSubscribePlan1Continue, + ilSubscribePlanDetail.tvSureSubscribePlanTermsConditions, + ilSubscribePlanInsurance.ivSureSubscribePlanInsurance + ) + } + } + + override fun liveDataObserve() { + XEventBus.observe(this, EventName.PayBack) { + if (isUpgrade) { + //å‡çº§å¥—餿ˆåŠŸ + MMKVUtil.putInt(MMKVKey.MealType, ConstantInt.PremiumPackage) + } + //通知首页刷新宠物信æ¯ï¼Œé˜²æ­¢æ²¡æœ‰åŠ è½½,显示Fragment使用è€çš„套餿•°æ®,å‡çº§å¥—é¤å’Œå¥—é¤è¿‡æœŸå……值使用 + XEventBus.post(EventName.RefreshPackage) + finish() + } + mSubscriptionViewModel.mReactivationFeeLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mOrderBean?.reactivatePrice = this + mSummaryAdapter.getData().add(2, MenuTxtBean( + getString(R.string.txt_reactivation), Utils.formatDecimal(this, 2) + ).apply { + colorRedId = R.color.data_black_color + }) + mTotalMoney += this + } + updateMoney() + } + }) + } + } + + private fun updateMoney() { + mViewBinding.apply { + val list = mSummaryAdapter.getData() + val taxMoney = Utils.formatDecimal(mTaxRate * mTotalMoney, 2).toDouble() + mOrderBean?.tax = taxMoney + list[list.size - 1].menuValue = taxMoney.toString() + mTotalWithTaxMoney = taxMoney + mTotalMoney + mTotalWithTaxMoney = abs(mTotalWithTaxMoney) + ilSubscribePlanSummary.ilSureSubscribePlanTotalLayout.tvSubscribeSummaryItemMoney.text = + String.format( + getString(R.string.txt_money_unit), Utils.formatDecimal(mTotalWithTaxMoney, 2) + ) + mSummaryAdapter.notifyItemRangeChanged(0, list.size) + + //NestedScrollView缓慢自动滑倒底部 + svSubscribePlanLayout.post { + svSubscribePlanLayout.smoothScrollTo(0, svSubscribePlanLayout.bottom) + } +// svSubscribePlanLayout.post { svSubscribePlanLayout.pageScroll(View.FOCUS_DOWN) } + } + } + + private fun createOrder() { + mOrderBean?.apply { + username = MMKVUtil.getString(MMKVKey.UserName) + annualCareType = + if (mViewBinding.ilSubscribePlanInsurance.cbSureSubscribeInsureSwitch.isChecked) { + annualCarePrice = mSumInsuranceMoney + 1 + } else { + annualCarePrice = 0.0 + 0 + } + //是å¦ä½¿ç”¨ä¼˜æƒ ç  1:是 0:å¦ + useCoupon = 0 + couponCode = "" + couponPrice = 0.0 + mPackageBean?.let { cPlan -> + mealPrice = cPlan.planPrice + mealDiscountPrice = cPlan.discountedPrice + mealName = cPlan.planName + mealId = cPlan.mealId + mealPeriod = cPlan.period + mealUnit = cPlan.mealUnit + planCategory = cPlan.planCategory +// autoRenewPrice = Utils.formatDecimal(cPlan.autoRenewPrice * mTaxRate, 2).toDouble() + autoRenewPrice = cPlan.autoRenewPrice + mealDesc = + mViewBinding.ilSubscribePlanDetail.tvSureSubscribePlanMoney.text.toString() + mViewBinding.ilSubscribePlanDetail.tvSureSubscribePlanPer.text.toString() + } + totalAmountWithTax = Utils.formatDecimal(mTotalWithTaxMoney, 2).toDouble() + Intent(mContext, PaymentMethodActivity::class.java).let { + it.putExtra(ConstantString.LkSetMeal, this) + it.putExtra(ConstantString.RechargeType, mRechargeType) + startActivity(it) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSureSubscribePlan1Continue -> createOrder() + ilSubscribePlanDetail.tvSureSubscribePlanTermsConditions -> { + val url = if (AppUtils.isChina()) { + "file:///android_asset/subscription_terms_conditions_en.html" + } else { + "file:///android_asset/subscription_terms_conditions_en.html" + } + WebViewActivity.startWebViewActivity( + mActivity, getString(R.string.txt_service_contract), url + ) + } + + ilSubscribePlanInsurance.ivSureSubscribePlanInsurance -> { + val url = if (AppUtils.isChina()) { + "file:///android_asset/annual_protection_plan_en.html" + } else { + "file:///android_asset/annual_protection_plan_en.html" + } + WebViewActivity.startWebViewActivity( + mActivity, getString(R.string.txt_service_contract), url + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/CountryCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/CountryCommon.kt new file mode 100644 index 0000000..4c13170 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/CountryCommon.kt @@ -0,0 +1,89 @@ +package com.abbidot.tracker.ui.common + +import android.content.Context +import android.text.TextUtils +import android.view.View +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.TextViewAdapter +import com.abbidot.tracker.bean.CountryCodeBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.dialog.CommonListDialog + +/** + *Created by .yzq on 2024/7/10/010. + * @link + * @description: + */ +class CountryCommon(context: Context, listener: BaseRecyclerAdapter.OnItemClickListener) { + + private var mCountryCodeDialog: CommonListDialog? = null + private var mCountryCodeAdapter: TextViewAdapter + private var mCountryCode = "" + private var mCountry = "" + + private var mContext: Context = context + + init { + mCountryCodeAdapter = TextViewAdapter(context, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + if (getData().isNotEmpty()) { + val dataBean = getData()[pos] + mCountryCode = dataBean.value + mCountry = dataBean.name + mCountryCodeDialog?.dismiss() + listener.onItemClick(itemView, pos) + } + } + }) + } + } + + fun getCountryCode() = mCountryCode + fun getCountry() = mCountry + + /** + * è®¾ç½®å›½å®¶ä»£ç æ•°æ® + */ + fun setCountryCodeData(dataList: MutableList) { + val countryCodeList = mutableListOf() + val countryName = mContext.resources.getStringArray(R.array.country_name) + val countryCode = mContext.resources.getIntArray(R.array.country_code) + for (code in dataList) { + for (i in countryCode.indices) { + if (code.countryCode == countryCode[i]) { + val dataBean = DataBean() + dataBean.value = code.countryCode.toString() + dataBean.name = countryName[i] + countryCodeList.add(dataBean) + break + } + } + } + mCountryCodeAdapter.setData(countryCodeList, true) + } + + fun showCountryCodeDialog() { + if (null == mCountryCodeDialog) { + mCountryCodeDialog = + CommonListDialog(mContext, mCountryCodeAdapter, 3, 3, dialogHeightDp = 300) + } + mCountryCodeDialog?.show() + } + + fun codeToCountry(code: String): String { + var country = "" + if (TextUtils.isEmpty(code)) return country + val list = mCountryCodeAdapter.getData() + for (data in list) { + if (data.value == code) { + country = data.name + mCountryCode = data.value + mCountry = data.name + break + } + } + return country + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/MyCropImageContract.kt b/app/src/main/java/com/abbidot/tracker/ui/common/MyCropImageContract.kt new file mode 100644 index 0000000..d05607d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/MyCropImageContract.kt @@ -0,0 +1,41 @@ +package com.abbidot.tracker.ui.common + +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.os.Parcelable +import androidx.activity.result.contract.ActivityResultContract +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.ui.activity.MyCropImageActivity +import com.canhub.cropper.CropImage +import com.canhub.cropper.CropImageView +import com.huantansheng.easyphotos.models.album.entity.Photo + +/** + *Created by .yzq on 2022/4/24/024. + * @link + * @description:用于接收跳转è£å‰ªå›¾ç‰‡çš„é¡µé¢ + */ +class MyCropImageContract(aspectRatioX: Int, aspectRatioY: Int) : + ActivityResultContract() { + + private val mAspectRatioX = aspectRatioX + private val mAspectRatioY = aspectRatioY + + override fun createIntent(context: Context, input: Photo): Intent { + return Intent(context, MyCropImageActivity::class.java).apply { + putExtra(ConstantString.Photo, input) + putExtra(ConstantString.Type, mAspectRatioX) + putExtra(ConstantString.Index, mAspectRatioY) + } + } + + override fun parseResult(resultCode: Int, intent: Intent?): CropImageView.CropResult { + val result = intent?.getParcelableExtra( + CropImage.CROP_IMAGE_EXTRA_RESULT + ) as? CropImage.ActivityResult? + + return if (result == null || resultCode == Activity.RESULT_CANCELED) CropImage.CancelledResult + else result + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/PermissionsActivityCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/PermissionsActivityCommon.kt new file mode 100644 index 0000000..d353725 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/PermissionsActivityCommon.kt @@ -0,0 +1,225 @@ +package com.abbidot.tracker.ui.common + +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.location.LocationManager +import android.provider.Settings +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.receiver.GPSMonitorReceiver +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists + +/** + *Created by .yzq on 2024/6/12/012. + * @link + * @description: + */ +class PermissionsActivityCommon(context: Context) { + + private val mLocationManager = + context.getSystemService(Context.LOCATION_SERVICE) as LocationManager + private val mContext = context + private var mGPSListenerReceiver: GPSMonitorReceiver? = null + + /** + * 注册GPS开关广播 + */ + fun registerGpsReceiver() { + if (null == mGPSListenerReceiver) { + mGPSListenerReceiver = GPSMonitorReceiver(mLocationManager) + } + val intentFilter = IntentFilter() + intentFilter.addAction(LocationManager.PROVIDERS_CHANGED_ACTION) + // 注册广播 + mContext.registerReceiver(mGPSListenerReceiver!!, intentFilter) + } + + fun unregisterGpsReceiver() { + mGPSListenerReceiver?.let { + mContext.unregisterReceiver(it) + } + } + + /** + * 添加listæ•°æ® + */ + fun addListData(context: Context): MutableList { + val list = mutableListOf() + DataBean().apply { + name = context.getString(R.string.txt_bluetooth_enabled) + value = context.getString(R.string.txt_ble_permissions_tip) + list.add(this) + } + DataBean().apply { + name = context.getString(R.string.txt_location_enabled) + value = context.getString(R.string.txt_location_permissions_tip) + list.add(this) + } + DataBean().apply { + name = context.getString(R.string.txt_receive_notice) + value = context.getString(R.string.txt_notice_permissions_tip) + list.add(this) + } + return list + } + + /** + * 更新选中的状æ€item + */ + fun updateDataBeanSelectedItem( + adapter: BaseRecyclerAdapter<*>, list: MutableList, position: Int + ) { + for (i in 0 until list.size) { + val data = list[i] + if (i == position) continue + if (data.selected) { + data.selected = false + adapter.notifyItemChanged(i) + break + } + } + list[position].apply { + selected = !selected + if (state == ConstantInt.SpecialType) state = ConstantInt.Type0 + } + adapter.notifyItemChanged(position) + } + + /** + * æ›´æ–°æƒé™çŠ¶æ€ + */ + fun updatePermissionsState(adapter: BaseRecyclerAdapter, errorType: Int) { + val list = adapter.getData() + + + //检测è“牙æƒé™å’Œè“牙开关 + if (XXPermissions.isGrantedPermissions( + mContext, mutableListOf( + PermissionLists.getBluetoothScanPermission(), + PermissionLists.getBluetoothConnectPermission() + ) + ) && SRBleUtil.instance.isBlueEnable(mContext) + ) { + list[0].state = ConstantInt.Type1 + list[0].selected = false + adapter.notifyItemChanged(0) + } else { + if (list[0].state == ConstantInt.Type1) { + list[0].state = errorType + adapter.notifyItemChanged(0) + } + } + mutableListOf( + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + //æ£€æŸ¥å®šä½æƒé™ + if (XXPermissions.isGrantedPermissions( + mContext, mutableListOf( + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + ) && mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) + ) { + list[1].state = ConstantInt.Type1 + list[1].selected = false + adapter.notifyItemChanged(1) + } else { + if (list[1].state == ConstantInt.Type1) { + list[1].state = errorType + adapter.notifyItemChanged(1) + } + } + + //检测通知æƒé™ + if (XXPermissions.isGrantedPermissions( + mContext, mutableListOf( + PermissionLists.getPostNotificationsPermission(), + PermissionLists.getNotificationServicePermission() + ) + ) + ) { + list[2].state = ConstantInt.Type1 + list[2].selected = false + adapter.notifyItemChanged(2) + } else { + if (list[2].state == ConstantInt.Type1) { + list[2].state = errorType + adapter.notifyItemChanged(2) + } + } + + //自动展开更多的说明项 + for (i in 0 until list.size) { + val data = list[i] + if (data.state == ConstantInt.Type0) { + data.selected = true + adapter.notifyItemChanged(i) + break + } + } + } + + /** + * æ“作è“牙æƒé™å’Œå¼€å…³ + */ + fun operateBluetooth() { + Util.checkPermissions( + mContext, + object : Util.RequestPermissionCallback { + override fun onRequestPermissionSuccess() { + if (BleManager.getInstance().isSupportBle) { + SRBleUtil.instance.openBluetooth(mContext) + } + } + }, + "è“牙æƒé™", + PermissionLists.getBluetoothScanPermission(), + PermissionLists.getBluetoothConnectPermission() + ) + } + + /** + * æ“ä½œå®šä½æƒé™å’ŒGPS开关 + */ + fun operateGPSLocation() { + Util.checkPermissions( + mContext, + object : Util.RequestPermissionCallback { + override fun onRequestPermissionSuccess() { + if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) + mContext.startActivity(intent) + } + } + }, + "å®šä½æƒé™", + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + } + + /** + * æ“作通知æƒé™ + */ + fun operateNotifications(adapter: BaseRecyclerAdapter, expansionState: Int) { + Util.checkPermissions( + mContext, + object : Util.RequestPermissionCallback { + override fun onRequestPermissionSuccess() { + updatePermissionsState(adapter, expansionState) + } + }, + "通知æƒé™", + PermissionLists.getPostNotificationsPermission(), + PermissionLists.getNotificationServicePermission() + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/PetProfileCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/PetProfileCommon.kt new file mode 100644 index 0000000..a71f764 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/PetProfileCommon.kt @@ -0,0 +1,196 @@ +package com.abbidot.tracker.ui.common + +import android.content.Context +import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.widget.NestedScrollView +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.PetLabelsAdapter +import com.abbidot.tracker.adapter.TextViewAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.LabelBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.dialog.CommonListDialog +import com.abbidot.tracker.dialog.SelectPetLabelDialog +import com.abbidot.tracker.dialog.ShowCalenderDialog +import com.abbidot.tracker.util.ViewUtil +import com.haibin.calendarview.Calendar + +/** + *Created by .yzq on 2024/6/16/016. + * @link + * @description: + */ +class PetProfileCommon( + context: Context, showSelectLabelsRecyclerView: RecyclerView, petBean: PetBean? +) { + + private val mContext = context + private val mShowSelectLabelsRecyclerView = showSelectLabelsRecyclerView + + private var mSelectLabelList: MutableList = mutableListOf() + private val mPetBean = petBean + + private var mSelectLabelDialog: SelectPetLabelDialog? = null + private var mBirthdayDialog: ShowCalenderDialog? = null + private var mProfileSexDialog: CommonListDialog? = null + + private lateinit var mLabelsAdapter: PetLabelsAdapter + private lateinit var mSexAdapter: TextViewAdapter + private val mSelectLabelsAdapter: PetLabelsAdapter = + PetLabelsAdapter(mContext, mSelectLabelList) + + init { + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext, + mShowSelectLabelsRecyclerView, + mSelectLabelsAdapter, + right = AppUtils.dpToPx(6), + bottom = AppUtils.dpToPx(8) + ) + + mLabelsAdapter = PetLabelsAdapter(mContext, null).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + if (mLabelsAdapter.getData().isNotEmpty()){ + val label = mLabelsAdapter.getData()[pos] + label.check = !label.check + notifyItemChanged(pos) + } + } + }) + } + } + + fun getLabelData(labels: MutableList) { + val labelList = mutableListOf() + for (i in 0 until labels.size) { + LabelBean().run { + name = labels[i] + if (mSelectLabelList.size > 0) { + for (label in mSelectLabelList) { + if (name == label.name) check = true + } + } + labelList.add(this) + } + } + mLabelsAdapter.setData(labelList, true) + } + + /** + * 显示标签弹窗 + */ + fun showLabelDialog(okListener: BaseDialog.OnDialogOkListener) { + if (null == mSelectLabelDialog) { + mSelectLabelDialog = SelectPetLabelDialog(mContext, mLabelsAdapter).apply { + setOkListener(okListener) + } + } + mSelectLabelDialog?.show() + } + + /** + * 显示已选的标签 + */ + fun showSelectPetLabels( + labelTitle: TextView, scrollView: NestedScrollView + ) { + val labelList = mLabelsAdapter.getData() + mSelectLabelList.clear() + mSelectLabelsAdapter.notifyItemRangeChanged(0, mSelectLabelList.size) + for (lab in labelList) { + if (lab.check) { + LabelBean().apply { + name = lab.name + mSelectLabelList.add(this) + } + } + } + mSelectLabelsAdapter.setData(mSelectLabelList, true) + + val textColor = if (mSelectLabelList.size > 0) ContextCompat.getColor( + mContext, R.color.data_black_color + ) + else ContextCompat.getColor(mContext, R.color.block_color2) + labelTitle.setTextColor(textColor) + + scrollView.fullScroll(View.FOCUS_DOWN) + + mPetBean?.apply { + labels = if (mSelectLabelList.size > 0) mSelectLabelList.joinToString(",") { it.name } + else "" + } + } + + /** + * 显示生日弹窗 + */ + fun showBirthdayDialog(showSelectDateView: TextView) { + if (null == mBirthdayDialog) { + val calendar = java.util.Calendar.getInstance() + val cYear = calendar.get(java.util.Calendar.YEAR) + mBirthdayDialog = + ShowCalenderDialog(mContext, object : BaseDialog.OnDialogSelectListener { + override fun onSelectClick(dialog: BaseDialog<*>, any: Any) { + if (any is Calendar) { + val selectBirthday = + Utils.formatTime(any.timeInMillis, Utils.DATE_FORMAT_PATTERN_EN3) + showSelectDateView.text = selectBirthday + mPetBean?.apply { + birthdayDate = + Utils.formatTime(any.timeInMillis, Utils.DATE_FORMAT_PATTERN_CN) + } + } + } + },minYear = cYear-20) + } + mBirthdayDialog?.show() + } + + /** + * è®¾ç½®æ€§åˆ«æ•°æ® + */ + fun setSexListData(profileSexTextView: TextView) { + val sexList = mutableListOf() + DataBean().run { + name = mContext.getString(R.string.pet_manage_gender_male) + menuType = ConstantInt.Man + sexList.add(this) + } + DataBean().run { + name = mContext.getString(R.string.pet_manage_gender_female) + menuType = ConstantInt.WoMan + sexList.add(this) + } + mSexAdapter = TextViewAdapter(mContext, sexList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val dataBean = sexList[pos] + mPetBean?.apply { + gender = dataBean.menuType + } + profileSexTextView.text = sexList[pos].name + mProfileSexDialog?.dismiss() + } + }) + } + } + + /** + * 显示性别弹窗 + */ + fun showSexDialog() { + if (null == mProfileSexDialog) { + mProfileSexDialog = CommonListDialog(mContext, mSexAdapter, 3, 3) + } + mProfileSexDialog?.show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/UnitSelectDialog.kt b/app/src/main/java/com/abbidot/tracker/ui/common/UnitSelectDialog.kt new file mode 100644 index 0000000..f572589 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/UnitSelectDialog.kt @@ -0,0 +1,52 @@ +package com.abbidot.tracker.ui.common + +import android.content.Context +import android.view.View +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.TextViewAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.dialog.CommonListDialog + +/** + *Created by .yzq on 2024/7/15/015. + * @link + * @description: + */ +class UnitSelectDialog(context: Context) { + + private val mContext = context + + private var mUnitDialog: CommonListDialog? = null + + /** + * 显示å•ä½é€‰æ‹©å¼¹çª— + */ + fun showUnitDialog(listener: BaseDialog.OnDialogSelectListener?) { + if (null == mUnitDialog) { + val heightUnitList = mutableListOf() + DataBean().run { + name = mContext.getString(R.string.txt_imperial) + state = ConstantInt.Type1 + heightUnitList.add(this) + } + DataBean().run { + name = mContext.getString(R.string.txt_metric) + state = ConstantInt.Type2 + heightUnitList.add(this) + } + val unitAdapter = TextViewAdapter(mContext, heightUnitList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mUnitDialog?.dismiss() + listener?.onSelectClick(mUnitDialog!!, heightUnitList[pos].state) + } + }) + } + mUnitDialog = CommonListDialog(mContext, unitAdapter, 3, 3) + } + mUnitDialog?.show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/EditWifiZoneMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/EditWifiZoneMapCommon.kt new file mode 100644 index 0000000..a951ba1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/EditWifiZoneMapCommon.kt @@ -0,0 +1,69 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.deprecated.ui.fragment.map.baidumap.NavigationBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.EditWiFiZoneGoogleMapFragment + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +class EditWifiZoneMapCommon : BaseMapCommon() { + + private var mEditZoneGoogleMapFragment: EditWiFiZoneGoogleMapFragment? = null + private var mBaiduMapFragment: NavigationBaiduMapFragment? = null + + fun getMapFragment( + context: Context, wiFiZoneBean: WiFiZoneBean, mapLoadOk: () -> Unit + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mBaiduMapFragment = NavigationBaiduMapFragment.newInstance(context) + mBaiduMapFragment!! + } else { + mEditZoneGoogleMapFragment = + EditWiFiZoneGoogleMapFragment.newInstance(context, wiFiZoneBean, mapLoadOk) + mEditZoneGoogleMapFragment!! + } + } + + /** + * 设置显示wifiçš„ä½ç½® + */ + fun setShowWifiLocation(lat: Double, lon: Double, isDraggable: Boolean) { + mEditZoneGoogleMapFragment?.apply { + moveCameraLocation(lat, lon) + addImageMarker(lat, lon, R.drawable.icon_location_svg, false, isDraggable) + } + } + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + fun switchSatelliteAndNormalMapType() { + switchSatelliteAndNormalMapType(mBaiduMapFragment, mEditZoneGoogleMapFragment) + } + + /** + * 切æ¢ç”¨æˆ·ã€å® ç‰©å’Œå›´æ çš„ä½ç½®å±…中显示 + */ + fun switchShowLocation(@ConstantInt type: Int, lat: Double, lon: Double) { + switchShowLocationType( + type, lat, lon, mBaiduMapFragment, mEditZoneGoogleMapFragment + ) + } + + /** + * 设置宠物的ç»çº¬åº¦ï¼Œæ–¹ä¾¿åˆ‡æ¢æ˜¾ç¤ºä½ç½® + */ + fun setPetLatLon(petImageUrl: String, petType: Int, lat: Double, lon: Double) { + if (lat == 0.0 && lon == 0.0) return + mEditZoneGoogleMapFragment?.setPetCurrentLocation(petImageUrl, lat, lon, petType) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt new file mode 100644 index 0000000..b1086d8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt @@ -0,0 +1,181 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import android.view.View +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.fragment.map.baidumap.FencesAddEditBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.FencesAddEditGoogleMapFragment +import com.abbidot.tracker.util.LonAndLatUtil +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.FencesCircleView +import com.abbidot.tracker.widget.FencesPolygonView +import com.abbidot.tracker.widget.FencesRectView +import com.google.android.gms.maps.model.LatLng + +/** + *Created by .yzq on 2024/4/23/023. + * @link + * @description: + */ +class FencesAddEditMapCommon : BaseMapCommon() { + private var mFencesGoogleMapFragment: FencesAddEditGoogleMapFragment? = null + private var mFencesBaiduMapFragment: FencesAddEditBaiduMapFragment? = null + + fun getMapFragment( + context: Context, + fencesBean: FencesBean, + fencesCircleView: FencesCircleView, + fencesRectView: FencesRectView, + fencesPolygonView: FencesPolygonView, + isEdit: Boolean, + onActivityCallBack: OnActivityCallBack?, + mapLoadOk: () -> Unit + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mFencesBaiduMapFragment = FencesAddEditBaiduMapFragment.newInstance( + context, + fencesBean, + fencesCircleView, + fencesRectView, + fencesPolygonView, + isEdit, + onActivityCallBack, + mapLoadOk + ) + mFencesBaiduMapFragment!! + } else { + mFencesGoogleMapFragment = FencesAddEditGoogleMapFragment.newInstance( + context, + fencesBean, + fencesCircleView, + fencesRectView, + fencesPolygonView, + isEdit, + onActivityCallBack, + mapLoadOk + ) + mFencesGoogleMapFragment!! + } + } + + /** + * ç»çº¬åº¦è½¬æ¢åœ°å€ + */ + fun getLatLonAddress(geoCoderViewModel: GeoCoderViewModel, fencesBean: FencesBean?) { + if (null != mFencesGoogleMapFragment) { + fencesBean?.apply { + geoCoderViewModel.getLatLonAddress(latitudeCenter, longitudeCenter) + } + } else if (null != mFencesBaiduMapFragment) { + fencesBean?.apply { + val convertLonLat = + LonAndLatUtil.convertFromGCJ02ToWGS84(latitudeCenter, longitudeCenter) + geoCoderViewModel.getLatLonAddress(convertLonLat[0], convertLonLat[1]) + } + } + } + + /** + * æ ¹æ®é¢„览围æ ç±»åž‹è®¾ç½®åœ°å›¾ç­‰çº§ + * @param padding è·ç¦»å±å¹•边缘的è·ç¦»,pxå•ä½ + */ + fun restoreEditFencesSetMapZoom( + context: Context, fencesBean: FencesBean, padding: Int = AppUtils.dpToPx(80) + ) { + restoreFencesSetMapZoom( + context, fencesBean, mFencesBaiduMapFragment, mFencesGoogleMapFragment, padding + ) + } + + /** + * 上滑,下滑手势,布局绘制,围æ é‡æ–°è®¾ç½®ä¸­å¿ƒ + */ + fun resetFencesCentre(activity: BaseActivity<*>, view: View, fencesBean: FencesBean) { + fencesBean.let { + mFencesGoogleMapFragment?.apply { + view.postDelayed({ + if (activity.isFinishing) return@postDelayed + resetFencesViewCentre( + LatLng( + it.latitudeCenter, it.longitudeCenter + ) + ) + }, 100) + } + + mFencesBaiduMapFragment?.apply { + view.postDelayed({ + if (activity.isFinishing) return@postDelayed + resetFencesViewCentre( + getBaiduMapLatLng( + it.latitudeCenter, it.longitudeCenter + ) + ) + }, 600) + } + } + } + + fun setMapZoom(zoom: Float) { + if (null != mFencesGoogleMapFragment) { + mFencesGoogleMapFragment!!.setGoogleMapZoom(zoom) + } else if (null != mFencesBaiduMapFragment) { + mFencesBaiduMapFragment!!.setBaiduMapZoom(19f) + } + } + + fun setZoomTo(zoomLevel: Float) { + if (null != mFencesGoogleMapFragment) { + mFencesGoogleMapFragment!!.setZoomTo(zoomLevel) + } else if (null != mFencesBaiduMapFragment) { + } + } + + fun calculateDistanceAndGetPointLatLng( + activity: BaseActivity<*>? = null, delayMillis: Long = 1000 + ) { + activity?.showLoading(true) + if (null != mFencesGoogleMapFragment) { + mFencesGoogleMapFragment?.mapOkAndDistancePointLatLng(delayMillis) + } else if (null != mFencesBaiduMapFragment) { + mFencesBaiduMapFragment?.mapOkAndDistancePointLatLng() + } + } + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + fun switchSatelliteAndNormalMapType() { + switchSatelliteAndNormalMapType(mFencesBaiduMapFragment, mFencesGoogleMapFragment) + } + + /** + * 地图是å¦åŠ è½½å¥½äº†ï¼Œå‡†å¤‡å¥½äº† + */ + fun isMapLoadOk() = isMapLoadOk(mFencesBaiduMapFragment, mFencesGoogleMapFragment) + + /** + * 设置宠物当å‰ç»çº¬åº¦å’Œå¤´åƒ + */ + fun setPetHeadAndCurrentLocation(petHeadUrl: String, petType: Int, lat: Double, lon: Double) { + setPetHeadAndCurrentLocation( + petHeadUrl, petType, lat, lon, mFencesBaiduMapFragment, mFencesGoogleMapFragment + ) + } + + /** + * 切æ¢ç”¨æˆ·ã€å® ç‰©å’Œå›´æ çš„ä½ç½®å±…中显示 + */ + fun switchShowLocation(@ConstantInt type: Int, lat: Double, lon: Double) { + switchShowLocationType(type, lat, lon, mFencesBaiduMapFragment, mFencesGoogleMapFragment) + } + + interface OnActivityCallBack { + fun calculationDistance(distances: Array) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesMapCommon.kt new file mode 100644 index 0000000..72c95ac --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesMapCommon.kt @@ -0,0 +1,308 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import android.graphics.Point +import android.view.View +import androidx.appcompat.widget.AppCompatEditText +import androidx.appcompat.widget.LinearLayoutCompat +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.vm.ScreenshotsViewModel +import com.abbidot.tracker.deprecated.ui.fragment.map.baidumap.FencesAddBaiduMapFragment +import com.abbidot.tracker.deprecated.ui.fragment.map.googlemap.FencesAddGoogleMapFragment +import com.abbidot.tracker.util.LonAndLatUtil +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.FencesPolygonView +import com.google.android.gms.maps.model.LatLng +import kotlin.math.pow + + +/** + *Created by .yzq on 2022/7/5/005. + * @link + * @description: + */ +class FencesMapCommon { + + private var mFencesAddGoogleMapFragment: FencesAddGoogleMapFragment? = null + private var mFencesAddBaiduMapFragment: FencesAddBaiduMapFragment? = null + + fun getMapFragment( + context: Context, + recyclerView: RecyclerView, + searchResultsViewLayout: LinearLayoutCompat, + addressEditText: AppCompatEditText, + onActivityCallBack: OnActivityCallBack + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mFencesAddBaiduMapFragment = FencesAddBaiduMapFragment.newInstance(context) + mFencesAddBaiduMapFragment!!.setOnCalculationDistance(onActivityCallBack) + mFencesAddBaiduMapFragment!!.initRecyclerView(context, recyclerView) + mFencesAddBaiduMapFragment!! + } else { + mFencesAddGoogleMapFragment = FencesAddGoogleMapFragment.newInstance(context) + mFencesAddGoogleMapFragment!!.setOnCalculationDistance(onActivityCallBack) + mFencesAddGoogleMapFragment!!.initMapBox( + context, searchResultsViewLayout, addressEditText + ) + mFencesAddGoogleMapFragment!! + } + } + + /** + * æ ¹æ®åœ°å›¾æ˜¾ç¤ºçº§åˆ«,计算比例尺的一åƒç´ å¯¹åº”几米 + */ + fun getCircleRadiusPx(circleRadius: Double): Double { + var px = 0.0 + if (null != mFencesAddGoogleMapFragment) { + val zoom = mFencesAddGoogleMapFragment!!.getGoogleMapZoom() + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow((15.5 - zoom)) + //计算现在åŠå¾„有多少åƒç´  + px = circleRadius / pxDis + } else if (null != mFencesAddBaiduMapFragment) { + val zoom = mFencesAddBaiduMapFragment!!.getBaiduMapZoom() + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow((18 - zoom).toDouble()) + //计算现在åŠå¾„有多少åƒç´  + px = circleRadius / pxDis + } + return px + } + + fun setCenterLatLng(latitude: Double, longitude: Double, radius: Double = 0.0) { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.mCenterLatLng = LatLng(latitude, longitude) + //è®¾ç½®åœ°å›¾ç¼©æ”¾çº§åˆ«ï¼Œè®©åœ†å½¢å›´æ æ˜¾ç¤ºå®Œæ•´ + if (radius > 0.0) mFencesAddGoogleMapFragment?.setCircleMapZoom(radius) + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.apply { + //百度地图使用GCJ02åæ ‡ + mCenterLatLng = getBaiduMapLatLng(latitude, longitude) + LogUtil.e("编辑转æ¢ä¸­å¿ƒåæ ‡$mCenterLatLng,gpsçš„$latitude,$longitude") + //è®¾ç½®åœ°å›¾ç¼©æ”¾çº§åˆ«ï¼Œè®©åœ†å½¢å›´æ æ˜¾ç¤ºå®Œæ•´ + if (radius > 0.0) mFencesAddBaiduMapFragment?.setCircleMapZoom(radius) + } + } + } + + /** + * 获å–开始点(中间点)的ç»çº¬åº¦ + */ + fun getCenterLatLng(): DoubleArray { + var dd = DoubleArray(2) + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.mCenterLatLng?.let { + dd[0] = it.latitude + dd[1] = it.longitude + } + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.mCenterLatLng?.let { + //转æ¢åŽŸå§‹gpsåæ ‡ + dd = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + } + } + return dd + } + + + fun setRectABCDLatLng( + context: Context, + longitudeA: Double, + latitudeA: Double, + longitudeB: Double, + latitudeB: Double, + longitudeC: Double, + latitudeC: Double, + longitudeD: Double, + latitudeD: Double + ) { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment?.apply { + mRectALatLng = LatLng(latitudeA, longitudeA) + mRectBLatLng = LatLng(latitudeB, longitudeB) + mRectCLatLng = LatLng(latitudeC, longitudeC) + mRectDLatLng = LatLng(latitudeD, longitudeD) + //è®¾ç½®åœ°å›¾ç¼©æ”¾çº§åˆ«ï¼Œè®©çŸ©å½¢å›´æ æ˜¾ç¤ºå®Œæ•´ + mFencesAddGoogleMapFragment?.setRectMapZoom( + context, mRectALatLng!!, mRectBLatLng!!, mRectCLatLng!!, mRectDLatLng!! + ) + } + } else if (null != mFencesAddBaiduMapFragment) { + //百度地图使用GCJ02åæ ‡ + mFencesAddBaiduMapFragment?.apply { + mRectALatLng = getBaiduMapLatLng(latitudeA, longitudeA) + mRectBLatLng = getBaiduMapLatLng(latitudeB, longitudeB) + mRectCLatLng = getBaiduMapLatLng(latitudeC, longitudeC) + mRectDLatLng = getBaiduMapLatLng(latitudeD, longitudeD) + LogUtil.e("没有加密的4个点ç»çº¬åº¦$latitudeA,$longitudeA,\n$latitudeB.$longitudeB,\n$latitudeC,$longitudeC,\n$latitudeD,$longitudeD") + LogUtil.e("编辑的4个点ç»çº¬åº¦$mRectALatLng,\n$mRectBLatLng,\n$mRectCLatLng,\n$mRectDLatLng,\n$mCenterLatLng") + //è®¾ç½®åœ°å›¾ç¼©æ”¾çº§åˆ«ï¼Œè®©çŸ©å½¢å›´æ æ˜¾ç¤ºå®Œæ•´ + mFencesAddBaiduMapFragment?.setRectMapZoom( + mRectALatLng!!, mRectBLatLng!!, mRectCLatLng!!, mRectDLatLng!! + ) +// mFencesAddBaiduMapFragment?.setRectMapZoom(com.baidu.mapapi.model.LatLng(latitudeA, longitudeA), com.baidu.mapapi.model.LatLng(latitudeB, longitudeB), +// com.baidu.mapapi.model.LatLng(latitudeC, longitudeC), com.baidu.mapapi.model.LatLng(latitudeD, longitudeD)) + } + } + } + + /** + * ç»çº¬åº¦è½¬æ¢ä¸ºå±å¹•åæ ‡ç‚¹ + */ + fun latLngToPotion(wherePoint: Int): Point? { + if (null != mFencesAddGoogleMapFragment) { + return mFencesAddGoogleMapFragment!!.latLngToPotion(wherePoint) + } else if (null != mFencesAddBaiduMapFragment) { + return mFencesAddBaiduMapFragment!!.latLngToPotion(wherePoint) + } + return null + } + + /** + * 获å–矩形ABCDçš„ç»çº¬åº¦ + */ + fun getRectABCDLatLng(wherePoint: Int): DoubleArray { + var dd = DoubleArray(2) + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment?.apply { + when (wherePoint) { + FencesPolygonView.POINT_A -> mRectALatLng?.let { + dd[0] = it.latitude + dd[1] = it.longitude + } + + FencesPolygonView.POINT_B -> mRectBLatLng?.let { + dd[0] = it.latitude + dd[1] = it.longitude + } + + FencesPolygonView.POINT_C -> mRectCLatLng?.let { + dd[0] = it.latitude + dd[1] = it.longitude + } + + FencesPolygonView.POINT_D -> mRectDLatLng?.let { + dd[0] = it.latitude + dd[1] = it.longitude + } + } + + } + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment?.apply { + when (wherePoint) { + FencesPolygonView.POINT_A -> mRectALatLng?.let { + //转æ¢åŽŸå§‹gpsåæ ‡ + dd = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + } + + FencesPolygonView.POINT_B -> mRectBLatLng?.let { + //转æ¢åŽŸå§‹gpsåæ ‡ + dd = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + } + + FencesPolygonView.POINT_C -> mRectCLatLng?.let { + //转æ¢åŽŸå§‹gpsåæ ‡ + dd = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + } + + FencesPolygonView.POINT_D -> mRectDLatLng?.let { + //转æ¢åŽŸå§‹gpsåæ ‡ + dd = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + } + } + + } + } + return dd + } + + /** + * 刷新显示è·ç¦»ï¼Œç‚¹å‡»å›´æ æ ·å¼åˆ·æ–° + */ + fun refreshDistance() { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.mapOkAndDistance() + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.mapOkAndDistance() + } + } + + /** + * éšè—æœç´¢æ£€ç´¢ç»“æžœé¡µé¢ + */ + fun setSearchResultsViewGone() { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.setSearchResultsViewGone() + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.setSearchResultsViewGone() + } + } + + /** + * æœç´¢åœ°å€ + */ + fun searchAddress(keyword: String) { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.searchAddress(keyword) + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.searchAddress(keyword) + } + } + + /** + * ç»çº¬åº¦è½¬æ¢åœ°å€ + */ + fun getLatLonAddress(geoCoderViewModel: GeoCoderViewModel) { + if (null != mFencesAddGoogleMapFragment) { + mFencesAddGoogleMapFragment!!.mCenterLatLng?.let { + geoCoderViewModel.getLatLonAddress(it.latitude, it.longitude) + } + } else if (null != mFencesAddBaiduMapFragment) { + mFencesAddBaiduMapFragment!!.mCenterLatLng?.let { + val convertLonLat = LonAndLatUtil.convertFromGCJ02ToWGS84(it.latitude, it.longitude) + geoCoderViewModel.getLatLonAddress(convertLonLat[0], convertLonLat[1]) + } + } + } + + /** + * 截å±å¹¶ä¸Šä¼ å›¾ç‰‡ + */ + fun snapshotImage( + activity: BaseActivity<*>, screenshotsViewModel: ScreenshotsViewModel, snapshotView: View + ) { + if (null != mFencesAddGoogleMapFragment) { + if (null == mFencesAddGoogleMapFragment!!.mGoogleMap) { + activity.showToast(com.abbidot.tracker.R.string.txt_load_map) + return + } + screenshotsViewModel.fencesGoogleMapSnapshotImage( + activity, + mFencesAddGoogleMapFragment!!.mGoogleMap!!, + snapshotView, + fileName = "add_fence_${System.currentTimeMillis() / 1000}.png" + ) + } else if (null != mFencesAddBaiduMapFragment) { + if (null == mFencesAddBaiduMapFragment!!.mBaiduMap) { + activity.showToast(com.abbidot.tracker.R.string.txt_load_map) + return + } + screenshotsViewModel.fencesBaiduMapSnapshotImage( + activity, + mFencesAddBaiduMapFragment!!.mBaiduMap!!, + snapshotView, + fileName = "add_fence_${System.currentTimeMillis() / 1000}.png" + ) + } + } + + interface OnActivityCallBack { + fun calculationDistance(distances: Array) + fun mapCompletion() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/HistoryDataMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/HistoryDataMapCommon.kt new file mode 100644 index 0000000..df51415 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/HistoryDataMapCommon.kt @@ -0,0 +1,129 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.ui.fragment.map.baidumap.HistoryDataBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.HistoryDataGoogleMapFragment +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.MapMarkerInfoView + +/** + *Created by .yzq on 2022/7/5/005. + * @link + * @description: + */ +class HistoryDataMapCommon : BaseMapCommon() { + + private var mHistoryDataGoogleMapFragment: HistoryDataGoogleMapFragment? = null + private var mHistoryDataBaiduMapFragment: HistoryDataBaiduMapFragment? = null + + fun getMapFragment( + context: Context, + markerInfoView: MapMarkerInfoView, + geoCoderViewModel: GeoCoderViewModel, + mapLoadOk: () -> Unit + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mHistoryDataBaiduMapFragment = + HistoryDataBaiduMapFragment.newInstance(context, geoCoderViewModel, mapLoadOk) + mHistoryDataBaiduMapFragment!! + } else { + mHistoryDataGoogleMapFragment = HistoryDataGoogleMapFragment.newInstance( + context, markerInfoView, geoCoderViewModel, mapLoadOk + ) + mHistoryDataGoogleMapFragment!! + } + } + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + fun switchSatelliteAndNormalMapType() { + switchSatelliteAndNormalMapType(mHistoryDataBaiduMapFragment, mHistoryDataGoogleMapFragment) + } + + suspend fun setPetBean(petBean: PetBean) { + if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.setPetBean(petBean) + } + if (null != mHistoryDataBaiduMapFragment) { + } + } + + /** + * 地图是å¦åŠ è½½å¥½äº†ï¼Œå‡†å¤‡å¥½äº† + */ + fun isMapLoadOk() = isMapLoadOk(mHistoryDataBaiduMapFragment, mHistoryDataGoogleMapFragment) + + fun slideChanged(progress: Int) { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.slideChanged(progress) + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.slideChanged(progress) + } + } + + fun slideStopChanged(progress: Int) { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.slideStopChanged(progress) + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.slideStopChanged(progress) + } + } + + fun addSetLine() { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.addSetLine() + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.addSetLine() + } + } + + fun addSetNumber() { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.addSetNumber() + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.addSetNumber() + } + } + + fun clearAllMarker() { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.clearAllMarker() + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.clearAllMarker() + } + } + + fun setLatLngData(data: MutableList) { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.setLatLngData(data) + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.setLatLngData(data) + } + } + + fun showInfoWindow(historyDataBean: HistoryDataBean) { + if (null != mHistoryDataBaiduMapFragment) { + mHistoryDataBaiduMapFragment!!.showMarkerInfoWindow(historyDataBean) + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment!!.showMarkerInfoWindow(historyDataBean) + } + } + + fun setPetUserLatLng() { + if (null != mHistoryDataBaiduMapFragment) { + } else if (null != mHistoryDataGoogleMapFragment) { + mHistoryDataGoogleMapFragment?.apply { + mUserLatLng?.let { + moveCameraLocation(it) + setPetMarkerLatLng(it) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/HomeMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/HomeMapCommon.kt new file mode 100644 index 0000000..8c51b80 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/HomeMapCommon.kt @@ -0,0 +1,182 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.fragment.map.baidumap.HomeMapBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.HomeMapGoogleMapFragment +import com.abbidot.tracker.widget.MapDeviceNetView +import com.abbidot.tracker.widget.MapMarkerInfoView +import com.google.android.gms.maps.model.LatLng +import javax.inject.Inject + +/** + *Created by .yzq on 2022/7/5/005. + * @link + * @description: + */ +class HomeMapCommon @Inject constructor() : BaseMapCommon() { + + private var mHomeMapGoogleMapFragment: HomeMapGoogleMapFragment? = null + private var mHomeMapBaiduMapFragment: HomeMapBaiduMapFragment? = null + + fun getMapFragment( + context: Context, + markerInfoView: MapMarkerInfoView, + mapDeviceNetView: MapDeviceNetView, + mapLoadOk: () -> Unit + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mHomeMapBaiduMapFragment = HomeMapBaiduMapFragment.newInstance(context, mapLoadOk) + mHomeMapBaiduMapFragment!! + } else { + mHomeMapGoogleMapFragment = HomeMapGoogleMapFragment.newInstance( + context, markerInfoView, mapDeviceNetView, mapLoadOk + ) + mHomeMapGoogleMapFragment!! + } + } + + fun setMapDeviceBean(mapDeviceBean: MapDeviceBean?) { + if (null != mHomeMapBaiduMapFragment) { + mHomeMapBaiduMapFragment!!.setMapDeviceBean(mapDeviceBean) + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.setMapDeviceBean(mapDeviceBean) + } + } + + /** + * 开始æ¯éš”几秒刷新用户ä½ç½® + */ + fun startRefreshUserLocation() { + if (isMapLoadOk()) startRefreshUserLocation( + mHomeMapBaiduMapFragment, mHomeMapGoogleMapFragment + ) + } + + /** + * 获å–宠物å编译好的ä½ç½®ä¿¡æ¯ + */ + fun getDecPetAddressData(): HistoryDataBean? { + if (null != mHomeMapBaiduMapFragment) { + return mHomeMapBaiduMapFragment!!.mDecPetAddressData + } else if (null != mHomeMapGoogleMapFragment) { + return mHomeMapGoogleMapFragment!!.mDecPetAddressData + } + return null + } + + fun refreshPetCurrentLocation(latitude: Double, longitude: Double, isAnimMoveCamera: Boolean) { + if (null != mHomeMapBaiduMapFragment) { + mHomeMapBaiduMapFragment?.apply { + refreshPetCurrentLocation( + latitude, longitude, isAnimMoveCamera = isAnimMoveCamera + ) + } + } else if (null != mHomeMapGoogleMapFragment) { + MMKVUtil.putDouble(MMKVKey.MapShowDefaultLat, latitude) + MMKVUtil.putDouble(MMKVKey.MapShowDefaultLon, longitude) + mHomeMapGoogleMapFragment?.apply { + refreshPetCurrentLocation( + LatLng(latitude, longitude), isAnimMoveCamera = isAnimMoveCamera + ) + } + } + } + + /** + * 釿–°è®¾ç½®å® ç‰©å¤´åƒ + */ + fun setPetHeadIcon(imageUrl: String, petType: Int) { + if (null != mHomeMapBaiduMapFragment) { + mHomeMapBaiduMapFragment!!.setPetHeadIconUrl(imageUrl) + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.setPetHeadIconUrl(imageUrl, petType) + } + } + + /** + * 地图是å¦åŠ è½½å¥½äº†ï¼Œå‡†å¤‡å¥½äº† + */ + fun isMapLoadOk() = isMapLoadOk(mHomeMapBaiduMapFragment, mHomeMapGoogleMapFragment) + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + fun switchSatelliteAndNormalMapType() { + switchSatelliteAndNormalMapType(mHomeMapBaiduMapFragment, mHomeMapGoogleMapFragment) + } + + /** + * 切æ¢ç”¨æˆ·å’Œå® ç‰©çš„ä½ç½®å±…中显示 + */ + fun switchShowLocation(@ConstantInt type: Int) { + switchShowLocationType(type, mHomeMapBaiduMapFragment, mHomeMapGoogleMapFragment) + } + + /** + * 画轨迹线 + */ + fun addTrackLine(latitude: Double, longitude: Double) { + if (null != mHomeMapBaiduMapFragment) { + mHomeMapBaiduMapFragment!!.addLine(latitude, longitude) + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.addLine(LatLng(latitude, longitude)) + } + } + + /** + * 画轨迹线 + */ + fun addTrackLines(trackList: MutableList) { + if (null != mHomeMapBaiduMapFragment) { + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.addLines(trackList) + } + } + + /** + * 计算用户和宠物的è·ç¦» + */ + fun getUserAndPetDistance(): Double { + var distance = 0.0 + if (null != mHomeMapBaiduMapFragment) { + distance = mHomeMapBaiduMapFragment!!.getUserAndPetDistance() + } else if (null != mHomeMapGoogleMapFragment) { + distance = mHomeMapGoogleMapFragment!!.getUserAndPetDistance() + } + return distance + } + + /** + * 开始水波纹动画 + */ + fun startRippleCircleAnim() { + if (null != mHomeMapBaiduMapFragment) { + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.startRippleCircleAnim() + } + } + + fun setMarkerInfoViewOffset() { + if (null != mHomeMapBaiduMapFragment) { + } else if (null != mHomeMapGoogleMapFragment) { + mHomeMapGoogleMapFragment!!.setMarkerInfoViewOffset() + } + } + +// fun getAddressShowMarkerInfoWindow(historyDataBean: HistoryDataBean) { +// if (null != mHomeMapBaiduMapFragment) { +// mHomeMapBaiduMapFragment!!.showMarkerInfoWindow(historyDataBean) +// } else if (null != mHomeMapGoogleMapFragment) { +// mHomeMapGoogleMapFragment!!.showMarkerInfoWindow(historyDataBean) +// } +// } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/MapLiveCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/MapLiveCommon.kt new file mode 100644 index 0000000..bd5542a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/MapLiveCommon.kt @@ -0,0 +1,47 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.ui.fragment.map.baidumap.MapLiveBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.MapLiveGoogleMapFragment +import com.google.android.gms.maps.model.LatLng + +/** + *Created by .yzq on 2022/7/5/005. + * @link + * @description: + */ +class MapLiveCommon { + + private var mMapLiveGoogleMapFragment: MapLiveGoogleMapFragment? = null + private var mMapLiveBaiduMapFragment: MapLiveBaiduMapFragment? = null + + fun getMapFragment(context: Context, imageUrl: String): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mMapLiveBaiduMapFragment = MapLiveBaiduMapFragment.newInstance(context) + mMapLiveBaiduMapFragment!!.mPetHeadUrl = imageUrl + mMapLiveBaiduMapFragment!! + } else { + mMapLiveGoogleMapFragment = MapLiveGoogleMapFragment.newInstance(context) + mMapLiveGoogleMapFragment!!.mPetHeadUrl = imageUrl + mMapLiveGoogleMapFragment!! + } + } + + fun addLine(latitude: Double, longitude: Double) { + if (null != mMapLiveBaiduMapFragment) { + mMapLiveBaiduMapFragment!!.addLine(latitude, longitude) + } else if (null != mMapLiveGoogleMapFragment) { + mMapLiveGoogleMapFragment!!.addLine(LatLng(latitude, longitude)) + } + } + + fun refreshPetCurrentLocation() { + if (null != mMapLiveBaiduMapFragment) { + mMapLiveBaiduMapFragment!!.refreshPetCurrentLocation() + } else if (null != mMapLiveGoogleMapFragment) { + mMapLiveGoogleMapFragment!!.refreshPetCurrentLocation() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/NavigationMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/NavigationMapCommon.kt new file mode 100644 index 0000000..602103e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/NavigationMapCommon.kt @@ -0,0 +1,30 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.deprecated.ui.fragment.map.baidumap.NavigationBaiduMapFragment +import com.abbidot.tracker.deprecated.ui.fragment.map.googlemap.NavigationGoogleMapFragment + +/** + *Created by .yzq on 2022/7/5/005. + * @link + * @description: + */ +class NavigationMapCommon { + + private var mNavigationGoogleMapFragment: NavigationGoogleMapFragment? = null + private var mNavigationBaiduMapFragment: NavigationBaiduMapFragment? = null + + fun getMapFragment(context: Context,imageUrl: String): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mNavigationBaiduMapFragment = NavigationBaiduMapFragment.newInstance(context) + mNavigationBaiduMapFragment!!.mPetHeadUrl = imageUrl + mNavigationBaiduMapFragment!! + } else { + mNavigationGoogleMapFragment = NavigationGoogleMapFragment.newInstance(context) + mNavigationGoogleMapFragment!!.mPetHeadUrl = imageUrl + mNavigationGoogleMapFragment!! + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/PreviewFencesZoneCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/PreviewFencesZoneCommon.kt new file mode 100644 index 0000000..e95284a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/PreviewFencesZoneCommon.kt @@ -0,0 +1,83 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.fragment.map.baidumap.PreviewFencesBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.PreviewFencesGoogleMapFragment + +/** + *Created by .yzq on 2024/4/23/023. + * @link + * @description: + */ +class PreviewFencesZoneCommon : BaseMapCommon() { + private var mPreviewFencesGoogleMapFragment: PreviewFencesGoogleMapFragment? = null + private var mPreviewFencesBaiduMapFragment: PreviewFencesBaiduMapFragment? = null + + fun getMapFragment( + context: Context, mapLoadOk: () -> Unit + ): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mPreviewFencesBaiduMapFragment = + PreviewFencesBaiduMapFragment.newInstance(context, mapLoadOk) + mPreviewFencesBaiduMapFragment!! + } else { + mPreviewFencesGoogleMapFragment = PreviewFencesGoogleMapFragment.newInstance( + context, mapLoadOk + ) + mPreviewFencesGoogleMapFragment!! + } + } + + /** + * 切æ¢åœ°å›¾ç±»åž‹ + */ + fun switchSatelliteAndNormalMapType() { + switchSatelliteAndNormalMapType( + mPreviewFencesBaiduMapFragment, mPreviewFencesGoogleMapFragment + ) + } + + /** + * 设置宠物ä½ç½®ç»çº¬åº¦ + */ + fun setPetCurrentLocation(petHeadUrl: String, petType: Int, lat: Double, lon: Double) { + setPetHeadAndCurrentLocation( + petHeadUrl, + petType, + lat, + lon, + mPreviewFencesBaiduMapFragment, + mPreviewFencesGoogleMapFragment + ) + } + + /** + * 切æ¢ç”¨æˆ·ã€å® ç‰©å’Œå›´æ çš„ä½ç½®å±…中显示 + */ + fun switchShowLocation(@ConstantInt type: Int, lat: Double, lon: Double) { + switchShowLocationType( + type, lat, lon, mPreviewFencesBaiduMapFragment, mPreviewFencesGoogleMapFragment + ) + } + + /** + * æ ¹æ®é¢„览围æ ç±»åž‹è®¾ç½®åœ°å›¾ç­‰çº§ + * @param padding è·ç¦»å±å¹•边缘的è·ç¦»,pxå•ä½ + */ + fun restorePreviewFencesSetMapZoom( + context: Context, fencesBean: FencesBean, padding: Int = AppUtils.dpToPx(50) + ) { + restoreFencesSetMapZoom( + context, + fencesBean, + mPreviewFencesBaiduMapFragment, + mPreviewFencesGoogleMapFragment, + padding + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/WifiZone2MapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/WifiZone2MapCommon.kt new file mode 100644 index 0000000..dfd111a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/WifiZone2MapCommon.kt @@ -0,0 +1,42 @@ +package com.abbidot.tracker.ui.common.map + +import android.content.Context +import androidx.fragment.app.Fragment +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.base.BaseMapCommon +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.deprecated.ui.fragment.map.baidumap.NavigationBaiduMapFragment +import com.abbidot.tracker.ui.fragment.map.googlemap.WiFiZone2GoogleMapFragment + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +class WifiZone2MapCommon : BaseMapCommon() { + + private var mWiFiZone2GoogleMapFragment: WiFiZone2GoogleMapFragment? = null + private var mBaiduMapFragment: NavigationBaiduMapFragment? = null + + fun getMapFragment(context: Context): Fragment { + return if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + mBaiduMapFragment = NavigationBaiduMapFragment.newInstance(context) + mBaiduMapFragment!! + } else { + mWiFiZone2GoogleMapFragment = WiFiZone2GoogleMapFragment.newInstance(context) + mWiFiZone2GoogleMapFragment!! + } + } + + fun refreshLocation() { + mWiFiZone2GoogleMapFragment?.getLastLocation() + } + + fun getDecWiFiAddressData(): HistoryDataBean? { + if (null != mWiFiZone2GoogleMapFragment) { + if (null !== mWiFiZone2GoogleMapFragment!!.mDecWifiAddressData) return mWiFiZone2GoogleMapFragment!!.mDecWifiAddressData + return null + } + return null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt new file mode 100644 index 0000000..196574e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt @@ -0,0 +1,290 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.content.Intent +import android.view.View +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HomeAccountMenuAdapter +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.FragmentAccountV2Binding +import com.abbidot.tracker.deprecated.ui.activity.vm.NotificationsViewModel +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.account.NotificationV2Activity +import com.abbidot.tracker.ui.activity.account.UserProfileActivity +import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity +import com.abbidot.tracker.ui.activity.subscribe.MySubscriptionActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +/** + * 首页Account + * create an instance of this fragment. + */ +class AccountV2Fragment : + BaseFragment(FragmentAccountV2Binding::inflate) { + + private lateinit var mUserViewModel: UserProfileViewModel + private lateinit var mNotificationsViewModel: NotificationsViewModel + + private lateinit var mMenuAdapter: HomeAccountMenuAdapter + private lateinit var mMenuList: MutableList + private lateinit var mHomeV2Activity: HomeV2Activity + private var mMeasurementUnit = 1 + + companion object { + @JvmStatic + fun newInstance(context: Context) = AccountV2Fragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + mViewBinding.apply { + mHomeV2Activity.edgeToEdgeAdapterBars( + llHomeAccountLayout, WindowInsetsCompat.Type.statusBars() + ) + llHomeAccountTopUser.let { + it.ivTopPetBtnSmall.setImageResource(R.drawable.icon_noti_svg) + it.homeDataPetNameSmall.text = + MMKVUtil.getString(MMKVKey.UserName, getString(R.string.app_name)) + val imageUrl = MMKVUtil.getString(MMKVKey.HeadUrl) + ViewUtil.instance.imageLoadUrl( + it.homeDataPetHeadSmall.appHeadImage, imageUrl, R.drawable.pic_avatar_df + ) + it.homeDataPetNameSmall.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, R.drawable.icon_gray_right_arrow, 0 + ) + } + + addListData() + mMenuAdapter = HomeAccountMenuAdapter(this@AccountV2Fragment, mMenuList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomeAccountMenu, mMenuAdapter, top = QMUIDisplayHelper.dpToPx(6) + ) + setOnClickListenerViews( + llHomeAccountMyTracker, + llHomeAccountSubscription, + llHomeAccountTopUser.ivTopPetBtnSmall, + llHomeAccountTopUser.homeDataPetHeadSmall.root, + llHomeAccountTopUser.homeDataPetNameSmall + ) + } + + //切æ¢åˆ°è´¦æˆ·ActivityV2Fragment 页é¢ï¼Œä¼šå¯¼è‡´ViewModel生命周期销æ¯ï¼Œéœ€è¦é‡æ–°åˆ›å»º + mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java] + mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::class.java] + + mUserViewModel.getUserInfo(mHomeV2Activity) + } + + override fun onResume() { + super.onResume() + mNotificationsViewModel.getMessageList(mHomeV2Activity) + } + + private fun addListData() { + mMenuList = mutableListOf() + ViewUtil.instance.addMenuBean(mMenuList, getString(R.string.txt_help)) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_tracker_guide), + imageResId = R.drawable.icon_cellular_network_svg, + menuType = MultipleEntity.IMG_TEXT + ) +// ViewUtil.instance.addMenuBean( +// mMenuList, +// getString(R.string.txt_features_guide), +// imageResId = R.drawable.icon_cells_svg, +// menuType = MultipleEntity.IMG_TEXT +// ) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_feedback), + imageResId = R.drawable.icon_help_square_svg, + menuType = MultipleEntity.IMG_TEXT + ) + ViewUtil.instance.addMenuBean(mMenuList, getString(R.string.txt_setting)) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_notifications), + imageResId = R.drawable.icon_notification_svg, + menuType = MultipleEntity.IMG_TEXT + ) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_measurement_units), + imageResId = R.drawable.icon_measurement_units_svg, + menuType = MultipleEntity.IMG_TEXT, + value = Util.getMeasureUnitName(mContext!!) + ) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_permissions), + imageResId = R.drawable.icon_permissions_svg, + menuType = MultipleEntity.IMG_TEXT + ) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_advanced_set), + imageResId = R.drawable.icon_advanced_set_svg, + menuType = MultipleEntity.IMG_TEXT + ) + ViewUtil.instance.addMenuBean(mMenuList, getString(R.string.txt_more)) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_setting_about), + imageResId = R.drawable.icon_about_svg, + menuType = MultipleEntity.IMG_TEXT + ) +// ViewUtil.instance.addMenuBean( +// mMenuList, +// getString(R.string.txt_shop), +// imageResId = R.drawable.icon_store_svg, +// menuType = MultipleEntity.IMG_TEXT +// ) +// ViewUtil.instance.addMenuBean( +// mMenuList, +// getString(R.string.txt_setting_clear), +// imageResId = R.drawable.icon_database_restore_svg, +// menuType = MultipleEntity.IMG_TEXT, +// value = "0.00\tKb" +// ) + ViewUtil.instance.addMenuBean( + mMenuList, + getString(R.string.txt_sign_out), + imageResId = R.drawable.icon_logout_svg, + menuType = MultipleEntity.IMG_TEXT + ) + } + + override fun liveDataObserve() { + XEventBus.observe(viewLifecycleOwner, EventName.UpdateUserInfo) { + mUserViewModel.getUserInfo(mHomeV2Activity) + } + XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) { + getMessageCount() + } + mUserViewModel.apply { + mUserInfoLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { info -> + MMKVUtil.putString(MMKVKey.Email, info.email) + MMKVUtil.putString(MMKVKey.UserName, info.userName) + MMKVUtil.putString(MMKVKey.HeadUrl, info.imgurl) + MMKVUtil.putString(MMKVKey.CountryCode, info.countryCode) + mViewBinding.llHomeAccountTopUser.let { view -> + view.homeDataPetNameSmall.text = info.userName + ViewUtil.instance.imageLoadUrl( + view.homeDataPetHeadSmall.appHeadImage, + info.imgurl, + R.drawable.pic_avatar_df + ) + } + } + } + }) + } + + mUpdateMeasureUnitLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + MMKVUtil.putInt(MMKVKey.MeasureUnit, mMeasurementUnit) + mMenuAdapter.notifyItemChanged(5) + } + } + }) + } + } + mNotificationsViewModel.mNotificationsLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + lifecycleScope.launch(Dispatchers.IO) { + Util.dealMessage(this@apply) + getMessageCount() + } + } + } + + override fun onRequestError(exceptionCode: String?) { + getMessageCount() + } + }, isRequestErrorTip = false, isShowNoDataTip = false) + } + } + + private fun getMessageCount() { + requireActivity().lifecycleScope.launch(Dispatchers.IO) { + MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.apply { + var noReadNum = size + LogUtil.e("消æ¯åˆ—表个数:${size}") + for (message in this) { + if (message.isRead) noReadNum-- + } + mHomeV2Activity.runOnUiThread { + mViewBinding.homeAccountMessageCountText.let { + if (noReadNum > 0) it.visibility = View.VISIBLE + else it.visibility = View.GONE + it.text = "$noReadNum" + } + + } + } + } + } + + fun setMeasureUnit(measurementUnit: Int) { + mMeasurementUnit = measurementUnit + mUserViewModel.updateMeasureUnit(mHomeV2Activity, measurementUnit) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + llHomeAccountTopUser.homeDataPetHeadSmall.root, llHomeAccountTopUser.homeDataPetNameSmall -> startActivity( + Intent( + mContext, UserProfileActivity::class.java + ) + ) + + llHomeAccountMyTracker -> startActivity( + Intent( + mContext, MyTrackerV2Activity::class.java + ) + ) + + llHomeAccountSubscription -> startActivity( + Intent( + mContext, MySubscriptionActivity::class.java + ) + ) + + llHomeAccountTopUser.ivTopPetBtnSmall -> startActivity( + Intent( + mContext, NotificationV2Activity::class.java + ) + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2OneFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2OneFragment.kt new file mode 100644 index 0000000..47c5660 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2OneFragment.kt @@ -0,0 +1,184 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.content.Intent +import android.text.InputType +import android.text.SpannableString +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.TextUtils +import android.text.method.LinkMovementMethod +import android.text.style.ClickableSpan +import android.view.Gravity +import android.view.View +import android.widget.TextView +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.network.exception.ErrorCode +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentCreateAccountV2OneBinding +import com.abbidot.tracker.ui.activity.account.CreateAccountV2Activity +import com.abbidot.tracker.ui.activity.account.LoginV2Activity +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + +/** + *Created by .yzq on 2024/8/2/002. + * @link + * @description: + */ +class CreateAccountV2OneFragment : BaseFragment( + FragmentCreateAccountV2OneBinding::inflate +) { + private val mRegisterViewModel: UserProfileViewModel by viewModels() + private lateinit var mCreateAccountV2Activity: CreateAccountV2Activity + + companion object { + @JvmStatic + fun newInstance(context: Context) = CreateAccountV2OneFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + mCreateAccountV2Activity = activity as CreateAccountV2Activity + mViewBinding.apply { + ilCreateAccountV2Email.let { + it.tvInputNameTitle.setText(R.string.txt_email_address) + it.etInputContent.setHint(R.string.login_txt_email) + it.etInputContent.setText(mCreateAccountV2Activity.mUserEmail) + it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + ViewUtil.instance.setInputViewErrorHideClick( + mContext!!, + it.rlEtInputLayout, + tvEmailErrorTipCreateAccountV2, + it.etInputContent + ) { s -> + s.let { str -> + val hasUpperCase = str.any { c -> + c.isUpperCase() + } + if (hasUpperCase) { + it.etInputContent.setText(str.lowercase()) + it.etInputContent.setSelection(str.length) + } + } + } + } + + val privacyAndTerms = getString(R.string.txt_read_and_accept) + setSpannableClick( + ilCreateAccountV2PolicyTermsCheck.tvLoginAgreePrivacyContent, + privacyAndTerms.substringBeforeLast("Te"), + privacyAndTerms.substringAfterLast("&") + ) + + setOnClickListenerViews(btnCreateAccountV2Continue) + } + } + + private fun setSpannableClick(textView: TextView, str1: String, str2: String) { + try { + textView.apply { + val span1 = SpannableString(str1) + span1.setSpan(object : ClickableSpan() { + override fun onClick(v: View) { + ViewUtil.instance.goPrivacyPolicy(mCreateAccountV2Activity) + } + }, 7, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + val span2 = SpannableString(str2) + span2.setSpan(object : ClickableSpan() { + override fun onClick(v: View) { + ViewUtil.instance.goServiceContract(mCreateAccountV2Activity) + } + }, 1, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + + val spannableStringBuilder = SpannableStringBuilder() + spannableStringBuilder.append(span1) + spannableStringBuilder.append(span2) + text = spannableStringBuilder + movementMethod = LinkMovementMethod.getInstance() + } + } catch (e: Exception) { + LogUtil.e("è§£æžåŒæ„éšç§æ”¿ç­–错误${e.message}") + } + } + + override fun liveDataObserve() { + mRegisterViewModel.mGetEmailCodeLiveData.observe(viewLifecycleOwner) { + mViewBinding.btnCreateAccountV2Continue.isEnabled = true + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mCreateAccountV2Activity.switchFragment(1) + } + } + + override fun onRequestError(exceptionCode: String?) { + exceptionCode?.let { code -> + if (code == ErrorCode.USER_HAS_EXIST.toString()) { + ViewUtil.instance.showDialog( + mContext!!, + R.string.txt_account_exists_log_in, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + val intent = Intent(mContext, LoginV2Activity::class.java) + val email = + mViewBinding.ilCreateAccountV2Email.etInputContent.text.toString() + intent.putExtra(MMKVKey.Email, email) + startActivityFinish(mActivity!!, intent) + } + }, + okTextResId = R.string.txt_sure + ) + } + } + } + }) + mCreateAccountV2Activity.isInterceptNetErrorCodeTip = false + } + } + + private fun continueClick() { + mViewBinding.apply { + val email = ilCreateAccountV2Email.etInputContent.text.toString() + if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { + ViewUtil.instance.setInputViewErrorShow( + mContext!!, + ilCreateAccountV2Email.rlEtInputLayout, + tvEmailErrorTipCreateAccountV2 + ) + return + } + + if (!ilCreateAccountV2PolicyTermsCheck.cbLoginAgreePrivacyCheckbox.isChecked) { + showToast(R.string.register_txt_agree, gravity = Gravity.CENTER) + return + } + + mCreateAccountV2Activity.setToEmail(email) + + btnCreateAccountV2Continue.isEnabled = false + mCreateAccountV2Activity.isInterceptNetErrorCodeTip = true + mRegisterViewModel.getEmailCode(mCreateAccountV2Activity, email, 1) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnCreateAccountV2Continue -> { + continueClick() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2ThreeFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2ThreeFragment.kt new file mode 100644 index 0000000..3c3f890 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/CreateAccountV2ThreeFragment.kt @@ -0,0 +1,219 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.core.content.ContextCompat +import androidx.core.widget.addTextChangedListener +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentCreateAccountV2ThreeBinding +import com.abbidot.tracker.ui.activity.account.CreateAccountV2Activity +import com.abbidot.tracker.ui.activity.account.SignupSuccessActivity +import com.abbidot.tracker.ui.common.CountryCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + + +/** + * A simple [Fragment] subclass. + * Use the [CreateAccountV2ThreeFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class CreateAccountV2ThreeFragment : BaseFragment( + FragmentCreateAccountV2ThreeBinding::inflate +) { + + private val mUserViewModel: UserProfileViewModel by viewModels() + + private lateinit var mCreateAccountV2Activity: CreateAccountV2Activity + + private lateinit var mCountryCommon: CountryCommon + + private var isShowPassword = false + + companion object { + @JvmStatic + fun newInstance(context: Context) = CreateAccountV2ThreeFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + mCreateAccountV2Activity = activity as CreateAccountV2Activity + mViewBinding.apply { + + ilCreateAccountV2FullName.let { + it.tvInputNameTitle.setText(R.string.register_txt_name) + it.etInputContent.setHint(R.string.acccount_name) + ViewUtil.instance.setInputViewErrorHideClick( + mContext!!, + it.rlEtInputLayout, + tvCreateAccountV2FullNameError, + it.etInputContent + ) + } + + ilCreateAccountV2Country.let { + it.tvInputNameTitle.setText(R.string.txt_country) + ViewUtil.instance.setEditTextDropSelectState(it.etInputContent) + it.ivInputRepresentImage.visibility = View.VISIBLE + ViewUtil.instance.setInputViewErrorHideClick( + mContext!!, + it.rlEtInputLayout, + tvCreateAccountV2SelectCountryError, + it.etInputContent + ) + } + + ilCreateAccountV2Password.let { + it.tvInputNameTitle.setText(R.string.login_txt_password) + it.etInputContent.setHint(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + it.etInputContent.addTextChangedListener { str -> + it.rlEtInputLayout.background = ContextCompat.getDrawable( + mContext!!, R.drawable.shape8_gray_border_white_bg + ) + tvCreateAccountV2PasswordError.setTextColor( + ContextCompat.getColor( + mContext!!, R.color.blue_color1 + ) + ) + str?.apply { + if (length >= 6) { + tvCreateAccountV2PasswordError.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.icon_input_check_svg, 0, 0, 0 + ) + } else { + tvCreateAccountV2PasswordError.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, 0, 0 + ) + } + } + } + } + + mCountryCommon = + CountryCommon(mContext!!, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + ilCreateAccountV2Country.etInputContent.setText(mCountryCommon.getCountry()) + } + }) + + setOnClickListenerViews( + ilCreateAccountV2Country.rlEtInputLayout, + ilCreateAccountV2Country.ivInputRepresentImage, + ilCreateAccountV2Password.ivInputRepresentImage, + btnCreateAccountV2Signup + ) + } + + mUserViewModel.getCountryCodes(mCreateAccountV2Activity) + } + + override fun liveDataObserve() { + mUserViewModel.apply { + mCountryCodeLiveData.observe(mCreateAccountV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mCountryCommon.setCountryCodeData(this) + } + } + }) + } + mRegisterV2LiveData.observe(mCreateAccountV2Activity) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + Util.dealLoginSuccessData(mContext!!, this) + val intent = Intent(mContext, SignupSuccessActivity::class.java) + mCreateAccountV2Activity.startActivityFinish(intent) + } + } + }) + } + } + } + + private fun signupClick() { + mViewBinding.apply { + val name = ilCreateAccountV2FullName.etInputContent.text.toString() +// val country = ilCreateAccountV2Country.etInputContent.text.toString() + val country = "1212" + val email = mCreateAccountV2Activity.mUserEmail + var password = ilCreateAccountV2Password.etInputContent.text.toString() + var isSure = true + if (TextUtils.isEmpty(name)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext!!, + ilCreateAccountV2FullName.rlEtInputLayout, + tvCreateAccountV2FullNameError + ) + } + if (TextUtils.isEmpty(country)) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext!!, + ilCreateAccountV2Country.rlEtInputLayout, + tvCreateAccountV2SelectCountryError + ) + } +// if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { +// isSure = false +// ViewUtil.instance.setInputViewErrorShow( +// mContext!!, ilCreateAccountEmailAddress.rlEtInputLayout, tvEmailErrorTip +// ) +// } + if (TextUtils.isEmpty(password) || password.length < 6) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext!!, + ilCreateAccountV2Password.rlEtInputLayout, + tvCreateAccountV2PasswordError + ) + } + if (!isSure) return + +// if (!ilPolicyTermsCheck.cbLoginAgreePrivacyCheckbox.isChecked) { +// showToast(R.string.register_txt_agree) +// return +// } + + password = Utils.get32Md5Value(password) + mUserViewModel.registerV2( + mCreateAccountV2Activity, email, password, name, mCountryCommon.getCountryCode() + ) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilCreateAccountV2Country.rlEtInputLayout, ilCreateAccountV2Country.ivInputRepresentImage -> mCountryCommon.showCountryCodeDialog() + + ilCreateAccountV2Password.ivInputRepresentImage -> { + isShowPassword = !isShowPassword + ViewUtil.instance.showAndHidePasswordClick( + ilCreateAccountV2Password.etInputContent, + ilCreateAccountV2Password.ivInputRepresentImage, + isShowPassword + ) + } + + btnCreateAccountV2Signup -> signupClick() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/EmailValidFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/EmailValidFragment.kt new file mode 100644 index 0000000..54fa429 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/EmailValidFragment.kt @@ -0,0 +1,207 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.graphics.Paint +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import android.view.View.OnClickListener +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentBaseEmailValidBinding +import com.abbidot.tracker.vm.CountDownTimerViewModel +import com.abbidot.tracker.vm.UserProfileViewModel +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo + + +/** + * A simple [Fragment] subclass. + * Use the [EmailValidFragment.newInstance] factory method to + * create an instance of this fragment. + */ +open class EmailValidFragment : BaseFragment( + FragmentBaseEmailValidBinding::inflate +) { + + private val mCountDownTimerViewModel: CountDownTimerViewModel by viewModels() + private val mRegisterViewModel: UserProfileViewModel by viewModels() + + private val mResendCodeTime = 5 * 60 + 1 + private var mEmail = "" + private var mBtnString = "" + private var mEmailCodeType = 0 + + private lateinit var mOnOkClickListener: OnClickListener + + companion object { + @JvmStatic + fun newInstance( + context: Context, + emailCodeType: Int, + btnString: String = "", + okClickListener: OnClickListener + ) = EmailValidFragment().apply { + mContext = context + mBtnString = btnString + mEmailCodeType = emailCodeType + mOnOkClickListener = okClickListener + } + } + + fun setEmail(email: String) { + mEmail = email + //返回上一个页é¢ä¿®æ”¹é‚®ç®±ï¼Œå†æ¬¡å›žåˆ°éœ€è¦æ›´æ–°é‚®ç®±æ˜¾ç¤º + if (isResumed) formatEmail() + } + + override fun initData() { + super.initData() + + formatEmail() + + mViewBinding.apply { + + if (!TextUtils.isEmpty(mBtnString)) { + btnForgotPasswordV2TwoContinue.text = mBtnString + } + + //添加下划线 + tvForgotPasswordResendCodeBtn.paintFlags = Paint.UNDERLINE_TEXT_FLAG + + vetForgotPasswordV2EditText.setEditClickListener { + vetForgotPasswordV2EditText.setBoxBackground( + ContextCompat.getDrawable( + mContext!!, R.drawable.shape8_gray_border_white_bg + ) + ) + } + setOnClickListenerViews(btnForgotPasswordV2TwoContinue, tvForgotPasswordResendCodeBtn) + } + + mCountDownTimerViewModel.startCountDown(mResendCodeTime.toLong()) + } + + private fun formatEmail() { + val emailString = String.format( + getString(R.string.txt_otp_verification_tips), mEmail + ) + //找出邮箱并加上下划线 +// val index = 38 +// val spannableString = SpannableString(emailString) +// spannableString.setSpan( +// UnderlineSpan(), index, index + mEmail.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE +// ) + mViewBinding.tvForgotPasswordV2EmailDec.text = emailString + } + + override fun liveDataObserve() { + mCountDownTimerViewModel.apply { + mCountDowningLiveData.observe(viewLifecycleOwner) { +// val t = it / 60f +// val str = if (t > 0 && t < 1) 1 +// else if (t >= 1) t.toInt() +// else 0 + mViewBinding.tvForgotPasswordV2TwoValidMin.let { v -> + v.text = String.format(getString(R.string.txt_code_valid_min), "$it") + v.visibility = if (it == 0L) View.INVISIBLE else View.VISIBLE + } + } + + mCountDownEndLiveData.observe(viewLifecycleOwner) { + mViewBinding.tvForgotPasswordV2CountdownTime.visibility = View.GONE + mViewBinding.tvForgotPasswordV2TimeRemaining.visibility = View.GONE + mViewBinding.tvForgotPasswordV2TimeSec.visibility = View.GONE + setResendCodeBtnEnabled(true) + } + } + + mRegisterViewModel.apply { + mGetEmailCodeLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + showToast(R.string.txt_code_success, gravity = Gravity.CENTER) +// mViewBinding.tvForgotPasswordV2CountdownTime.visibility = View.VISIBLE +// mViewBinding.tvForgotPasswordV2TimeRemaining.visibility = View.VISIBLE +// mViewBinding.tvForgotPasswordV2TimeSec.visibility = View.VISIBLE + mCountDownTimerViewModel.startCountDown(mResendCodeTime.toLong()) + } + } + + override fun onRequestError(exceptionCode: String?) { + setResendCodeBtnEnabled(true) + } + }) + } + + mValidateCodeLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mOnOkClickListener.onClick(view) + } + } + }) + } + } + } + + private fun setResendCodeBtnEnabled(enabled: Boolean) { + mViewBinding.tvForgotPasswordResendCodeBtn.apply { + isEnabled = enabled + if (enabled) { + setTextColor( + ContextCompat.getColor( + mContext!!, R.color.black + ) + ) + } else { + setTextColor( + ContextCompat.getColor( + mContext!!, R.color.gray_color8 + ) + ) + } + } + } + + private fun continueVerifyCode() { + mViewBinding.vetForgotPasswordV2EditText.apply { + if (TextUtils.isEmpty(content) || content.length < 4) { + YoYo.with(Techniques.Shake).onStart { + setBoxBackground( + ContextCompat.getDrawable( + mContext!!, R.drawable.shape8_red_border_white_bg + ) + ) + }.duration(50).playOn(this) + return + } + + mRegisterViewModel.validateCode( + this@EmailValidFragment, mEmail, content, mEmailCodeType + ) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnForgotPasswordV2TwoContinue -> continueVerifyCode() + + tvForgotPasswordResendCodeBtn -> { + setResendCodeBtnEnabled(false) + mRegisterViewModel.getEmailCode( + activity as BaseActivity<*>, mEmail, mEmailCodeType + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2OneFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2OneFragment.kt new file mode 100644 index 0000000..7addbb0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2OneFragment.kt @@ -0,0 +1,110 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.text.InputType +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentForgotPasswordV2OneBinding +import com.abbidot.tracker.ui.activity.account.AddEmailValidActivity +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.UserProfileViewModel + + +/** + * A simple [Fragment] subclass. + * Use the [ForgotPasswordV2OneFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class ForgotPasswordV2OneFragment( +) : BaseFragment( + FragmentForgotPasswordV2OneBinding::inflate +) { + + private val mRegisterViewModel: UserProfileViewModel by viewModels() + + //当å‰Fragment所在的下标 + private var mCurrentFragmentPotion = 0 + + private lateinit var mForgotPasswordV2Activity: AddEmailValidActivity + + private var mEmailCodeType = 0 + private var mTitle = "" + + companion object { + @JvmStatic + fun newInstance( + context: Context, title: String, emailCodeType: Int, cFragmentPotion: Int = 0 + ) = ForgotPasswordV2OneFragment().apply { + mContext = context + mCurrentFragmentPotion = cFragmentPotion + mEmailCodeType = emailCodeType + mTitle = title + } + } + + override fun initData() { + super.initData() + mForgotPasswordV2Activity = activity as AddEmailValidActivity + mViewBinding.apply { + tvChangePwdTitle.text = mTitle + ilChangePwdEmail.let { + it.tvInputNameTitle.setText(R.string.txt_email_address) + it.etInputContent.setHint(R.string.login_txt_email) + it.etInputContent.setText(mForgotPasswordV2Activity.mUserEmail) + it.etInputContent.inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS + ViewUtil.instance.setInputViewErrorHideClick( + mContext!!, it.rlEtInputLayout, tvEmailErrorTipChangePwd, it.etInputContent + ) + } + + setOnClickListenerViews(btnForgotPasswordV2OneContinue) + } + } + + override fun liveDataObserve() { + mRegisterViewModel.mGetEmailCodeLiveData.observe(viewLifecycleOwner) { + mViewBinding.btnForgotPasswordV2OneContinue.isEnabled = true + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + //è·³è½¬ä¸‹ä¸€ä¸ªé¡µé¢ + mForgotPasswordV2Activity.switchFragment(mCurrentFragmentPotion + 1) + } + } + }) + } + } + + private fun continueClick() { + mViewBinding.apply { + val email = ilChangePwdEmail.etInputContent.text.toString() + if (TextUtils.isEmpty(email) || !Utils.isValidEmail(email)) { + ViewUtil.instance.setInputViewErrorShow( + mContext!!, ilChangePwdEmail.rlEtInputLayout, tvEmailErrorTipChangePwd + ) + return + } + + mForgotPasswordV2Activity.setToEmail(email) + + btnForgotPasswordV2OneContinue.isEnabled = false + mRegisterViewModel.getEmailCode(mForgotPasswordV2Activity, email, mEmailCodeType) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnForgotPasswordV2OneContinue -> { + continueClick() + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2ThereFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2ThereFragment.kt new file mode 100644 index 0000000..7b66dad --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/ForgotPasswordV2ThereFragment.kt @@ -0,0 +1,195 @@ +package com.abbidot.tracker.ui.fragment.account + +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.core.content.ContextCompat +import androidx.core.widget.addTextChangedListener +import androidx.fragment.app.Fragment +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentForgotPasswordV2ThereBinding +import com.abbidot.tracker.deprecated.ui.activity.vm.ChangePasswordViewModel +import com.abbidot.tracker.ui.activity.account.AddEmailValidActivity +import com.abbidot.tracker.ui.activity.account.ResetPasswordSuccessActivity +import com.abbidot.tracker.util.ViewUtil + + +/** + * A simple [Fragment] subclass. + * Use the [ForgotPasswordV2ThereFragment.newInstance] factory method to + * create an instance of this fragment. + */ +class ForgotPasswordV2ThereFragment : + BaseFragment(FragmentForgotPasswordV2ThereBinding::inflate) { + + private val mChangePasswordViewModel: ChangePasswordViewModel by viewModels() + + private var isShowPassword = false + private var isShowConfirmPassword = false + private lateinit var mForgotPasswordV2Activity: AddEmailValidActivity + + companion object { + @JvmStatic + fun newInstance(context: Context) = ForgotPasswordV2ThereFragment().apply { + mContext = context + } + } + + override fun initData() { + super.initData() + mForgotPasswordV2Activity = activity as AddEmailValidActivity + mViewBinding.apply { + + ilResetPasswordPwd.let { + it.tvInputNameTitle.setText(R.string.login_txt_password) + it.etInputContent.setHint(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + it.etInputContent.addTextChangedListener { str -> + val surePassword = ilResetPasswordPwdSure.etInputContent.text.toString() + it.rlEtInputLayout.background = ContextCompat.getDrawable( + mContext!!, R.drawable.shape8_gray_border_white_bg + ) + if (!TextUtils.isEmpty(surePassword)) { + tvResetPasswordPwdErrorTip.setTextColor( + ContextCompat.getColor( + mContext!!, R.color.blue_color1 + ) + ) + } + str?.apply { + if (length < 6 || surePassword.length < 6) { + tvResetPasswordPwdErrorTip.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, 0, 0 + ) + } else { + tvResetPasswordPwdErrorTip.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.icon_input_check_svg, 0, 0, 0 + ) + } + } + } + } + + ilResetPasswordPwdSure.let { + it.tvInputNameTitle.setText(R.string.txt_confirm_password) + it.etInputContent.setHint(R.string.login_txt_password) + ViewUtil.instance.setShowAndHidePassword( + it.etInputContent, it.ivInputRepresentImage + ) + it.etInputContent.addTextChangedListener { str -> + val password = ilResetPasswordPwd.etInputContent.text.toString() + it.rlEtInputLayout.background = ContextCompat.getDrawable( + mContext!!, R.drawable.shape8_gray_border_white_bg + ) + if (!TextUtils.isEmpty(password)) { + tvResetPasswordPwdErrorTip.setTextColor( + ContextCompat.getColor( + mContext!!, R.color.blue_color1 + ) + ) + } + str?.apply { + if (length < 6 || password.length < 6) { + tvResetPasswordPwdErrorTip.setCompoundDrawablesWithIntrinsicBounds( + 0, 0, 0, 0 + ) + } else { + tvResetPasswordPwdErrorTip.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.icon_input_check_svg, 0, 0, 0 + ) + } + } + } + } + + setOnClickListenerViews( + btnResetNowPwd, + ilResetPasswordPwd.ivInputRepresentImage, + ilResetPasswordPwdSure.ivInputRepresentImage + ) + } + } + + override fun liveDataObserve() { + mChangePasswordViewModel.mResetPasswordLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mForgotPasswordV2Activity.startActivityFinish( + Intent( + mContext, ResetPasswordSuccessActivity::class.java + ) + ) + } + } + }) + } + } + + private fun resetPwd() { + mViewBinding.apply { + val password = ilResetPasswordPwd.etInputContent.text.toString() + val surePassword = ilResetPasswordPwdSure.etInputContent.text.toString() + var isSure = true + + if (TextUtils.isEmpty(password) || password.length < 6) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext!!, ilResetPasswordPwd.rlEtInputLayout, tvResetPasswordPwdErrorTip + ) + } + if (TextUtils.isEmpty(surePassword) || surePassword.length < 6) { + isSure = false + ViewUtil.instance.setInputViewErrorShow( + mContext!!, ilResetPasswordPwdSure.rlEtInputLayout, tvResetPasswordPwdErrorTip + ) + } + + if (!isSure) return + + if (password != surePassword) { + showToast(R.string.txt_password_no_same, gravity = Gravity.CENTER) + return + } + + val pwd = Utils.get32Md5Value(password) + mChangePasswordViewModel.resetPassword( + mForgotPasswordV2Activity, mForgotPasswordV2Activity.mUserEmail, pwd + ) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnResetNowPwd -> resetPwd() + + ilResetPasswordPwd.ivInputRepresentImage -> { + isShowPassword = !isShowPassword + ViewUtil.instance.showAndHidePasswordClick( + ilResetPasswordPwd.etInputContent, + ilResetPasswordPwd.ivInputRepresentImage, + isShowPassword + ) + } + + ilResetPasswordPwdSure.ivInputRepresentImage -> { + isShowConfirmPassword = !isShowConfirmPassword + ViewUtil.instance.showAndHidePasswordClick( + ilResetPasswordPwdSure.etInputContent, + ilResetPasswordPwdSure.ivInputRepresentImage, + isShowConfirmPassword + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt new file mode 100644 index 0000000..854b1dc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/ActivityV2Fragment.kt @@ -0,0 +1,309 @@ +package com.abbidot.tracker.ui.fragment.data + +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import android.view.View +import android.widget.TextView +import androidx.core.content.ContextCompat +import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.ViewModelProvider +import com.abbidot.baselibrary.constant.MMKVKey +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.base.BaseFragment +import com.abbidot.tracker.bean.HomeDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentActivityV2Binding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.data.MoreActivityActivity +import com.abbidot.tracker.ui.activity.data.MoreSleepActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataViewModel +import com.qmuiteam.qmui.widget.pullRefreshLayout.QMUIPullRefreshLayout + + +/** + * 首页Activity + * create an instance of this fragment. + */ +class ActivityV2Fragment : + BaseFragment(FragmentActivityV2Binding::inflate) { + + private lateinit var mDataViewModel: DataViewModel + + private lateinit var mHomeV2Activity: HomeV2Activity + + //当å‰è¿™ä¸ªé¡µé¢æ˜¾ç¤ºçš„宠物下标 + private var mCurrentShowPetPos = -1 + + private var mToday = "2024-06-28" + + companion object { + @JvmStatic + fun newInstance(context: Context) = ActivityV2Fragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + + mToday = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN_CN) + mViewBinding.apply { + + mHomeV2Activity.edgeToEdgeAdapterBars( + svHomeActivityScroll, WindowInsetsCompat.Type.statusBars() + ) + + ilSportActiveLayout.let { + it.root.background = + ContextCompat.getDrawable(mContext!!, R.drawable.shape8_gray_yellow_bg) + it.ivSportTimeType.setImageResource(R.drawable.icon_active_time) + it.tvSportTimeTitle.text = getText(R.string.data_active_other_time) + } + + //下拉刷新 + homeActivityV2PullRefresh.setOnPullListener(object : + QMUIPullRefreshLayout.OnPullListener { + override fun onMoveTarget(offset: Int) { + } + + override fun onMoveRefreshView(offset: Int) { + } + + override fun onRefresh() { + mHomeV2Activity.getPet()?.apply { + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } + } + }) + + setOnClickListenerViews( + ilHomeActivityTopPet.ivTopPetBtnSmall, + btnHomeMoreActivity, + btnHomeMoreSleep, + ilHomeActivityTopPet.homeDataPetNameSmall, + ilHomeActivityTopPet.homeDataPetHeadSmall.root + ) + + if (AppUtils.isDebug()) { + ilHomeActivityTopPet.homeDataPetHeadSmall.root.setOnLongClickListener { + mHomeV2Activity.goToDebugActivity() + true + } + } + +// val activityList = mutableListOf(28, 54, 69, 110, 88, 39, 78, 12, 68, 98, 46, 93) +// homeActiveTimeBarView.setData(activityList) +// homeActiveSleepView.setData(3f, 5f) + } + + //切æ¢åˆ°è´¦æˆ·AccountV2Fragment 页é¢ï¼Œä¼šå¯¼è‡´ViewModel生命周期销æ¯ï¼Œéœ€è¦é‡æ–°åˆ›å»º + mDataViewModel = ViewModelProvider(this)[DataViewModel::class.java] + + initHomeData() + } + + + private fun initHomeData() { + val goal = MMKVUtil.getInt(MMKVKey.ActivityGoal) + mViewBinding.apply { + homeActiveTimeProgress.progress = 0 + tvHomeActivityV2GoalPercent.text = + String.format(getString(R.string.txt_goal_percent), "0") + tvHomeActivityV2Goal.text = + String.format(getString(R.string.txt_min_unit_lower), "0/$goal") + ilSportDistanceLayout.let { + it.tvSportDataContent.text = "0" + it.tvSportDataUnit.text = Util.getMetricUnits(mContext!!, ConstantInt.Type4) + } + ilSportCaloriesLayout.let { + it.ivSportDataType.setImageResource(R.drawable.icon_calories) + it.tvSportDataTitle.text = getString(R.string.data_active_calories) + it.tvSportDataContent.text = "0" + it.tvSportDataUnit.text = getString(R.string.txt_calorie_unit) + } + ilSportActiveLayout.tvSportTimeContent.text = "00:00:00" + ilSportSleepLayout.tvSportTimeContent.text = "00:00:00" + homeActiveTimeBarView.setData(mutableListOf()) + homeActiveSleepView.setData(0f, 0f) + } + } + + override fun onResume() { + super.onResume() + + if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) { + mHomeV2Activity.getPet()?.apply { + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } + } else { + //其他页颿˜¯å¦é€‰æ‹©äº†å® ç‰© + showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + } + } + + override fun liveDataObserve() { + mDataViewModel.mHomeDataLiveData.observe(viewLifecycleOwner) { + initHomeData() + mViewBinding.let { v -> + if (v.homeActivityV2PullRefresh.isRefreshing) { + v.homeActivityV2PullRefresh.finishRefresh() + } + } + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + setHomeData(this) + } + } + }) + } + } + + private fun setHomeData(homeDataBean: HomeDataBean) { + mViewBinding.apply { + var goal = ConstantInt.DefaultSportGoal + var activeTime = 0 + + val updateTime = if (homeDataBean.updateTime == 0L) { + Utils.formatTime(System.currentTimeMillis(), Utils.DATE_FORMAT_PATTERN_EN6) + } else { + Utils.formatTime(homeDataBean.updateTime * 1000, Utils.DATE_FORMAT_PATTERN_EN6) + } + tvHomeActivityV2UpdateTime.text = + String.format(getString(R.string.txt_update_time), updateTime) + + homeDataBean.activeTime?.let { + ViewUtil.instance.viewNumberValueAnimator( + ilSportDistanceLayout.tvSportDataContent, + 0, + Util.metricConvertUnits(it.distance.toFloat(), ConstantInt.Type4, 2) + ) + ViewUtil.instance.viewNumberValueAnimator( + ilSportCaloriesLayout.tvSportDataContent, 0, it.calories + ) + if (it.goalTime >= ConstantInt.MinSportGoal) goal = it.goalTime + + activeTime = it.activeTime + timeConversionValueAnimator(ilSportActiveLayout.tvSportTimeContent, activeTime) + val activeMin = activeTime / 60 + tvHomeActivityV2Goal.text = + String.format(getString(R.string.txt_min_unit_lower), "$activeMin/$goal") + var goalPercent = activeMin / goal.toFloat() + if (goalPercent > 1) { + goalPercent = 1f + } + goalPercent *= 100 + ViewUtil.instance.viewNumberValueAnimator( + tvHomeActivityV2GoalPercent, + 0, + goalPercent.toInt(), + getString(R.string.txt_goal_percent) + ) + ViewUtil.instance.viewNumberValueAnimator( + homeActiveTimeProgress, 0, goalPercent.toInt() + ) + + if (!TextUtils.isEmpty(it.activeValue)) { + val activeTimeList = mutableListOf() + val activeList = it.activeValue.split(",") + for (i in activeList.indices step 2) { + val time = activeList[i].toInt() + activeList[i + 1].toInt() + activeTimeList.add(time / 60) + } + homeActiveTimeBarView.setData(activeTimeList) + } + } + + homeDataBean.sleepTime?.let { + timeConversionValueAnimator( + ilSportSleepLayout.tvSportTimeContent, it.sleepTime + ) + homeActiveSleepView.setData(activeTime.toFloat(), it.sleepTime.toFloat()) + } + } + } + + /** + * 时间动画显示 + */ + private fun timeConversionValueAnimator(textView: TextView, time: Int) { + if (time == 0) return + ViewUtil.instance.setValueAnimator(0, time, 1500) { + val value = it.animatedValue as Int + textView.text = Utils.timeConversion(value) + } + } + + override fun onDetach() { + super.onDetach() + mCurrentShowPetPos = -1 + } + + /** + * è®¾ç½®éœ€è¦æ›´æ–°çš„æ ‡è¯† + */ + fun setNeedUpdateTag() { + mCurrentShowPetPos = -1 + } + + /** + * 显示选择的宠物 + */ + fun showPetNameAndHead(position: Int) { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + if (mHomeV2Activity.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position + + ViewUtil.instance.selectPetDialogShow( + mContext!!, + mHomeV2Activity.mPetList, + position, + mViewBinding.ilHomeActivityTopPet.homeDataPetNameSmall, + mViewBinding.ilHomeActivityTopPet.homeDataPetHeadSmall.appHeadImage + ) + + mHomeV2Activity.getPet()?.apply { + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } + } + + private fun goActivityNeedPet(cls: Class<*>) { + mHomeV2Activity.getPet()?.apply { + Intent(mContext, cls).let { + it.putExtra(ConstantString.Pet, this) + startActivity(it) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilHomeActivityTopPet.ivTopPetBtnSmall -> mHomeV2Activity.getPet()?.apply { + ViewUtil.instance.viewAlphaAndRotationObjectAnimator(v) + mDataViewModel.getHomeDeviceData(deviceId, mToday, petId) + } + + btnHomeMoreActivity -> goActivityNeedPet(MoreActivityActivity::class.java) + + btnHomeMoreSleep -> goActivityNeedPet(MoreSleepActivity::class.java) + + ilHomeActivityTopPet.homeDataPetNameSmall, ilHomeActivityTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt new file mode 100644 index 0000000..57add7a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/data/RouteV2Fragment.kt @@ -0,0 +1,455 @@ +package com.abbidot.tracker.ui.fragment.data + +import android.content.Context +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.core.view.WindowInsetsCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.MMKVKey +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.base.BaseDialog +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentRouteV2Binding +import com.abbidot.tracker.dialog.ShowCalenderAndTimeDialog +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.common.map.HistoryDataMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.DataDetailViewModel +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.TypefaceTextView +import com.abbidot.tracker.widget.VerticalTopToBottomSeekBar +import kotlinx.coroutines.launch + + +/** + * 首页轨迹 + * create an instance of this fragment. + */ +class RouteV2Fragment : BaseFragment(FragmentRouteV2Binding::inflate) { + + private val mDataDetailViewModel: DataDetailViewModel by viewModels() + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + private lateinit var mHomeV2Activity: HomeV2Activity + + private lateinit var mFragment: Fragment + + private var mFromCalenderDialog: ShowCalenderAndTimeDialog? = null + private var mToCalenderDialog: ShowCalenderAndTimeDialog? = null + + //当å‰è¿™ä¸ªé¡µé¢æ˜¾ç¤ºçš„宠物下标 + private var mCurrentShowPetPos = -1 + + //最多åªèƒ½é€‰æ‹©å¤šå°‘天的历å²è®°å½• + private val mOnlySelectDay = 15L + + //当å‰çš„æ—¶é—´æˆ³ + private var mCurrentTimestamp = 0L + private var mFromTimestamp = 0L + private var mToTimestamp = 0L + + //方便ä¿å­˜åœ°ç†åç¼–è¯‘ä¿¡æ¯ + private var mHistoryDataList = mutableListOf() + private val mHistoryDataMapCommon = HistoryDataMapCommon() + + //是å¦é€‰è¿‡è‡ªå®šä¹‰æ—¥æœŸï¼Œæ²¡æœ‰åˆ™å†æ¬¡å›žåˆ°è¿™ä¸ªé¡µé¢ï¼Œåˆ·æ–°å–24å°æ—¶çš„记录 + private var isSelectCustomDate = false + private var isFirst = true + private var mProgress = -1 + + companion object { + @JvmStatic + fun newInstance(context: Context) = RouteV2Fragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + mViewBinding.apply { + mHomeV2Activity.edgeToEdgeAdapterBars( + root, WindowInsetsCompat.Type.statusBars() + ) + mFragment = mHistoryDataMapCommon.getMapFragment( + mContext!!, miHomeRouteAddressView, mGeoCoderViewModel + ) { + mapLoadOk() + } + + ilHomeRoutePetHead.ivTopPetBtnSmall.visibility = View.GONE + + setOnClickListenerViews( + llHomeRouteCalendarFrom, + llHomeRouteCalendarTo, +// ilHomeRoutePetHead.ivTopPetBtnSmall, + ilHomeRoutePetHead.homeDataPetHeadSmall.root, + ilHomeRoutePetHead.homeDataPetNameSmall, + ivHomeRouteMapTypeBtn + ) + + val type = MMKVUtil.getInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + if (type == ConstantInt.Line) { + mViewBinding.rbHistoryRouteMapLine.isChecked = true + } else { + mViewBinding.rbHistoryRouteMapNumber.isChecked = true + } + + if (AppUtils.isDebug()) { + ilHomeRoutePetHead.homeDataPetHeadSmall.root.setOnLongClickListener { + mHomeV2Activity.goToDebugActivity() + true + } + } + } + + //解决报错java.lang.IllegalArgumentException + //No view found for id 0x7f090254 (com.abbidot.tracker:id/fc_home_route_fragment) for fragment HomeMapGoogleMapFragment + //https://www.jianshu.com/p/9235092f407a + childFragmentManager.commit { + add(R.id.fc_home_route_fragment, mFragment) + } +// (mActivity as FragmentActivity).supportFragmentManager.commit { +// add(R.id.fc_home_route_fragment, mFragment) +// } + + initEven() + initState() + } + + /** + * 一开始获å–24å°æ—¶å†…çš„æ•°æ® + */ + private fun get24HourTime() { + mCurrentTimestamp = System.currentTimeMillis() + mViewBinding.apply { + mFromTimestamp = Utils.getBeforeHowTimestamp(mCurrentTimestamp, 1) + mToTimestamp = mCurrentTimestamp + tvHomeRouteCalendarTo.text = + Utils.formatTime(mToTimestamp, Utils.DATE_FORMAT_PATTERN_EN1) + tvHomeRouteCalendarFrom.text = + Utils.formatTime(mFromTimestamp, Utils.DATE_FORMAT_PATTERN_EN1) + } + } + + private fun initState() { + mHistoryDataMapCommon.clearAllMarker() + setSeekBarMax(0) + } + + private fun initEven() { + mViewBinding.vsbMapRouteLine.setOnSeekBarChangeProgressListener(object : + VerticalTopToBottomSeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(progress: Int) { + if (mProgress == progress) { + return + } + mProgress = progress + mViewBinding.miHomeRouteAddressView.visibility = View.GONE + mHistoryDataMapCommon.slideChanged(progress) + + val historyDataBean = mHistoryDataList[progress] + val address = historyDataBean.address + if (!TextUtils.isEmpty(address)) { +// mHistoryDataMapCommon.showInfoWindow(historyDataBean) + } + } + + override fun onStopChanged(progress: Int) { +// val historyDataBean = mHistoryDataList[progress] + +// val address = historyDataBean.address + mHistoryDataMapCommon.slideStopChanged(progress) +// if (TextUtils.isEmpty(address)) { +// mHistoryDataMapCommon.slideStopChanged(progress) +// } else { +// mHistoryDataMapCommon.showInfoWindow(historyDataBean) +// } + } + }) + + mViewBinding.rgHistoryRouteMapTrackType.setOnCheckedChangeListener { _, checkedId -> + mViewBinding.vsbMapRouteLine.progress = mViewBinding.vsbMapRouteLine.max + when (checkedId) { + mViewBinding.rbHistoryRouteMapLine.id -> { + MMKVUtil.putInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + mHistoryDataMapCommon.addSetLine() + if (mHistoryDataList.size > 0) { + mHistoryDataMapCommon.slideStopChanged(mHistoryDataList.size - 1) + } else { + showToast(R.string.no_data, gravity = Gravity.CENTER) + } + } + + mViewBinding.rbHistoryRouteMapNumber.id -> { + MMKVUtil.putInt(MMKVKey.LineSelectPosition, ConstantInt.Point) + mHistoryDataMapCommon.addSetNumber() + if (mHistoryDataList.size > 0) { + mHistoryDataMapCommon.slideStopChanged(mHistoryDataList.size - 1) + } else { + showToast(R.string.no_data, gravity = Gravity.CENTER) + } + } + } + } + } + + override fun onResume() { + super.onResume() + if (mCurrentShowPetPos == mHomeV2Activity.mSelectPetPosition) { + if (!isSelectCustomDate) { + if (mHistoryDataMapCommon.isMapLoadOk()) { + get24HourTime() + getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + } + } + } else { + //其他页颿˜¯å¦é€‰æ‹©äº†å® ç‰© + if (!isSelectCustomDate) get24HourTime() + showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + } + } + + override fun liveDataObserve() { + mDataDetailViewModel.mHistoryDetailLive.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull()!! + setLatLngData(data) + } + }, isShowNoDataTip = false) + } + + //地ç†å编译æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(this) { + val position = mViewBinding.vsbMapRouteLine.progress + if (mHistoryDataList.size <= position) return@observe + mHistoryDataList[position].apply { + //详细ä½ç½® + address = it + +// val timeString = String.format( +// getString(R.string.map_current_update_time), +// DateUtils.getRelativeTimeSpanString(timeStamp * 1000) +// ) + val timeString = Utils.formatTime(timeStamp * 1000, Utils.DATE_FORMAT_PATTERN_EN6) + //æ›´æ–°ä½ç½®æ—¶é—´ + dayTime = timeString + + var delay = 500L + //ç¬¬ä¸€æ¬¡å»¶æ—¶ï¼Œç­‰å¾…åœ°å›¾åŠ¨ç”»æ‰§è¡Œå®Œæˆ + if (isFirst) { + isFirst = false + delay = 1500 + } + mViewBinding.root.postDelayed( + { +// mHistoryDataMapCommon.showInfoWindow(this) + mViewBinding.miHomeRouteAddressView.let { mi -> + mi.visibility = View.VISIBLE + mi.setShowText(timeString, it) + } + }, delay + ) + } + } + } + + /** + * 地图加载好了 + */ + private fun mapLoadOk() { + if (mCurrentShowPetPos == -1) return + showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + } + + /** + * è®¾ç½®éœ€è¦æ›´æ–°çš„æ ‡è¯† + */ + fun setNeedUpdateTag() { + mCurrentShowPetPos = -1 + } + + /** + * 显示选择的宠物 + */ + fun showPetNameAndHead(position: Int) { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + if (mHomeV2Activity.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position + + ViewUtil.instance.selectPetDialogShow( + mContext!!, + mHomeV2Activity.mPetList, + position, + mViewBinding.ilHomeRoutePetHead.homeDataPetNameSmall, + mViewBinding.ilHomeRoutePetHead.homeDataPetHeadSmall.appHeadImage + ) + + if (mHistoryDataMapCommon.isMapLoadOk()) { + getHistoryDay(mViewBinding.tvHomeRouteCalendarFrom) + } + } + + private fun setLatLngData(data: MutableList) { + viewLifecycleOwner.lifecycleScope.launch { + mHistoryDataList = data + mHomeV2Activity.getPet(false)?.let { + mHistoryDataMapCommon.setPetBean(it) + } + + if (isResumed) { + mHomeV2Activity.getPet()?.let { pet -> + if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + mHistoryDataMapCommon.setPetUserLatLng() + return@launch + } + } + } + if (data.size == 0) { + mViewBinding.vsbMapRouteLine.visibility = View.GONE + mHistoryDataMapCommon.setPetUserLatLng() + return@launch + } + + mViewBinding.vsbMapRouteLine.visibility = View.VISIBLE + val max = data.size - 1 + setSeekBarMax(max) + + mHistoryDataMapCommon.setLatLngData(data) + } + } + + private fun setSeekBarMax(max: Int) { + mViewBinding.vsbMapRouteLine.let { + it.max = max + //定ä½ä¸­å¿ƒæ˜¾ç¤ºæœ€åŽä¸€ä¸ªç»çº¬åº¦ + it.progress = max + } + } + + /** + * cSelectView 当å‰è®¾ç½®æ—¥æœŸçš„view + */ + private fun getHistoryDay(cSelectView: TypefaceTextView) { + mViewBinding.apply { + mFromTimestamp = Utils.stringToTimestamp( + tvHomeRouteCalendarFrom.text.toString(), Utils.DATE_FORMAT_PATTERN_EN1 + ) + mToTimestamp = Utils.stringToTimestamp( + tvHomeRouteCalendarTo.text.toString(), Utils.DATE_FORMAT_PATTERN_EN1 + ) + if (mToTimestamp - mFromTimestamp < 0) { + checkCorrectDate(cSelectView) + } else if (mToTimestamp - mFromTimestamp > mOnlySelectDay * 24 * 60 * 60 * 1000) { + checkCorrectDate(cSelectView) + } + + mHomeV2Activity.getPet()?.apply { + initState() + mViewBinding.miHomeRouteAddressView.visibility = View.GONE + mDataDetailViewModel.getHistoryByDay( + mHomeV2Activity, deviceId, mFromTimestamp / 1000, mToTimestamp / 1000 + ) + } + } + } + + /** + * 检测符åˆçš„æ—¥æœŸ + */ + private fun checkCorrectDate(cSelectView: TypefaceTextView) { + mViewBinding.apply { + if (cSelectView == tvHomeRouteCalendarFrom) { + mToTimestamp = Utils.getAfterHowTimestamp(mFromTimestamp, mOnlySelectDay) + if (mToTimestamp > mCurrentTimestamp) { + mToTimestamp = mCurrentTimestamp + } + tvHomeRouteCalendarTo.text = Utils.formatTime( + mToTimestamp, Utils.DATE_FORMAT_PATTERN_EN1 + ) + mToCalenderDialog?.setSelectDate(mToTimestamp) + } else { + //ç»“æŸæ—¥æœŸå°äºŽå¼€å§‹æ—¥æœŸï¼Œå°±é»˜è®¤é€‰æ‹©ç»“æŸæ—¥æœŸå‰ä¸€å¤© + mFromTimestamp = + if (mFromTimestamp > mToTimestamp) Utils.getBeforeHowTimestamp(mToTimestamp, 1L) + else Utils.getBeforeHowTimestamp(mToTimestamp, mOnlySelectDay) + tvHomeRouteCalendarFrom.text = Utils.formatTime( + mFromTimestamp, Utils.DATE_FORMAT_PATTERN_EN1 + ) + mFromCalenderDialog?.setSelectDate(mFromTimestamp) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { +// ilHomeRoutePetHead.ivTopPetBtnSmall -> startActivity( +// Intent( +// mContext, NotificationV2Activity::class.java +// ) +// ) + ilHomeRoutePetHead.homeDataPetNameSmall, ilHomeRoutePetHead.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + + llHomeRouteCalendarFrom -> { + mHomeV2Activity.getPet()?.let { + if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) return@apply + } + + if (null == mFromCalenderDialog) { + mFromCalenderDialog = ShowCalenderAndTimeDialog( + mContext!!, + tvHomeRouteCalendarFrom, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + isSelectCustomDate = true + getHistoryDay(tvHomeRouteCalendarFrom) + } + }, + calenderShowTimestamp = mFromTimestamp + ) + } + mFromCalenderDialog?.show() + } + + llHomeRouteCalendarTo -> { + mHomeV2Activity.getPet()?.let { + if (Util.checkPackageLimit(mHomeV2Activity, it.deviceId)) return@apply + } + if (null == mToCalenderDialog) { + mToCalenderDialog = ShowCalenderAndTimeDialog( + mContext!!, + tvHomeRouteCalendarTo, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + isSelectCustomDate = true + getHistoryDay(tvHomeRouteCalendarTo) + } + }, + calenderShowTimestamp = mToTimestamp + ) + } + mToCalenderDialog?.show() + } + + ivHomeRouteMapTypeBtn -> mHistoryDataMapCommon.switchSatelliteAndNormalMapType() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/HomeFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/HomeFragment.kt new file mode 100644 index 0000000..a6d02f9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/HomeFragment.kt @@ -0,0 +1,32 @@ +package com.abbidot.tracker.ui.fragment.demo + +import android.content.Intent +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentHomeBinding +import com.abbidot.tracker.deprecated.ui.activity.DetailActivity +import com.abbidot.tracker.deprecated.ui.fragment.vm.HomeViewModel +import com.abbidot.tracker.dialog.DialogUtils + +/** + * + */ +class HomeFragment : BaseFragment(FragmentHomeBinding::inflate) { + // +// companion object { +// @JvmStatic +// fun newInstance(context: Context) = HomeFragment().apply { +// mContext = context +// } +// } + override fun initData() { + super.initData() + mViewBinding.test.setOnClickListener { + DialogUtils.showMessageNegativeDialog(mActivity!!, "确定进去å—", { dialog, _ -> + startActivity(Intent(context, DetailActivity::class.java)) + dialog.dismiss() + }, null) + } + + HomeViewModel().getData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/MineFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/MineFragment.kt new file mode 100644 index 0000000..59c937b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/MineFragment.kt @@ -0,0 +1,114 @@ +package com.abbidot.tracker.ui.fragment.demo + +import android.content.Context +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.list.RecyclerViewHolder +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentMineBinding +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.widget.pullLayout.QMUIPullLayout + + +class MineFragment : BaseFragment(FragmentMineBinding::inflate) { + private lateinit var mAdapter: BaseRecyclerAdapter + private lateinit var list: MutableList + + companion object { + @JvmStatic + fun newInstance(context: Context) = MineFragment().apply { + mContext = context + } + } + + override fun initData() { + list = mutableListOf() + mAdapter = object : BaseRecyclerAdapter(mContext!!, list) { + override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_empty_view + + override fun getItemLayoutId(viewType: Int) = R.layout.layout_list_item + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: String) { + holder!!.setText(R.id.sdagfdsgg, item) + } + } + + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager(mContext!!, + mViewBinding.minePullLoad.pullRefreshAndLoadMoreRv, mAdapter) + + mViewBinding.minePullLoad.pullRefreshAndLoadMoreLayout.setActionListener { pullAction -> + mViewBinding.minePullLoad.pullRefreshAndLoadMoreLayout.postDelayed({ + if (pullAction.pullEdge == QMUIPullLayout.PULL_EDGE_TOP) { + onRefreshData() + } else if (pullAction.pullEdge == QMUIPullLayout.PULL_EDGE_BOTTOM) { + onLoadMore() + } + mViewBinding.minePullLoad.pullRefreshAndLoadMoreLayout.finishActionRun(pullAction) + }, 1500) + } + + mAdapter.setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + showLoading(true) + mViewBinding.minePullLoad.pullRefreshAndLoadMoreRv.postDelayed(Runnable { + onRefreshData() + showLoading(false) + }, 1500) + + } + }) + showToast(R.string.txt_net_error) + } + + private fun onLoadMore() { + val id = System.currentTimeMillis() + list = mAdapter.getData() + val data: MutableList = list.toMutableList() + for (i in 0..9) { + data.add("onLoadMore-$id-$i") + } + mAdapter.setData(data) + + val diffResult = DiffUtil.calculateDiff(object : BaseDiffCallBack(list, data) { + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + }, true) + + diffResult.dispatchUpdatesTo(mAdapter) + } + + private fun onRefreshData() { + val data: MutableList = ArrayList() + val id = System.currentTimeMillis() + for (i in 0..20) { + data.add("onRefreshData-$id-$i") + } + list = mAdapter.getData() + mAdapter.setData(data) + if (list.size == 0) { + //防止空布局报错 + mAdapter.notifyDataSetChanged() + return + } + + val diffResult = DiffUtil.calculateDiff(object : BaseDiffCallBack(list, data) { + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + }, true) + + diffResult.dispatchUpdatesTo(mAdapter) + + //刷新完æˆé‡æ–°å®šä½åˆ°ç¬¬ä¸€ä¸ªæ•°æ® +// mViewBinding.recordPullLayout.pullRefreshRv.scrollToPosition(0) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/RecordFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/RecordFragment.kt new file mode 100644 index 0000000..6b687fd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/demo/RecordFragment.kt @@ -0,0 +1,86 @@ +package com.abbidot.tracker.ui.fragment.demo + +import android.content.Intent +import androidx.recyclerview.widget.DiffUtil +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.list.RecyclerViewHolder +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseDiffCallBack +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentRecordBinding +import com.abbidot.tracker.deprecated.ui.activity.SwipeActionActivity +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.widget.pullRefreshLayout.QMUIPullRefreshLayout + +class RecordFragment : BaseFragment(FragmentRecordBinding::inflate) { + private lateinit var mAdapter: BaseRecyclerAdapter + private lateinit var list: MutableList + +// companion object { +// @JvmStatic +// fun newInstance(context: Context) = RecordFragment().apply { +// mContext = context +// } +// } + + override fun initData() { + list = mutableListOf() + mAdapter = object : BaseRecyclerAdapter(mContext!!, list) { + override fun getEmptyLayoutId(viewType: Int) = R.layout.layout_empty_view + + override fun getItemLayoutId(viewType: Int) = R.layout.layout_list_item + + override fun bindData(holder: RecyclerViewHolder?, position: Int, item: String) { + holder!!.setText(R.id.sdagfdsgg, item) + } + } + + ViewUtil.instance.setRecyclerViewDecorationLinearLayoutManager(mContext!!, + mViewBinding.recordPullLayout.pullRefreshRv, mAdapter) + + mViewBinding.recordPullLayout.onlyPullToRefresh.setOnPullListener(object : + QMUIPullRefreshLayout.OnPullListener { + override fun onMoveTarget(offset: Int) { + } + + override fun onMoveRefreshView(offset: Int) { + } + + override fun onRefresh() { + mViewBinding.recordPullLayout.onlyPullToRefresh.postDelayed(Runnable { + onDataLoaded() + mViewBinding.recordPullLayout.onlyPullToRefresh.finishRefresh() + }, 1000) + } + }) + + mViewBinding.swipeBtn.setOnClickListener { + startActivity(Intent(mContext, SwipeActionActivity::class.java)) + } + + onDataLoaded() + } + + private fun onDataLoaded() { + val data: MutableList = ArrayList( + listOf("Helps", "Maintain", "Liver", "Health", "Function", "Supports", "Healthy", + "Fat", "Metabolism", "Nuturally", "Bracket", "Refrigerator", "Bathtub", + "Wardrobe", "Comb", "Apron", "Carpet", "Bolster", "Pillow", "Cushion")) + data.shuffle() + list = mAdapter.getData() + mAdapter.setData(data) + + val diffResult = DiffUtil.calculateDiff(object : BaseDiffCallBack(list, data) { + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = + list[oldItemPosition] == data[newItemPosition] + + }, true) + + diffResult.dispatchUpdatesTo(mAdapter) + //刷新完æˆé‡æ–°å®šä½åˆ°ç¬¬ä¸€ä¸ªæ•°æ® + mViewBinding.recordPullLayout.pullRefreshRv.scrollToPosition(0) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt new file mode 100644 index 0000000..031f6b7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt @@ -0,0 +1,923 @@ +package com.abbidot.tracker.ui.fragment.device + +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import android.view.Gravity +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.FencesZoneAdapter +import com.abbidot.tracker.adapter.HomePetTrackMenuAdapter +import com.abbidot.tracker.adapter.HomePetTrackStateAdapter +import com.abbidot.tracker.adapter.WiFiZoneAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.FirmwareBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.databinding.FragmentHomeTrackBinding +import com.abbidot.tracker.dialog.DFUNewDialog +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.device.fences.VirtualFencesActivity +import com.abbidot.tracker.ui.activity.device.wifi.PowerSavingSetActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.ConnectionDeviceViewModel +import com.abbidot.tracker.vm.DeviceDFUViewModel +import com.abbidot.tracker.vm.DownLoadFileViewModel +import com.abbidot.tracker.vm.TrackerInfoViewModel +import com.abbidot.tracker.vm.TrackerSetViewModel +import com.clj.fastble.BleManager +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import no.nordicsemi.android.dfu.DfuServiceListenerHelper + + +/** + * 首页Track切æ¢é¡µé¢ + * create an instance of this fragment. + */ +class HomeTrackFragment : + BaseFragment(FragmentHomeTrackBinding::inflate) { + + private val mTrackerInfoViewModel: TrackerInfoViewModel by viewModels() + private val mTrackerSetViewModel: TrackerSetViewModel by viewModels() + private val mConnectionDeviceViewModel: ConnectionDeviceViewModel by viewModels() + private val mDeviceDFUViewModel: DeviceDFUViewModel by viewModels() + private val mDownLoadFileViewModel: DownLoadFileViewModel by viewModels() + + private lateinit var mHomeV2Activity: HomeV2Activity + + private lateinit var mHomePetTrackStateAdapter: HomePetTrackStateAdapter + private lateinit var mTrackStateList: MutableList + + private lateinit var mFencesAdapter: FencesZoneAdapter + private lateinit var mFencesList: MutableList + + private lateinit var mZoneAdapter: WiFiZoneAdapter + private lateinit var mZoneList: MutableList + + private lateinit var mTrackMenuAdapter: HomePetTrackMenuAdapter + private lateinit var mTrackMenuList: MutableList + + private var mDFUNewDialogDialog: DFUNewDialog? = null +// private var mTrackerDFUStateDialog: TrackerDFUStateDialog? = null +// private lateinit var mDFUStateAdapter: DFUStateAdapter + + private var mMapDeviceBean: MapDeviceBean? = null + private var mBleTrackDeviceBean: BleTrackDeviceBean? = null + + //æ˜¯å¦æ˜¯dfu的返回的 + private var isDFUCallback = false + private var mFirmwareBean: FirmwareBean? = null + + companion object { + @JvmStatic + fun newInstance(context: Context) = HomeTrackFragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + mViewBinding.apply { + root.setBackgroundResource(R.color.transparent) + addListData() + mHomePetTrackStateAdapter = + HomePetTrackStateAdapter(mContext!!, mTrackStateList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + when (pos) { + 0 -> { + val value = mHomePetTrackStateAdapter.getData()[pos].menuValue + if (value == getString(R.string.txt_offline)) showToast( + R.string.txt_no_signal_tip, gravity = Gravity.CENTER + ) + } + + 1 -> { + val value = mHomePetTrackStateAdapter.getData()[pos].menuValue + if (value == getString(R.string.txt_no_signal)) showToast( + R.string.txt_no_signal_tip, gravity = Gravity.CENTER + ) + } + + 4 -> connectionBtn(getData()[pos].menuValue) + 5 -> setLedSwitch() + } + } + }) + } + ViewUtil.instance.setRecyclerViewGridLayout( + mContext!!, + rvHomePetTrackState, + mHomePetTrackStateAdapter, + 3, + itemWidth = AppUtils.dpToPx(110), + top = QMUIDisplayHelper.dpToPx(8), + offset = AppUtils.dpToPx(16) + ) + mFencesAdapter = FencesZoneAdapter(mContext!!, mFencesList, false).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mHomeV2Activity.getPet()?.apply { + goPetDataActivity(VirtualFencesActivity::class.java) + } + } + }) + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + mHomeV2Activity.getPet()?.let { pet -> + if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + return + } + } + goPetDataActivity(VirtualFencesActivity::class.java) + } + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, + rvHomePetTrackVirtualFences, + mFencesAdapter, + top = QMUIDisplayHelper.dpToPx(18) + ) + + mZoneAdapter = WiFiZoneAdapter(mContext!!, mZoneList, false).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goPetDataActivity(PowerSavingSetActivity::class.java) + } + }) + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + goPetDataActivity(PowerSavingSetActivity::class.java) + } + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomePetTrackWifiZone, mZoneAdapter, top = QMUIDisplayHelper.dpToPx(18) + ) + + mTrackMenuAdapter = HomePetTrackMenuAdapter(this@HomeTrackFragment, mTrackMenuList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomePetTrackMenu, mTrackMenuAdapter + ) + + setOnClickListenerViews(btnHomePetTrackWifiZoneManage, btnHomePetTrackVirtualFencesEdit) + +// mHomeV2Activity.getPet()?.apply { +// mTrackerManageSetViewModel.getPetTrackerInfo(mHomeV2Activity, deviceId) +// } + } + + getPetTrackerInfoData() + } + + override fun liveDataObserve() { + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe(this, EventName.ConnectDeviceState) { ble: BleTrackDeviceBean -> + mHomeV2Activity.getPet()?.apply { + if (ble.mac == macID) { + updateConState(ble) + } + } + } + //接收开è“牙æ“作,ç„¶åŽæœç´¢è¿žæŽ¥è®¾å¤‡ + XEventBus.observe(this, EventName.ActionConDeviceState) { conState: Int -> + if (conState == ConState.CONNECTING || conState == ConState.CONNECTING_MAC) { +// mConnectionDeviceViewModel.connectingFailCountDown() + mTrackStateList[4].apply { + menuValue = getString(R.string.txt_connecting) + colorRedId = R.color.gray + isSwitch = true + mHomePetTrackStateAdapter.notifyItemChanged(4) + } + } else { + mTrackStateList[4].apply { + menuValue = getString(R.string.txt_unconnect_no) + isSwitch = false + colorRedId = R.color.orange_color3 + mHomePetTrackStateAdapter.notifyItemChanged(4) + } + } + } + //接收å‘逿Œ‡ä»¤åŽè®¾å¤‡è¿”å›žçš„æ•°æ® + XEventBus.observe(this, EventName.DeviceReceiveData) { receiveData: ReceiveDeviceData -> + getBleTrackDeviceBean(false)?.let { + if (it.mac == receiveData.mac) { + val data = receiveData.data + parseData(data) + } + } + } + //è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> + mHomeV2Activity.getPet(false)?.apply { + if (macID == reportData.mac) updateBleReportData(reportData) + } + } + + mTrackerInfoViewModel.mTrackerInfoLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + mMapDeviceBean = data +// if (BleManager.getInstance().isConnected(deviceMacId)) { +// LogUtil.e("è“牙连接,ä¸ä½¿ç”¨æŽ¥å£æ•°æ®æ›´æ–°çжæ€") +// } else { +// } + setStateData(data) + setZoneData(data) + } + } + }) + shareDeviceState() + } + + //下载固件 + mDownLoadFileViewModel.mDownloadProgressLiveData.observe(this) { + it?.apply { +// mTrackerDFUStateDialog?.addData(this) + if (progress == 100) { + LogUtil.e("固件下载完æˆ") + mDeviceDFUViewModel.startDFU( + mContext!!, mBleTrackDeviceBean!!.bleDevice!!, filePath + ) + } + } + } + + mDeviceDFUViewModel.apply { + //接收固件版本返回 + mFirmwareInfoLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mFirmwareBean = this + mFirmwareBean?.mac = mBleTrackDeviceBean?.mac!! + + val localVersion = mTrackMenuList[3].menuValue + if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) { + mTrackMenuList[3].isSwitch = true + mTrackMenuAdapter.notifyItemChanged(3) + } + } + } + }) + } + //接收dfu结果 + mDfuStateLiveData.observe(viewLifecycleOwner) { + it?.apply { +// mTrackerDFUStateDialog?.addData(this) + if (progress in 0..100) mDFUNewDialogDialog?.setDFUProgress(progress) + if (progress == mDeviceDFUViewModel.mDFUSuccessCode) { + mDFUNewDialogDialog?.setDFUProgress(100) + isDFUCallback = true + mBleTrackDeviceBean?.let { ble -> + mConnectionDeviceViewModel.connectDeviceToMac( + mHomeV2Activity, ble.mac, false + ) + } + } else if (progress == mDeviceDFUViewModel.mDFUFailCode) { +// mTrackerDFUStateDialog?.dismiss() + mDFUNewDialogDialog?.setDFUFail { + mFirmwareBean?.apply { + mDownLoadFileViewModel.downLoadFile( + mContext!!, fileName, firmwareUrl + ) + } + } + } + } + } + } + + mTrackerSetViewModel.apply { + mTurnoffLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + mTrackMenuList[4].menuValue = ConstantInt.Close.toString() + mTrackMenuAdapter.notifyItemChanged(4) + bleTurnOff() + } + }) + } + mLedSwitchLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + + } + }) + } + } + } + + fun getPetTrackerInfoData() { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + mHomeV2Activity.getPet()?.apply { +// mViewBinding.ivHomePetTrackPetHead.load(imgurl) + mTrackerInfoViewModel.getPetTrackerInfo(mHomeV2Activity, deviceId) + + mTrackMenuList[1].menuValue = "" + mTrackMenuList[2].menuValue = "" + + getBleTrackDeviceBean(false)?.let { ble -> + if (BleManager.getInstance().isConnected(macID)) { + //获å–å›ºä»¶ç‰ˆæœ¬å· + if (null == mFirmwareBean) { + SRBleUtil.instance.writeData( + ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() + ) + } else { + //åªæœ‰æ–°çš„è®¾å¤‡ï¼Œå›žåˆ°è¿™ä¸ªç•Œé¢æ‰åŽ»æ£€æŸ¥dfu + if (mFirmwareBean?.mac != ble.mac) { + mTrackMenuList[3].menuValue = "" + mTrackMenuList[3].isSwitch = false + SRBleUtil.instance.writeData( + ble.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() + ) + } + } + } else { + mFirmwareBean = null + mTrackMenuList[3].menuValue = "" + mTrackMenuList[3].isSwitch = false + } + } + if (null == mBleTrackDeviceBean) { + mFirmwareBean = null + mTrackMenuList[3].menuValue = "" + mTrackMenuList[3].isSwitch = false + } + mTrackMenuAdapter.notifyItemRangeChanged(1, 3) + } + } + + /** + * æ˜¾ç¤ºåˆ†äº«çš„è®¾å¤‡çŠ¶æ€ + */ + private fun shareDeviceState() { + val share = MMKVUtil.getInt(MMKVKey.Shared) + if (share == ConstantInt.NoShare) { + mZoneAdapter.showNoDataAddButton(true) + mFencesAdapter.showNoDataAddButton(true) + } else { + mZoneAdapter.showNoDataAddButton(false) + mFencesAdapter.showNoDataAddButton(false) + } + } + + private fun addListData() { + mTrackStateList = mutableListOf() + mFencesList = mutableListOf() + mZoneList = mutableListOf() + + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.tracker_manage_set_network), + getString(R.string.txt_offline), + imageResId = R.drawable.icon_map_signal + ) + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.tracker_manage_set_gps), + getString(R.string.txt_weak_signal), + imageResId = R.drawable.icon_map_gps + ) + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.txt_battery), + "N/A", + imageResId = -1, + menuType = MultipleEntity.IMG_TEXT_IMG + ) + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.txt_low_zone), + getString(R.string.txt_outside), + imageResId = R.drawable.icon_map_zone + ) + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.txt_bluetooth), + getString(R.string.txt_unconnect_no), + menuType = MultipleEntity.TEXT_TEXT_IMG + ) + + ViewUtil.instance.addMenuBean( + mTrackStateList, + getString(R.string.txt_light), + getString(R.string.tracker_manage_set_led_off), + imageResId = R.drawable.icon_light_svg + ) + + mTrackMenuList = mutableListOf() + ViewUtil.instance.addMenuBean(mTrackMenuList, getString(R.string.tracker_manage_led)) + ViewUtil.instance.addMenuBean( + mTrackMenuList, getString(R.string.tracker_manage_set_duration) + ) + ViewUtil.instance.addMenuBean(mTrackMenuList, getString(R.string.txt_live_duration)) + ViewUtil.instance.addMenuBean( + mTrackMenuList, + getString(R.string.txt_firmware_upgrade), + menuType = MultipleEntity.IMG_TEXT_IMG + ) + ViewUtil.instance.addMenuBean( + mTrackMenuList, + getString(R.string.txt_power_off), + menuType = MultipleEntity.IMG_TEXT//, menuType = MultipleEntity.TEXT_NAME + ) + } + + /** + * æ›´æ–°è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + */ + private fun updateBleReportData(bleReportDataBean: BleReportDataBean) { + bleReportDataBean.apply { + if (haveDeviceStateData) { + if (null == mMapDeviceBean) mMapDeviceBean = MapDeviceBean() + mMapDeviceBean!!.let { + Util.bleReportDataToMapDevice(it, bleReportDataBean) + setStateData(it) + } + } + } + } + + /** + * è®¾ç½®ç›¸å…³çŠ¶æ€æ•°æ® + */ + private fun setStateData(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + val startTime = "${getString(R.string.txt_start_time)}:${ + startTime.split(" ")[0].replace( + "-", "." + ) + }" + val eTime = Utils.stringToDate( + endTime, Utils.DATE_FORMAT_PATTERN_CN, Utils.DATE_FORMAT_PATTERN_EN7 + ) + val endTime = "${getString(R.string.txt_expires_on1)}$eTime" + val id = "ID:$deviceOutId" + mViewBinding.let { + it.tvHomePetTrackPetStartTime.text = startTime + it.tvHomePetTrackPetEndTime.text = endTime + it.tvHomePetTrackId.text = id + } + + //是å¦è¶…时上报 + val isTimeoutReport = Util.isTimeoutReport(updateTime) + mTrackStateList[0].let { + it.menuValue = + if (isTimeoutReport || lteSignal == ConstantInt.NoSignal || powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2) { + it.colorRedId = R.color.orange_color3 + getString(R.string.txt_offline) + } else { + it.colorRedId = R.color.blue_color1 + getString(R.string.txt_online) + } + } + mTrackStateList[1].let { + it.colorRedId = R.color.orange_color3 + it.menuValue = + if (isTimeoutReport || gpsSignal == ConstantInt.NoSignal || powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2 || inWifiZone == ConstantInt.Type1) { + getString(R.string.txt_no_signal) + } else if (gpsSignal > ConstantInt.WeakSignal) { + it.colorRedId = R.color.blue_color1 + getString(R.string.txt_strong_signal) + } else { + getString(R.string.txt_weak_signal) + } + } + mTrackStateList[2].let { + it.menuValue = + if (isTimeoutReport || lteSignal == ConstantInt.NoSignal || powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2) { + it.colorRedId = R.color.blue_color1 +// it.imageId = -1 +// "N/A" + "${batteryLevel}%" + } else { + it.colorRedId = + if (batteryLevel > ConstantInt.LowBattery20) R.color.blue_color1 + else R.color.orange_color3 + "${batteryLevel}%" + } + it.imageId = Utils.calculatePowerLevel(batteryLevel) + } + mTrackStateList[3].let { + it.colorRedId = R.color.orange_color3 + it.menuValue = when (inWifiZone) { + ConstantInt.Open -> { + it.colorRedId = R.color.blue_color1 + getString(R.string.txt_inside) + } + + ConstantInt.Type2 -> getString(R.string.txt_not_set) + else -> getString(R.string.txt_outside) + } + } + mTrackStateList[4].let { + if (it.menuValue == getString(R.string.txt_connecting)) return + it.colorRedId = R.color.orange_color3 + it.menuValue = if (BleManager.getInstance().isConnected(deviceMacId)) { + it.colorRedId = R.color.blue_color1 + getString(R.string.txt_connected) + } else { + getString(R.string.txt_unconnect_no) + } + } + mTrackStateList[5].let { + it.colorRedId = R.color.orange_color3 + it.menuValue = if (ledSwitch == ConstantInt.Open) { + it.colorRedId = R.color.blue_color1 + getString(R.string.tracker_manage_set_led_on) + } else { + getString(R.string.tracker_manage_set_led_off) + } + } + + mTrackMenuList.let { + it[1].menuValue = + (gnssInterval / 60).toString() + getString(R.string.data_active_unit_min) + it[2].menuValue = + (liveTime / 60).toString() + getString(R.string.data_active_unit_min) + it[4].menuValue = powerSwitch.toString() + } + } + + mTrackMenuAdapter.notifyItemRangeChanged(1, mTrackMenuList.size) + mHomePetTrackStateAdapter.notifyItemRangeChanged(0, mTrackStateList.size) + } + + private fun setZoneData(mapDeviceBean: MapDeviceBean) { + mFencesList.clear() + mZoneList.clear() + mFencesAdapter.setData(null) + mZoneAdapter.setData(null) + mapDeviceBean.fences?.apply { + if (size > 0) { + if (size > 3) mFencesList.addAll(subList(0, 3).toList()) + else mFencesList.addAll(this.toList()) + mFencesAdapter.setData(mFencesList, true) + mViewBinding.btnHomePetTrackVirtualFencesEdit.visibility = View.VISIBLE + } else { + mViewBinding.btnHomePetTrackVirtualFencesEdit.visibility = View.GONE + } + } + mapDeviceBean.wifiZones?.apply { + if (size > 0) { + mZoneList.addAll(this) + mZoneAdapter.setData(mZoneList, true) + mViewBinding.btnHomePetTrackWifiZoneManage.visibility = View.VISIBLE + } else { + mViewBinding.btnHomePetTrackWifiZoneManage.visibility = View.GONE + } + } + } + + /** + * è®¾ç½®å›ºä»¶ä¿¡æ¯ + */ + private fun setFirmwareData(firmware: FirmwareBean?) { + if (null == firmware) { + showToast(R.string.txt_latest_version) + return + } + firmware.apply { + val remark = if (TextUtils.isEmpty(remark)) { + "" + } else { + "\n${getString(R.string.txt_release_notes)}:${remark}" + } + val message = + "${getString(R.string.txt_firmware_name)}:$fileName\n${getString(R.string.txt_firmware_version)}:$version\n${ + getString(R.string.txt_firmware_size) + }:$firmwareSize$remark" +// if (null == mTrackerDFUStateDialog) { +// mDFUStateAdapter = DFUStateAdapter(mContext!!, null) +// mTrackerDFUStateDialog = TrackerDFUStateDialog(mContext!!, mDFUStateAdapter) +// } + val localVersion = mTrackMenuList[3].menuValue + if (mDeviceDFUViewModel.checkVersionUpdate(localVersion, version)) { +// mTrackerDFUStateDialog?.apply { +// show() +// setContent(message) +// startSureDFU { +// if (TextUtils.isEmpty(firmwareUrl)) { +// showToast(R.string.txt_no_down_url) +// } else { +// mDownLoadFileViewModel.downLoadFile(mContext, fileName, firmwareUrl) +// } +// } +// } + if (null == mDFUNewDialogDialog) mDFUNewDialogDialog = DFUNewDialog(mContext!!) + mDFUNewDialogDialog?.apply { + show() + startDfuState(version) { + if (TextUtils.isEmpty(firmwareUrl)) { + showToast(R.string.txt_no_down_url) + } else { + mDownLoadFileViewModel.downLoadFile( + mContext, fileName, firmwareUrl + ) + } + } + } + } else { + showToast(R.string.txt_latest_version) + } + } + } + + /** + * æ›´æ–°è®¾å¤‡è¿žæŽ¥çŠ¶æ€ + */ + private fun updateConState(trackBleDevice: BleTrackDeviceBean) { + mBleTrackDeviceBean = trackBleDevice + + if (trackBleDevice.conState == ConState.CONNECTED) { + if (isDFUCallback) { + showToast(R.string.txt_upgrade_success) + } + mHomePetTrackStateAdapter.notifyItemChanged(4) + mTrackStateList[4].apply { + menuValue = getString(R.string.txt_connected) + isSwitch = false + colorRedId = R.color.blue_color1 + mHomePetTrackStateAdapter.notifyItemChanged(4) + } + //获å–å›ºä»¶ç‰ˆæœ¬å· + SRBleUtil.instance.writeData( + trackBleDevice.bleDevice, SRBleCmdUtil.instance.getFirmwareVersion() + ) + } else { + if (isDFUCallback) { + showToast(R.string.txt_connect_fail) + } + mTrackStateList[4].apply { + menuValue = getString(R.string.txt_unconnect_no) + isSwitch = false + colorRedId = R.color.orange_color3 + mHomePetTrackStateAdapter.notifyItemChanged(4) + } + } + //dfuå‡çº§æˆåŠŸ 釿–°è¿žæŽ¥è¿”回 + if (isDFUCallback) { +// mTrackerDFUStateDialog?.dismiss() + isDFUCallback = false + } + } + + /** + * è§£æžæ•°æ® + */ + private fun parseData(data: ByteArray?) { + if (null != data && data.isNotEmpty()) { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + if (data0 == 9) { + if (data2 == 0) { + val strVersion = String(data.sliceArray(3..11)) + LogUtil.e("设备固件版本å·ï¼š$strVersion") + mTrackMenuList[3].menuValue = strVersion + mTrackMenuList[3].isSwitch = false + mTrackMenuAdapter.notifyItemChanged(3) + mDeviceDFUViewModel.getFirmware(mHomeV2Activity, false) + mBleTrackDeviceBean?.apply { + SRBleUtil.instance.writeData( + bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_READ, 0) + ) + } + } + } else if (data0 == 3 && data1 == 0 && data2 == 0) { + val data3 = SRBleCmdUtil.instance.byteToInt(data[3]) + if (data3 in 1..3) setLedState(ConstantInt.Open) + else setLedState(ConstantInt.Close) + } else if (data0 == 4) { + if (data1 == 1 && data2 == 0) { + mTrackMenuList[1].menuValue = "" + mTrackMenuList[2].menuValue = "" + mTrackMenuList[3].menuValue = "" + //å–æ¶ˆçº¢ç‚¹æ˜¾ç¤º + mTrackMenuList[3].isSwitch = false + mTrackMenuList[4].menuValue = ConstantInt.Close.toString() + mTrackMenuAdapter.notifyItemRangeChanged(1, 4) + mBleTrackDeviceBean?.apply { + SRBleUtil.instance.disconnectToMac(mac) + } + } + } + } + } + + fun goPetDataActivity(cls: Class<*>) { + mHomeV2Activity.getPet()?.apply { + val intent = Intent(mContext, cls) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + + fun goMapDeviceDataActivity(cls: Class<*>) { + mMapDeviceBean?.apply { + val intent = Intent(mContext, cls) + intent.putExtra(ConstantString.MapDeviceBean, this) + startActivity(intent) + } + } + + /** + * 获å–当å‰å® ç‰©çš„连接设备 + */ + private fun getBleTrackDeviceBean(isShowBleUnConTip: Boolean = true): BleTrackDeviceBean? { + mHomeV2Activity.getPet()?.apply { + if (null == mBleTrackDeviceBean) { + mBleTrackDeviceBean = SRBleUtil.instance.getConnectMacDevice(macID) + } else { + //判断是å¦åˆ‡æ¢äº†å® ç‰© + mBleTrackDeviceBean?.let { + if (it.mac != macID) mBleTrackDeviceBean = + SRBleUtil.instance.getConnectMacDevice(macID) + } + } + } + + if (isShowBleUnConTip && null == mBleTrackDeviceBean) { + showToast(R.string.tracker_manage_set_ble_unconnect) + } + return mBleTrackDeviceBean + } + + /** + * 固件开始检查更新 + */ + fun firmwareCheckUpdate() { + getBleTrackDeviceBean()?.let { + if (BleManager.getInstance().isConnected(it.bleDevice)) { + setFirmwareData(mFirmwareBean) + } else { + showToast(R.string.tracker_manage_set_ble_unconnect) + } + } + } + + /** + * 手动连接/断开设备 + */ + private fun connectionBtn(btnString: String) { + if (btnString == getString(R.string.txt_unconnect_no)) { + Util.checkBluetoothPermissionsEnabled(mContext!!, { + mHomeV2Activity.getPet()?.apply { + mConnectionDeviceViewModel.connectDeviceToMac(mHomeV2Activity, macID, false) + } + }) + } else if (btnString == getString(R.string.txt_connected)) { + operateDeviceTips(R.string.txt_disconnect_tips, 1) + } + } + + /** + * 设备关机/断开连接设备 + */ + fun operateDeviceTips(messageID: Int, type: Int) { + if (type == ConstantInt.Type0) { + getBleTrackDeviceBean()?.apply { + if (!BleManager.getInstance().isConnected(mac)) { + showToast(R.string.tracker_manage_set_ble_unconnect) + return@apply + } + } + if (null == mBleTrackDeviceBean) return + } + ViewUtil.instance.showDialog( + mContext!!, messageID, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + when (type) { + 0 -> mMapDeviceBean?.let { +// mTrackerSetViewModel.turnOff(mHomeV2Activity, it.deviceServerId) + bleTurnOff() + } + + 1 -> mBleTrackDeviceBean?.let { + mConnectionDeviceViewModel.disconnect(it.bleDevice) + } + } + } + }, okTextResId = R.string.start_txt_yes + ) + } + + /** + * 远程设置led开关 + */ + private fun setLedSwitch() { + mTrackStateList[5].apply { + val ledSwitch = if (menuValue == getString(R.string.tracker_manage_set_led_on)) { + ConstantInt.Close + } else { + ConstantInt.Open + } + //è“牙控制 + getBleTrackDeviceBean(false)?.let { + SRBleUtil.instance.setBleLedSwitch(mContext!!, it.bleDevice, ledSwitch) + } + //远程控制 + mMapDeviceBean?.let { + mTrackerSetViewModel.setLedSwitch(null, it.deviceServerId, ledSwitch) + } + + setLedState(ledSwitch) + } + } + + /** + * 设置LEDçš„çŠ¶æ€ + */ + private fun setLedState(ledSwitch: Int) { + mTrackStateList[5].apply { + colorRedId = R.color.orange_color3 + menuValue = if (ledSwitch == ConstantInt.Open) { + colorRedId = R.color.blue_color1 + getString(R.string.tracker_manage_set_led_on) + } else { + getString(R.string.tracker_manage_set_led_off) + } + mHomePetTrackStateAdapter.notifyItemChanged(5) + } + } + + private fun bleTurnOff() { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + mBleTrackDeviceBean?.apply { + if (BleManager.getInstance().isConnected(bleDevice)) { + val cmd = SRBleCmdUtil.instance.shutdownDevice() + SRBleUtil.instance.writeData(bleDevice, cmd) + } + } + } + + override fun onResume() { + super.onResume() + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + DfuServiceListenerHelper.registerProgressListener( + mContext!!, mDeviceDFUViewModel.mDfuProgressListener + ) + } + + override fun onPause() { + super.onPause() + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + DfuServiceListenerHelper.unregisterProgressListener( + mContext!!, mDeviceDFUViewModel.mDfuProgressListener + ) + } + + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnHomePetTrackWifiZoneManage -> goPetDataActivity(PowerSavingSetActivity::class.java) + btnHomePetTrackVirtualFencesEdit -> goPetDataActivity(VirtualFencesActivity::class.java) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt new file mode 100644 index 0000000..6f06641 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV2Fragment.kt @@ -0,0 +1,624 @@ +package com.abbidot.tracker.ui.fragment.map + +import android.content.Context +import android.content.Intent +import android.location.LocationManager +import android.provider.Settings +import android.view.View +import androidx.core.view.WindowInsetsCompat +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.HomeMapDeviceMsgAdapter +import com.abbidot.tracker.adapter.HomeMapDeviceStateAdapter +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.FragmentMapV2Binding +import com.abbidot.tracker.dialog.CommonDialog1 +import com.abbidot.tracker.dialog.SelectMapTypeDialog +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity +import com.abbidot.tracker.ui.activity.map.LiveActivityV2 +import com.abbidot.tracker.ui.common.map.HomeMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.vm.FamilyViewModel +import com.abbidot.tracker.vm.FencesMapViewModel +import com.abbidot.tracker.vm.MapViewModel +import com.abbidot.tracker.widget.MapDeviceNetView +import com.clj.fastble.BleManager +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import javax.inject.Inject + + +/** + * 首页map + * create an instance of this fragment. + */ +@AndroidEntryPoint +class MapV2Fragment : BaseFragment(FragmentMapV2Binding::inflate) { + + private val mFencesMapViewModel: FencesMapViewModel by viewModels() + private val mMapViewModel: MapViewModel by viewModels() + private val mFamilyViewModel: FamilyViewModel by viewModels() + + private lateinit var mLocationManager: LocationManager + + private lateinit var mHomeV2Activity: HomeV2Activity + + private var mSelectMapTypeDialog: SelectMapTypeDialog? = null + + //当å‰è¿™ä¸ªé¡µé¢æ˜¾ç¤ºçš„宠物下标 + private var mCurrentShowPetPos = -1 + + @Inject + lateinit var mHomeMapCommon: HomeMapCommon + private lateinit var mFragment: Fragment + private var mMapDeviceBean: MapDeviceBean? = null + + private lateinit var mDeviceStateList: MutableList + private lateinit var mDeviceStateAdapter: HomeMapDeviceStateAdapter + private lateinit var mDeviceMsgList: MutableList + private lateinit var mDeviceMsgAdapter: HomeMapDeviceMsgAdapter + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isAnimMoveCamera = true + private var mShowCenterLocationType = ConstantInt.PetLocationType + + //æ˜¯å¦æ˜¾ç¤ºå›´æ  + private var isShowFence = true + + //åœ°å›¾ç±»åž‹ï¼Œæ ‡å‡†å’Œå«æ˜Ÿåœ°å›¾ + private var mMapType = ConstantInt.Type0 + + companion object { + @JvmStatic + fun newInstance(context: Context) = MapV2Fragment().apply { + mContext = context + } + } + + override fun initData() { + mLocationManager = mContext!!.getSystemService(Context.LOCATION_SERVICE) as LocationManager + mHomeV2Activity = activity as HomeV2Activity + mCurrentShowPetPos = mHomeV2Activity.mSelectPetPosition + + isShowFence = Util.getShowFenceSp() + + mViewBinding.apply { + mHomeV2Activity.edgeToEdgeAdapterBars( + rlHomeMapTopLayout, WindowInsetsCompat.Type.statusBars() + ) + mFragment = mHomeMapCommon.getMapFragment( + mContext!!, miHomeMapAddressView, dnHomeMapNetView + ) { mapLoadOk() } + + dnHomeMapNetView.setShowNetType(MapDeviceNetView.WIFI_NET_TYPE) + llHomeMapTopPet.ivTopPetBtnSmall.setImageResource(R.drawable.icon_map_type) + + ViewUtil.instance.setMapSwitchLocationButtonImage( + homeMapRefreshBtn, mShowCenterLocationType + ) + + mDeviceStateList = mutableListOf() + mDeviceMsgList = mutableListOf() + mMapViewModel.addDeviceDefaultStateData(mContext!!, mDeviceStateList) + mDeviceStateAdapter = HomeMapDeviceStateAdapter(mContext!!, mDeviceStateList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomeMapDeviceState, mDeviceStateAdapter, bottom = 10 + ) + + mDeviceMsgAdapter = HomeMapDeviceMsgAdapter(mContext!!, mDeviceMsgList) + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomeMapDeviceMsg, mDeviceMsgAdapter, bottom = 10 + ) + + setOnClickListenerViews( + homeMapRefreshBtn, + homeMapBluetoothBtn, + homeMapLiveBtn, + llHomeMapTopPet.ivTopPetBtnSmall, + llHomeMapTopPet.homeDataPetNameSmall, + llHomeMapTopPet.homeDataPetHeadSmall.root + ) + + if (AppUtils.isDebug()) { + llHomeMapTopPet.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener { + mHomeV2Activity.goToDebugActivity() + true + } + } + } + + //解决报错java.lang.IllegalArgumentException + //No view found for id 0x7f090254 (com.abbidot.tracker:id/fc_home_map_fragment) for fragment HomeMapGoogleMapFragment + //https://www.jianshu.com/p/9235092f407a + childFragmentManager.commit { + add(R.id.fc_home_map_fragment, mFragment) + } +// (mActivity as FragmentActivity).supportFragmentManager.commit { +// add(R.id.fc_home_map_fragment, mFragment) +// } + + locationPermissionsTip(1) + } + + override fun onResume() { + super.onResume() + //其他页颿˜¯å¦é€‰æ‹©äº†å® ç‰© + if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) { + showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + } + mViewBinding.apply { + homeMapLiveBtn.isEnabled = true + homeMapBluetoothBtn.isEnabled = true + } + + val showFence = Util.getShowFenceSp() + //æ£€æµ‹ç›´æ’­é¡µé¢æœ‰æ²¡æœ‰ä¿®æ”¹å›´æ æ˜¾ç¤º + if (isShowFence != showFence) { + if (null == mSelectMapTypeDialog) { + setFencesShow(showFence) + } else { + mSelectMapTypeDialog?.setFencesSwitch(showFence) + } + } + } + + /** + * 地图加载好了 + */ + private fun mapLoadOk() { + LogUtil.e("MapV2Fragment 地图加载好了${mHomeV2Activity.mPetList}") +// mHomeV2Activity.mDataViewModel.getHomeBindPetList(mHomeV2Activity) + mHomeV2Activity.apply { + if (mPetList.size > 0) showPetNameAndHead(mSelectPetPosition) + mFamilyViewModel.getDeviceInviteInfo(this) + } + } + + override fun liveDataObserve() { + //获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + mFamilyViewModel.mInviteInfoLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + if (deleteArray.isNotEmpty()) showDeleteInviteDialog(deleteArray) + if (inviteArray.isNotEmpty()) showInviteDialog(inviteArray) + } + } + }) + } + //获å–当å‰å® ç‰©ä½ç½®å’Œå›´æ ä¿¡æ¯ + mMapViewModel.mMapDeviceLiveData.observe(this) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + val data = it.getOrNull() + data?.apply { + mMapDeviceBean = data + setMapData(data) + mMapViewModel.setDeviceStateAndWarningData( + mContext!!, + mHomeV2Activity.getPet(), + data, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvHomeMapDeviceMsg + ) + } + } + }, showLoading = false, isRequestErrorTip = false) + } + + //删除围æ é€šçŸ¥ + XEventBus.observe(this, EventName.DeleteFences) { + updateMapDeviceStatus() + } + //添加编辑围æ é€šçŸ¥ + XEventBus.observe(this, EventName.RefreshFences) { + updateMapDeviceStatus() + } + //ç›´æ’­è‡ªåŠ¨ç»“æŸæç¤º + XEventBus.observe(this, EventName.LiveAutoEnd) { + ViewUtil.instance.showDialog( + mContext!!, R.string.txt_live_ended, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + } + }, okTextResId = R.string.txt_sure, cancelTextResId = R.string.txt_cancel + ) + } + //ç›´æ’­è¶…æ—¶ + XEventBus.observe(this, EventName.LiveOpenTimeOut) { + ViewUtil.instance.showDialog( + mContext!!, + R.string.txt_time_out_try_again, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + locationPermissionsTip() + } + }, + okTextResId = R.string.txt_sure + ) + } + //è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + XEventBus.observe(this, EventName.BleReportData) { reportData: BleReportDataBean -> + mHomeV2Activity.getPet(false)?.apply { + if (macID == reportData.mac) updateBleReportData(reportData) + } + } + //接收è“ç‰™è¿žæŽ¥çŠ¶æ€ + XEventBus.observe( + this, EventName.ConnectDeviceState + ) { trackBleDevice: BleTrackDeviceBean -> + mHomeV2Activity.getPet(false)?.apply { + if (trackBleDevice.mac == macID) { + //è“ç‰™æ–­å¼€å°±é‡æ–°èŽ·å–æœåŠ¡å™¨æ•°æ®ï¼Œè“牙数æ®ä¸ŠæŠ¥æ–­å¼€ + if (trackBleDevice.conState == ConState.DISCONNECTED) { + updateMapDeviceStatus() + } + } + } + } + } + + /** + * æ›´æ–°è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + */ + private fun updateBleReportData(bleReportDataBean: BleReportDataBean) { + bleReportDataBean.apply { + if (haveDeviceStateData) { + mMapViewModel.stopGetData() + if (null == mMapDeviceBean) mMapDeviceBean = MapDeviceBean() + mMapDeviceBean?.let { + Util.bleReportDataToMapDevice(it, bleReportDataBean) + if (haveLocationData) { + locationList?.let { list -> + val location = list[list.size - 1] + it.longitude = location.longitude + it.latitude = location.latitude + } + mHomeMapCommon.setMapDeviceBean(mMapDeviceBean) + mHomeMapCommon.refreshPetCurrentLocation( + it.latitude, it.longitude, isAnimMoveCamera + ) + mHomeMapCommon.startRefreshUserLocation() + } + } + + mViewBinding.homeMapLiveBtn.visibility = View.VISIBLE + + mMapViewModel.setDeviceStateAndWarningData( + mContext!!, + mHomeV2Activity.getPet(), + mMapDeviceBean!!, + mDeviceStateList, + mDeviceStateAdapter, + mDeviceMsgList, + mDeviceMsgAdapter, + mViewBinding.rvHomeMapDeviceMsg + ) + } + } + } + + /** + * 显示被删除邀请的弹窗 + */ + private fun showDeleteInviteDialog(deleteArray: MutableList) { + lifecycleScope.launch(Dispatchers.IO) { + val myDeviceDb = MyDatabase.deviceDao().findAll(MyDatabase.DeviceTableName) + myDeviceDb?.apply { + for (deviceDb in myDeviceDb) { + for (item in deleteArray) { + if (deviceDb.deviceId == item.deviceId) { + MyDatabase.deviceDao().delete(deviceDb) + LogUtil.e("删除了邀请的设备") + } + } + } + } + val newDeviceDb = MyDatabase.deviceDao().findAll(MyDatabase.DeviceTableName) + newDeviceDb?.apply { + LogUtil.e("删去了邀请,还剩${newDeviceDb.size}下个设备") + } + } + CommonDialog1( + mContext!!, + getString(R.string.txt_setting_notification), + getString(R.string.txt_view_access), + false, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + if (mHomeV2Activity.mPetList.size == 0) { + mHomeV2Activity.noSharePet() + } else { + mHomeV2Activity.onChangeClick(0) + } + } + }).show() + } + + /** + * 显示被邀请通知弹窗 + */ + private fun showInviteDialog(inviteArray: MutableList) { + for (item in inviteArray) { + val content = String.format( + getString(R.string.txt_invites_you_check), item.userName, item.petName + ) + CommonDialog1( + mContext!!, + getString(R.string.txt_setting_notification), + content, + false, + okClickListener = object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + startActivity( + mHomeV2Activity, Intent( + mHomeV2Activity, MyTrackerV2Activity::class.java + ) + ) + } + }).show() + } + } + + private val mPermissionsTips = + "ABBIDOT APP collects location data,The route and distance between the current location and the device can be calculated." + + /** + * 弹窗说明需è¦ä½ç½®æƒé™åšä»€ä¹ˆï¼Œä¸Šæž¶å¸‚åœºéœ€è¦ + */ + private fun locationPermissionsTip(type: Int = 0) { + if (XXPermissions.isGrantedPermissions( + mContext!!, mutableListOf( + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + ) + ) { + if (type == 0) checkPermissions(type) + } else { + ViewUtil.instance.showDialog( + mContext!!, mPermissionsTips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + if (type == 0) checkPermissions(type) + else Util.checkLocationPermissionsGpsEnabled(mContext!!, {}) + } + }, okTextResId = R.string.txt_accept, cancelTextResId = R.string.txt_deny + ) + } + } + + /** + * æ›´æ–°é¦–é¡µè®¾å¤‡çŠ¶æ€æ•°æ® + */ + private fun updateMapDeviceStatus( + isNeedCountDown: Boolean = true, useBleLocation: Boolean = false + ) { + mShowCenterLocationType = ConstantInt.PetLocationType + ViewUtil.instance.setMapSwitchLocationButtonImage( + mViewBinding.homeMapRefreshBtn, mShowCenterLocationType + ) + if (mHomeV2Activity.mPetList.size <= mCurrentShowPetPos) return + mHomeV2Activity.getPet()?.apply { + //è“牙连接上,就直接用è“牙上报的ä½ç½®åˆ·æ–° + if (useBleLocation && BleManager.getInstance().isConnected(macID)) { + mMapDeviceBean?.let { + mHomeMapCommon.refreshPetCurrentLocation( + it.latitude, it.longitude, isAnimMoveCamera + ) + mHomeMapCommon.startRefreshUserLocation() + } + } else { + mMapViewModel.getMapDeviceStatus(deviceId, isNeedCountDown) + } + } + } + + /** + * 显示地图类型选择弹窗 + */ + private fun showMapTypeDialog() { + if (null == mSelectMapTypeDialog) mSelectMapTypeDialog = ViewUtil.instance.getMapTypeDialog( + mContext!!, object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + mMapType = Util.getMapTypeSp() + if (pos == mMapType) { + return + } + mHomeMapCommon.switchSatelliteAndNormalMapType() + } + }) { v, isChecked -> + if (v.id == R.id.cb_dialog_map_fences_switch) { + setFencesShow(isChecked) + } + } + else { + mSelectMapTypeDialog!!.mapTypeSpToUpdate() + } + mSelectMapTypeDialog?.show() + } + + /** + * è®¾ç½®å›´æ æ˜¾ç¤º + */ + private fun setFencesShow(isShow: Boolean) { + isShowFence = isShow + MMKVUtil.putBoolean(MMKVKey.ShowFence, isShow) + if (isShow) { + mMapDeviceBean?.fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext!!, fences, mFragment) + } + } else { + mFencesMapViewModel.setFencesData(mContext!!, null, mFragment) + } + } + + /** + * è®¾ç½®éœ€è¦æ›´æ–°çš„æ ‡è¯† + */ + fun setNeedUpdateTag() { + mCurrentShowPetPos = -1 + } + + /** + * 显示选择宠物 + */ + fun showPetNameAndHead(position: Int) { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + if (mHomeV2Activity.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position + + ViewUtil.instance.selectPetDialogShow( + mContext!!, + mHomeV2Activity.mPetList, + position, + mViewBinding.llHomeMapTopPet.homeDataPetNameSmall, + mViewBinding.llHomeMapTopPet.homeDataPetHeadSmall.appHeadImage + ) + + if (mHomeMapCommon.isMapLoadOk()) { + showLoading(true) + val pet = mHomeV2Activity.mPetList[position] + //釿–°è®¾ç½®åœ°å›¾å® ç‰©å¤´åƒ + mHomeMapCommon.setPetHeadIcon(pet.imgurl, pet.petType) + + //获å–首页设备信æ¯çŠ¶æ€ + updateMapDeviceStatus() + } + } + + + /** + * è®¾ç½®åœ°å›¾ç›¸å…³æ•°æ® + */ + private fun setMapData(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + //åˆ†é’ŸåŽæ— ä¸ŠæŠ¥ã€æ²¡æœ‰lteä¿¡å·æˆ–在wifi中éšè—直播按钮 + mViewBinding.homeMapLiveBtn.visibility = + if (Util.isTimeoutReport(updateTime) || powerSwitch == ConstantInt.Type0 || powerSwitch == ConstantInt.Type2 || inWifiZone == ConstantInt.Type1) View.GONE + else View.VISIBLE + + mHomeMapCommon.setMapDeviceBean(this) + //设置循环查询时间间隔 30ç§’ + mMapViewModel.updateMillisInFuture(0.5f) + + if (isShowFence) { + fences?.let { fences -> + mFencesMapViewModel.setFencesData(mContext!!, fences, mFragment) + } + } + + mShowCenterLocationType = ConstantInt.PetLocationType + ViewUtil.instance.setMapSwitchLocationButtonImage( + mViewBinding.homeMapRefreshBtn, mShowCenterLocationType + ) + mHomeMapCommon.refreshPetCurrentLocation(latitude, longitude, isAnimMoveCamera) + mHomeMapCommon.startRefreshUserLocation() + + isAnimMoveCamera = false + } + } + + /** + * 检查获å–定ä½,è“牙æƒé™ + */ + private fun checkPermissions(type: Int) { + Util.checkBluetoothPermissionsEnabled(mContext!!, { + if (type == 0) { + if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) + startActivity(intent) + } else if (mHomeV2Activity.isRequestPetData && mHomeV2Activity.mPetList.size == 0) { + showToast(R.string.no_bind_pet) + } else { + mHomeV2Activity.getPet()?.apply { + mViewBinding.homeMapLiveBtn.isEnabled = false + val intent = Intent(mContext, LiveActivityV2::class.java) + intent.putExtra(ConstantString.JumpActivity, true) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + } else if (type == 1) { + if (!SRBleUtil.instance.isBlueEnable(mContext!!)) { + SRBleUtil.instance.openBluetooth(mContext!!) + } else if (mHomeV2Activity.isRequestPetData && mHomeV2Activity.mPetList.size == 0) { + showToast(R.string.no_bind_pet) + } else { + mHomeV2Activity.getPet()?.apply { + mViewBinding.homeMapBluetoothBtn.isEnabled = false + val intent = Intent(mContext, LiveActivityV2::class.java) + intent.putExtra(ConstantString.JumpActivity, false) + intent.putExtra(ConstantString.Pet, this) + startActivity(intent) + } + } + } + }) + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + homeMapRefreshBtn -> { + if (mHomeV2Activity.isRequestPetData && mHomeV2Activity.mPetList.size == 0) { + showToast(R.string.no_bind_pet) + return + } + if (mShowCenterLocationType == ConstantInt.PetLocationType) { + mShowCenterLocationType = ConstantInt.UserLocationType + mHomeMapCommon.switchShowLocation(mShowCenterLocationType) + + ViewUtil.instance.setMapSwitchLocationButtonImage( + homeMapRefreshBtn, mShowCenterLocationType + ) + } else { + updateMapDeviceStatus(useBleLocation = true) + } + } + + homeMapLiveBtn -> locationPermissionsTip() + llHomeMapTopPet.ivTopPetBtnSmall -> showMapTypeDialog() + homeMapBluetoothBtn -> checkPermissions(1) + llHomeMapTopPet.homeDataPetNameSmall, llHomeMapTopPet.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt new file mode 100644 index 0000000..fb97a14 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt @@ -0,0 +1,845 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import android.graphics.Bitmap +import android.hardware.Sensor +import android.hardware.SensorEvent +import android.hardware.SensorEventListener +import android.hardware.SensorManager +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.databinding.FragmentBaseBaiduMapBinding +import com.abbidot.tracker.ui.fragment.map.googlemap.GoogleBitmapHelper +import com.abbidot.tracker.util.ImageUtil +import com.abbidot.tracker.util.LonAndLatUtil +import com.abbidot.tracker.widget.TypefaceTextView +import com.baidu.location.BDAbstractLocationListener +import com.baidu.location.BDLocation +import com.baidu.location.LocationClient +import com.baidu.location.LocationClientOption +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.map.BitmapDescriptorFactory +import com.baidu.mapapi.map.Circle +import com.baidu.mapapi.map.CircleDottedStrokeType +import com.baidu.mapapi.map.CircleOptions +import com.baidu.mapapi.map.InfoWindow +import com.baidu.mapapi.map.MapStatusUpdateFactory +import com.baidu.mapapi.map.MarkerOptions +import com.baidu.mapapi.map.MyLocationConfiguration +import com.baidu.mapapi.map.MyLocationData +import com.baidu.mapapi.map.Overlay +import com.baidu.mapapi.map.PolygonOptions +import com.baidu.mapapi.map.PolylineDottedLineType +import com.baidu.mapapi.map.PolylineOptions +import com.baidu.mapapi.map.Stroke +import com.baidu.mapapi.map.TextureMapView +import com.baidu.mapapi.model.LatLng +import com.baidu.mapapi.utils.DistanceUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.coroutines.launch +import kotlin.math.abs + + +/** + * 百度地图 + */ +abstract class BaseBaiduMapFragment : + BaseFragment(FragmentBaseBaiduMapBinding::inflate) { + + private lateinit var mMapView: TextureMapView + var mBaiduMap: BaiduMap? = null + + private var mMapviewBundleKey = this.javaClass.simpleName + + //地图是å¦åŠ è½½å‡†å¤‡å¥½äº† + var isMapLoadOk = false + + //地图放大 + private var mBaiduMapZoom = 19f + + //自定显示宠物头åƒåœ°ç‚¹ä¿¡æ¯å›¾å±‚ + protected var mMarker: Overlay? = null + + //å® ç‰©å¤§å¤´é’ˆè®¾ç½®è‡ªå®šä¹‰å¤´åƒ + private var mPetHeadIconBitmap: Bitmap? = null + + //宠物头åƒåœ°å€ + var mPetHeadUrl = "" + + //头åƒä¸ºç©ºï¼Œç”¨é»˜è®¤ç±»åž‹çš„å¤´åƒ + private var mPetType = ConstantInt.DogPetType + + //åæ ‡ç±»åž‹,定ä½SDK默认输出GCJ02åæ ‡ï¼Œåœ°å›¾SDK默认输出BD09llåæ ‡ã€‚ç«æ˜ŸGCJ02åæ ‡https://lbsyun.baidu.com/faq/api?title=androidsdk/guide/create-map/location + private val mCoordType = "GCJ02" + private var mLocationClient: LocationClient? = null + private var mLocationListener: BDAbstractLocationListener? = null + + private var mSensorManager: SensorManager? = null + private var mSensor: Sensor? = null + private var mSensorEventListener: SensorEventListener? = null + private var mLastX = 0f + + //用户ä½ç½®ç»çº¬åº¦ + var mUserLatLng: LatLng? = null + + //宠物ä½ç½®ç»çº¬åº¦ + var mPetLatLng: LatLng? = null + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + mViewBinding = this.inflater(inflater, container, false) + LogUtil.e("${mMapviewBundleKey}===BaiduMapFragment--->onCreateView---$container") + +// var mapViewBundle: Bundle? = null +// if (null != savedInstanceState) { +// mapViewBundle = savedInstanceState.getBundle(mMapviewBundleKey) +// } + mMapView = mViewBinding.baiduMapView + //䏿˜¾ç¤ºç¼©æ”¾æŒ‰é’®æŽ§ä»¶ + mMapView.showZoomControls(false) + mBaiduMap = mMapView.map +// mMapView.onCreate(mContext, mapViewBundle) + return mViewBinding.root + } + + override fun initData() { + super.initData() + mBaiduMap?.apply { + //å¼€å¯åœ°å›¾çš„定ä½å›¾å±‚ + isMyLocationEnabled = true + val locationConfiguration = + MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null) + //自定义精度圈边框颜色 + setMyLocationConfiguration(locationConfiguration) + + //设置是å¦å…许俯视手势 + uiSettings.isOverlookingGesturesEnabled = false + //设置是å¦å…许抛出惯性手势 + uiSettings.setFlingEnable(false) + + setOnMapLoadedCallback { + LogUtil.e("百度地图加载好了") + isMapLoadOk = true + + onMapLoadOk(this) + } + } + } + +// override fun onSaveInstanceState(outState: Bundle) { +// super.onSaveInstanceState(outState) +// +// var mapViewBundle = outState.getBundle(mMapviewBundleKey) +// if (null == mapViewBundle) { +// mapViewBundle = Bundle() +// outState.putBundle(mMapviewBundleKey, mapViewBundle) +// } +// mMapView.onSaveInstanceState(mapViewBundle) +// } + + override fun onResume() { + super.onResume() + //在activity执行onResume时执行mMapView. onResume ()ï¼Œå®žçŽ°åœ°å›¾ç”Ÿå‘½å‘¨æœŸç®¡ç† + mMapView.onResume() + } + + override fun onPause() { + super.onPause() + //在activity执行onPause时执行mMapView. onPause ()ï¼Œå®žçŽ°åœ°å›¾ç”Ÿå‘½å‘¨æœŸç®¡ç† + mMapView.onPause() + } + + + /** + * 嫿˜Ÿæ ‡å‡†åœ°å›¾æ¨¡å¼åˆ‡æ¢ + */ + fun switchSatelliteAndNormalMapType() { + if (mBaiduMap!!.mapType == BaiduMap.MAP_TYPE_NORMAL) { + setMapType(BaiduMap.MAP_TYPE_SATELLITE) + } else { + setMapType(BaiduMap.MAP_TYPE_NORMAL) + } + } + + /** + * è®¾ç½®åœ°å›¾æ ·å¼ + */ + private fun setMapType(type: Int) { + if (null != mBaiduMap) { + mBaiduMap!!.mapType = type + } + } + + /** + * 设置地图显示级别 + */ + fun setBaiduMapZoom(zoom: Float) { + mBaiduMapZoom = zoom + } + + /** + * 获å–地图显示级别 + */ + fun getBaiduMapZoom() = mBaiduMapZoom + + /** + * 切æ¢ç”¨æˆ·å’Œå® ç‰©çš„ä½ç½®å±…中显示,移动摄åƒå¤´ä¸­å¿ƒ + */ + fun switchShowLocation(@ConstantInt type: Int) { + val latLng = if (type == ConstantInt.PetLocationType) { + mPetLatLng + } else mUserLatLng + + latLng?.apply { + moveCameraLocation(latLng) + } + } + + /** + * è®¾ç½®å¤§å¤´é’ˆå® ç‰©å¤´åƒ + */ + fun setPetHeadIconUrl(petHeadUrl: String) { + mPetHeadUrl = petHeadUrl + mPetHeadIconBitmap?.recycle() + mPetHeadIconBitmap = null + } + + /** + * @param needConvertGCJ02 是å¦éœ€è¦è½¬æ¢GCJ02åæ ‡ + */ + fun getBaiduMapLatLng( + lat: Double, lon: Double, needConvertGCJ02: Boolean = true + ): LatLng { + val latLng = if (needConvertGCJ02) { + val convertLonLat = LonAndLatUtil.convertFromWGS84ToGCJ02(lat, lon) + LatLng(convertLonLat[0], convertLonLat[1]) + } else { + LatLng(lat, lon) + } + return latLng + } + + /** + * 设置宠物头åƒåœ°å›¾Marker + */ + private suspend fun setPetHeadMarker( + lat: Double, + lon: Double, + needConvertGCJ02: Boolean = true, + headBgResId: Int = R.drawable.pic_map_gps_avatar + ) { + if (null == mPetHeadIconBitmap) { + //è®¾ç½®å¤´åƒ + mPetHeadIconBitmap = + GoogleBitmapHelper.headToBitmap(mContext!!, headBgResId, mPetHeadUrl, mPetType) + } + mMarker?.remove() + + val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02) + + mPetLatLng = latLng + + //构建MarkerOption,用于在地图上添加Marker + val option = + MarkerOptions().position(latLng).animateType(MarkerOptions.MarkerAnimateType.grow) + .icon(BitmapDescriptorFactory.fromBitmap(mPetHeadIconBitmap)) + //在地图上添加Marker,并显示 + mMarker = mBaiduMap!!.addOverlay(option) + } + + /** + * 地图添加图片 + */ + private fun addImageMarker( + lat: Double, lon: Double, imageTypeResId: Int, needConvertGCJ02: Boolean = true + ) { + mBaiduMap?.apply { + val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02) + + val bitmap = ImageUtil.getBitmapFromDrawableAndSvg(mContext!!, imageTypeResId) + //构建MarkerOption,用于在地图上添加Marker + val option = + MarkerOptions().position(latLng).animateType(MarkerOptions.MarkerAnimateType.grow) + .icon(BitmapDescriptorFactory.fromBitmap(bitmap)).apply { + anchor(anchorX, anchorY / 2) + } + addOverlay(option) + bitmap?.recycle() + } + } + + /** + * 当å‰å® ç‰©ä½ç½®åˆ·æ–° + * @param needConvertGCJ02 是å¦éœ€è¦è½¬æ¢GCJ02åæ ‡ + * @param isAnimMoveCamera 移动使用动画 + */ + fun refreshPetCurrentLocation( + lat: Double, + lon: Double, + needMoveCamera: Boolean = true, + isAnimMoveCamera: Boolean = true, + needConvertGCJ02: Boolean = true, + headBgResId: Int = R.drawable.pic_map_gps_avatar + ) { + mBaiduMap?.let { + lifecycleScope.launch(lifecycleScope.coroutineContext) { + + setPetHeadMarker(lat, lon, needConvertGCJ02, headBgResId) + + //是å¦éœ€è¦ç§»åŠ¨åˆ°åœ°å›¾ä¸­å¿ƒç‚¹ + if (needMoveCamera) { + //animateCamera使用动画 + moveCameraLocation(lat, lon, isAnimMoveCamera = isAnimMoveCamera) + } + + //刷新当å‰ä½ç½®ok + onRefreshPetCurrentLocationOk(mBaiduMap!!) + } + } + } + + fun refreshPetCurrentLocation( + latLng: LatLng, + needMoveCamera: Boolean = true, + isAnimMoveCamera: Boolean = true, + headBgResId: Int = R.drawable.pic_map_gps_avatar + ) { + refreshPetCurrentLocation( + latLng.latitude, latLng.longitude, needMoveCamera, isAnimMoveCamera, false, headBgResId + ) + } + + /** + * 设置宠物当å‰ä½ç½®ç»çº¬åº¦ + */ + fun setPetCurrentLocation( + petHeadUrl: String, lat: Double, lon: Double, needConvertGCJ02: Boolean = true + ) { + lifecycleScope.launch(lifecycleScope.coroutineContext) { + setPetHeadIconUrl(petHeadUrl) + setPetHeadMarker(lat, lon, needConvertGCJ02) + } + } + + /** + * 改å˜åœ°å›¾æ‰‹åŠ¿çš„ä¸­å¿ƒç‚¹ï¼ˆåœ°å›¾çš„ä¸­å¿ƒç‚¹ï¼‰ + * @param needConvertGCJ02 是å¦éœ€è¦è½¬æ¢GCJ02åæ ‡ + */ + fun moveCameraLocation( + lat: Double, lon: Double, needConvertGCJ02: Boolean = true, isAnimMoveCamera: Boolean = true + ) { + val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02) + + if (isAnimMoveCamera) { + //animateCamera使用动画,ä»¥åŠ¨ç”»æ–¹å¼æ›´æ–°åœ°å›¾çжæ€ï¼Œé»˜è®¤åŠ¨ç”»è€—æ—¶ 300 ms + mBaiduMap!!.animateMapStatus(MapStatusUpdateFactory.newLatLng(latLng), 2) + } else { + mBaiduMap!!.setMapStatus(MapStatusUpdateFactory.newLatLng(latLng)) + } + //直接缩放至缩放级别 + mBaiduMap!!.setMapStatus(MapStatusUpdateFactory.zoomTo(mBaiduMapZoom)) + } + + /** + * 改å˜åœ°å›¾æ‰‹åŠ¿çš„ä¸­å¿ƒç‚¹ï¼ˆåœ°å›¾çš„ä¸­å¿ƒç‚¹ï¼‰ + * @param latLng å·²ç»æ˜¯è½¬æ¢å¥½çš„åæ ‡ + */ + fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = true) { + moveCameraLocation(latLng.latitude, latLng.longitude, false, isAnimMoveCamera) + } + + /** + * 显示信æ¯çª—(弹窗覆盖物InfoWindow) + */ + fun showMarkerInfoWindow(historyDataBean: HistoryDataBean) { + historyDataBean.apply { + val convertLatLng = getBaiduMapLatLng(latitude, longitude) + val view = LayoutInflater.from(mContext).inflate(R.layout.marker_info_contents, null) + val addressTextView = view.findViewById(R.id.map_pet_current_location) + val timeTextView = + view.findViewById(R.id.map_pet_location_update_time) + addressTextView.text = address + timeTextView.text = dayTime + val mInfoWindow = InfoWindow( + view, convertLatLng, -(mPetHeadIconBitmap?.width!! + 30) + ) + mBaiduMap?.showInfoWindow(mInfoWindow) + } + } + + + //在地图上画圆形ã€çŸ©å½¢å’Œå¤šè¾¹å½¢å›´æ é›†åˆ + private var mMapFencesList: MutableList? = null + +// fun initFenceList() { +// if (null == mCircleAndRectFenceList) mCircleAndRectFenceList = mutableListOf() +// } + + /** + * Adds a [Circle] around the provided + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªåœ†å½¢å›´æ  + * @param isDashedPattern æ˜¯å¦æ˜¯è™šçº¿ + */ + fun addCircleFence( + centerLat: Double, + centerLon: Double, + radius: Double = 700.0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + if (null == mBaiduMap) return + //转æ¢åæ ‡ + val convertLatLng = getBaiduMapLatLng(centerLat, centerLon) + //构造CircleOptions对象 + val circleOptions = CircleOptions().center(convertLatLng).radius(radius.toInt()) + //æ˜¯å¦æ˜¾ç¤ºè™šçº¿ + .dottedStroke(isDashedPattern) + .dottedStrokeType(CircleDottedStrokeType.DOTTED_LINE_SQUARE) + //填充颜色 + .fillColor(fillColor) + //边框宽和边框颜色 + .stroke(Stroke(AppUtils.dpToPx(1), strokeColor)) + + //åœ¨åœ°å›¾ä¸Šæ˜¾ç¤ºåœ†å½¢å›´æ  + val circleFence = mBaiduMap!!.addOverlay(circleOptions) + + if (null == mMapFencesList) mMapFencesList = mutableListOf() + mMapFencesList?.add(circleFence) + } + + /** + * 地图上画多边形 + * @param isDashedPattern æ˜¯å¦æ˜¯è™šçº¿ + */ + private fun mapDrawPolygon( + points: MutableList, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + if (null == mBaiduMap) return + + //构造PolygonOptions + val polygonOptions = PolygonOptions().points(points) + //æ˜¯å¦æ˜¾ç¤ºè™šçº¿ + .dottedStroke(isDashedPattern) + .dottedStrokeType(PolylineDottedLineType.DOTTED_LINE_SQUARE) + //填充颜色 + .fillColor(fillColor) + //边框宽和边框颜色 + .stroke(Stroke(AppUtils.dpToPx(1), strokeColor)) + + //åœ¨åœ°å›¾ä¸Šæ˜¾ç¤ºçŸ©å½¢å›´æ  + val rectFence = mBaiduMap!!.addOverlay(polygonOptions) + + if (null == mMapFencesList) mMapFencesList = mutableListOf() + mMapFencesList?.add(rectFence) + } + + /** + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªçŸ©å½¢å›´æ  + * @param isDashedPattern æ˜¯å¦æ˜¯è™šçº¿ + */ + fun addRectFence( + fencesBean: FencesBean, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + fencesBean.apply { + val points = mutableListOf() + setRectFencePointData(points, latitudeA, longitudeA) + setRectFencePointData(points, latitudeB, longitudeB) + setRectFencePointData(points, latitudeC, longitudeC) + setRectFencePointData(points, latitudeD, longitudeD) + + mapDrawPolygon(points, strokeColor, fillColor, isDashedPattern) + } + } + + /** + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªå¤šè¾¹å½¢å›´æ  + */ + fun addPolygonFence( + fencesBean: FencesBean, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + fencesBean.apply { + val points = mutableListOf() + setRectFencePointData(points, latitudeA, longitudeA) + setRectFencePointData(points, latitudeB, longitudeB) + setRectFencePointData(points, latitudeC, longitudeC) + setRectFencePointData(points, latitudeD, longitudeD) + setRectFencePointData(points, latitudeE, longitudeE) + setRectFencePointData(points, latitudeF, longitudeF) + mapDrawPolygon(points, strokeColor, fillColor, isDashedPattern) + } + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªåœ†å½¢è™šçº¿å›´æ  + */ + fun addCircleDashedAndImageFence( + centerLat: Double, + centerLon: Double, + radius: Double = 700.0, + imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4) + ) { + if (imageTypeResId > 0) addImageMarker(centerLat, centerLon, imageTypeResId) + addCircleFence(centerLat, centerLon, radius, strokeColor, fillColor, true) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªçŸ©å½¢è™šçº¿æœ‰ä¸­å¿ƒå›¾ç‰‡å›´æ  + */ + fun addRectDashedAndImageFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + if (imageTypeResId > 0) addImageMarker( + fencesBean.latitudeCenter, fencesBean.longitudeCenter, imageTypeResId + ) + addRectFence(fencesBean, strokeColor, fillColor, true) + } + + fun addRectDashedAndImageEditFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + fencesBean.apply { + addRectDashedAndImageFence(this, imageTypeResId, strokeColor, fillColor) + addImageMarker(latitudeA, longitudeA, R.drawable.icon_fence_dot_svg) + addImageMarker(latitudeB, longitudeB, R.drawable.icon_fence_dot_svg) + addImageMarker(latitudeC, longitudeC, R.drawable.icon_fence_dot_svg) + addImageMarker(latitudeD, longitudeD, R.drawable.icon_fence_dot_svg) + } + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªå¤šè¾¹å½¢è™šçº¿æœ‰ä¸­å¿ƒå›¾ç‰‡å›´æ  + */ + fun addPolygonDashedAndImageFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + if (imageTypeResId > 0) addImageMarker( + fencesBean.latitudeCenter, fencesBean.longitudeCenter, imageTypeResId + ) + addPolygonFence(fencesBean, strokeColor, fillColor, true) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªæ­£åœ¨é¢„è§ˆçš„çŸ©å½¢è™šçº¿å›´æ  + */ + fun addPolygonDashedAndImageEditFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + fencesBean.apply { + addPolygonDashedAndImageFence(this, imageTypeResId, strokeColor, fillColor) + addImageMarker(latitudeA, longitudeA, R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(latitudeB, longitudeB, R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(latitudeC, longitudeC, R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(latitudeD, longitudeD, R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(latitudeE, longitudeE, R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(latitudeF, longitudeF, R.drawable.icon_fence_polygon_operate_svg) + } + } + + /** + * 设置矩形围æ ç‚¹çš„æ•°æ® + */ + private fun setRectFencePointData(points: MutableList, lat: Double, lon: Double) { + //转æ¢åæ ‡ + val convertLonLat = getBaiduMapLatLng(lat, lon) + points.add(convertLonLat) + } + + /** + * 清除地图有多个围æ åœˆ + */ + fun clearFenceList() { +// if (null == mCircleAndRectFenceList) throw NullPointerException( +// "mCircleAndRectFenceList空指针,请在onMapLoadOké‡å†™æ–¹æ³•中实例化mCircleAndRectFenceList,执行方法initFenceList()" +// ) + mMapFencesList?.forEach { + it.remove() + } + mMapFencesList?.clear() + } + + private var mBlackPolyline: Overlay? = null + private var mYellowPolyline: Overlay? = null + + /** + * 画线,传入已ç»è½¬æ¢å¥½çš„ç»çº¬åº¦åæ ‡ + * @param needBlackPolyline 是å¦éœ€è¦é»‘线 + */ + fun addPolyline( + baiduMap: BaiduMap, + latLngList: MutableList, + needBlackPolyline: Boolean = true, + startCapImageRes: Int = 0 + ) { + //至少需è¦2个点 + if (latLngList.size < 2) { + return + } + + if (needBlackPolyline) { + val blackOverlayOptions = PolylineOptions().width(QMUIDisplayHelper.dpToPx(4)) + .color(ContextCompat.getColor(mContext!!, R.color.txt_button)).points(latLngList) + mBlackPolyline?.remove() + //在地图上绘制折线 + mBlackPolyline = baiduMap.addOverlay(blackOverlayOptions) + } + + //设置折线的属性 + val yellowOverlayOptions = PolylineOptions().width(QMUIDisplayHelper.dpToPx(3)) + .color(ContextCompat.getColor(mContext!!, R.color.select_color2)).points(latLngList) + mYellowPolyline?.remove() + mYellowPolyline = baiduMap.addOverlay(yellowOverlayOptions) + //添加起始点图片 + if (startCapImageRes > 0) { + //构建MarkerOption,用于在地图上添加Marker + val option = MarkerOptions().position(latLngList[0]) + .animateType(MarkerOptions.MarkerAnimateType.grow) + .icon(BitmapDescriptorFactory.fromResource(startCapImageRes)) + //在地图上添加Marker,并显示 + baiduMap.addOverlay(option) + } + } + + /** + * 清空所有图层 + */ + open fun clearAllMarker() { + mBaiduMap?.clear() + clearFenceList() + } + + /** + * 开始定ä½,请求用户当å‰çš„ä½ç½® + */ + fun startLocation(locationPeriod: Int = 1, needStopLocation: Boolean = true) { + initSensorEvent(mContext!!) + //定ä½åˆå§‹åŒ– + mLocationClient = LocationClient(mContext) + //通过LocationClientOption设置LocationClientç›¸å…³å‚æ•° + val option = LocationClientOption() + // 打开gps + option.isOpenGps = true + // è®¾ç½®åæ ‡ç±»åž‹ + option.setCoorType(mCoordType) + //设置定ä½åˆ·æ–°é—´éš” + option.setScanSpan(locationPeriod * 1000) + //设置locationClientOption + mLocationClient!!.locOption = option + //注册LocationListener监å¬å™¨ + mLocationListener = object : BDAbstractLocationListener() { + override fun onReceiveLocation(location: BDLocation?) { + //mapView 销æ¯åŽä¸åœ¨å¤„ç†æ–°æŽ¥æ”¶çš„ä½ç½® + if (null == location) { + return + } + val locData = MyLocationData.Builder().accuracy(location.radius) + // 此处设置开å‘者获å–到的方å‘ä¿¡æ¯ï¼Œé¡ºæ—¶é’ˆ0-360 + .direction(location.direction).latitude(location.latitude) + .longitude(location.longitude).build() + mBaiduMap!!.setMyLocationData(locData) + if (needStopLocation) stopLocation() + location.city + mUserLatLng = LatLng(location.latitude, location.longitude) + locationSuccess(location) + } + } + mLocationClient!!.registerLocationListener(mLocationListener) + //å¼€å¯å®šä½ + mLocationClient!!.start() + } + + /** + * è®¾ç½®æ–¹å‘æ„Ÿåº”器,百度地图使用 + */ + private fun initSensorEvent(context: Context) { + // 获得传感器管ç†å™¨ + mSensorManager = context.getSystemService(Context.SENSOR_SERVICE) as SensorManager + if (mSensorManager != null) { + //获得方å‘传感器 + mSensor = mSensorManager?.getDefaultSensor(Sensor.TYPE_ORIENTATION) + } + // 注册 + if (mSensor != null) { + mSensorEventListener = object : SensorEventListener { + override fun onSensorChanged(event: SensorEvent?) { + // æŽ¥å—æ–¹å‘感应器的类型 + if (event?.sensor?.type == Sensor.TYPE_ORIENTATION) { + val x = event.values[SensorManager.DATA_X] + if (abs(x - mLastX) > 1.0) { + mLastX = x + mBaiduMap?.apply { + setLocationData(locationData, x) + } + } + } + } + + override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { + } + } + mSensorManager?.registerListener( + mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_UI + ) + } + } + + /** + * 设置定ä½çš„æ–¹å‘ä¿¡æ¯ + */ + private fun setLocationData(locData: MyLocationData?, direction: Float) { + if (null == locData || null == mBaiduMap) return + val myLocData = MyLocationData.Builder().accuracy(locData.accuracy) + // 此处设置开å‘者获å–到的方å‘ä¿¡æ¯ï¼Œé¡ºæ—¶é’ˆ0-360 + .direction(direction).latitude(locData.latitude).longitude(locData.longitude).build() + mBaiduMap!!.setMyLocationData(myLocData) + } + + /** + * åœæ­¢å®šä½ + */ + private fun stopLocation() { + mLocationClient?.apply { + unRegisterLocationListener(mLocationListener) + stop() + } + } + + /** + * æ ¹æ®è½¨è¿¹èŽ·å–地图缩放比例 + */ + fun getDistanceZoom(max: LatLng, min: LatLng): Float { + var jl = DistanceUtil.getDistance(max, min) + if (jl < 1) { + jl = 50.0 + } + LogUtil.e("最大和最å°é—´ç»çº¬åº¦ç›´çº¿è·ç¦» = $jl") +// var i = 0 +// while (i < scale.size - 2) { +// if (scale[i] < jl && scale[i + 1] >= jl) { +// break +// } +// i++ +// } + return getDistanceZoom(jl) + } + + /** + * æ ¹æ®æ˜¾ç¤ºè·ç¦»èŽ·å–缩放地图等级 + */ + fun getDistanceZoom(distance: Double): Float { + val scaleOld = intArrayOf( + 1, + 20, + 50, + 100, + 200, + 500, + 1000, + 2000, + 5000, + 10000, + 20000, + 25000, + 50000, + 100000, + 200000, + 500000, + 1000000, + 2000000, + 5000000 + ) + val scaleNew = intArrayOf( + 5, + 10, + 20, + 50, + 100, + 200, + 500, + 1000, + 2000, + 5000, + 10000, + 20000, + 25000, + 50000, + 100000, + 200000, + 500000, + 1000000 + ) + val scale = scaleNew + var jl = distance + if (jl < 5) { + jl = 50.0 + } + var i = 0 + while (i < scale.size - 2) { + if (scale[i] < jl && scale[i + 1] >= jl) { + break + } + i++ + } + LogUtil.e("æ ¹æ®æ˜¾ç¤ºè·ç¦»èŽ·å–缩放地图等级 = $jl,zoom=${21f - i}") + return 21f - i + } + + /** + * å®šä½æˆåŠŸè¿”å›ž + */ + open fun locationSuccess(location: BDLocation?) {} + + /** + * 地图加载完毕 + */ + abstract fun onMapLoadOk(baiduMap: BaiduMap) + + /** + * 宠物ä½ç½®åˆ·æ–°å®Œæˆ + */ + open fun onRefreshPetCurrentLocationOk(baiduMap: BaiduMap) {} + + override fun onDestroy() { + super.onDestroy() + mSensorManager?.unregisterListener(mSensorEventListener) + mPetHeadIconBitmap?.recycle() + stopLocation() + //在activity执行onDestroy时执行mMapView.onDestroy()ï¼Œå®žçŽ°åœ°å›¾ç”Ÿå‘½å‘¨æœŸç®¡ç† + mMapView.onDestroy() + } +} diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/FencesAddEditBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/FencesAddEditBaiduMapFragment.kt new file mode 100644 index 0000000..1f7a8c1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/FencesAddEditBaiduMapFragment.kt @@ -0,0 +1,495 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import android.graphics.Point +import android.view.MotionEvent +import android.view.View +import androidx.core.view.isVisible +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.common.map.FencesAddEditMapCommon +import com.abbidot.tracker.util.LonAndLatUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.widget.FencesCircleView +import com.abbidot.tracker.widget.FencesPolygonView +import com.abbidot.tracker.widget.FencesRectView +import com.baidu.location.BDLocation +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.map.MapStatus +import com.baidu.mapapi.model.LatLng +import kotlin.math.pow + +/** + *Created by .yzq on 2024/5/15/015. + * @link + * @description: + */ +class FencesAddEditBaiduMapFragment : BaseBaiduMapFragment() { + + private lateinit var mFencesBean: FencesBean + private var isEditFences = false + private lateinit var mFencesCircleView: FencesCircleView + private lateinit var mFencesRectView: FencesRectView + private lateinit var mFencesPolygonView: FencesPolygonView + private var mOnActivityCallBack: FencesAddEditMapCommon.OnActivityCallBack? = null + + private lateinit var mMapLoadOk: () -> Unit + + companion object { + @JvmStatic + fun newInstance( + context: Context, + fencesBean: FencesBean, + fencesCircleView: FencesCircleView, + fencesRectView: FencesRectView, + fencesPolygonView: FencesPolygonView, + isEdit: Boolean, + onActivityCallBack: FencesAddEditMapCommon.OnActivityCallBack?, + mapLoadOk: () -> Unit + ) = FencesAddEditBaiduMapFragment().apply { + mContext = context + mFencesBean = fencesBean + isEditFences = isEdit + mFencesCircleView = fencesCircleView + mFencesRectView = fencesRectView + mFencesPolygonView = fencesPolygonView + mOnActivityCallBack = onActivityCallBack + mMapLoadOk = mapLoadOk + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { + + mBaiduMap?.apply { + + setOnMapLongClickListener { + resetFencesViewCentre(it) + mapOkAndDistancePointLatLng(10) + } + + setOnMapGestureListener(object : BaiduMap.onMapGestureListener { + override fun onMapScroll(p0: Point?, p1: Point?, p2: MapStatus?): Boolean { + //平移 + mFencesBean.let { + resetFencesViewCentre( + getBaiduMapLatLng( + it.latitudeCenter, it.longitudeCenter + ) + ) + } + return false + } + + override fun onMapDoubleTouch(p0: Point?, p1: MapStatus?): Boolean { + //åŒå‡»æ”¾å¤§ + LogUtil.e("onMapDoubleTouch") + return false + } + + override fun onMapTwoClick(p0: Point?, p1: Point?, p2: MapStatus?): Boolean { + //åŒæŒ‡ç‚¹å‡»ç¼©å° + LogUtil.e("onMapTwoClick") + return false + } + + override fun onMapKneading(p0: Point?, p1: Point?, p2: MapStatus?): Boolean { + LogUtil.e("onMapKneading") + //监å¬åœ°å›¾æ”¾å¤§ç¼©å°æ“作 + if (getBaiduMapZoom() != mapStatus.zoom) { + setBaiduMapZoom(mapStatus.zoom) + resetFencesViewSize() + + mFencesBean.let { + resetFencesViewCentre( + getBaiduMapLatLng( + it.latitudeCenter, it.longitudeCenter + ) + ) + } + } + return false + } + + override fun onMapOverLooking(p0: Point?, p1: Point?, p2: MapStatus?): Boolean { + LogUtil.e("onMapOverLooking") + return false + } + + override fun onMapFling( + p0: MotionEvent?, p1: Float, p2: Float, p3: MapStatus? + ): Boolean { + //惯性抛出手势 + LogUtil.e("onMapFling1") + return false + } + + override fun onMapStatusChangeFinish(p0: MapStatus?) { + LogUtil.e("onMapStatusChangeFinish") + } + }) + } + + startLocation() + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + override fun locationSuccess(location: BDLocation?) { + if (isEditFences) { + mFencesBean.apply { + moveCameraLocation( + latitudeCenter, longitudeCenter + ) + } + + //å»¶æ—¶æ‰§è¡Œï¼Œé˜²æ­¢å›´æ æ²¡ç”»å¥½/地图摄åƒå¤´ç§»åЍ䏭 + mFencesCircleView.postDelayed({ + restoreEditFences() + }, 500) + + return + } + + + location?.apply { + //定ä½è¿”回的ç»çº¬åº¦å·²ç»æ˜¯è½¬æ¢å¥½çš„GCJ02åæ ‡,需è¦è½¬æ¢ä¸ºgpsåŽŸç”Ÿåæ ‡ + val convertLonLat = LonAndLatUtil.convertFromGCJ02ToWGS84(latitude, longitude) + mFencesBean.latitudeCenter = convertLonLat[0] + mFencesBean.longitudeCenter = convertLonLat[1] + moveCameraLocation(latitude, longitude, false) + + mapOkAndDistancePointLatLng() + } + } + + /** + * 地图准备好计算è·ç¦» + */ + fun mapOkAndDistancePointLatLng(delayMillis: Long = 500) { + //延时计算è·ç¦»ï¼Œé˜²æ­¢å›´æ æ²¡ç”»å¥½/地图摄åƒå¤´ç§»åЍ䏭 + mFencesCircleView.postDelayed({ + val arrayOfDistance = getLatLngAndCalDistance() + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + }, delayMillis) + } + + /** + * è¿˜åŽŸå›´æ  + */ + private fun restoreEditFences() { + var arrayOfDistance = arrayOf("0") + mFencesBean.apply { + when (mFencesBean.fenceShapeType) { + ConstantInt.CircleShapeType -> { + val radiusPx = getCircleRadiusPx(radius.toDouble()) + mFencesCircleView.let { + it.visibility = View.VISIBLE + it.setCircleRadiusPx(radiusPx.toFloat()) + arrayOfDistance = arrayOf("$radius") + } + } + + ConstantInt.RectangleShapeType -> { + restoreRectFences() + arrayOfDistance = arrayOf("$longDistance", "$shortDistance") + } + + ConstantInt.PolygonShapeType -> { + restorePolygonFences() + arrayOfDistance = arrayOf("0") + } + } + + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } + } + + /** + * 釿–°è®¾ç½®å›´æ æŽ§ä»¶çš„中心点ä½ç½® + */ + fun resetFencesViewCentre(centreLatLng: LatLng) { + mBaiduMap?.projection?.toScreenLocation(centreLatLng)?.apply { + LogUtil.e("ddddssddfsdf$this") + if (mFencesCircleView.isVisible) { + mFencesCircleView.setCentreXY(this) + } else if (mFencesRectView.isVisible) { + mFencesRectView.setCentreXY(this) + } else if (mFencesPolygonView.isVisible) { + mFencesPolygonView.setCentreXY(this) + } + } + } + + /** + * 釿–°è®¾ç½®å›´æ æŽ§ä»¶çš„å¤§å° + */ + private fun resetFencesViewSize() { + if (mFencesCircleView.isVisible) { + if (mFencesBean.radius <= 0.0) return + val radiusPx = zoomToCircleRadiusPx(mFencesBean.radius.toDouble()) + mFencesCircleView.setCircleRadiusPx(radiusPx.toFloat()) + } else if (mFencesRectView.isVisible) { + restoreRectFences() + } else if (mFencesPolygonView.isVisible) { + restorePolygonFences() + } + } + + private fun getLatLngAndCalDistance(): Array { + // ç»çº¬åº¦è½¬æ¢ä¸ºæ‰‹æœºå标点 +// val x = mBaiduMap!!.projection.toScreenLocation(it).x + return when (mFencesBean.fenceShapeType) { + ConstantInt.CircleShapeType -> { + //æ‰‹æœºåæ ‡ç‚¹è½¬æ¢ä¸ºç»çº¬åº¦ + val centreLatLng = mFencesCircleView.getCircleCentrePoint() + .let { mBaiduMap!!.projection.fromScreenLocation(it) } + val endLatLng = mFencesCircleView.getCircleLineEndPoint() + .let { mBaiduMap!!.projection.fromScreenLocation(it) } + // mEndLatLng = endLatLng + LogUtil.e("mBaiduMap,getLatLngAndCalDistance 监å¬å›žè°ƒ") + LogUtil.e("startLatLng=$centreLatLng,endLatLng=$endLatLng") + val distance = Util.measureLatLonDistance( + centreLatLng.latitude, + centreLatLng.longitude, + endLatLng.latitude, + endLatLng.longitude + ) + //把输出的GCJ02åæ ‡è½¬æ¢ä¸ºgpsåŽŸç”Ÿåæ ‡WGS84 + val gpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + centreLatLng.latitude, centreLatLng.longitude + ) + mFencesBean.apply { + latitudeCenter = gpsWGS84[0] + longitudeCenter = gpsWGS84[1] + } + arrayOf( + Utils.formatDecimal(distance, 2) + ) + } + + ConstantInt.RectangleShapeType -> { + val centreLatLng = mFencesRectView.getRectCentrePoint() + .let { mBaiduMap!!.projection.fromScreenLocation(it) } + val rectALatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_A).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val rectBLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_B).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val rectCLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_C).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val rectDLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_D).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val rectWidthDistance = Util.measureLatLonDistance( + rectALatLng.latitude, + rectALatLng.longitude, + rectBLatLng.latitude, + rectBLatLng.longitude + ) + val rectHeightDistance = Util.measureLatLonDistance( + rectBLatLng.latitude, + rectBLatLng.longitude, + rectCLatLng.latitude, + rectCLatLng.longitude + ) + + //把输出的GCJ02åæ ‡è½¬æ¢ä¸ºgpsåŽŸç”Ÿåæ ‡WGS84 + val centreGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + centreLatLng.latitude, centreLatLng.longitude + ) + val rectAGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + rectALatLng.latitude, rectALatLng.longitude + ) + val rectBGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + rectBLatLng.latitude, rectBLatLng.longitude + ) + val rectCGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + rectCLatLng.latitude, rectCLatLng.longitude + ) + val rectDGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + rectDLatLng.latitude, rectDLatLng.longitude + ) + mFencesBean.apply { + latitudeCenter = centreGpsWGS84[0] + longitudeCenter = centreGpsWGS84[1] + latitudeA = rectAGpsWGS84[0] + longitudeA = rectAGpsWGS84[1] + latitudeB = rectBGpsWGS84[0] + longitudeB = rectBGpsWGS84[1] + latitudeC = rectCGpsWGS84[0] + longitudeC = rectCGpsWGS84[1] + latitudeD = rectDGpsWGS84[0] + longitudeD = rectDGpsWGS84[1] + } + //长度和高度 + arrayOf( + Utils.formatDecimal(rectWidthDistance, 2), + Utils.formatDecimal(rectHeightDistance, 2) + ) + } + + else -> { + val centreLatLng = mFencesPolygonView.getPolygonCentrePoint() + .let { mBaiduMap!!.projection.fromScreenLocation(it) } + val polygonALatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_A).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val polygonBLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_B).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val polygonCLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_C).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val polygonDLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_D).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val polygonELatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_E).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + val polygonFLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_F).let { + mBaiduMap!!.projection.fromScreenLocation(it) + } + + //把输出的GCJ02åæ ‡è½¬æ¢ä¸ºgpsåŽŸç”Ÿåæ ‡WGS84 + val centreGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + centreLatLng.latitude, centreLatLng.longitude + ) + val polygonAGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonALatLng.latitude, polygonALatLng.longitude + ) + val polygonBGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonBLatLng.latitude, polygonBLatLng.longitude + ) + val polygonCGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonCLatLng.latitude, polygonCLatLng.longitude + ) + val polygonDGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonDLatLng.latitude, polygonDLatLng.longitude + ) + val polygonEGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonELatLng.latitude, polygonELatLng.longitude + ) + val polygonFGpsWGS84 = LonAndLatUtil.convertFromGCJ02ToWGS84( + polygonFLatLng.latitude, polygonFLatLng.longitude + ) + mFencesBean.apply { + latitudeCenter = centreGpsWGS84[0] + longitudeCenter = centreGpsWGS84[1] + latitudeA = polygonAGpsWGS84[0] + longitudeA = polygonAGpsWGS84[1] + latitudeB = polygonBGpsWGS84[0] + longitudeB = polygonBGpsWGS84[1] + latitudeC = polygonCGpsWGS84[0] + longitudeC = polygonCGpsWGS84[1] + latitudeD = polygonDGpsWGS84[0] + longitudeD = polygonDGpsWGS84[1] + latitudeE = polygonEGpsWGS84[0] + longitudeE = polygonEGpsWGS84[1] + latitudeF = polygonFGpsWGS84[0] + longitudeF = polygonFGpsWGS84[1] + } + //多边形,ä¸éœ€è¦è®¡ç®—è·ç¦» + arrayOf("0") + } + } + } + + /** + * 还原矩形围æ å¤§å° + */ + private fun restoreRectFences() { + mFencesBean.apply { + mFencesRectView.let { + it.visibility = View.VISIBLE + mBaiduMap!!.projection.apply { + val pointCentre = + toScreenLocation(getBaiduMapLatLng(latitudeCenter, longitudeCenter)) + val pointA = toScreenLocation( + getBaiduMapLatLng(latitudeA, longitudeA) + ) + val pointB = toScreenLocation( + getBaiduMapLatLng(latitudeB, longitudeB) + ) + val pointC = toScreenLocation( + getBaiduMapLatLng(latitudeC, longitudeC) + ) + val pointD = toScreenLocation( + getBaiduMapLatLng(latitudeD, longitudeD) + ) + it.setRectABCDXYPoint( + pointCentre, pointA, pointB, pointC, pointD + ) + } + } + } + } + + /** + * 还原多边形围æ å¤§å° + */ + private fun restorePolygonFences() { + mFencesBean.apply { + mFencesPolygonView.let { + it.visibility = View.VISIBLE + mBaiduMap!!.projection.apply { + val pointCentre = + toScreenLocation(getBaiduMapLatLng(latitudeCenter, longitudeCenter)) + val pointA = toScreenLocation( + getBaiduMapLatLng(latitudeA, longitudeA) + ) + val pointB = toScreenLocation( + getBaiduMapLatLng(latitudeB, longitudeB) + ) + val pointC = toScreenLocation( + getBaiduMapLatLng(latitudeC, longitudeC) + ) + val pointD = toScreenLocation( + getBaiduMapLatLng(latitudeD, longitudeD) + ) + val pointE = toScreenLocation( + getBaiduMapLatLng(latitudeE, longitudeE) + ) + val pointF = toScreenLocation( + getBaiduMapLatLng(latitudeF, longitudeF) + ) + it.setPolygonABCDEFPoint( + pointCentre, pointA, pointB, pointC, pointD, pointE, pointF + ) + } + } + } + } + + /** + * æ ¹æ®åœ°å›¾æ˜¾ç¤ºçº§åˆ«,计算比例尺的一åƒç´ å¯¹åº”几米 + */ + private fun getCircleRadiusPx(distanceRadius: Double): Double { + val zoom = getDistanceZoom(distanceRadius) + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(17.0 - zoom) + //计算现在åŠå¾„有多少åƒç´  + return distanceRadius / pxDis + } + + /** + * æ ¹æ®åœ°å›¾æ˜¾ç¤ºçº§åˆ«,计算比例尺的一åƒç´ å¯¹åº”几米 + */ + private fun zoomToCircleRadiusPx(distanceRadius: Double): Double { + val zoom = getBaiduMapZoom() + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(17.0 - zoom) + //计算现在åŠå¾„有多少åƒç´  + return distanceRadius / pxDis + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HistoryDataBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HistoryDataBaiduMapFragment.kt new file mode 100644 index 0000000..2437dce --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HistoryDataBaiduMapFragment.kt @@ -0,0 +1,243 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import android.graphics.Typeface +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.fragment.map.googlemap.GoogleBitmapHelper +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.map.BitmapDescriptor +import com.baidu.mapapi.map.BitmapDescriptorFactory +import com.baidu.mapapi.map.MarkerOptions +import com.baidu.mapapi.model.LatLng +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + *Created by .yzq on 2022/6/28/028. + * @link + * @description: + */ +class HistoryDataBaiduMapFragment : BaseBaiduMapFragment() { + + // private val mScreenshotsViewModel: ScreenshotsViewModel by viewModels() + private lateinit var mGeoCoderViewModel: GeoCoderViewModel + + // private lateinit var mHistoryDataActivity: HistoryDataActivity + private var mLatLngList = mutableListOf() + + private var mPetIconDescriptor: BitmapDescriptor? = null + + private lateinit var mMarkerOptions: MarkerOptions + + //字体 + private var mTypeface = Typeface.DEFAULT + + //是å¦åœ°å›¾æˆªå± + private var isMapSnapshot = true + + private lateinit var mMapLoadOk: () -> Unit + + companion object { + @JvmStatic + fun newInstance( + context: Context, geoCoderViewModel: GeoCoderViewModel, mapLoadOk: () -> Unit + ) = HistoryDataBaiduMapFragment().apply { + mContext = context + mGeoCoderViewModel = geoCoderViewModel + mMapLoadOk = mapLoadOk + } + } + + override fun initData() { +// mHistoryDataActivity = mActivity as HistoryDataActivity + super.initData() + + mTypeface = + ViewUtil.instance.setTypeface(mContext!!, getString(R.string.number_din_cond_font)) + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { +// val today = Utils.getCurrentTime(Utils.DATE_FORMAT_PATTERN) +// mHistoryDataActivity.mDataDetailViewModel.getHistoryByDay( +// mHistoryDataActivity, mHistoryDataActivity.mPet.deviceId, today +// ) + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + /** + * 设置ç»çº¬åº¦æ•°æ® + */ + fun setLatLngData(data: MutableList) { + mBaiduMap?.clear() + + if (data.size == 0) return + + var maxLat = data[0].latitude + var maxLon = data[0].longitude + var minLat = data[0].latitude + var minLon = data[0].longitude + + data.forEach { historyDataBean -> + historyDataBean.apply { + if (maxLat < latitude) maxLat = latitude + if (maxLon < longitude) maxLon = longitude + if (minLat > latitude) minLat = latitude + if (minLon > longitude) minLon = longitude + + val convertLonLat = getBaiduMapLatLng(latitude, longitude) + mLatLngList.add(convertLonLat) + } + } + + val zoom = getDistanceZoom(LatLng(minLat, minLon), LatLng(maxLat, maxLon)) + LogUtil.e("百度地图zoom==$zoom") + setBaiduMapZoom(zoom + 1) + + val maxIndex = data.size - 1 + mGeoCoderViewModel.getLatLonAddress( + mLatLngList[maxIndex].latitude, mLatLngList[maxIndex].longitude, false + ) + val type = MMKVUtil.getInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + if (type == ConstantInt.Line) { + addSetLine() + } else { + addSetNumber() + } + } + + + /** + * æ»‘åŠ¨æ”¹å˜ + */ + fun slideChanged(progress: Int) { + mMarkerOptions = MarkerOptions().position(mLatLngList[progress]).icon(mPetIconDescriptor) + mMarker?.remove() + mMarker = mBaiduMap!!.addOverlay(mMarkerOptions) + } + + /** + * åœæ­¢æ»‘动 + */ + fun slideStopChanged(progress: Int) { + if (mLatLngList.size > 0) { + mGeoCoderViewModel.getLatLonAddress( + mLatLngList[progress].latitude, mLatLngList[progress].longitude, false + ) + } + } + + override fun clearAllMarker() { + super.clearAllMarker() + mLatLngList.clear() + } + + /** + * 画线 + */ + fun addSetLine() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + getPetIcon() + } + val size = mLatLngList.size + if (size == 0) return@launch + mBaiduMap?.let { + it.clear() + moveCameraLocation( + mLatLngList[size - 1].latitude, + mLatLngList[size - 1].longitude, + needConvertGCJ02 = false + ) + addPolyline(it, mLatLngList, false, startCapImageRes = 0) + + mMarkerOptions = + MarkerOptions().position(mLatLngList[size - 1]).icon(mPetIconDescriptor) + mMarker?.remove() + mMarker = it.addOverlay(mMarkerOptions) + + mapSnapshot() + } + } + } + + /** + * 设置显示数字 + */ + fun addSetNumber() { + lifecycleScope.launch { + withContext(Dispatchers.IO) { + getPetIcon() + } + val size = mLatLngList.size + if (size == 0) return@launch + mBaiduMap?.let { + it.clear() + + moveCameraLocation( + mLatLngList[size - 1].latitude, + mLatLngList[size - 1].longitude, + needConvertGCJ02 = false + ) + + for (i in 0 until mLatLngList.size) { + it.addOverlay( + MarkerOptions().position(mLatLngList[i]).icon( + BitmapDescriptorFactory.fromBitmap( + GoogleBitmapHelper.imageUpNumberBitmap( + mContext!!, + R.drawable.pic_history_location, + (i + 1).toString(), + mTypeface + ) + ) + ) + ) + } + mMarkerOptions = + MarkerOptions().position(mLatLngList[size - 1]).icon(mPetIconDescriptor) + mMarker?.remove() + mMarker = it.addOverlay(mMarkerOptions) + + mapSnapshot() + } + } + } + + /** + * 获å–å® ç‰©å¤´åƒ + */ + private suspend fun getPetIcon() { + if (null == mPetIconDescriptor) { +// val bitmap = ImageUtil.getImageBitmapByUrl(mContext!!, mHistoryDataActivity.mPet.imgurl) +// mPetIconDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap) +// bitmap.recycle() + mPetIconDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.pic_avatar_df) + } + } + + /** + * æˆªå± + */ + private fun mapSnapshot() { + if (isMapSnapshot) { + isMapSnapshot = false +// mHistoryDataActivity.mTopBar?.postDelayed({ +// if (mHistoryDataActivity.isFrontRunning) { +// mScreenshotsViewModel.getHistoryDataBaiduMapSnapshotImage( +// mContext!!, mBaiduMap!!, mHistoryDataActivity.mPet.deviceId +// ) +// } +// }, 1000) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt new file mode 100644 index 0000000..5c4ebdc --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt @@ -0,0 +1,148 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.model.LatLng + + +/** + *Created by .yzq on 2022/6/24/024. + * @link + * @description: + */ +class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { + + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + //宠物当å‰ä½ç½®ä¿¡æ¯ + var mDecPetAddressData: HistoryDataBean? = null + private var mMapDeviceBean: MapDeviceBean? = null + private lateinit var mMapLoadOk :() -> Unit + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isMoveCamera = true + + //å·²ç»è½¬æ¢å¥½çš„ç»çº¬åº¦åæ ‡ + private val mLatLngList = mutableListOf() + + /** + *æ˜¯å¦æ˜¾ç¤ºä¿¡æ¯çª—(弹窗覆盖物InfoWindow) + */ + private var isShowInfoWindow = false + + companion object { + @JvmStatic + fun newInstance(context: Context,mapLoadOk: () -> Unit) = HomeMapBaiduMapFragment().apply { + mContext = context + mMapLoadOk = mapLoadOk + } + } + + fun setMapDeviceBean(mapDeviceBean: MapDeviceBean?) { + mMapDeviceBean = mapDeviceBean + } + + override fun liveDataObserve() { + //å地ç†ç¼–ç æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(viewLifecycleOwner) { + //ä¿å­˜åœ°ç†ä¿¡æ¯,方便传å‚ç»™å¯¼èˆªé¡µé¢ + if (null == mDecPetAddressData) mDecPetAddressData = HistoryDataBean() + + var timeString = "" + mMapDeviceBean?.apply { +// timeString = String.format( +// getString(R.string.map_current_update_time), +// DateUtils.getRelativeTimeSpanString(updateTime * 1000) +// ) + timeString = Utils.formatTime(updateTime * 1000, Utils.DATE_FORMAT_PATTERN_EN6) + } + + mDecPetAddressData?.apply { + //æ›´æ–°ä½ç½®æ—¶é—´ + dayTime = timeString + //详细ä½ç½® + address = it + } + showMarkerInfoWindow(mDecPetAddressData!!) + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { + //å¼€å¯åœ°å›¾çš„定ä½å›¾å±‚ +// baiduMap.isMyLocationEnabled = true + startLocation(60, false) +// val locationConfiguration = +// MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null) +// //自定义精度圈边框颜色 +// baiduMap.setMyLocationConfiguration(locationConfiguration) + +// initFenceList() + +// mBaiduMap?.setOnMarkerClickListener { +// if (!isShowInfoWindow) { +// startReverseGeocode() +// } else { +// baiduMap.hideInfoWindow() +// } +// isShowInfoWindow = !isShowInfoWindow +// false +// } + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + + /** + * 画线 + */ + fun addLine(lat: Double, lon: Double) { + val convertLonLat = getBaiduMapLatLng(lat, lon) + mLatLngList.add(convertLonLat) + addPolyline(mBaiduMap!!, mLatLngList, startCapImageRes = R.drawable.map_live_start) + refreshPetCurrentLocation( + convertLonLat, + needMoveCamera = isMoveCamera, + ) + isMoveCamera = false + } + + /** + * 计算用户和宠物的è·ç¦» + */ + fun getUserAndPetDistance(): Double { + var distance = 0.0 + mUserLatLng?.apply { + mPetLatLng?.let { + distance = + Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) + } + } + return distance + } + + /** + * 刚开始的å编译地ç†ä½ç½® + */ + private fun startReverseGeocode() { + mMapDeviceBean?.apply { + mGeoCoderViewModel.getLatLonAddress(latitude, longitude, false) + } + } + + + override fun onRefreshPetCurrentLocationOk(baiduMap: BaiduMap) { +// if (isShowInfoWindow) { +// isShowInfoWindow = false +// baiduMap.hideInfoWindow() +// } + startReverseGeocode() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/MapLiveBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/MapLiveBaiduMapFragment.kt new file mode 100644 index 0000000..d15e6a8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/MapLiveBaiduMapFragment.kt @@ -0,0 +1,72 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import com.abbidot.tracker.R +import com.abbidot.tracker.deprecated.ui.activity.map.MapLiveActivity +import com.baidu.mapapi.map.BaiduMap +import com.baidu.mapapi.model.LatLng + +/** + *Created by .yzq on 2022/6/28/028. + * @link + * @description: + */ +class MapLiveBaiduMapFragment : BaseBaiduMapFragment() { + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isMoveCamera = true + + private lateinit var mMapLiveActivity: MapLiveActivity + + //å·²ç»è½¬æ¢å¥½çš„ç»çº¬åº¦åæ ‡ + private lateinit var mLatLngList: MutableList + + //å·²ç»è½¬æ¢å¥½çš„ç»çº¬åº¦åæ ‡ + private var mPetCurrentLatLng: LatLng? = null + + override fun initData() { + mLatLngList = mutableListOf() + mMapLiveActivity = mActivity as MapLiveActivity + super.initData() + } + + companion object { + @JvmStatic + fun newInstance(context: Context) = MapLiveBaiduMapFragment().apply { + mContext = context + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { + +// initFenceList() + + //先开始获å–å›´æ æ•°æ® + mMapLiveActivity.mFencesManageViewModel.getFenceList( + mMapLiveActivity, mMapLiveActivity.mPet.deviceId + ) + } + + /** + * 刷新当å‰å® ç‰©ä½ç½® + */ + fun refreshPetCurrentLocation() { + mPetCurrentLatLng?.let { + refreshPetCurrentLocation(it.latitude, it.longitude, needConvertGCJ02 = false) + } + } + + /** + * 画线 + */ + fun addLine(lat: Double, lon: Double) { + val convertLonLat = getBaiduMapLatLng(lat, lon) + mPetCurrentLatLng = convertLonLat + mLatLngList.add(mPetCurrentLatLng!!) + addPolyline(mBaiduMap!!, mLatLngList, startCapImageRes = R.drawable.map_live_start) + refreshPetCurrentLocation( + convertLonLat, needMoveCamera = isMoveCamera, + ) + isMoveCamera = false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/PreviewFencesBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/PreviewFencesBaiduMapFragment.kt new file mode 100644 index 0000000..d9ef7dd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/PreviewFencesBaiduMapFragment.kt @@ -0,0 +1,33 @@ +package com.abbidot.tracker.ui.fragment.map.baidumap + +import android.content.Context +import com.baidu.location.BDLocation +import com.baidu.mapapi.map.BaiduMap + +/** + *Created by .yzq on 2024/5/15/015. + * @link + * @description: + */ +class PreviewFencesBaiduMapFragment : BaseBaiduMapFragment() { + + private lateinit var mMapLoadOk: () -> Unit + + companion object { + @JvmStatic + fun newInstance(context: Context, mapLoadOk: () -> Unit) = + PreviewFencesBaiduMapFragment().apply { + mContext = context + mMapLoadOk = mapLoadOk + } + } + + override fun onMapLoadOk(baiduMap: BaiduMap) { + startLocation() + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + override fun locationSuccess(location: BDLocation?) { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt new file mode 100644 index 0000000..8d39531 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt @@ -0,0 +1,1104 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.Manifest +import android.annotation.SuppressLint +import android.content.Context +import android.content.pm.PackageManager +import android.graphics.Bitmap +import android.location.Location +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.databinding.FragmentGoogleMapBinding +import com.abbidot.tracker.util.ImageUtil +import com.abbidot.tracker.util.LonAndLatUtil +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.widget.MapDeviceNetView +import com.abbidot.tracker.widget.MapMarkerInfoView +import com.google.android.gms.location.FusedLocationProviderClient +import com.google.android.gms.location.LocationServices +import com.google.android.gms.location.Priority +import com.google.android.gms.maps.CameraUpdate +import com.google.android.gms.maps.CameraUpdateFactory +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.GoogleMapOptions +import com.google.android.gms.maps.MapView +import com.google.android.gms.maps.OnMapReadyCallback +import com.google.android.gms.maps.model.BitmapDescriptorFactory +import com.google.android.gms.maps.model.CameraPosition +import com.google.android.gms.maps.model.Circle +import com.google.android.gms.maps.model.CircleOptions +import com.google.android.gms.maps.model.CustomCap +import com.google.android.gms.maps.model.Dash +import com.google.android.gms.maps.model.Gap +import com.google.android.gms.maps.model.JointType +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.LatLngBounds +import com.google.android.gms.maps.model.Marker +import com.google.android.gms.maps.model.MarkerOptions +import com.google.android.gms.maps.model.PatternItem +import com.google.android.gms.maps.model.Polygon +import com.google.android.gms.maps.model.PolygonOptions +import com.google.android.gms.maps.model.Polyline +import com.google.android.gms.maps.model.PolylineOptions +import com.google.android.gms.maps.model.RoundCap +import com.google.android.gms.tasks.CancellationTokenSource +import com.google.android.gms.tasks.Task +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.coroutines.launch + + +/** + * 谷歌地图 + */ +abstract class BaseGoogleMapFragment : + BaseFragment(FragmentGoogleMapBinding::inflate), OnMapReadyCallback { + + var mGoogleMap: GoogleMap? = null + private lateinit var mGoogleMapView: MapView + + /**地图样å¼ç±»åž‹:嫿˜Ÿ/标准 + * GoogleMap.MAP_TYPE_NONE 䏿˜¾ç¤ºåœ°å›¾ + * GoogleMap.MAP_TYPE_NORMAL 标准普通地图 + * GoogleMap.MAP_TYPE_SATELLITE 嫿˜Ÿåœ°å›¾ + * GoogleMap.MAP_TYPE_TERRAIN 地形,地势 + * GoogleMap.MAP_TYPE_HYBRID æ··åˆçš„ + */ +// private var mMapType = GoogleMap.MAP_TYPE_NORMAL + + private var mMapviewBundleKey = this.javaClass.simpleName + + //地图放大 + private var mGoogleMapZoom = 18f + + //åœ°å›¾æ‘„åƒæœºç§»åŠ¨åŠ¨ç”»æ—¶é—´ 毫秒 + private val mAnimMoveDurationMs = 1000 + + //自定显示宠物头åƒåœ°ç‚¹ä¿¡æ¯å›¾å±‚ + var mMarker: Marker? = null + + //å® ç‰©å¤§å¤´é’ˆè®¾ç½®è‡ªå®šä¹‰å¤´åƒ + private var mPetHeadIconBitmap: Bitmap? = null + + private var mMarkerInfoWindowAdapter: MarkerInfoWindowAdapter? = null + + //宠物头åƒåœ°å€ + var mPetHeadUrl = "" + + //头åƒä¸ºç©ºï¼Œç”¨é»˜è®¤ç±»åž‹çš„å¤´åƒ + private var mPetType = ConstantInt.DogPetType + + //地图是å¦åŠ è½½å‡†å¤‡å¥½äº† + var isMapLoadOk = false + + //用户ä½ç½®ç»çº¬åº¦ + var mUserLatLng: LatLng? = null + + //宠物ä½ç½®ç»çº¬åº¦ + var mPetLatLng: LatLng? = null + + //第一次执行定ä½å›žè°ƒï¼Œæ–¹ä¾¿åªåˆ·æ–°ç”¨æˆ·ä½ç½® + private var isLocationSuccessCallback = true + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? + ): View { + mViewBinding = this.inflater(inflater, container, false) + LogUtil.e("${mMapviewBundleKey}===GoogleMapFragment--->onCreateView---$container") + + var mapViewBundle: Bundle? = null + if (null != savedInstanceState) { + mapViewBundle = savedInstanceState.getBundle(mMapviewBundleKey) + } +// mGoogleMapView = mViewBinding.googleMapView + + //指定地图的åˆå§‹ç…§ç›¸æœºä½ç½®ï¼ˆæŒ‡å®š null 以使用 é»˜è®¤æ‘„åƒæœºä½ç½®ï¼‰ + val options = GoogleMapOptions().apply { + //默认åŽç››é¡¿ç»çº¬åº¦ + val lat = MMKVUtil.getDouble(MMKVKey.MapShowDefaultLat, 38.913611) + val lon = MMKVUtil.getDouble(MMKVKey.MapShowDefaultLon, -77.013222) + val position = CameraPosition.fromLatLngZoom(LatLng(lat, lon), 4f) + camera(position) + } + mGoogleMapView = MapView(this.requireActivity(), options) + mGoogleMapView.onCreate(mapViewBundle) + mViewBinding.root.addView(mGoogleMapView) + + return mViewBinding.root + } + + override fun initData() { + super.initData() + mGoogleMapView.getMapAsync(this) + } + + override fun onResume() { + super.onResume() + mGoogleMapView.onResume() + + mGoogleMap?.apply { + val mapTypeSp = Util.getMapTypeSp() + if (mapTypeSp == ConstantInt.Type0 && mapType != GoogleMap.MAP_TYPE_NORMAL) { + mapType = GoogleMap.MAP_TYPE_NORMAL + } else if (mapTypeSp == ConstantInt.Type1 && mapType != GoogleMap.MAP_TYPE_HYBRID) { + mapType = GoogleMap.MAP_TYPE_HYBRID + } + } + } + + override fun onStart() { + super.onStart() + mGoogleMapView.onStart() + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + + var mapViewBundle = outState.getBundle(mMapviewBundleKey) + if (null == mapViewBundle) { + mapViewBundle = Bundle() + outState.putBundle(mMapviewBundleKey, mapViewBundle) + } + mGoogleMapView.onSaveInstanceState(mapViewBundle) + } + + override fun onPause() { + super.onPause() + mGoogleMapView.onPause() + } + + + override fun onLowMemory() { + super.onLowMemory() + mGoogleMapView.onLowMemory() + } + + /** + * è®¾ç½®åœ°å›¾æ ·å¼ + */ + private fun setGoogleMapType() { + mGoogleMap?.apply { + //åœ°å›¾æ ·å¼ + val mapTypeSp = Util.getMapTypeSp() + if (mapTypeSp == ConstantInt.Type0) { + mapType = GoogleMap.MAP_TYPE_NORMAL + } else if (mapTypeSp == ConstantInt.Type1) { + mapType = GoogleMap.MAP_TYPE_HYBRID + } + } + } + + /** + * 设置地图显示级别 + */ + fun setGoogleMapZoom(zoom: Float) { + mGoogleMapZoom = zoom + } + + /** + * 获å–地图显示级别 + */ + fun getGoogleMapZoom() = mGoogleMapZoom + + /** + * 嫿˜Ÿæ ‡å‡†åœ°å›¾æ¨¡å¼åˆ‡æ¢ + */ + fun switchSatelliteAndNormalMapType() { + setGoogleMapType() + } + + /** + * 编辑围æ è¿˜åŽŸæ‘„åƒæœº + */ + private var mCameraUpdate: CameraUpdate? = null + + fun setCameraUpdateNull() { + //åªæœ‰åˆšè¿›å…¥é¡µé¢æ‰ä¼šä½¿ç”¨,åªç”¨ä¸€æ¬¡,方便æœç´¢åœ°å€ç§»åŠ¨æ‘„åƒå¤´ + mCameraUpdate = null + } + + /** + * 设置缩放等级 + */ + fun setZoomTo(zoomLevel: Float) { + mGoogleMap?.apply { + mGoogleMapZoom *= zoomLevel + moveCamera(CameraUpdateFactory.zoomTo(mGoogleMapZoom)) + } + } + + /** + * æ ¹æ®CameraUpdateç§»åŠ¨æ‘„åƒæœº + */ + fun moveCameraUpdate(lat: Double, lon: Double, isAnimMoveCamera: Boolean = true) { + if (null == mCameraUpdate) { + moveCameraLocation(lat, lon, isAnimMoveCamera) + LogUtil.e("moveCameraUpdate---------->CameraUpdate=null,æ‘„åƒæœºç§»åЍé moveCameraLocationç»çº¬åº¦") + return + } + mGoogleMap?.apply { + if (isAnimMoveCamera) { + animateCamera(mCameraUpdate!!, mAnimMoveDurationMs, null) + } else { + moveCamera(mCameraUpdate!!) + } + } + + } + + /** + * æ ¹æ®CameraUpdateç§»åŠ¨æ‘„åƒæœº + */ + fun moveCameraUpdate(latLng: LatLng, isAnimMoveCamera: Boolean = true) { + moveCameraUpdate(latLng.latitude, latLng.longitude, isAnimMoveCamera) + } + + /** + * 移动到æŸä¸ªä½ç½® 为中心点 + */ + fun moveCameraLocation(latLng: LatLng, isAnimMoveCamera: Boolean = true) { + mGoogleMap?.apply { + //animateCamera使用动画 + if (isAnimMoveCamera) { + animateCamera( + CameraUpdateFactory.newLatLngZoom(latLng, mGoogleMapZoom), + mAnimMoveDurationMs, + null + ) + } else { + moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, mGoogleMapZoom)) + } + } + } + + /** + * 移动到æŸä¸ªä½ç½® 为中心点 + */ + fun moveCameraLocation(lat: Double, lon: Double, isAnimMoveCamera: Boolean = true) { + moveCameraLocation(LatLng(lat, lon), isAnimMoveCamera) + } + + /** + * 切æ¢ç”¨æˆ·å’Œå® ç‰©çš„ä½ç½®å±…中显示,移动摄åƒå¤´ä¸­å¿ƒ + */ + fun switchShowLocation(@ConstantInt type: Int) { + val latLng = if (type == ConstantInt.PetLocationType) { + //刷新下用户当å‰çš„ä½ç½® + getLastLocation() + mPetLatLng + } else mUserLatLng + latLng?.apply { + moveCameraLocation(this) + } + } + + /** + * 移动到æŸä¸ªä½ç½® 为中心点,animateCamera使用动画 + */ + fun moveAnimateCameraLocation( + latLng: LatLng, moveCameraCallback: GoogleMap.CancelableCallback? + ) { + //1秒动画执行时间 + mGoogleMap?.apply { + animateCamera( + CameraUpdateFactory.newLatLngZoom(latLng, mGoogleMapZoom), + mAnimMoveDurationMs, + moveCameraCallback + ) + } + } + + /** + * è®¾ç½®å¤§å¤´é’ˆå® ç‰©å¤´åƒ + */ + fun setPetHeadIconUrl(petHeadUrl: String, petType: Int) { + mPetHeadUrl = petHeadUrl + mPetType = petType + mPetHeadIconBitmap?.recycle() + mPetHeadIconBitmap = null + } + + /** + * 设置宠物头åƒåœ°å›¾Marker + */ + private suspend fun setPetHeadMarker( + latLng: LatLng, headBgResId: Int = R.drawable.pic_map_gps_avatar + ) { + + if (null == mPetHeadIconBitmap) { + //è®¾ç½®å¤´åƒ + mPetHeadIconBitmap = + GoogleBitmapHelper.headToBitmap(mContext!!, headBgResId, mPetHeadUrl, mPetType) + } + val markerOptions = MarkerOptions().position(latLng) + markerOptions.icon(BitmapDescriptorFactory.fromBitmap(mPetHeadIconBitmap!!)) + + mMarker?.remove() + mGoogleMap?.apply { + mMarker = addMarker(markerOptions) + } + } + + /** + * 设置宠物当å‰ä½ç½®ç»çº¬åº¦ + */ + fun setPetCurrentLocation(petHeadUrl: String, lat: Double, lon: Double, petType: Int) { + lifecycleScope.launch(lifecycleScope.coroutineContext) { + setPetHeadIconUrl(petHeadUrl, petType) + mPetLatLng = LatLng(lat, lon).apply { + setPetHeadMarker(this) + } + } + } + + /** + * 当å‰å® ç‰©ä½ç½®åˆ·æ–° + * @param needMoveCamera æ‘„åƒæœºæ˜¯å¦æ‘„需è¦ç§»åЍ当å‰ç»çº¬åº¦ï¼Œåœ°å›¾ä¸­å¿ƒ + * @param isAnimMoveCamera 动画移动地图摄åƒå¤´ + */ + fun refreshPetCurrentLocation( + latLng: LatLng, + needMoveCamera: Boolean = true, + isAnimMoveCamera: Boolean = true, + headBgResId: Int = R.drawable.pic_map_gps_avatar + ) { + mPetLatLng = latLng + + if (null != mGoogleMap) { + + lifecycleScope.launch(lifecycleScope.coroutineContext) { + + setPetHeadMarker(latLng, headBgResId) + + //是å¦éœ€è¦ç§»åŠ¨åˆ°åœ°å›¾ä¸­å¿ƒç‚¹ + if (needMoveCamera) { + //animateCamera使用动画 + moveCameraLocation(latLng, isAnimMoveCamera) + } + + //刷新当å‰ä½ç½®ok,延时等待移动地图摄åƒå¤´åŠ¨ç”» + if (isAnimMoveCamera) { + mGoogleMapView.postDelayed({ + onRefreshPetCurrentLocationOk(mGoogleMap!!) + }, 1000) + } else { + onRefreshPetCurrentLocationOk(mGoogleMap!!) + } + } + } + } + + /** + * 清空所有图层 + */ + open fun clearAllMarker() { + mGoogleMap?.clear() + clearFenceList() + } + + //在地图上画圆形围æ å’Œå¤šè¾¹å½¢å›´æ é›†åˆ + private var mCircleFenceList: MutableList? = null + private var mPolygonFenceList: MutableList? = null + +// fun initFenceList() { +// if (null == mCircleFenceList) mCircleFenceList = mutableListOf() +// if (null == mRectFenceList) mRectFenceList = mutableListOf() +// } + + /** + * 地图上画形状,虚线风格 + */ + fun getDashedPatternStyle(patternLength: Float = 10f): List { + //自定义æè¾¹å›¾æ¡ˆ https://developers.google.cn/maps/documentation/android-sdk/shapes#stroke_color + return listOf( + //图案设置æˆäº†é‡å¤çš„点åºåˆ—,åŽè·Ÿä¸€ä¸ªé•¿åº¦ä¸º 20 åƒç´ çš„间隙〠+ // 一个长度为 30 åƒç´ çš„短划线,以åŠå¦ä¸€ä¸ª 20 åƒç´ çš„间隙。 +// Dot(), + Gap(patternLength), Dash(patternLength) + ) + } + + /** + * 地图添加图片 + * @param anchorCenter 图片居中显示 + */ + fun addImageMarker( + latLng: LatLng, + imageTypeResId: Int, + anchorCenter: Boolean = true, + isDraggable: Boolean = false + ): Marker? { + ImageUtil.getBitmapFromDrawableAndSvg(mContext!!, imageTypeResId)?.apply { + val imageTypeMarker = + MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromBitmap(this)) + imageTypeMarker.let { + //图åƒä¸Šå°†ç½®äºŽæ ‡è®°çš„ LatLng ä½ç½®çš„点。该点默认为图åƒåº•部的中间ä½ç½®ã€‚ + if (anchorCenter) it.anchor(it.anchorU, it.anchorV / 2) + if (isDraggable) it.draggable(isDraggable) + } + return mGoogleMap?.addMarker(imageTypeMarker) + } + return null + } + + fun addImageMarker( + lat: Double, + lon: Double, + imageTypeResId: Int, + anchorCenter: Boolean = true, + isDraggable: Boolean = false + ): Marker? { + return addImageMarker(LatLng(lat, lon), imageTypeResId, anchorCenter, isDraggable) + } + + /** + * Adds a [Circle] around the provided + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªåœ†å½¢å›´æ  + *@param isDashedPattern æ˜¯å¦æ˜¯è™šçº¿ + */ + fun addCircleFence( + center: LatLng, + radius: Double = 700.0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + if (null == mGoogleMap) return + + val circleFence = mGoogleMap!!.addCircle( + CircleOptions().center(center).radius(radius).strokeWidth(AppUtils.dpToPx(1).toFloat()) + .fillColor(fillColor).strokeColor(strokeColor) + ) + + if (isDashedPattern) { + circleFence.strokePattern = getDashedPatternStyle() + } + + if (null == mCircleFenceList) mCircleFenceList = mutableListOf() + mCircleFenceList?.add(circleFence) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªåœ†å½¢è™šçº¿å›´æ  + */ + fun addCircleImageFence( + center: LatLng, + radius: Double = 700.0, + imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashed: Boolean = true + ) { + if (imageTypeResId > 0) addImageMarker(center, imageTypeResId) + addCircleFence(center, radius, strokeColor, fillColor, isDashed) + } + + /** + * 地图上画多边形 + * @param isDashedPattern æ˜¯å¦æ˜¯è™šçº¿ + */ + private fun mapDrawPolygon( + points: MutableList, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + mGoogleMap?.apply { + //构造PolygonOptions + val polygonOptions = + PolygonOptions().addAll(points).strokeWidth(AppUtils.dpToPx(1).toFloat()) + .fillColor(fillColor).strokeColor(strokeColor) + + if (isDashedPattern) { + polygonOptions.strokePattern(getDashedPatternStyle()) + } + + val rectFence = addPolygon(polygonOptions) + + if (null == mPolygonFenceList) mPolygonFenceList = mutableListOf() + mPolygonFenceList?.add(rectFence) + } + } + + /** + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªçŸ©å½¢å›´æ  + */ + fun addRectFence( + fencesBean: FencesBean, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + if (null == mGoogleMap) return + + val points = mutableListOf() + fencesBean.apply { + points.add(LatLng(latitudeA, longitudeA)) + points.add(LatLng(latitudeB, longitudeB)) + points.add(LatLng(latitudeC, longitudeC)) + points.add(LatLng(latitudeD, longitudeD)) + } + mapDrawPolygon(points, strokeColor, fillColor, isDashedPattern) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªçŸ©å½¢è™šçº¿æœ‰ä¸­å¿ƒå›¾ç‰‡å›´æ  + */ + fun addRectImageFence( + fencesBean: FencesBean, + imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = true + ) { + if (imageTypeResId > 0) addImageMarker( + LatLng( + fencesBean.latitudeCenter, fencesBean.longitudeCenter + ), imageTypeResId + ) + addRectFence(fencesBean, strokeColor, fillColor, isDashedPattern) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªæ­£åœ¨é¢„è§ˆçš„çŸ©å½¢è™šçº¿å›´æ  + */ + fun addRectImageEditFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + fencesBean.apply { + addRectImageFence(this, imageTypeResId, strokeColor, fillColor) + addImageMarker(LatLng(latitudeA, longitudeA), R.drawable.icon_fence_dot_svg) + addImageMarker(LatLng(latitudeB, longitudeB), R.drawable.icon_fence_dot_svg) + addImageMarker(LatLng(latitudeC, longitudeC), R.drawable.icon_fence_dot_svg) + addImageMarker(LatLng(latitudeD, longitudeD), R.drawable.icon_fence_dot_svg) + } + } + + /** + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªå¤šè¾¹å½¢å›´æ  + */ + fun addPolygonFence( + fencesBean: FencesBean, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = false + ) { + if (null == mGoogleMap) return + + val points = mutableListOf() + fencesBean.apply { + points.add(LatLng(latitudeA, longitudeA)) + points.add(LatLng(latitudeB, longitudeB)) + points.add(LatLng(latitudeC, longitudeC)) + points.add(LatLng(latitudeD, longitudeD)) + points.add(LatLng(latitudeE, longitudeE)) + points.add(LatLng(latitudeF, longitudeF)) + } + mapDrawPolygon(points, strokeColor, fillColor, isDashedPattern) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªå¤šè¾¹å½¢è™šçº¿æœ‰ä¸­å¿ƒå›¾ç‰‡å›´æ  + */ + fun addPolygonImageFence( + fencesBean: FencesBean, + imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + isDashedPattern: Boolean = true + ) { + if (imageTypeResId > 0) addImageMarker( + LatLng( + fencesBean.latitudeCenter, fencesBean.longitudeCenter + ), imageTypeResId + ) + addPolygonFence(fencesBean, strokeColor, fillColor, isDashedPattern) + } + + /** + * + * åœ°å›¾ä¸Šç”»ä¸€ä¸ªæ­£åœ¨é¢„è§ˆçš„çŸ©å½¢è™šçº¿å›´æ  + */ + fun addPolygonImageEditFence( + fencesBean: FencesBean, imageTypeResId: Int = 0, + strokeColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color2), + fillColor: Int = ContextCompat.getColor(mContext!!, R.color.select_color4), + ) { + fencesBean.apply { + addPolygonImageFence(this, imageTypeResId, strokeColor, fillColor) + addImageMarker(LatLng(latitudeA, longitudeA), R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(LatLng(latitudeB, longitudeB), R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(LatLng(latitudeC, longitudeC), R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(LatLng(latitudeD, longitudeD), R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(LatLng(latitudeE, longitudeE), R.drawable.icon_fence_polygon_operate_svg) + addImageMarker(LatLng(latitudeF, longitudeF), R.drawable.icon_fence_polygon_operate_svg) + } + } + + /** + * 清除地图有多个围æ åœˆ + */ + fun clearFenceList() { +// if (null == mCircleFenceList) throw NullPointerException( +// "mCircleList空指针,请在onMapLoadOké‡å†™æ–¹æ³•中实例化mCircleList,执行方法initFenceList()" +// ) +// if (null == mRectFenceList) throw NullPointerException( +// "mCircleList空指针,请在onMapLoadOké‡å†™æ–¹æ³•中实例化mCircleList,执行方法initFenceList()" +// ) + mCircleFenceList?.forEach { + it.remove() + } + mCircleFenceList?.clear() + + mPolygonFenceList?.forEach { + it.remove() + } + mPolygonFenceList?.clear() + } + + /** + * 自动出现自定义头部地点布局,ä¸éœ€è¦ç‚¹å‡» + */ + fun showMarkerInfoWindow(historyDataBean: HistoryDataBean) { + mGoogleMap?.apply { + mMarkerInfoWindowAdapter = MarkerInfoWindowAdapter(mContext!!) + setInfoWindowAdapter(mMarkerInfoWindowAdapter) + mMarker?.let { + //传递ä½ç½®ä¿¡æ¯ç»™InfoWindowAdapterçª—å£ + it.tag = historyDataBean + it.setInfoWindowAnchor(0.5f, 0f) + it.showInfoWindow() + } + } + } + + /** + * 获å–地图画线的PolylineOptions + */ + private fun getPolylineOptions(widthDp: Float, lineColorRes: Int): PolylineOptions { + return PolylineOptions().clickable(false).width(AppUtils.dpToPx(widthDp)) + .color(ContextCompat.getColor(mContext!!, lineColorRes)).geodesic(false) + } + + /** + * 一次性画线 2æ¡çº¿å åŠ ï¼Œé»‘é»„å åŠ  + * 至少需è¦2个点的ç»çº¬åº¦ + * æ¯ç”»ä¸€æ¬¡å°±æ¸…空之å‰ç”»çš„ + */ + fun addSinglePolyline(googleMap: GoogleMap, latLngList: MutableList) { + if (latLngList.size > 1) { + //先黄黑线 + getPolylineOptions(4f, R.color.txt_button).let { + it.addAll(latLngList) + googleMap.addPolyline(it).apply { + startCap = RoundCap() + endCap = RoundCap() + //连接类型,å¯ä»¥æŒ‡å®šæ£±å°æˆ–圆角 + jointType = JointType.ROUND + } + } + + //自定义æè¾¹å›¾æ¡ˆ +// val pattern = listOf(Dot(), Gap(20F), Dash(30F), Gap(20F)) +// polyline.pattern = pattern + + //å†ç”»é»„线 + getPolylineOptions(3.5f, R.color.select_color2).let { + it.addAll(latLngList) + googleMap.addPolyline(it).apply { + startCap = RoundCap() + endCap = RoundCap() + //连接类型,å¯ä»¥æŒ‡å®šæ£±å°æˆ–圆角 + jointType = JointType.ROUND + } + } + } + } + + private var mYellowPolyline: Polyline? = null + private var mBlackPolyline: Polyline? = null + + /** + * å¯ä»¥é‡å¤ç”»çº¿ 2æ¡çº¿å åŠ ï¼Œé»‘é»„å åŠ  + * 需è¦1个点的ç»çº¬åº¦ + * æ¯åŠ ä¸ªç‚¹å°±ç”»ä¸€æ¬¡ + */ + fun addPolyline(googleMap: GoogleMap, latLng: LatLng) { + //先黑线 + if (null == mBlackPolyline) { + getPolylineOptions(4f, R.color.txt_button).let { + it.add(latLng) + mBlackPolyline = googleMap.addPolyline(it).apply { + endCap = RoundCap() + //连接类型,å¯ä»¥æŒ‡å®šæ£±å°æˆ–圆角 + jointType = JointType.ROUND + } + } + } else { + val blackPoints = mBlackPolyline!!.points + blackPoints.add(latLng) + mBlackPolyline!!.points = blackPoints + } + + //自定义æè¾¹å›¾æ¡ˆ +// val pattern = listOf(Dot(), Gap(20F), Dash(30F), Gap(20F)) +// polyline.pattern = pattern +// polyline.tag = "A" + + //å†ç”»é»„线 + if (null == mYellowPolyline) { + getPolylineOptions(3.5f, R.color.btn_yellow_color).let { + it.add(latLng) + mYellowPolyline = googleMap.addPolyline(it).apply { + //起点线帽图片,refWidth数值越å°ï¼Œå›¾ç‰‡è¶Šå¤§ + startCap = CustomCap( + BitmapDescriptorFactory.fromResource(R.drawable.map_live_start), + QMUIDisplayHelper.dpToPx(3).toFloat() + ) + endCap = RoundCap() + jointType = JointType.ROUND + } + } + } else { + val yellowPoints = mYellowPolyline!!.points + yellowPoints.add(latLng) + mYellowPolyline!!.points = yellowPoints + } + + LogUtil.e("点的个数:${mBlackPolyline?.points?.size},${mYellowPolyline?.points?.size}") + } + + /** + * å¯ä»¥é‡å¤ç”»çº¿ 2æ¡çº¿å åŠ ï¼Œé»‘é»„å åŠ  + * 需è¦1个点的ç»çº¬åº¦ + * æ¯åŠ ä¸ªç‚¹å°±ç”»ä¸€æ¬¡ + */ + fun addPolyLines(googleMap: GoogleMap, latLngList: MutableList) { + //先黑线 + if (null == mBlackPolyline) { + getPolylineOptions(4f, R.color.txt_button).let { + it.addAll(latLngList) + mBlackPolyline = googleMap.addPolyline(it).apply { + endCap = RoundCap() + //连接类型,å¯ä»¥æŒ‡å®šæ£±å°æˆ–圆角 + jointType = JointType.ROUND + } + } + } else { + val blackPoints = mBlackPolyline!!.points + blackPoints.addAll(latLngList) + mBlackPolyline!!.points = blackPoints + } + + //å†ç”»é»„线 + if (null == mYellowPolyline) { + getPolylineOptions(3.5f, R.color.btn_yellow_color).let { + it.addAll(latLngList) + mYellowPolyline = googleMap.addPolyline(it).apply { + //起点线帽图片,refWidth数值越å°ï¼Œå›¾ç‰‡è¶Šå¤§ + startCap = CustomCap( + BitmapDescriptorFactory.fromResource(R.drawable.map_live_start), + QMUIDisplayHelper.dpToPx(3).toFloat() + ) + endCap = RoundCap() + jointType = JointType.ROUND + } + } + } else { + val yellowPoints = mYellowPolyline!!.points + yellowPoints.addAll(latLngList) + mYellowPolyline!!.points = yellowPoints + } + LogUtil.e("点的个数:${mBlackPolyline?.points?.size},${mYellowPolyline?.points?.size}") + } + + override fun onMapReady(googleMap: GoogleMap) { + LogUtil.e("谷歌地图加载好了") + mGoogleMap = googleMap + +// val options = GoogleMapOptions().liteMode(true) + + isMapLoadOk = true + +// googleMap.uiSettings.apply { +// //å³ä¸‹è§’工具æ ä¸æ˜¾ç¤º +// isMapToolbarEnabled = true +// //指å—é’ˆ +// isCompassEnabled = true +// //å®šä½æŒ‰é’® +// isMyLocationButtonEnabled = true +// } + + //åœ°å›¾æ ·å¼ + setGoogleMapType() + + googleMap.apply { + //æ˜¾ç¤ºå®žæ—¶äº¤é€šä¿¡æ¯ +// isTrafficEnabled = true + //检测æƒé™ï¼Œå¼€å¯ç”¨æˆ·çš„当å‰ä½ç½®https://developers.google.cn/maps/documentation/android-sdk/location?hl=zh-cn + if (ActivityCompat.checkSelfPermission( + mContext!!, Manifest.permission.ACCESS_FINE_LOCATION + ) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( + mContext!!, Manifest.permission.ACCESS_COARSE_LOCATION + ) == PackageManager.PERMISSION_GRANTED + ) { + //å¯ç”¨â€œæˆ‘çš„ä½ç½®â€å›¾å±‚。 + isMyLocationEnabled = true + uiSettings.let { + //ç¦æ­¢æ˜¾ç¤ºâ€œæˆ‘çš„ä½ç½®â€æŒ‰é’®ã€‚ + it.isMyLocationButtonEnabled = false + //用于设置是å¯ç”¨è¿˜æ˜¯åœç”¨å€¾æ–œæ‰‹åŠ¿çš„å好设置。 + // https://developers.google.cn/maps/documentation/android-sdk/reference/com/google/android/libraries/maps/UiSettings?hl=zh-cn + it.isTiltGesturesEnabled = false + it.isMapToolbarEnabled = false + it.isTiltGesturesEnabled = false + it.isCompassEnabled = false + } + } + + onMapLoadOk(googleMap) + } + } + + //*************************定ä½ä»£ç start**************************************** + + // The Fused Location Provider provides access to location APIs. + private val mFusedLocationClient: FusedLocationProviderClient by lazy { + LocationServices.getFusedLocationProviderClient(mContext!!)// + } + private var mCancellationTokenSource: CancellationTokenSource? = null + + + /** + * èŽ·å–æœ€åŽä½ç½®,用户当å‰çš„ä½ç½® + */ + @SuppressLint("MissingPermission") + fun getLastLocation() { + mFusedLocationClient.lastLocation.addOnCompleteListener { taskLocation -> + var location: Location? = null + if (taskLocation.isSuccessful && taskLocation.result != null) { + location = taskLocation.result + LonAndLatUtil.currentUserGPSLat = location.latitude + LonAndLatUtil.currentUserGPSLon = location.longitude + LogUtil.e("getLastLocation:${location.latitude}, ${location.longitude}") + } else { + LogUtil.e("getLastLocation:exception" + taskLocation.exception) + } + if (null != location) { + mUserLatLng = LatLng(location.latitude, location.longitude) + if (isLocationSuccessCallback) locationSuccess(location) + isLocationSuccessCallback = false + } else requestCurrentLocation() + } + + } + + /** + * 请求用户当å‰çš„ä½ç½® + */ + @SuppressLint("MissingPermission") + fun requestCurrentLocation() { + try { + if (null == mCancellationTokenSource) mCancellationTokenSource = + CancellationTokenSource() +// val currentLocationTask = mFusedLocationClient.getCurrentLocation( +// LocationRequest.PRIORITY_HIGH_ACCURACY, mCancellationTokenSource!!.token +// ) + val currentLocationTask = mFusedLocationClient.getCurrentLocation( + Priority.PRIORITY_HIGH_ACCURACY, mCancellationTokenSource!!.token + ) + currentLocationTask.addOnCompleteListener { task: Task -> + var location: Location? = null + val result = if (task.isSuccessful && task.result != null) { + location = task.result + LonAndLatUtil.currentUserGPSLat = location.latitude + LonAndLatUtil.currentUserGPSLon = location.longitude + "(success): ${location.latitude}, ${location.longitude}" + } else { + val exception = task.exception + "(failure): $exception" + } + + LogUtil.e("requestCurrentLocation $result") + if (null != location) { + mUserLatLng = LatLng(location.latitude, location.longitude) + if (isLocationSuccessCallback) locationSuccess(location) + isLocationSuccessCallback = false + } + } + } catch (e: Exception) { + LogUtil.e("requestCurrentLocation异常:${e.message}") + } + } + + //*************************定ä½ä»£ç end**************************************** + + /** + * ç”± points 组æˆçš„区域 è·ç¦»æ‰‹æœºå±å¹•è·ç¦»screenPaddingPx åƒç´ å•ä½ + */ + fun setLatLngZoom(context: Context, screenPaddingPx: Int, vararg points: LatLng) { + val width = context.resources.displayMetrics.widthPixels + val height = context.resources.displayMetrics.heightPixels + val padding = width / 8 + val builder = LatLngBounds.Builder() + for (item in points) { + builder.include(item) + } + //æ ¹æ®ç»çº¬åº¦æ¥è®¾ç½®ç¼©æ”¾çº§åˆ« +// mCameraUpdate = CameraUpdateFactory.newLatLngBounds( +// builder.build(), width, (height / 2.5f).toInt(), padding.toInt() +// ) + mCameraUpdate = CameraUpdateFactory.newLatLngBounds(builder.build(), screenPaddingPx) + } + + fun getMyZoom1(distance: Double): Float { + val scale = intArrayOf( + 3,//21 + 5,//20 + 10,//19 + 30,//18 + 50,//17 + 90,//16 + 200,//15 + 400,//14 + 800,//13 + 1400,//12 + 2900,//11 + 5800,//10 + 11000,//9 + 22000,//8 + 43000,//7 + 88000,//6 + 170000,//5 + 330000,//4 + 390000,//3 + 1530000,//2级缩放 + ) + var jl = distance + if (distance < 3) { + jl = 4.0 + } + LogUtil.e("最大和最å°é—´ç»çº¬åº¦ç›´çº¿è·ç¦» = $jl") + var i = 0 + while (i < scale.size - 2) { + if (scale[i] < jl && scale[i + 1] >= jl) { + break + } + i++ + } + LogUtil.e("æ ¹æ®è·ç¦»èŽ·å–Zoom=${21f - i}") + return 21f - i + } + + /** + * æ ¹æ®æ˜¾ç¤ºè·ç¦»èŽ·å–缩放地图等级 + */ + fun getDistanceZoom(distance: Double): Float { + val scale = intArrayOf( + 10,//21 + 30,//20 + 50,//19 + 80,//18 + 100,//17 + 400,//16 + 800,//15 + 1000,//14 + 2000,//13 + 3000,//12 + 4000,//11 + 58000,//10 + 11000,//9 + 22000,//8 + 44000,//7 + 88000,//6 + 170000,//5 + 330000,//4 + 1000000,//3 + 1530000,//2级缩放 + ) + LogUtil.e("最大和最å°é—´ç»çº¬åº¦ç›´çº¿è·ç¦» = $distance") + val zoom: Float = if (distance <= scale[0]) { + 21f + } else if (distance >= scale[scale.size - 1]) { + 1f + } else { + var i = 0 + while (i < scale.size - 2) { + if (scale[i] < distance && scale[i + 1] >= distance) { + break + } + i++ + } + 21f - i + } + LogUtil.e("æ ¹æ®è·ç¦»èŽ·å–Zoom=$zoom") + return zoom + } + + /** + * 设置Marker弹窗消æ¯çš„ä½ç½® + */ + fun setMarkerInfoViewOffset(markerInfoView: MapMarkerInfoView, latLng: LatLng) { + mGoogleMap?.projection?.toScreenLocation(latLng)?.let { + markerInfoView.setOffsetXY(it.x, it.y - AppUtils.dpToPx(56)) + } + } + + /** + * 设置地图网络类型显示ä½ç½® + */ + fun setMapNetTypeViewOffset(mapDeviceNetView: MapDeviceNetView, latLng: LatLng) { + mGoogleMap?.projection?.toScreenLocation(latLng)?.let { + mapDeviceNetView.visibility = View.VISIBLE + mapDeviceNetView.setOffsetXY(it.x + AppUtils.dpToPx(11), it.y - AppUtils.dpToPx(56)) + } + } + + /** + * å®šä½æˆåŠŸè¿”å›ž + */ + open fun locationSuccess(location: Location?) {} + + /** + * 地图加载完毕 + */ + abstract fun onMapLoadOk(googleMap: GoogleMap) + + /** + * 宠物ä½ç½®åˆ·æ–°å®Œæˆ + */ + open fun onRefreshPetCurrentLocationOk(googleMap: GoogleMap) { + } + + override fun onStop() { + super.onStop() + mCancellationTokenSource?.cancel() + mGoogleMapView.onStop() + } + + override fun onDestroy() { + super.onDestroy() + mPetHeadIconBitmap?.recycle() + mGoogleMapView.onDestroy() + } +} + diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/EditWiFiZoneGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/EditWiFiZoneGoogleMapFragment.kt new file mode 100644 index 0000000..e36e7c5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/EditWiFiZoneGoogleMapFragment.kt @@ -0,0 +1,66 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import androidx.fragment.app.viewModels +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.Marker + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +class EditWiFiZoneGoogleMapFragment( + +) : BaseGoogleMapFragment() { + + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + private lateinit var mMapLoadOk: () -> Unit + private lateinit var mWiFiZoneBean: WiFiZoneBean + + companion object { + @JvmStatic + fun newInstance(context: Context, wiFiZoneBean: WiFiZoneBean, mapLoadOk: () -> Unit) = + EditWiFiZoneGoogleMapFragment().apply { + mContext = context + mMapLoadOk = mapLoadOk + mWiFiZoneBean = wiFiZoneBean + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { + + googleMap.setOnMarkerDragListener(object : GoogleMap.OnMarkerDragListener { + override fun onMarkerDrag(marker: Marker) { + + } + + override fun onMarkerDragEnd(marker: Marker) { + marker.position.let { + mGeoCoderViewModel.getLatLonAddress(it.latitude, it.longitude, false) + mWiFiZoneBean.latitude = it.latitude + mWiFiZoneBean.longitude = it.longitude + } + } + + override fun onMarkerDragStart(marker: Marker) { + + } + }) + + getLastLocation() + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + override fun liveDataObserve() { + mGeoCoderViewModel.mLatLonAddressLiveData.observe(viewLifecycleOwner) { + mWiFiZoneBean.address = it + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/FencesAddEditGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/FencesAddEditGoogleMapFragment.kt new file mode 100644 index 0000000..542f97e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/FencesAddEditGoogleMapFragment.kt @@ -0,0 +1,471 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import android.graphics.Point +import android.location.Location +import android.view.View +import androidx.core.view.isVisible +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.ui.common.map.FencesAddEditMapCommon +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.widget.FencesCircleView +import com.abbidot.tracker.widget.FencesPolygonView +import com.abbidot.tracker.widget.FencesRectView +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.LatLng +import kotlin.math.abs +import kotlin.math.pow + +/** + *Created by .yzq on 2024/4/23/023. + * @link + * @description: + */ +class FencesAddEditGoogleMapFragment : BaseGoogleMapFragment() { + + private lateinit var mFencesBean: FencesBean + private var isEditFences = false + private lateinit var mFencesCircleView: FencesCircleView + private lateinit var mFencesRectView: FencesRectView + private lateinit var mFencesPolygonView: FencesPolygonView + private var mOnActivityCallBack: FencesAddEditMapCommon.OnActivityCallBack? = null + + private lateinit var mMapLoadOk: () -> Unit + + //防止刚开始移动摄åƒå¤´æœ‰æ—¶ä¼šæ‰§è¡Œ2次 + private var isCanExecuteCameraCallBack = false + + //防止地图摄åƒå¤´ç§»åŠ¨åŠ¨ç”»è‡ªåŠ¨è®¾ç½®åœ°å›¾ç¼©æ”¾çº§åˆ«,会执行setOnCameraMoveListener() + private var isMapZoomReady = false + + companion object { + @JvmStatic + fun newInstance( + context: Context, + fencesBean: FencesBean, + fencesCircleView: FencesCircleView, + fencesRectView: FencesRectView, + fencesPolygonView: FencesPolygonView, + isEdit: Boolean, + onActivityCallBack: FencesAddEditMapCommon.OnActivityCallBack?, + mapLoadOk: () -> Unit + ) = FencesAddEditGoogleMapFragment().apply { + mContext = context + mFencesBean = fencesBean + isEditFences = isEdit + mFencesCircleView = fencesCircleView + mFencesRectView = fencesRectView + mFencesPolygonView = fencesPolygonView + mOnActivityCallBack = onActivityCallBack + mMapLoadOk = mapLoadOk + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { + //ç›‘å¬æ‘„åƒæœºç§»åŠ¨ä¸­å¿ƒç‚¹,æ‘„åƒæœºç§»åŠ¨ç»“æŸæ—¶çš„回调接å£ã€‚有时会执行2次 + mGoogleMap?.apply { + setOnCameraIdleListener { + if (isCanExecuteCameraCallBack) { + //çŽ°åœ¨å›´æ æŽ§ä»¶æ”¹æˆéšåœ°å›¾ç§»åŠ¨ï¼Œåªéœ€è¦æ‰§è¡Œä¸€æ¬¡ + isCanExecuteCameraCallBack = false + mapOkAndDistancePointLatLng() + } + } + + setOnCameraMoveListener { + mFencesBean.let { + resetFencesViewCentre( + LatLng( + it.latitudeCenter, it.longitudeCenter + ) + ) + } + + //监å¬åœ°å›¾æ”¾å¤§ç¼©å°æ“作 + if (isMapZoomReady && getGoogleMapZoom() != cameraPosition.zoom) { + setGoogleMapZoom(cameraPosition.zoom) + resetFencesViewSize() + } + } + + setOnMapLongClickListener { + resetFencesViewCentre(it) + mapOkAndDistancePointLatLng(0) + } + } + + getLastLocation() + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + override fun locationSuccess(location: Location?) { + if (isEditFences) { + mFencesBean.apply { + moveCameraUpdate(latitudeCenter, longitudeCenter) + } + + //å»¶æ—¶æ‰§è¡Œï¼Œé˜²æ­¢å›´æ æ²¡ç”»å¥½/地图摄åƒå¤´ç§»åЍ䏭 + mFencesCircleView.postDelayed({ + isMapZoomReady = true + restoreEditFences() + }, 1500) + + return + } + + isMapZoomReady = true + location?.apply { + mFencesBean.latitudeCenter = latitude + mFencesBean.longitudeCenter = longitude + isCanExecuteCameraCallBack = true + moveCameraLocation(LatLng(latitude, longitude), false) + } + } + + /** + * 釿–°è®¾ç½®å›´æ æŽ§ä»¶çš„中心点ä½ç½® + */ + fun resetFencesViewCentre(centreLatLng: LatLng) { + mGoogleMap?.projection?.toScreenLocation(centreLatLng)?.apply { + mFencesCircleView.setCentreXY(this) + mFencesRectView.setCentreXY(this) + mFencesPolygonView.setCentreXY(this) + } + } + + /** + * 釿–°è®¾ç½®å›´æ æŽ§ä»¶çš„å¤§å° + */ + private fun resetFencesViewSize() { + if (mFencesCircleView.isVisible) { + if (mFencesBean.radius <= 0.0) return + restoreCircleFences() + } else if (mFencesRectView.isVisible) { + restoreRectFences() + } else if (mFencesPolygonView.isVisible) { + restorePolygonFences() + } + } + + /** + * 地图准备好计算è·ç¦» + */ + fun mapOkAndDistancePointLatLng(delayMillis: Long = 1000) { + if (mFencesBean.startDrag) return + if (delayMillis == 0L) { + val arrayOfDistance = getLatLngAndCalDistance() + if (mFencesBean.startDrag) return + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } else { + //延时计算è·ç¦»ï¼Œé˜²æ­¢å›´æ æ²¡ç”»å¥½/地图摄åƒå¤´ç§»åЍ䏭 + mFencesCircleView.postDelayed({ + val arrayOfDistance = getLatLngAndCalDistance() + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + }, delayMillis) + } + } + + private fun getLatLngAndCalDistance(): Array { + // ç»çº¬åº¦è½¬æ¢ä¸ºæ‰‹æœºå标点 +// val x = mGoogleMap!!.projection.toScreenLocation(it).x + if (null == mGoogleMap) return arrayOf("0", "0") + + return when (mFencesBean.fenceShapeType) { + ConstantInt.CircleShapeType -> { + //æ‰‹æœºåæ ‡ç‚¹è½¬æ¢ä¸ºç»çº¬åº¦ + val centreLatLng = mFencesCircleView.getCircleCentrePoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + val startLatLng = mFencesCircleView.getCircleLineStartPoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + val endLatLng = mFencesCircleView.getCircleLineEndPoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + LogUtil.e("GoogleMap,setOnCameraIdleListener 监å¬å›žè°ƒ") + LogUtil.e("startLatLng=$centreLatLng,endLatLng=$endLatLng") + val distance = Util.measureLatLonDistance( + centreLatLng.latitude, + centreLatLng.longitude, + endLatLng.latitude, + endLatLng.longitude + ) + mFencesBean.apply { + latitudeCenter = centreLatLng.latitude + longitudeCenter = centreLatLng.longitude + ancillaryLatitude = endLatLng.latitude + ancillaryLongitude = endLatLng.longitude + ancillaryOtherLatitude = startLatLng.latitude + ancillaryOtherLongitude = startLatLng.longitude + } + arrayOf( + Utils.formatDecimal(distance, 2) + ) + } + + ConstantInt.RectangleShapeType -> { + val centreLatLng = mFencesRectView.getRectCentrePoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + val rectALatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_A).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val rectBLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_B).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val rectCLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_C).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val rectDLatLng = mFencesRectView.getRectABCDPoint(FencesPolygonView.POINT_D).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val rectWidthDistance = Util.measureLatLonDistance( + rectALatLng.latitude, + rectALatLng.longitude, + rectBLatLng.latitude, + rectBLatLng.longitude + ) + val rectHeightDistance = Util.measureLatLonDistance( + rectBLatLng.latitude, + rectBLatLng.longitude, + rectCLatLng.latitude, + rectCLatLng.longitude + ) + mFencesBean.apply { + latitudeCenter = centreLatLng.latitude + longitudeCenter = centreLatLng.longitude + latitudeA = rectALatLng.latitude + longitudeA = rectALatLng.longitude + latitudeB = rectBLatLng.latitude + longitudeB = rectBLatLng.longitude + latitudeC = rectCLatLng.latitude + longitudeC = rectCLatLng.longitude + latitudeD = rectDLatLng.latitude + longitudeD = rectDLatLng.longitude + } + //长度和高度 + arrayOf( + Utils.formatDecimal(rectWidthDistance, 2), + Utils.formatDecimal(rectHeightDistance, 2) + ) + } + + else -> { + val centreLatLng = mFencesPolygonView.getPolygonCentrePoint() + .let { mGoogleMap!!.projection.fromScreenLocation(it) } + val polygonALatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_A).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val polygonBLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_B).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val polygonCLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_C).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val polygonDLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_D).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val polygonELatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_E).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + val polygonFLatLng = + mFencesPolygonView.getPolygonABCDEFPoint(FencesPolygonView.POINT_F).let { + mGoogleMap!!.projection.fromScreenLocation(it) + } + mFencesBean.apply { + latitudeCenter = centreLatLng.latitude + longitudeCenter = centreLatLng.longitude + latitudeA = polygonALatLng.latitude + longitudeA = polygonALatLng.longitude + latitudeB = polygonBLatLng.latitude + longitudeB = polygonBLatLng.longitude + latitudeC = polygonCLatLng.latitude + longitudeC = polygonCLatLng.longitude + latitudeD = polygonDLatLng.latitude + longitudeD = polygonDLatLng.longitude + latitudeE = polygonELatLng.latitude + longitudeE = polygonELatLng.longitude + latitudeF = polygonFLatLng.latitude + longitudeF = polygonFLatLng.longitude + } + //多边形,ä¸éœ€è¦è®¡ç®—è·ç¦» + arrayOf("0") + } + } + } + + /** + * è¿˜åŽŸå›´æ  + */ + private fun restoreEditFences() { + var arrayOfDistance = arrayOf("0") + mFencesBean.apply { + when (mFencesBean.fenceShapeType) { + ConstantInt.CircleShapeType -> { + restoreCircleFences() + arrayOfDistance = arrayOf("$radius") + } + + ConstantInt.RectangleShapeType -> { + restoreRectFences() + arrayOfDistance = arrayOf("$longDistance", "$shortDistance") + } + + ConstantInt.PolygonShapeType -> { + restorePolygonFences() + arrayOfDistance = arrayOf("0") + } + } + + mOnActivityCallBack?.calculationDistance(arrayOfDistance) + } + isCanExecuteCameraCallBack = true + } + + /** + * è¿˜åŽŸåœ†å½¢å›´æ  + */ + private fun restoreCircleFences() { + if (null==mGoogleMap)return + mFencesBean.apply { + mFencesCircleView.let { + it.visibility = View.VISIBLE + val pointCentre = mGoogleMap!!.projection.toScreenLocation( + LatLng(latitudeCenter, longitudeCenter) + ) + val pointLineEnd = mGoogleMap!!.projection.toScreenLocation( + LatLng(ancillaryLatitude, ancillaryLongitude) + ) + val radius = abs(pointLineEnd.x - pointCentre.x).toFloat() + it.setCircleRadiusPx(radius) + + //圆形大å°å˜äº†,其他形状的围æ ä¹Ÿè¦æ”¹å˜å¤§å° + val rectA = Point( + (pointLineEnd.x - radius * 2).toInt(), (pointLineEnd.y - radius).toInt() + ) + val rectB = Point(pointLineEnd.x, (pointLineEnd.y - radius).toInt()) + val rectC = Point(pointLineEnd.x, (pointLineEnd.y + radius).toInt()) + val rectD = + Point((pointLineEnd.x - radius * 2).toInt(), (pointLineEnd.y + radius).toInt()) + mFencesRectView.setRectABCDXYPoint(pointCentre, rectA, rectB, rectC, rectD) + val polygonA = Point(pointCentre.x, (pointCentre.y - radius).toInt()) + val polygonB = Point(pointLineEnd.x, (pointLineEnd.y - radius / 2).toInt()) + val polygonC = Point(pointLineEnd.x, (pointLineEnd.y + radius / 2).toInt()) + val polygonD = Point(pointCentre.x, (pointCentre.y + radius).toInt()) + val polygonE = Point( + (pointLineEnd.x - 2 * radius).toInt(), (pointLineEnd.y + radius / 2).toInt() + ) + val polygonF = Point( + (pointLineEnd.x - 2 * radius).toInt(), (pointLineEnd.y - radius / 2).toInt() + ) + mFencesPolygonView.setPolygonABCDEFPoint( + pointCentre, polygonA, polygonB, polygonC, polygonD, polygonE, polygonF + ) + } + } + } + + /** + * 还原矩形围æ å¤§å° + */ + private fun restoreRectFences() { + if (null==mGoogleMap)return + mFencesBean.apply { + mFencesRectView.let { + it.visibility = View.VISIBLE + val pointCentre = mGoogleMap!!.projection.toScreenLocation( + LatLng(latitudeCenter, longitudeCenter) + ) + val pointA = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeA, longitudeA)) + val pointB = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeB, longitudeB)) + val pointC = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeC, longitudeC)) + val pointD = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeD, longitudeD)) + it.setRectABCDXYPoint(pointCentre, pointA, pointB, pointC, pointD) + + //矩形大å°å˜äº†,其他形状的围æ ä¹Ÿè¦æ”¹å˜å¤§å° + val radius = abs(pointA.x - pointCentre.x).toFloat() + mFencesCircleView.setCircleRadiusPx(radius) + val minX = minOf(pointA.x, pointB.x, pointC.x, pointD.x) + val maxX = maxOf(pointA.x, pointB.x, pointC.x, pointD.x) + val minY = minOf(pointA.y, pointB.y, pointC.y, pointD.y) + val maxY = maxOf(pointA.y, pointB.y, pointC.y, pointD.y) + val difX = maxX - minX + val difY = maxY - minY + val polygonA = Point(minX + difX / 2, minY) + val polygonB = Point(maxX, minY + difY / 4) + val polygonC = Point(maxX, maxY - difY / 4) + val polygonD = Point(minX + difX / 2, maxY) + val polygonE = Point(minX, maxY - difY / 4) + val polygonF = Point(minX, minY + difY / 4) + mFencesPolygonView.setPolygonABCDEFPoint( + pointCentre, polygonA, polygonB, polygonC, polygonD, polygonE, polygonF + ) + } + } + } + + /** + * 还原多边形围æ å¤§å° + */ + private fun restorePolygonFences() { + if (null==mGoogleMap)return + mFencesBean.apply { + mFencesPolygonView.let { + it.visibility = View.VISIBLE + val pointCentre = mGoogleMap!!.projection.toScreenLocation( + LatLng(latitudeCenter, longitudeCenter) + ) + val pointA = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeA, longitudeA)) + val pointB = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeB, longitudeB)) + val pointC = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeC, longitudeC)) + val pointD = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeD, longitudeD)) + val pointE = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeE, longitudeE)) + val pointF = mGoogleMap!!.projection.toScreenLocation(LatLng(latitudeF, longitudeF)) + it.setPolygonABCDEFPoint( + pointCentre, pointA, pointB, pointC, pointD, pointE, pointF + ) + + val maxX = maxOf(pointA.x, pointB.x, pointC.x, pointD.x, pointE.x, pointF.x) + //多边形大å°å˜äº†,其他形状的围æ ä¹Ÿè¦æ”¹å˜å¤§å° + val radius = abs(maxX - pointCentre.x).toFloat() + mFencesCircleView.setCircleRadiusPx(radius) + val minX = minOf(pointA.x, pointB.x, pointC.x, pointD.x, pointE.x, pointF.x) + val minY = minOf(pointA.y, pointB.y, pointC.y, pointD.y, pointE.y, pointF.y) + val maxY = maxOf(pointA.y, pointB.y, pointC.y, pointD.y, pointE.y, pointF.y) + val rectA = Point(minX, minY) + val rectB = Point(maxX, minY) + val rectC = Point(maxX, maxY) + val rectD = Point(minX, maxY) + mFencesRectView.setRectABCDXYPoint(pointCentre, rectA, rectB, rectC, rectD) + } + } + } + + /** + * æ ¹æ®åœ°å›¾æ˜¾ç¤ºçº§åˆ«,计算比例尺的一åƒç´ å¯¹åº”几米 + */ + private fun getCircleRadiusPx(distanceRadius: Double): Double { + val zoom = getDistanceZoom(distanceRadius) + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(15.5 - zoom) + //计算现在åŠå¾„有多少åƒç´  + return distanceRadius / pxDis + } + + /** + * æ ¹æ®åœ°å›¾æ˜¾ç¤ºçº§åˆ«,计算比例尺的一åƒç´ å¯¹åº”几米 + */ + private fun zoomToCircleRadiusPx(distanceRadius: Double): Double { + val zoom = getGoogleMapZoom() + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(15.5 - zoom) + //计算现在åŠå¾„有多少åƒç´  + return distanceRadius / pxDis + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/GoogleBitmapHelper.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/GoogleBitmapHelper.kt new file mode 100644 index 0000000..c9aa6d5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/GoogleBitmapHelper.kt @@ -0,0 +1,164 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import android.graphics.* +import android.text.TextUtils +import android.util.Log +import androidx.annotation.ColorInt +import androidx.annotation.DrawableRes +import androidx.core.content.ContextCompat +import androidx.core.content.res.ResourcesCompat +import androidx.core.graphics.drawable.DrawableCompat +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.util.ImageUtil +import com.google.android.gms.maps.model.BitmapDescriptor +import com.google.android.gms.maps.model.BitmapDescriptorFactory +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:谷歌地图BitmapHelper + */ +object GoogleBitmapHelper { + + /** + * 自定义定ä½å›¾æ ‡,宠物头åƒï¼Œè‡ªå®šä¹‰ä½å›¾ + * + * @param id 本地底部背景圆形图片 + * @param headUrl 网络宠物的头åƒurl + */ + suspend fun headToBitmap( + context: Context, @DrawableRes id: Int, headUrl: String, petType: Int + ): Bitmap? { + var headUrlBitmap = if (TextUtils.isEmpty(headUrl)) { + var headResId = R.drawable.icon_dog_default_head_svg + if (petType == ConstantInt.CatPetType) headResId = R.drawable.icon_cat_default_head_svg + ImageUtil.getBitmapFromDrawableAndSvg(context, headResId) + } else { + ImageUtil.getImageBitmapByUrl(context, headUrl) + } + if (null == headUrlBitmap) headUrlBitmap = BitmapFactory.decodeResource( + context.resources, R.drawable.pic_avatar_df + ) + return combineBitmap(ImageUtil.getBitmapFromDrawableAndSvg(context, id), headUrlBitmap!!) +// return combineBitmap(BitmapFactory.decodeResource(context.resources, id), headUrlBitmap) + } + + /** + * 先等比压缩,然åŽåˆå¹¶ä¸¤å¼ bitmap为一张 + * + * @param background + * @param foreground + * @return Bitmap + */ + private fun combineBitmap(background: Bitmap?, foreground: Bitmap): Bitmap? { + if (null == background) { + return null + } + val bgWidth = background.width + val bgHeight = background.height + var foregroundBitmap = ImageUtil.zoomImg(foreground, bgWidth, bgWidth) + foregroundBitmap = toRoundBitmap(foregroundBitmap, bgWidth, bgHeight) +// val fgWidth = foregroundBitmap.width +// val fgHeight = foregroundBitmap.height +// val newmap = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888) +// val canvas = Canvas(newmap) +// canvas.drawBitmap(background, 0f, 0f, null) +// canvas.drawBitmap(foregroundBitmap, (bgWidth - fgWidth) / 2f, (bgHeight - fgHeight) / 2f, +// null) +// canvas.save() +// canvas.restore() + return ImageUtil.combineBitmap(background, foregroundBitmap) + } + + /** + * 转æ¢ä¸ºåœ†å½¢bitmap + * + * @param bitmap + * @param bgWidth 底下圆形的宽 + * @param bgHeight 底下圆形的高 + * @return + */ + private fun toRoundBitmap(bitmap: Bitmap, bgWidth: Int, bgHeight: Int): Bitmap { + //算出底下圆形直径 +// val dia = (bgHeight - (bgHeight - bgWidth)).toFloat() + val dia = bgWidth.toFloat() + //底下圆形åŠå¾„ + val radius = dia / 2f + + //å‰é¢åŒä¸Šï¼Œç»˜åˆ¶å›¾åƒåˆ†åˆ«éœ€èˆ†bitmap,canvas , paint对象 +// val bp = Bitmap.createScaledBitmap(bitmap, bgWidth, bgHeight, true) + val bp = Bitmap.createScaledBitmap(bitmap, bgWidth, bgWidth, true) + val bm = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bm) + val paint = Paint(Paint.ANTI_ALIAS_FLAG) + //这里斋è¦å…ˆç”»å‡ºä¸€ä¸ªåœˆ + canvas.drawCircle(radius, radius, radius - (bgHeight - bgWidth) / 6f, paint) + //圆画好之åŽå°†ç”»ç¬”é‡ç½®ä¸€ä¸‹ + paint.reset() + //设置图åƒåˆæˆæ¨¡å¼ï¼Œè¯¥æ¨¡å¼ä¸ºåªåœ¨æºå›¾åƒå’Œç›®æ ‡å›¾ç›¸äº¤çš„地方绘制æºå›¾ + paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) + canvas.drawBitmap(bp, 0f, 0f, paint) + return bm + } + + + /** + * 在图片上写文字 + */ + fun imageUpNumberBitmap( + context: Context, + @DrawableRes id: Int, + text: String = "", + typeface: Typeface = Typeface.DEFAULT + ): Bitmap { + val bgBitmap = BitmapFactory.decodeResource(context.resources, id) + val newmap = Bitmap.createBitmap(bgBitmap.width, bgBitmap.height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(newmap) + canvas.drawBitmap(bgBitmap, 0f, 0f, null) + val paint = Paint() + paint.color = ContextCompat.getColor(context, R.color.txt_black_color) + paint.textSize = QMUIDisplayHelper.sp2px(context, 16).toFloat() + if (!TextUtils.isEmpty(text)) paint.typeface = typeface + //文字宽度 + val textWidth = paint.measureText(text) + val fontMetrics = paint.fontMetrics + //文字高度 + val textHeight = fontMetrics.bottom - fontMetrics.top + + val x = bgBitmap.width / 2f - textWidth / 2 + val y = bgBitmap.width.toFloat() - textHeight / 2 - (bgBitmap.height - bgBitmap.width) / 2 + canvas.drawText(text, x, y, paint) + canvas.save() + canvas.restore() + return newmap + } + + /** + * è°·æ­Œdemo自定义MarkerOptions,自定义ä½å›¾ + * https://developers.google.cn/codelabs/maps-platform/maps-platform-101-android#5 + * + * Demonstrates converting a [Drawable] to a [BitmapDescriptor], + * for use as a marker icon. Taken from ApiDemos on GitHub: + * https://github.com/googlemaps/android-samples/blob/main/ApiDemos/kotlin/app/src/main/java/com/example/kotlindemos/MarkerDemoActivity.kt + */ + fun vectorToBitmap( + context: Context, @DrawableRes id: Int, @ColorInt color: Int + ): BitmapDescriptor { + val vectorDrawable = ResourcesCompat.getDrawable(context.resources, id, null) + if (vectorDrawable == null) { + Log.e("BitmapHelper", "Resource not found") + return BitmapDescriptorFactory.defaultMarker() + } + val bitmap = Bitmap.createBitmap( + vectorDrawable.intrinsicWidth, vectorDrawable.intrinsicHeight, Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + vectorDrawable.setBounds(0, 0, canvas.width, canvas.height) + DrawableCompat.setTint(vectorDrawable, color) + vectorDrawable.draw(canvas) + return BitmapDescriptorFactory.fromBitmap(bitmap) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt new file mode 100644 index 0000000..1be3214 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HistoryDataGoogleMapFragment.kt @@ -0,0 +1,304 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.Manifest +import android.content.Context +import android.content.pm.PackageManager +import android.graphics.BitmapFactory +import android.graphics.Typeface +import androidx.core.app.ActivityCompat +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.MapMarkerInfoView +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.BitmapDescriptor +import com.google.android.gms.maps.model.BitmapDescriptorFactory +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.MarkerOptions + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:历å²è®°å½•map谷歌地图 + */ +class HistoryDataGoogleMapFragment : BaseGoogleMapFragment() { + + // private val mScreenshotsViewModel: ScreenshotsViewModel by viewModels() + private lateinit var mGeoCoderViewModel: GeoCoderViewModel + private lateinit var mMarkerInfoView: MapMarkerInfoView + + private val mMarkerOptions = MarkerOptions() + private lateinit var mPetIconDescriptor: BitmapDescriptor + + private val mLatLngList = mutableListOf() + + //字体 + private var mTypeface = Typeface.DEFAULT + + //是å¦åœ°å›¾æˆªå± + private var isMapSnapshot = true + private lateinit var mMapLoadOk: () -> Unit + + private var mPetBean: PetBean? = null + private var mCurLatLng: LatLng? = null + + companion object { + @JvmStatic + fun newInstance( + context: Context, + markerInfoView: MapMarkerInfoView, + geoCoderViewModel: GeoCoderViewModel, + mapLoadOk: () -> Unit + ) = HistoryDataGoogleMapFragment().apply { + mContext = context + mGeoCoderViewModel = geoCoderViewModel + mMarkerInfoView = markerInfoView + mMapLoadOk = mapLoadOk + } + } + + override fun initData() { + super.initData() + mTypeface = + ViewUtil.instance.setTypeface(mContext!!, getString(R.string.number_din_cond_font)) + } + + override fun onMapLoadOk(googleMap: GoogleMap) { +// val mutableList = mLatLngList +// mutableList.add(LatLng(22.5654646, 113.9514812)) +// mutableList.add(LatLng(22.5666646, 113.9524812)) +// mutableList.add(LatLng(22.5676646, 113.9525812)) +// mutableList.add(LatLng(22.5687646, 113.9525912)) +// mutableList.add(LatLng(22.5698646, 113.9522912)) +// mutableList.add(LatLng(22.5659646, 113.9530112)) +// mutableList.add(LatLng(22.5660646, 113.9545112)) +// mutableList.add(LatLng(22.5670646, 113.9555112)) +// mutableList.add(LatLng(22.5680646, 113.9565112)) +// mutableList.add(LatLng(22.5690646, 113.9575112)) +// mutableList.add(LatLng(22.5690646, 113.9585112)) +// mutableList.add(LatLng(22.5690646, 113.9596112)) +// mutableList.add(LatLng(22.5700646, 113.9626112)) +// mutableList.add(LatLng(22.5720646, 113.9656112)) +// mutableList.add(LatLng(22.5760646, 113.9666112)) + + //点击地图任æ„åœ°æ–¹éƒ½ä¸æ¶ˆå¤±è‡ªå®šä¹‰å¤´éƒ¨åœ°ç‚¹å¸ƒå±€ + googleMap.apply { + setOnCameraMoveListener { + mCurLatLng?.let { + setMarkerInfoViewOffset(mMarkerInfoView, it) + } + } + + //检测æƒé™ï¼Œå¼€å¯ç”¨æˆ·çš„当å‰ä½ç½®https://developers.google.cn/maps/documentation/android-sdk/location?hl=zh-cn + if (ActivityCompat.checkSelfPermission( + mContext!!, Manifest.permission.ACCESS_FINE_LOCATION + ) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( + mContext!!, Manifest.permission.ACCESS_COARSE_LOCATION + ) == PackageManager.PERMISSION_GRANTED + ) { + //å¯ç”¨â€œæˆ‘çš„ä½ç½®â€å›¾å±‚。 + isMyLocationEnabled = false + } + } + + getLastLocation() + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + suspend fun setPetBean(petBean: PetBean) { + if (petBean == mPetBean) { + return + } + mPetBean = petBean +// lifecycleScope.launch { +// +// } + mPetBean?.apply { + var bitmap = GoogleBitmapHelper.headToBitmap( + mContext!!, R.drawable.pic_map_gps_avatar, imgurl, petType + ) + if (null == bitmap) bitmap = BitmapFactory.decodeResource( + mContext!!.resources, R.drawable.icon_location_svg + ) + mPetIconDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap!!) + } + mMarker?.setIcon(mPetIconDescriptor) + } + + /** + * 设置ç»çº¬åº¦æ•°æ® + */ + fun setLatLngData(data: MutableList) { + mGoogleMap?.clear() + + if (data.size == 0) return + + var maxLat = data[0].latitude + var maxLon = data[0].longitude + var minLat = data[0].latitude + var minLon = data[0].longitude + + data.forEach { historyDataBean -> + historyDataBean.apply { + if (maxLat < latitude) maxLat = latitude + if (maxLon < longitude) maxLon = longitude + if (minLat > latitude) minLat = latitude + if (minLon > longitude) minLon = longitude + val latLng = LatLng(latitude, longitude) + mLatLngList.add(latLng) + } + } + + //æ ¹æ®ç»çº¬åº¦æ¥è®¾ç½®ç¼©æ”¾çº§åˆ« + setLatLngZoom( + mContext!!, AppUtils.dpToPx(50), LatLng(minLat, minLon), LatLng(maxLat, maxLon) + ) + + val type = MMKVUtil.getInt(MMKVKey.LineSelectPosition, ConstantInt.Line) + if (type == ConstantInt.Line) { + addSetLine() + } else { + addSetNumber() + } + + val maxIndex = data.size - 1 + mGeoCoderViewModel.getLatLonAddress( + mLatLngList[maxIndex].latitude, mLatLngList[maxIndex].longitude, false + ) + + mCurLatLng = mLatLngList[maxIndex] + setMarkerInfoViewOffset(mMarkerInfoView, mLatLngList[maxIndex]) + } + + /** + * æ»‘åŠ¨æ”¹å˜ + */ + fun slideChanged(progress: Int) { + setPetMarkerLatLng(mLatLngList[progress]) + } + + /** + * åœæ­¢æ»‘动 + */ + fun slideStopChanged(progress: Int) { + if (mLatLngList.size > 0) { + moveCameraLocation( + mLatLngList[progress].latitude, mLatLngList[progress].longitude, false + ) + mGeoCoderViewModel.getLatLonAddress( + mLatLngList[progress].latitude, mLatLngList[progress].longitude, false + ) + + mCurLatLng = mLatLngList[progress] + setMarkerInfoViewOffset(mMarkerInfoView, mLatLngList[progress]) + } + } + + override fun clearAllMarker() { + super.clearAllMarker() + mLatLngList.clear() + } + + /** + * 画线 + */ + fun addSetLine() { + val size = mLatLngList.size + LogUtil.e("画线点有 $size 个") + if (size == 0) return + mGoogleMap?.let { + it.clear() + + moveCameraUpdate(mLatLngList[size - 1]) + + addSinglePolyline(it, mLatLngList) + +// refreshPetCurrentLocation( +// mLatLngList[size - 1], needMoveCamera = false, isAnimMoveCamera = false +// ) + + setPetMarkerLatLng(mLatLngList[size - 1]) + } + } + + /** + * 设置显示数字 + */ + fun addSetNumber() { + val size = mLatLngList.size + LogUtil.e("轨迹谷歌地图设置显示数字$size,ç»çº¬åº¦ç‚¹") + if (size == 0) return + mGoogleMap?.let { + it.clear() + + moveCameraUpdate(mLatLngList[size - 1]) + +// refreshPetCurrentLocation( +// mLatLngList[size - 1], needMoveCamera = false, isAnimMoveCamera = false +// ) + + for (i in 0 until mLatLngList.size) { + val numberMarker = MarkerOptions().position(mLatLngList[i]).icon( + BitmapDescriptorFactory.fromBitmap( + GoogleBitmapHelper.imageUpNumberBitmap( + mContext!!, + R.drawable.pic_history_location, + (i + 1).toString(), + mTypeface + ) + ) + ) + it.addMarker(numberMarker) + } + + setPetMarkerLatLng(mLatLngList[size - 1]) + } + } + + /** + * 设置宠物Markerç»çº¬åº¦ + */ + fun setPetMarkerLatLng(latLng: LatLng) { + if (::mPetIconDescriptor.isInitialized) { + mGoogleMap?.apply { + mMarkerOptions.position(latLng).icon(mPetIconDescriptor) + mMarker?.remove() + mMarker = addMarker(mMarkerOptions) + //显示最上é¢ï¼Œå±‚级最高 + mMarker?.zIndex = 1f + } + } + } + + private fun moveCamera(latLng: LatLng) { +// moveAnimateCameraLocation(latLng, object : GoogleMap.CancelableCallback { +// override fun onCancel() { +// LogUtil.e("moveCamera onCancel") +// } +// +// override fun onFinish() { +// LogUtil.e("moveCamera onFinish") +// if (isMapSnapshot) { +// isMapSnapshot = false +// mHistoryDataActivity.mTopBar?.postDelayed({ +// if (mHistoryDataActivity.isFrontRunning) { +// mScreenshotsViewModel.getHistoryDataGoogleMapSnapshotImage( +// mContext!!, mGoogleMap!!, mHistoryDataActivity.mPet.deviceId +// ) +// } +// }, 1200) +// } +// } +// }) + moveAnimateCameraLocation(latLng, null) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragment.kt new file mode 100644 index 0000000..272f8f9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragment.kt @@ -0,0 +1,308 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.animation.ValueAnimator +import android.content.Context +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.core.content.ContextCompat +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.abbidot.tracker.widget.MapDeviceNetView +import com.abbidot.tracker.widget.MapMarkerInfoView +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.Circle +import com.google.android.gms.maps.model.CircleOptions +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.Polyline +import com.google.android.gms.maps.model.PolylineOptions +import kotlin.math.pow + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:首页map谷歌地图 + */ +class HomeMapGoogleMapFragment : BaseGoogleMapFragment() { + + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + private lateinit var mMarkerInfoView: MapMarkerInfoView + private lateinit var mMapDeviceNetView: MapDeviceNetView + + //宠物当å‰å地ç†ä½ç½®ä¿¡æ¯ + var mDecPetAddressData: HistoryDataBean? = null + private var mMapDeviceBean: MapDeviceBean? = null + private lateinit var mMapLoadOk: () -> Unit + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isMoveCamera = true + private var mPolyline: Polyline? = null + private var mRippleCircle: Circle? = null + private var mValueAnimator: ValueAnimator? = null + + // private var mAnimatorDuration=2000L + private var mRippleCirclePercent = 0.0 + private var mRippleCircleRadius = 200 + + companion object { + @JvmStatic + fun newInstance( + context: Context, + markerInfoView: MapMarkerInfoView, + mapDeviceNetView: MapDeviceNetView, + mapLoadOk: () -> Unit + ) = HomeMapGoogleMapFragment().apply { + mContext = context + mMarkerInfoView = markerInfoView + mMapDeviceNetView = mapDeviceNetView + mMapLoadOk = mapLoadOk + } + } + + fun setMapDeviceBean(mapDeviceBean: MapDeviceBean?) { + mMapDeviceBean = mapDeviceBean + } + + override fun liveDataObserve() { + //å地ç†ç¼–ç æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(viewLifecycleOwner) { + //ä¿å­˜åœ°ç†ä¿¡æ¯,方便传å‚ç»™å¯¼èˆªé¡µé¢ + if (null == mDecPetAddressData) mDecPetAddressData = HistoryDataBean() + + mMapDeviceBean?.apply { +// val timeString = String.format( +// getString(R.string.map_current_update_time), +// DateUtils.getRelativeTimeSpanString( +// updateTime * 1000 +// ) +// ) + val timeString = + Utils.formatTime(latLonUpdateTime * 1000, Utils.DATE_FORMAT_PATTERN_EN6) + mDecPetAddressData?.let { history -> + //æ›´æ–°ä½ç½®æ—¶é—´ + history.dayTime = timeString + //详细ä½ç½® + history.address = it + //传递ä½ç½®ä¿¡æ¯ç»™InfoWindowAdapterçª—å£ +// mMarker?.tag = history + +// showMarkerInfoWindow(history) + mMarkerInfoView.visibility = View.VISIBLE + mMarkerInfoView.setShowText(timeString, it) + } + } + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { +// initFenceList() + //设置自定义头部地点布局 + mGoogleMap?.apply { + setOnCameraMoveListener { + setMarkerInfoViewOffset() + } + getLastLocation() + } + + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + + override fun onRefreshPetCurrentLocationOk(googleMap: GoogleMap) { + if (null == mMarker) return + else startReverseGeocode() + } + + /** + * 刚开始的å编译地ç†ä½ç½® + */ + private fun startReverseGeocode() { + mMapDeviceBean?.apply { + mGeoCoderViewModel.getLatLonAddress(latitude, longitude, false) + setMarkerInfoViewOffset() + +// val time = System.currentTimeMillis() - mReverseGeocodeTime +// //判断有没有超过设置的刷新时间 +// if (time > mMapFragment.mMapDeviceBean!!.gnssInterval * 60 * 1000) { +// mGeoCoderViewModel.getLatLonAddress(mMapFragment.mMapDeviceBean!!.latitude, +// mMapFragment.mMapDeviceBean!!.longitude) +// } else { +// //传递ä½ç½®ä¿¡æ¯ç»™InfoWindowAdapterçª—å£ +// mMarker?.tag = mMapFragment.mHistoryDataBean +// showMarkerInfoWindow() +// } +// } + } + } + + fun setMarkerInfoViewOffset() { + mPetLatLng?.apply { + setMarkerInfoViewOffset(mMarkerInfoView, LatLng(latitude, longitude)) + setMapNetTypeViewOffset(mMapDeviceNetView, LatLng(latitude, longitude)) + } + } + + /** + * 点击大头针开始更新å地ç†ç¼–ç  + */ + private fun reverseGeocode() { +// val time = System.currentTimeMillis() - mReverseGeocodeTime + //判断有没有超过设置的刷新时间 +// if (time > mMapFragment.mMapDeviceBean!!.gnssInterval * 60 * 1000) { +// mGeoCoderViewModel.getLatLonAddress(mMapFragment.mMapDeviceBean!!.latitude, +// mMapFragment.mMapDeviceBean!!.longitude) +// } + } + + /** + * 计算用户和宠物的è·ç¦» + */ + fun getUserAndPetDistance(): Double { + var distance = 0.0 + mUserLatLng?.apply { + mPetLatLng?.let { + distance = + Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) + } + } + return distance + } + + /** + * 画用户和宠物之间的虚线 + */ + private fun addUserAndPetLine(petLatLng: LatLng) { + mUserLatLng?.apply { + mGoogleMap?.let { + if (null == mPolyline) { + val polylineOptions = + PolylineOptions().clickable(false).width(AppUtils.dpToPx(1.5f)) + .color(ContextCompat.getColor(mContext!!, R.color.blue_color9)) + .geodesic(false) + mPolyline = it.addPolyline(polylineOptions) + mPolyline?.pattern = getDashedPatternStyle(18f) + } + mPolyline?.let { pLine -> + val latList = mutableListOf() + latList.add(petLatLng) + latList.add(this) + pLine.points = latList + } + } + } + } + + /** + * åˆå§‹åŒ–并添加水波纹圆 + */ + private fun addRippleCircle() { + mPetLatLng?.apply { + mGoogleMap?.let { + if (null == mRippleCircle) { + mRippleCircle = it.addCircle( + CircleOptions().center(this) + .radius(mRippleCircleRadius * mRippleCirclePercent) + .strokeWidth(AppUtils.dpToPx(2).toFloat()) + .fillColor(ContextCompat.getColor(mContext!!, R.color.black10)) + .strokeColor(ContextCompat.getColor(mContext!!, R.color.black10)) + ) + + setRippleCircleAnim() + } + } + } + } + + /** + * 设置水波纹动画 + */ + private fun setRippleCircleAnim() { + if (null == mValueAnimator) { + mValueAnimator = ViewUtil.instance.setValueAnimator( + 0.0, 100.0, 1500, LinearInterpolator() + ) { + mRippleCirclePercent = it.animatedValue as Float / 100.0 + mRippleCircle?.apply { + mPetLatLng?.let { petLatLng -> + center = petLatLng + radius = mRippleCircleRadius * mRippleCirclePercent + } + } + }?.apply { + repeatMode = ValueAnimator.RESTART + repeatCount = ValueAnimator.INFINITE + } + } + } + + /** + * 画线 + */ + fun addLine(latLng: LatLng) { +// addPolyline(mGoogleMap!!, latLng) +// addUserAndPetLine(latLng) + refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera) + + mRippleCircle?.apply { + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(15.5 - getGoogleMapZoom()) + mRippleCircleRadius = (pxDis * 150).toInt() + fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5)) + strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5)) + mValueAnimator?.duration = 2000 + } + } + + /** + * 画多æ¡çº¿ + */ + fun addLines(trackList: MutableList) { + val latLngList = mutableListOf() + for (i in 0 until trackList.size) { + trackList[i].apply { + val latLng = LatLng(latitude, longitude) + latLngList.add(latLng) + if (i == trackList.size - 1) { +// addUserAndPetLine(latLng) + refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera) + } + } + } +// addPolyLines(mGoogleMap!!, latLngList) + + mRippleCircle?.apply { + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(15.5 - getGoogleMapZoom()) + mRippleCircleRadius = (pxDis * 150).toInt() + fillColor = (ContextCompat.getColor(mContext!!, R.color.select_color5)) + strokeColor = (ContextCompat.getColor(mContext!!, R.color.select_color5)) + mValueAnimator?.duration = 2000 + } + } + + /** + * 开始水波纹动画 + */ + fun startRippleCircleAnim() { + mPetLatLng?.apply { + //一åƒç´ å¯¹åº”几米 + val pxDis = 2.0.pow(15.5 - getGoogleMapZoom()) + mRippleCircleRadius = (pxDis * 150).toInt() +// addUserAndPetLine(this) + addRippleCircle() + } + } + + override fun onDetach() { + super.onDetach() + mValueAnimator?.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MapLiveGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MapLiveGoogleMapFragment.kt new file mode 100644 index 0000000..a52b84d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MapLiveGoogleMapFragment.kt @@ -0,0 +1,63 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.annotation.SuppressLint +import android.content.Context +import com.abbidot.tracker.deprecated.ui.activity.map.MapLiveActivity +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.LatLng + +/** + *Created by .yzq on 2022/1/13/013. + * @link + * @description:实时跟踪map谷歌地图 + */ +class MapLiveGoogleMapFragment : BaseGoogleMapFragment() { + + private lateinit var mMapLiveActivity: MapLiveActivity + + //å¯åŠ¨åŠ¨ç”»ç§»åŠ¨åœ°å›¾æ‘„åƒæœº + private var isMoveCamera = true + private var mPetCurrentLatLng: LatLng? = null + + companion object { + @JvmStatic + fun newInstance(context: Context) = MapLiveGoogleMapFragment().apply { + mContext = context + } + } + + override fun initData() { + mMapLiveActivity = mActivity as MapLiveActivity + super.initData() + setGoogleMapZoom(14f) + } + + @SuppressLint("MissingPermission") + override fun onMapLoadOk(googleMap: GoogleMap) { + +// initFenceList() + + //先开始获å–å›´æ æ•°æ® + mMapLiveActivity.mFencesManageViewModel.getFenceList(mMapLiveActivity, + mMapLiveActivity.mPet.deviceId) + } + + /** + * 刷新当å‰å® ç‰©ä½ç½® + */ + fun refreshPetCurrentLocation() { + mPetCurrentLatLng?.let { + refreshPetCurrentLocation(it) + } + } + + /** + * 画线 + */ + fun addLine(latLng: LatLng) { + mPetCurrentLatLng = latLng + addPolyline(mGoogleMap!!, latLng) + refreshPetCurrentLocation(latLng, needMoveCamera = isMoveCamera) + isMoveCamera = false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MarkerInfoWindowAdapter.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MarkerInfoWindowAdapter.kt new file mode 100644 index 0000000..8707878 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/MarkerInfoWindowAdapter.kt @@ -0,0 +1,71 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.widget.TypefaceTextView +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.Marker +import com.mapbox.core.utils.TextUtils + +/** + *Created by .yzq on 2022/1/14/014. + * @link + * @description:自定义点击头åƒé¡¶éƒ¨å‡ºçŽ°å¸ƒå±€ https://developers.google.cn/maps/documentation/android-sdk/infowindows + * + * 该接å£åŒ…å«ä¸¤ä¸ªä¾›æ‚¨å®žçŽ°çš„æ–¹æ³•ï¼šgetInfoWindow(Marker) å’Œ getInfoContents(Marker)。 + * API 将首先调用 getInfoWindow(Marker),如果系统返回 null,则会接ç€è°ƒç”¨ getInfoContents(Marker)。 + * 如果ä»è¿”回 null,则系统会使用默认信æ¯çª—å£ã€‚ + */ +class MarkerInfoWindowAdapter(context: Context) : GoogleMap.InfoWindowAdapter { + + private val mContext = context + + override fun getInfoContents(marker: Marker): View? { + val view = LayoutInflater.from(mContext).inflate(R.layout.marker_info_contents, null) + + // 1. Get tag +// val place = marker.tag as? Place ?: return null +// view.findViewById(R.id.text_view_title).text = place.name +// view.findViewById(R.id.text_view_address).text = place.address +// view.findViewById(R.id.text_view_rating).text = +// "Rating: %.2f".format(place.rating) + + LogUtil.d("MarkerInfoWindowAdapter------------>getInfoContents") + initData(view, marker) + + return view + } + + override fun getInfoWindow(marker: Marker): View? { + val view = LayoutInflater.from(mContext).inflate(R.layout.marker_info_contents, null) + LogUtil.d("MarkerInfoWindowAdapter------------>getInfoWindow") + initData(view, marker) + return view + } + + /** + * åˆå§‹åŒ– + */ + private fun initData(view: View, marker: Marker) { + val locationTextView = view.findViewById(R.id.map_pet_current_location) + val locationUpdateTextView = + view.findViewById(R.id.map_pet_location_update_time) + + val tag = marker.tag as HistoryDataBean? + + LogUtil.d("$tag-----------") + if (null == tag) return + + if (TextUtils.isEmpty(tag.dayTime)) { + locationUpdateTextView.visibility = View.GONE + } else { + locationUpdateTextView.visibility = View.VISIBLE + locationUpdateTextView.text = tag.dayTime + } + locationTextView.text = tag.address + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/PreviewFencesGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/PreviewFencesGoogleMapFragment.kt new file mode 100644 index 0000000..75dd1a4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/PreviewFencesGoogleMapFragment.kt @@ -0,0 +1,33 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import android.location.Location +import com.google.android.gms.maps.GoogleMap + +/** + *Created by .yzq on 2024/4/23/023. + * @link + * @description: + */ +class PreviewFencesGoogleMapFragment : BaseGoogleMapFragment() { + + private lateinit var mMapLoadOk: () -> Unit + + companion object { + @JvmStatic + fun newInstance(context: Context, mapLoadOk: () -> Unit) = + PreviewFencesGoogleMapFragment().apply { + mContext = context + mMapLoadOk = mapLoadOk + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { + getLastLocation() + //å˜é‡æ˜¯å¦åˆå§‹åŒ– + if (::mMapLoadOk.isInitialized) mMapLoadOk() + } + + override fun locationSuccess(location: Location?) { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/WiFiZone2GoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/WiFiZone2GoogleMapFragment.kt new file mode 100644 index 0000000..a734eaa --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/WiFiZone2GoogleMapFragment.kt @@ -0,0 +1,101 @@ +package com.abbidot.tracker.ui.fragment.map.googlemap + +import android.content.Context +import android.location.Location +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.vm.GeoCoderViewModel +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.Marker + +/** + *Created by .yzq on 2024/6/4/004. + * @link + * @description: + */ +class WiFiZone2GoogleMapFragment : BaseGoogleMapFragment() { + + private val mGeoCoderViewModel: GeoCoderViewModel by viewModels() + + //wifi zone当å‰ä½ç½®ä¿¡æ¯ //ä¿å­˜åœ°ç†ä¿¡æ¯,方便传å‚ç»™å…¶ä»–é¡µé¢ + var mDecWifiAddressData: HistoryDataBean? = null + + companion object { + @JvmStatic + fun newInstance(context: Context) = WiFiZone2GoogleMapFragment().apply { + mContext = context + } + } + + override fun onMapLoadOk(googleMap: GoogleMap) { + + mDecWifiAddressData = HistoryDataBean() + + googleMap.apply { + setOnMarkerDragListener(object : GoogleMap.OnMarkerDragListener { + override fun onMarkerDrag(marker: Marker) { + + } + + override fun onMarkerDragEnd(marker: Marker) { + marker.position.let { + geoCoderLatLon(it.latitude, it.longitude) + } + } + + override fun onMarkerDragStart(marker: Marker) { + } + }) + + setOnMapLongClickListener { latLng -> + mMarker?.position = latLng + geoCoderLatLon(latLng.latitude, latLng.longitude) + } + + //点击地图任æ„åœ°æ–¹éƒ½ä¸æ¶ˆå¤±è‡ªå®šä¹‰å¤´éƒ¨åœ°ç‚¹å¸ƒå±€ + setOnMapClickListener { + mMarker?.showInfoWindow() + } + } + getLastLocation() + } + + override fun liveDataObserve() { + //å地ç†ç¼–ç æˆåŠŸè¿”å›ž + mGeoCoderViewModel.mLatLonAddressLiveData.observe(viewLifecycleOwner) { + mMarker?.apply { + mDecWifiAddressData?.let { history -> + //æ›´æ–°ä½ç½®æ—¶é—´ + // history.dayTime = timeString + //详细ä½ç½® + history.address = it + //传递ä½ç½®ä¿¡æ¯ç»™InfoWindowAdapterçª—å£ + showMarkerInfoWindow(history) + } + } + } + } + + private fun geoCoderLatLon(latitude: Double, longitude: Double) { + mDecWifiAddressData?.apply { + this.latitude = latitude + this.longitude = longitude + } + mGeoCoderViewModel.getLatLonAddress(latitude, longitude, false) + } + + override fun locationSuccess(location: Location?) { + location?.apply { + val latLng = LatLng(latitude, longitude) + moveCameraLocation(latLng, true) + if (null == mMarker) { + mMarker = addImageMarker( + latLng, R.drawable.icon_location_svg, anchorCenter = false, isDraggable = true + ) + } else mMarker?.position = latLng + geoCoderLatLon(latitude, longitude) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt new file mode 100644 index 0000000..f032120 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/HomePetFragment.kt @@ -0,0 +1,285 @@ +package com.abbidot.tracker.ui.fragment.pet + +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +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.adapter.HomePetFamilyAdapter +import com.abbidot.tracker.adapter.PetLabelsAdapter +import com.abbidot.tracker.adapter.PetsBadgesAdapter +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.PetAllInfoBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentHomePetBinding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.data.DataBoardActivity +import com.abbidot.tracker.ui.activity.pet.BadgesListActivity +import com.abbidot.tracker.ui.activity.pet.FamilyMembersActivity +import com.abbidot.tracker.ui.activity.pet.InviteFamilyActivity +import com.abbidot.tracker.ui.activity.pet.PetProfileActivity +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.PetInfoViewModel +import com.qmuiteam.qmui.util.QMUIDisplayHelper + + +/** + * 首页宠物切æ¢é¡µé¢ + * create an instance of this fragment. + */ +class HomePetFragment : BaseFragment(FragmentHomePetBinding::inflate) { + + private val mPetViewModel: PetInfoViewModel by viewModels() + + private lateinit var mHomeV2Activity: HomeV2Activity + + private lateinit var mPetLabelsAdapter: PetLabelsAdapter + private lateinit var mPetsBadgesAdapter: PetsBadgesAdapter + private lateinit var mFamilyAdapter: HomePetFamilyAdapter + + private var mPetAllInfoBean: PetAllInfoBean? = null + + companion object { + @JvmStatic + fun newInstance(context: Context) = HomePetFragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + mViewBinding.apply { + root.setBackgroundResource(R.color.transparent) + mPetLabelsAdapter = PetLabelsAdapter(mContext!!, null) + ViewUtil.instance.setRecyclerViewFlexboxLayout( + mContext!!, + rvHomePetV2Label, + mPetLabelsAdapter, + top = QMUIDisplayHelper.dpToPx(8), + right = AppUtils.dpToPx(10) + ) + + //宠物勋章 + val badges = mutableListOf() + for (i in 0 until 4) badges.add(DataBean()) + mPetsBadgesAdapter = PetsBadgesAdapter(mContext!!, badges, 60) + ViewUtil.instance.setRecyclerViewGridLayout( + mContext!!, + rvHomePetV2Badges, + mPetsBadgesAdapter, + spanCount = 4, + AppUtils.dpToPx(60), + offset = AppUtils.dpToPx(48) + ) + + mFamilyAdapter = HomePetFamilyAdapter(mContext!!, null).apply { + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + mHomeV2Activity.getPet()?.let { pet -> + if (Util.checkPackageLimit(mHomeV2Activity, pet.deviceId)) { + return + } + } + goActivityNeedPet(InviteFamilyActivity::class.java) + } + }) + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + goActivityNeedPet(FamilyMembersActivity::class.java) + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvHomePetV2Family, mFamilyAdapter, top = QMUIDisplayHelper.dpToPx(16) + ) + + setOnClickListenerViews( + btnHomePetManageActivity, + btnHomePetFamilyManage, + btnHomePetMoreAbout, + btnHomePetBadgesViewAll + ) + } + + getPetAllInfoData() + } + + fun getPetAllInfoData() { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + mHomeV2Activity.getPet(false)?.apply { + val share = MMKVUtil.getInt(MMKVKey.Shared) + //è¢«é‚€è¯·çš„ä¸æ˜¾ç¤ºå®¶åº­é‚€è¯·ä¿¡æ¯ + mViewBinding.apply { + if (share == ConstantInt.NoShare) { + btnHomePetMoreAbout.visibility = View.VISIBLE + btnHomePetManageActivity.visibility = View.VISIBLE + rlHomePetV2FamilyLayout.visibility = View.VISIBLE + } else { + btnHomePetMoreAbout.visibility = View.GONE + btnHomePetManageActivity.visibility = View.GONE + rlHomePetV2FamilyLayout.visibility = View.GONE + } + } + mPetViewModel.getPetAllInfo(mHomeV2Activity, petId) + } + } + + override fun liveDataObserve() { +// XEventBus.observe(viewLifecycleOwner, EventName.RefreshPet) { +// getPetAllInfoData() +// } + XEventBus.observe(viewLifecycleOwner, EventName.SetGoal) { + getPetAllInfoData() + } + XEventBus.observe(viewLifecycleOwner, EventName.RefreshFamily) { + getPetAllInfoData() + } + XEventBus.observe(viewLifecycleOwner, EventName.DeleteFamily) { + getPetAllInfoData() + } + + mPetViewModel.apply { + mPetAllInfoLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + mPetAllInfoBean = this + setInfoData(this) + } + } + }) + } + } + } + + private fun setLottieViewData(assetName: String) { + mViewBinding.homePetTopLottieView.apply { + if (isAnimating) cancelAnimation() + if (TextUtils.isEmpty(assetName)) { + cancelAnimation() + visibility = View.GONE + } else { + visibility = View.VISIBLE + setAnimation(assetName) + playAnimation() + } + } + } + + private fun setInfoData(petAllInfoBean: PetAllInfoBean) { + mViewBinding.apply { + petAllInfoBean.let { + it.petInfo?.let { pet -> + when (pet.petType) { + ConstantInt.DogPetType -> setLottieViewData("lottie/active_dog.json") + ConstantInt.CatPetType -> setLottieViewData("lottie/cat_and_ball.json") + else -> setLottieViewData("") + } + tvHomePetV2Type.text = mPetViewModel.getTypeName(mContext!!, pet.petType) + tvHomePetV2Breed.text = pet.breed + tvHomePetV2Birthday.text = Utils.stringToDate( + pet.birthdayDate, + Utils.DATE_FORMAT_PATTERN_CN, + Utils.DATE_FORMAT_PATTERN_EN7 + ) + tvHomePetV2Sex.text = mPetViewModel.getSexName(mContext!!, pet.gender) + val sexImage = if (pet.gender == ConstantInt.Man) { + R.drawable.icon_male_svg + } else { + R.drawable.icon_female_svg + } + tvHomePetV2Sex.setCompoundDrawablesWithIntrinsicBounds( + sexImage, 0, 0, 0 + ) + val labels = mPetViewModel.getLabelData(pet.labels) + mPetLabelsAdapter.setData(labels, true) + val badgeList = mPetViewModel.getBadges(mContext!!, pet.createDate, true) + mPetsBadgesAdapter.setData(badgeList, true) + } + it.activity?.let { act -> + //直接å•使˜¯min,ä¸éœ€è¦è½¬æ¢ + val goal = if (act.goal >= ConstantInt.MinSportGoal) act.goal + else ConstantInt.DefaultSportGoal + MMKVUtil.putInt(MMKVKey.ActivityGoal, goal) + val goalStr = + getString(R.string.txt_activity_goal) + ": $goal" + getString(R.string.txt_min) + tvHomePetV2ActivityGoal.text = goalStr + //å•使˜¯ç§’,需è¦è½¬æ¢min + tvHomePetV2ActivityTime.text = "${act.activeTime / 60}" + tvHomePetV2ActivityCalories.text = Utils.formatDecimal(act.calories, 2) + } + + mFamilyAdapter.setData(null) + it.invites?.let { family -> + mFamilyAdapter.setData(family, true) + if (family.size > 0) { + btnHomePetFamilyManage.visibility = View.VISIBLE + } else { + btnHomePetFamilyManage.visibility = View.GONE + } + } + } + } + } + + private fun goActivityNeedDeviceId(cls: Class<*>) { + mPetAllInfoBean?.petInfo?.apply { + Intent(mContext, cls).let { + it.putExtra(ConstantString.DeviceId, deviceId) + startActivity(it) + } + } + } + + private fun goActivityNeedPet(cls: Class<*>) { + mPetAllInfoBean?.petInfo?.apply { + Intent(mContext, cls).let { + it.putExtra(ConstantString.Pet, this) + startActivity(it) + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnHomePetManageActivity -> goActivityNeedPet(DataBoardActivity::class.java) + + btnHomePetFamilyManage -> goActivityNeedPet(FamilyMembersActivity::class.java) + + btnHomePetMoreAbout -> { + mPetAllInfoBean?.petInfo?.let { + val intent = Intent( + mContext, PetProfileActivity::class.java + ) + intent.putExtra(ConstantString.Edit, true) + intent.putExtra(ConstantString.Pet, it) + startActivity(intent) + } + } + + btnHomePetBadgesViewAll -> goActivityNeedPet(BadgesListActivity::class.java) + } + } + } + + override fun onDestroy() { + super.onDestroy() + mViewBinding.homePetTopLottieView.cancelAnimation() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt new file mode 100644 index 0000000..e6dc0ce --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt @@ -0,0 +1,142 @@ +package com.abbidot.tracker.ui.fragment.pet + +import android.content.Context +import android.view.View +import androidx.core.view.WindowInsetsCompat +import androidx.fragment.app.Fragment +import androidx.viewpager2.widget.ViewPager2 +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.adapter.ViewPagerAdapter +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.databinding.FragmentPetV2Binding +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.fragment.device.HomeTrackFragment +import com.abbidot.tracker.util.ViewUtil + + +/** + * 首页pet + * create an instance of this fragment. + */ +class PetV2Fragment : BaseFragment(FragmentPetV2Binding::inflate) { + + private lateinit var mFragments: MutableList + private lateinit var mHomeV2Activity: HomeV2Activity + + //当å‰è¿™ä¸ªé¡µé¢æ˜¾ç¤ºçš„宠物下标 + private var mCurrentShowPetPos = -1 + + companion object { + @JvmStatic + fun newInstance(context: Context) = PetV2Fragment().apply { + mContext = context + } + } + + override fun initData() { + mHomeV2Activity = activity as HomeV2Activity + mFragments = mutableListOf( + HomePetFragment.newInstance(mContext!!), HomeTrackFragment.newInstance(mContext!!) + ) + + mViewBinding.apply { + mHomeV2Activity.edgeToEdgeAdapterBars( + root, WindowInsetsCompat.Type.statusBars() + ) + ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE + + rgSwitchPetTrack.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + rbPetSwitch.id -> { + vp2SwitchPetTrack.currentItem = 0 + } + + rbTrackSwitch.id -> { + vp2SwitchPetTrack.currentItem = 1 + } + } + } + + vp2SwitchPetTrack.let { + it.adapter = ViewPagerAdapter(mFragments, requireActivity()) + ViewUtil.instance.setViewPager2Config( + it, object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + when (position) { + 0 -> rgSwitchPetTrack.check(rbPetSwitch.id) + 1 -> rgSwitchPetTrack.check(rbTrackSwitch.id) + } + } + }) + setOnClickListenerViews( + ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root + ) + } + if (AppUtils.isDebug()) { + ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage.setOnLongClickListener { + mHomeV2Activity.goToDebugActivity() + true + } + } + } + } + + override fun onResume() { + super.onResume() + //其他页颿˜¯å¦é€‰æ‹©äº†å® ç‰© + if (mCurrentShowPetPos != mHomeV2Activity.mSelectPetPosition) { + showPetNameAndHead(mHomeV2Activity.mSelectPetPosition) + } else { + (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + } + (mFragments[1] as HomeTrackFragment).onResume() + } + + override fun onPause() { + super.onPause() + (mFragments[1] as HomeTrackFragment).onPause() + } + + /** + * è®¾ç½®éœ€è¦æ›´æ–°çš„æ ‡è¯† + */ + fun setNeedUpdateTag() { + mCurrentShowPetPos = -1 + } + + /** + * 显示选择宠物 + */ + fun showPetNameAndHead(position: Int) { + //å˜é‡åˆå§‹åŒ– + if (!::mHomeV2Activity.isInitialized) { + return + } + if (mHomeV2Activity.mPetList.size == 0) { + return + } + mCurrentShowPetPos = position + +// showLoading(true) + + ViewUtil.instance.selectPetDialogShow( + mContext!!, + mHomeV2Activity.mPetList, + position, + mViewBinding.ilHomePetTopBar.homeDataPetNameSmall, + mViewBinding.ilHomePetTopBar.homeDataPetHeadSmall.appHeadImage + ) + + (mFragments[0] as HomePetFragment).getPetAllInfoData() + (mFragments[1] as HomeTrackFragment).getPetTrackerInfoData() + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> mHomeV2Activity.selectPetDialog() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/CreditCardPaymentFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/CreditCardPaymentFragment.kt new file mode 100644 index 0000000..96a9ae6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/CreditCardPaymentFragment.kt @@ -0,0 +1,218 @@ +package com.abbidot.tracker.ui.fragment.subscribe + +import android.content.Context +import android.content.Intent +import android.view.View +import androidx.activity.result.contract.ActivityResultContracts +import androidx.fragment.app.viewModels +import androidx.lifecycle.lifecycleScope +import com.abbidot.baselibrary.constant.ResultCode +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.CreditCardAdapter +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.databinding.FragmentCreditCardPaymentBinding +import com.abbidot.tracker.ui.activity.subscribe.AddCreditCardPaymentActivity +import com.abbidot.tracker.ui.activity.subscribe.PaymentMethodActivity +import com.abbidot.tracker.ui.activity.subscribe.PaymentSuccessActivity +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.vm.SubscriptionPayViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +/** + * é€‰æ‹©ä¿¡ç”¨å¡æ”¯ä»˜ + */ +class CreditCardPaymentFragment : BaseFragment( + FragmentCreditCardPaymentBinding::inflate +) { + + private val mSubscriptionPayViewModel: SubscriptionPayViewModel by viewModels() + private lateinit var mCreditCardAdapter: CreditCardAdapter + private lateinit var mPaymentMethodActivity: PaymentMethodActivity + + companion object { + @JvmStatic + fun newInstance(context: Context) = CreditCardPaymentFragment().apply { + mContext = context + } + } + + override fun initData() { + mViewBinding.apply { + mPaymentMethodActivity = mActivity!! as PaymentMethodActivity + root.setBackgroundResource(R.color.transparent) + mCreditCardAdapter = CreditCardAdapter(mContext!!, null).apply { + setOnAgainClickListener(object : BaseRecyclerAdapter.OnAgainClickListener { + override fun onAgainListener() { + val intent = Intent(mContext, AddCreditCardPaymentActivity::class.java) + launchActivity(mActivity!!, mActivityResultLauncher, intent) + } + }) + + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + val card = getData()[pos] + if (card.checked) return + for (i in 0 until getData().size) { + val data = getData()[i] + if (data.checked) { + data.checked = false + notifyItemChanged(i) + break + } + } + getData()[pos].checked = true + notifyItemChanged(pos) + } + }) + } + ViewUtil.instance.setRecyclerViewVerticalLinearLayout( + mContext!!, rvCreditCardPaymentList, mCreditCardAdapter, top = AppUtils.dpToPx(10) + ) + + setOnClickListenerViews(btnCreditCardPaymentAdd, btnMakePaymentCreditCard) + } + getCardData() + } + + private fun getCardData() { + viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) { + val list = MyDatabase.creditCardDao().findAll(MyDatabase.CreditCardTableName) + list?.let { + if (it.isNotEmpty()) mActivity!!.runOnUiThread { + val sortedByList = list.sortedByDescending { l -> l.isPrimary }.toMutableList() + setCheckAndPrimaryState(sortedByList) + mCreditCardAdapter.setData(sortedByList, true) + } + } + } + } + + fun goEditCard(cardBean: CreditCardBean) { + Intent(mContext, AddCreditCardPaymentActivity::class.java).let { + it.putExtra(ConstantString.Card, cardBean) + it.putExtra(ConstantString.Edit, true) + launchActivity(mActivity!!, mActivityResultLauncher, it) + } + } + + override fun liveDataObserve() { + mSubscriptionPayViewModel.apply { + mSubscriptionCustomerLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.let { o -> + mPaymentMethodActivity.mOrderBean?.apply { + customerId = o.customerId + mSubscriptionPayViewModel.createStripeOrder(this) + } + } + } + + override fun onRequestError(exceptionCode: String?) { + showNoCancelableLoading(false) + } + }) + } + + mCreateStripeOrderLiveData.observe(viewLifecycleOwner) { + showNoCancelableLoading(false) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + val intent = Intent(mContext, PaymentSuccessActivity::class.java) + this.rechargeType = mPaymentMethodActivity.mRechargeType + mPaymentMethodActivity.mOrderBean?.let { o -> + this.deviceId = o.deviceId + } + intent.putExtra(ConstantString.Amount, this) + startActivity(intent) + } + } + }) + } + } + } + + private fun setCheckAndPrimaryState(list: MutableList) { + if (list.size == 0) return + var haveCheck = false + for (l in list) { + if (l.checked) { + haveCheck = true + break + } + } + if (!haveCheck) { + list[0].checked = true + } + + mViewBinding.apply { + btnMakePaymentCreditCard.visibility = View.VISIBLE + tvCreditCardPaymentChoose.visibility = View.VISIBLE + btnCreditCardPaymentAdd.visibility = View.VISIBLE + } + } + + /** + * 接收添加信用å¡è¿”回结果 + */ + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { +// if (null != it.data) { +// if (it.resultCode == ResultCode.ResultCode_1) { +// val card = Util.getParcelableAdaptive( +// it.data!!, ConstantString.Card, CreditCardBean::class.java +// ) +// if (null != card) { +// val list = mCreditCardAdapter.getData() +// if (card.isPrimary) { +// for (l in list) { +// if (l.isPrimary) l.isPrimary = false +// if (l.checked) l.checked = false +// } +// } +// list.add(card) +// val sortedByList = +// list.sortedByDescending { l -> l.isPrimary }.toMutableList() +// setCheckAndPrimaryState(sortedByList) +// mCreditCardAdapter.setData(sortedByList, true) +// } +// } +// } + if (it.resultCode == ResultCode.ResultCode_1) { + getCardData() + } + } + + private fun startCreditCardPayment() { + val list = mCreditCardAdapter.getData() + for (card in list) { + if (card.checked) { + showNoCancelableLoading(true) + mSubscriptionPayViewModel.createCustomer(card) + break + } + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnCreditCardPaymentAdd -> { + val intent = Intent(mContext, AddCreditCardPaymentActivity::class.java) + launchActivity(mActivity!!, mActivityResultLauncher, intent) + } + + btnMakePaymentCreditCard -> startCreditCardPayment() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/PaypalPaymentFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/PaypalPaymentFragment.kt new file mode 100644 index 0000000..9fea323 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/subscribe/PaypalPaymentFragment.kt @@ -0,0 +1,74 @@ +package com.abbidot.tracker.ui.fragment.subscribe + +import android.content.Context +import android.content.Intent +import android.view.View +import androidx.fragment.app.viewModels +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.databinding.FragmentPaypalPaymentBinding +import com.abbidot.tracker.ui.activity.WebViewActivity +import com.abbidot.tracker.ui.activity.subscribe.PaymentMethodActivity +import com.abbidot.tracker.vm.SubscriptionPayViewModel + + +/** + * Paypalæ”¯ä»˜æ–¹å¼ + */ +class PaypalPaymentFragment : + BaseFragment(FragmentPaypalPaymentBinding::inflate) { + + private val mSubscriptionPayViewModel: SubscriptionPayViewModel by viewModels() + private lateinit var mPaymentMethodActivity: PaymentMethodActivity + + companion object { + @JvmStatic + fun newInstance(context: Context) = PaypalPaymentFragment().apply { + mContext = context + } + } + + override fun initData() { + mPaymentMethodActivity = mActivity!! as PaymentMethodActivity + mViewBinding.apply { + root.setBackgroundResource(R.color.transparent) + setOnClickListenerViews(btnSureRedirectPaypal) + } + } + + override fun liveDataObserve() { + mSubscriptionPayViewModel.mCreatePaypalOrderLiveData.observe(viewLifecycleOwner) { + showNoCancelableLoading(false) + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + val intent = Intent(mContext, WebViewActivity::class.java) + intent.putExtra( + ConstantString.Title, getString(R.string.txt_pay_order_payment_title) + ) + intent.putExtra(ConstantString.Url, url) + this.rechargeType = mPaymentMethodActivity.mRechargeType + mPaymentMethodActivity.mOrderBean?.let { o -> + this.deviceId = o.deviceId + } + intent.putExtra(ConstantString.Amount, this) + mPaymentMethodActivity.startActivity(intent) + } + } + }) + } + } + + override fun onClick(v: View?) { + mViewBinding.apply { + when (v!!) { + btnSureRedirectPaypal -> mPaymentMethodActivity.mOrderBean?.let { + showNoCancelableLoading(true) + mSubscriptionPayViewModel.createPaypalOrder(it) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/BleReportManage.kt b/app/src/main/java/com/abbidot/tracker/util/BleReportManage.kt new file mode 100644 index 0000000..f325f38 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/BleReportManage.kt @@ -0,0 +1,317 @@ +package com.abbidot.tracker.util + +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil +import com.abbidot.tracker.vm.SocketSendMessageViewModel +import com.clj.fastble.utils.HexUtil + +/** + *Created by .yzq on 2025/3/17/017. + * @link + * @description:è“牙上报数æ®ç›¸å…³å¤„ç† + */ +class BleReportManage( + socketSendMessageViewModel: SocketSendMessageViewModel, socketUtilManage: SocketUtilManage +) { + + private var mSocketSendMessageViewModel = socketSendMessageViewModel + private var mSocketUtilManage = socketUtilManage + + //设备状æ€ä¸ŠæŠ¥è¯·æ±‚CMD + private val mTogetherDeviceStateCmdList = mutableListOf() + + //5.14 Live定ä½ä¿¡æ¯ä¸ŠæŠ¥ + private val mLiveCmdList = mutableListOf() + private val mSportDataCmdList = mutableListOf() + private val mSleepDataCmdList = mutableListOf() + + private var mLatLonUpdateTime = 100L + + /** + * 处ç†è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + */ + fun dealBleReportData(mac: String, data: ByteArray?) { + try { + data?.let { + val totalLength = SRBleCmdUtil.instance.byteToInt(data[0]) + val timeStampByteArray = data.sliceArray(2..5) + mTogetherDeviceStateCmdList.clear() + mTogetherDeviceStateCmdList.addAll(timeStampByteArray.toMutableList()) + mLiveCmdList.clear() + mLiveCmdList.addAll(timeStampByteArray.toMutableList()) + mSportDataCmdList.clear() + mSportDataCmdList.addAll(timeStampByteArray.toMutableList()) + mSleepDataCmdList.clear() + mSleepDataCmdList.addAll(timeStampByteArray.toMutableList()) + val utcTimeStamp = SRBleCmdUtil.instance.byte4ArrayToLong(timeStampByteArray) + LogUtil.e("çŠ¶æ€æ›´æ–°æ—¶é—´=$utcTimeStamp") + val bleReportDataBean = BleReportDataBean().apply { + updateTime = utcTimeStamp +// latLonUpdateTime = utcTimeStamp + this.mac = mac + } + var length = SRBleCmdUtil.instance.byteToInt(data[6]) + var tempLength = totalLength - length + //è®¾å¤‡çŠ¶æ€ + if (SRBleCmdUtil.instance.byteToInt(data[7]) == ConstantInt.Type1) { + dealDeviceStateIsLive(data.sliceArray(8..8 + length - 2), bleReportDataBean) + //判断åŽé¢è¿˜æœ‰æ²¡æœ‰å…¶ä»–è®¾å¤‡æ•°æ® + if (tempLength > 10) { + length = SRBleCmdUtil.instance.byteToInt(data[34]) + tempLength -= length + //定ä½ä¿¡æ¯ + if (SRBleCmdUtil.instance.byteToInt(data[35]) == ConstantInt.Type2) { + dealLocationData( + data.sliceArray(36..36 + length - 2), bleReportDataBean + ) + //判断åŽé¢è¿˜æœ‰æ²¡æœ‰å…¶ä»–è®¾å¤‡æ•°æ® + if (tempLength > 10) { + length = SRBleCmdUtil.instance.byteToInt(data[50]) + if (SRBleCmdUtil.instance.byteToInt(data[51]) == ConstantInt.Type3) { + //è¿åЍç¡çœ  + dealSeepSportData( + data.sliceArray(52..52 + length - 2), bleReportDataBean + ) + } + } + } else if (SRBleCmdUtil.instance.byteToInt(data[35]) == ConstantInt.Type3) { + //åˆ¤æ–­æ˜¯å¦æœ‰å®šä½ä¿¡æ¯ + if (!bleReportDataBean.haveLocationData) { + val locationData = mutableListOf().apply { + //å®šä½æ–¹å¼ + add(4) + add(1) + val lon = (LonAndLatUtil.currentUserGPSLon * 1000000).toLong() + val lonByteArray = SRBleCmdUtil.instance.longTo4ByteArray(lon) + addAll(lonByteArray.toMutableList()) + val lat = (LonAndLatUtil.currentUserGPSLat * 1000000).toLong() + val latByteArray = SRBleCmdUtil.instance.longTo4ByteArray(lat) + addAll(latByteArray.toMutableList()) + addAll(timeStampByteArray.toMutableList()) + } + LogUtil.e("设备没有定ä½ä¿¡æ¯ï¼Œèžåˆæ‰‹æœºå®šä½") + dealLocationData(locationData.toByteArray(), bleReportDataBean) + } + //è¿åЍç¡çœ  + dealSeepSportData( + data.sliceArray(36..36 + length - 2), bleReportDataBean + ) + } + } + + XEventBus.post(EventName.BleReportData, bleReportDataBean) + //有定ä½ç‚¹ç›´æ’­æ‰ä¸ŠæŠ¥ + if (bleReportDataBean.liveFlag == ConstantInt.Type1 && mLiveCmdList.size > 30) { + mSocketSendMessageViewModel.sendCmd( + mSocketUtilManage, mac, 0x0E, mLiveCmdList + ) + } + if (mTogetherDeviceStateCmdList.size > 4) { + mSocketSendMessageViewModel.sendCmd( + mSocketUtilManage, mac, 0x0F, mTogetherDeviceStateCmdList + ) + } + if (mSportDataCmdList.size > 4) { + mSocketSendMessageViewModel.sendCmd( + mSocketUtilManage, mac, 0x0A, mSportDataCmdList + ) + } + if (mSleepDataCmdList.size > 4) { + mSocketSendMessageViewModel.sendCmd( + mSocketUtilManage, mac, 0x0B, mSleepDataCmdList + ) + } + } + } + } catch (e: Exception) { + LogUtil.e("è§£æžè“牙上报数æ®å¼‚常:${e.message}") + } + } + + /** + * 处ç†è®¾å¤‡çŠ¶æ€æ•°æ®,è¿”å›žæ˜¯å¦æ­£åœ¨ç›´æ’­çŠ¶æ€ + */ + private fun dealDeviceStateIsLive(data: ByteArray, bleReportDataBean: BleReportDataBean) { + val gnssIntervalByteArray = data.sliceArray(4..5) + val cFencesIdByteArray = data.sliceArray(14..17) + val wiFiZoneMacByteArray = data.sliceArray(19..24) + mTogetherDeviceStateCmdList.apply { + add(data[12]) + add(data[13]) + //æ•°æ®å†…容标志 + add(1) + //是å¦ç›´æ’­ + add(data[11]) + //red + add(data[8]) + add(data[9]) + add(data[10]) + //LEDç¯çŠ¶æ€ + add(data[6]) + //LEDç¯å¼€å…³çŠ¶æ€ + add(data[7]) + //GNSS定ä½åˆ·æ–°æ—¶é—´ + addAll(gnssIntervalByteArray.toMutableList()) + //当å‰å›´æ id + addAll(cFencesIdByteArray.toMutableList()) + //当å‰GPSä¿¡å·å¼ºåº¦ + add(data[2]) + //当å‰ç”µæ± ç”µé‡ + add(data[3]) + //è®¾å¤‡å¼€å…³æœºçŠ¶æ€ + add(data[0]) + //当å‰LTEç½‘ç»œä¿¡å· + add(data[1]) + //是å¦åœ¨WiFi zone + add(data[18]) + //WiFi zone Macåœ°å€ + addAll(wiFiZoneMacByteArray.toMutableList()) + } + mLiveCmdList.apply { + //时区 + add(data[25]) + //当å‰LTEç½‘ç»œä¿¡å· + add(data[1]) + //当å‰GPSä¿¡å·å¼ºåº¦ + add(data[2]) + //当å‰ç”µæ± ç”µé‡ + add(data[3]) + //是å¦ç›´æ’­ + add(data[11]) + } + bleReportDataBean.apply { + haveDeviceStateData = true + LogUtil.e("è®¾å¤‡çŠ¶æ€æ•°æ®=${HexUtil.formatHexString(data, true)}") + //è®¾å¤‡çŠ¶æ€ + powerSwitch = SRBleCmdUtil.instance.byteToInt(data[0]) + lteSignal = SRBleCmdUtil.instance.byteToInt(data[1]) + gpsSignal = SRBleCmdUtil.instance.byteToInt(data[2]) + batteryLevel = SRBleCmdUtil.instance.byteToInt(data[3]) + gnssInterval = SRBleCmdUtil.instance.byte2ArrayToInt(gnssIntervalByteArray) + ledMode = SRBleCmdUtil.instance.byteToInt(data[6]) + ledSwitch = SRBleCmdUtil.instance.byteToInt(data[7]) + ledRedValue = SRBleCmdUtil.instance.byteToInt(data[8]) + ledGreenValue = SRBleCmdUtil.instance.byteToInt(data[9]) + ledBlueValue = SRBleCmdUtil.instance.byteToInt(data[10]) + liveFlag = SRBleCmdUtil.instance.byteToInt(data[11]) + inSafeZone = SRBleCmdUtil.instance.byteToInt(data[12]) + inNoGoZone = SRBleCmdUtil.instance.byteToInt(data[13]) + cFencesId = SRBleCmdUtil.instance.byte4ArrayToLong(cFencesIdByteArray).toString() + inWifiZone = SRBleCmdUtil.instance.byteToInt(data[18]) + wiFiZoneMac = + HexUtil.formatHexString(wiFiZoneMacByteArray, true).split(" ", ":").toString() + timeZone = SRBleCmdUtil.instance.byteToInt(data[25]) - 12 + val msg = + "设备状æ€=$powerSwitch,lte=$lteSignal,gps=$gpsSignal,battery=$batteryLevel,gnss=$gnssInterval,ledMode=$ledMode,ledSwitch=$ledSwitch,ledRed=$ledRedValue,ledGreen=$ledGreenValue,ledBlue=$ledBlueValue,liveFlag=$liveFlag,safeZone=$inSafeZone,noGoZone=$inNoGoZone,inWiFiZone=$inWifiZone,wiFiZoneMac=$wiFiZoneMac\n" + LogUtil.e("è§£æžåŽï¼š$msg") + } + } + + /** + * 处ç†å®šä½æ•°æ® + */ + private fun dealLocationData(data: ByteArray, bleReportDataBean: BleReportDataBean) { + LogUtil.e("å®šä½æ•°æ®=${HexUtil.formatHexString(data, true)}") + bleReportDataBean.apply { + //å®šä½æ–¹å¼ + locationMode = SRBleCmdUtil.instance.byteToInt(data[0]) + val locationCount = SRBleCmdUtil.instance.byteToInt(data[1]) + var msg = "å®šä½æ–¹å¼=$locationMode,定ä½ç‚¹æ•°=$locationCount," + if (locationCount == 0) { + return@apply + } + haveLocationData = true + + mLiveCmdList.apply { + add(data[0]) + add(data[1]) + } + val locations = mutableListOf() + for (i in 0 until locationCount) { + val location = HistoryDataBean() + val lonByteArray = data.sliceArray(2 + i * 12..5 + i * 12) + val latByteArray = data.sliceArray(6 + i * 12..9 + i * 12) + val timeStampByteArray = data.sliceArray(10 + i * 12..13 + i * 12) + location.timeStamp = SRBleCmdUtil.instance.byte4ArrayToLong(timeStampByteArray) + latLonUpdateTime = location.timeStamp + + if (i == locationCount - 1) { + if (mLatLonUpdateTime == latLonUpdateTime) { + LogUtil.e("åŒä¸€ä¸ªæ—¶é—´æˆ³çš„ç»çº¬åº¦ä¸é‡å¤ä¸Šä¼ ,$latLonUpdateTime") + } else { + mLatLonUpdateTime = latLonUpdateTime + mTogetherDeviceStateCmdList[6] = 3 + mTogetherDeviceStateCmdList.addAll(lonByteArray.toMutableList()) + mTogetherDeviceStateCmdList.addAll(latByteArray.toMutableList()) + mTogetherDeviceStateCmdList.add(data[0]) + mTogetherDeviceStateCmdList.add((timeZone + 12).toByte()) + //速度 + mTogetherDeviceStateCmdList.add(0) + mTogetherDeviceStateCmdList.add(0) + } + } + + mLiveCmdList.let { + it.addAll(timeStampByteArray.toMutableList()) + it.addAll(lonByteArray.toMutableList()) + it.addAll(latByteArray.toMutableList()) + //速度 + it.add(0) + it.add(0) + it.add(inSafeZone.toByte()) + it.add(inNoGoZone.toByte()) + } + + location.longitude = + SRBleCmdUtil.instance.byte4ArrayToLong(lonByteArray) / 1000000.0 + location.latitude = SRBleCmdUtil.instance.byte4ArrayToLong(latByteArray) / 1000000.0 + locations.add(location) + msg += "lon=${location.longitude},lat=${location.latitude},locationTimeStamp=${location.timeStamp}," + } + locationList = locations + LogUtil.e("è§£æžåŽï¼š$msg") + } + } + + /** + *处ç†è¿åЍç¡çœ æ•°æ® + */ + private fun dealSeepSportData(data: ByteArray, bleReportDataBean: BleReportDataBean) { + LogUtil.e("è¿åЍç¡çœ æ•°æ®=${HexUtil.formatHexString(data, true)}") + val cActiveTimeByteArray = data.sliceArray(13..14) + val cSleepTimeByteArray = data.sliceArray(15..16) + mSportDataCmdList.apply { + addAll(0, data.sliceArray(0..11).toMutableList()) + add((bleReportDataBean.timeZone + 12).toByte()) + add(data[12]) + addAll(cActiveTimeByteArray.toMutableList()) + } + mSleepDataCmdList.apply { + addAll(0, cSleepTimeByteArray.toMutableList()) + add(0, data[12]) + addAll(0, data.sliceArray(0..3).toMutableList()) + add((bleReportDataBean.timeZone + 12).toByte()) + } + bleReportDataBean.apply { + haveActiveSleepData = true + year = SRBleCmdUtil.instance.byte2ArrayToInt(data.sliceArray(0..1)) + month = SRBleCmdUtil.instance.byteToInt(data[2]) + day = SRBleCmdUtil.instance.byteToInt(data[3]) + activeTime = SRBleCmdUtil.instance.byte4ArrayToLong(data.sliceArray(4..7)) + steps = SRBleCmdUtil.instance.byte4ArrayToLong(data.sliceArray(8..11)) + //å‡ ç‚¹çš„æ•°æ® + cTime = SRBleCmdUtil.instance.byteToInt(data[12]) + cActiveTime = SRBleCmdUtil.instance.byte2ArrayToInt(cActiveTimeByteArray) + cSleepTime = SRBleCmdUtil.instance.byte2ArrayToInt(cSleepTimeByteArray) + + val msg = + "year=$year,month=$month,day=$day,sportTime=$activeTime,step=$steps,timeZone=$timeZone,whatTime=$cTime,cSportTime=$cActiveTime,cSleepTime=$cSleepTime" + LogUtil.e("è§£æžåŽï¼š$msg") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/CoilEngine.kt b/app/src/main/java/com/abbidot/tracker/util/CoilEngine.kt new file mode 100644 index 0000000..12440c0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/CoilEngine.kt @@ -0,0 +1,62 @@ +package com.abbidot.tracker.util + +import android.content.Context +import android.graphics.Bitmap +import android.net.Uri +import android.widget.ImageView +import coil.ImageLoader +import coil.load +import coil.request.ImageRequest +import com.huantansheng.easyphotos.engine.ImageEngine + +/** + * 相册æ‹ç…§æ˜¾ç¤ºå›¾ç‰‡å°è£… + */ +class CoilEngine private constructor() : ImageEngine { + + companion object { + val instance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { CoilEngine() } + } + + private fun ImageView.loadImage( + uri: Uri, + imageLoader: ImageLoader = context.imageLoader(), + builder: ImageRequest.Builder.() -> Unit = {}, + ) { +// if (SDK_INT >= Build.VERSION_CODES.Q) { +// if (uri.startsWith("content://")) { +// load(Uri.parse(uri), imageLoader, builder) +// } else { +// load(uri, imageLoader, builder) +// } +// } else { +// load(File(uri), imageLoader, builder) +// } + load(uri, imageLoader, builder) + } + + private fun Context.imageLoader(): ImageLoader { + return ImageLoader.Builder(this).componentRegistry { +// add(VideoFrameFileFetcher(this@imageLoader)) +// add(VideoFrameUriFetcher(this@imageLoader)) +// add(VideoFrameDecoder(this@imageLoader)) + }.build() + } + + + override fun loadPhoto(context: Context, uri: Uri, imageView: ImageView) { + imageView.loadImage(uri) + } + + override fun loadGifAsBitmap(context: Context, gifUri: Uri, imageView: ImageView) { + imageView.loadImage(gifUri) + } + + override fun loadGif(context: Context, gifUri: Uri, imageView: ImageView) { + imageView.loadImage(gifUri) + } + + override fun getCacheBitmap(context: Context, uri: Uri, width: Int, height: Int): Bitmap? { + return null + } +} diff --git a/app/src/main/java/com/abbidot/tracker/util/FileUtil.kt b/app/src/main/java/com/abbidot/tracker/util/FileUtil.kt new file mode 100644 index 0000000..a0ff3af --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/FileUtil.kt @@ -0,0 +1,153 @@ +package com.abbidot.tracker.util + +import android.app.Activity +import android.content.Context +import android.os.Environment +import com.abbidot.baselibrary.util.LogUtil +import java.io.File +import java.math.BigDecimal + +/** + *Created by .yzq on 2022/3/24/024. + * @link + * @description: + */ +class FileUtil { + + companion object { + + /** + * ä¿å­˜æˆªå±å›¾ç‰‡ç›®å½•åå­— + */ + const val SCREENSHOT_DIRECTORY_NAME = "screenShot" + + /** + * ä¿å­˜åˆ†äº«èµ„æºç›®å½•åå­— + */ + const val SHARE_DIRECTORY_NAME = "share" + + /** + * ä¿å­˜å¤´åƒç›®å½•åå­— + */ + const val HEAD_DIRECTORY_NAME = "headImage" + + /** + * data首页截å±å›¾ç‰‡æ–‡ä»¶åå­— + */ + const val DATA_HISTORY_FILE_NAME = "dataHistory.png" + + /** + * ä¿å­˜DFU固件目录åå­— + */ + const val DFU_DIRECTORY_NAME = "dfu" + + /** + * ä¿å­˜log文件目录åå­— + */ + const val LOG_DIRECTORY_NAME = "log" + + /** + * 获å–缓存目录 + *

+ * doc:https://stackoverflow.com/questions/41025200/android-view-inflateexception-error + * -inflating-class-android-webkit-webview + */ + public static Context getFixedContext(Context context) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + // è¿™ç§å†™æ³•返回的 Context 是 ContextImplï¼Œè€Œä¸æ˜¯ Activity 或者 ContextWrapper + // 为什么ä¸ç”¨ ContextImpl,因为使用 ContextImpl 获å–ä¸åˆ° Activity 对象,而 ContextWrapper å¯ä»¥ + // return context.createConfigurationContext(new Configuration()); + // 如果使用 ContextWrapper 还是导致崩溃,因为 Resources 对象冲çªäº† + // return new ContextWrapper(context); + // 如果使用 ContextThemeWrapper 就没有问题,因为它é‡å†™äº† getResources 方法,返回的是一个新的 Resources 对象 + return new ContextThemeWrapper(context, context.getTheme()); + } + return context; + } + + /** + * 处ç†è°·æ­Œæäº¤åº”用 SSL Error Handler错误 + * + * @param activity + * @param handler + * @param error + */ + public void setOnReceivedSslError(Activity activity, SslErrorHandler handler, SslError error) { + String message = "SSL Certificate error."; + switch (error.getPrimaryError()) { + case SslError.SSL_UNTRUSTED: + message = "The certificate authority is not trusted."; + break; + case SslError.SSL_EXPIRED: + message = "The certificate has expired."; + break; + case SslError.SSL_IDMISMATCH: + message = "The certificate Hostname mismatch."; + break; + case SslError.SSL_NOTYETVALID: + message = "The certificate is not yet valid."; + break; + case SslError.SSL_DATE_INVALID: + message = "The date of the certificate is invalid"; + break; + case SslError.SSL_INVALID: + default: + message = "A generic error occurred"; + break; + } + message += " Do you want to continue anyway?"; + + ViewUtil.Companion.getInstance() + .showDialog(activity, "SSL Certificate Error", myAlertDialog -> { + myAlertDialog.dismiss(); + handler.proceed(); + }, "", R.string.txt_sure, R.string.txt_cancel, myAlertDialog -> { + myAlertDialog.dismiss(); + handler.cancel(); + }); + } + + /** + * 获å–当å‰çš„ url + * + * @return 返回原始的 url,因为有些url是被WebViewè§£ç è¿‡çš„ + */ + @Override + public String getUrl() { + String originalUrl = super.getOriginalUrl(); + // é¿å…å¼€å§‹æ—¶åŒæ—¶åŠ è½½ä¸¤ä¸ªåœ°å€è€Œå¯¼è‡´çš„崩溃 + if (originalUrl != null) { + return originalUrl; + } + return super.getUrl(); + } + + @Override + public void onResume() { + super.onResume(); + resumeTimers(); + } + + @Override + public void onPause() { + super.onPause(); + pauseTimers(); + } + + public void onDestroy() { + ((ViewGroup) getParent()).removeView(this); + //清除历å²è®°å½• + clearHistory(); + //åœæ­¢åŠ è½½ + stopLoading(); + //加载一个空白页 + loadUrl("about:blank"); + setBrowserChromeClient(null); + setBrowserViewClient(null); + //移除WebView所有的View对象 + removeAllViews(); + //é”€æ¯æ­¤çš„WebViewçš„å†…éƒ¨çŠ¶æ€ + destroy(); + } + + /** + * 已过时,推è使用 {@link BrowserViewClient} + */ + @Deprecated + @Override + public void setWebViewClient(WebViewClient client) { + super.setWebViewClient(client); + } + + public void setBrowserViewClient(BrowserViewClient client) { + super.setWebViewClient(client); + } + + /** + * 已过时,推è使用 {@link BrowserChromeClient} + */ + @Deprecated + @Override + public void setWebChromeClient(WebChromeClient client) { + super.setWebChromeClient(client); + } + + public void setBrowserChromeClient(BrowserChromeClient client) { + super.setWebChromeClient(client); + } + + public static class BrowserViewClient extends WebViewClient { + + /** + * åŒå API 兼容 + */ + @TargetApi(Build.VERSION_CODES.M) + @Override + public void onReceivedError(WebView view, WebResourceRequest request, + WebResourceError error) { + if (request.isForMainFrame()) { + onReceivedError(view, error.getErrorCode(), error.getDescription() + .toString(), request.getUrl().toString()); + } + } + + @Override + public void onReceivedError(WebView view, int errorCode, String description, + String failingUrl) { + super.onReceivedError(view, errorCode, description, failingUrl); + } + + // @Override + // public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { + // // 注æ„一定è¦åŽ»é™¤è¿™è¡Œä»£ç ï¼Œå¦åˆ™è®¾ç½®æ— æ•ˆã€‚ + // //super.onReceivedSslError(view, handler, error); + // // Androidé»˜è®¤çš„å¤„ç†æ–¹å¼ + // //handler.cancel(); + // // æŽ¥å—æ‰€æœ‰ç½‘站的è¯ä¹¦ + // handler.proceed(); + // } + + /** + * åŒå API 兼容 + */ + @TargetApi(Build.VERSION_CODES.N) + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + return shouldOverrideUrlLoading(view, request.getUrl().toString()); + } + + /** + * 跳转到其他链接 + */ + @Override + public boolean shouldOverrideUrlLoading(WebView view, final String url) { + String scheme = Uri.parse(url).getScheme(); + if (scheme != null) { + scheme = scheme.toLowerCase(); + } + if ("http".equalsIgnoreCase(scheme) || "https".equalsIgnoreCase(scheme)) { + view.loadUrl(url); + } + // å·²ç»å¤„ç†è¯¥é“¾æŽ¥è¯·æ±‚ + return true; + } + } + + public static class BrowserChromeClient extends WebChromeClient { + + private final BrowserView mWebView; + + public BrowserChromeClient(BrowserView view) { + mWebView = view; + if (mWebView == null) { + throw new IllegalArgumentException("are you ok?"); + } + } + + /** + * 网页弹出警告框 + */ + @Override + public boolean onJsAlert(WebView view, String url, String message, JsResult result) { + ViewUtil.Companion.getInstance() + .showDialog(mWebView.getContext(), message, myAlertDialog -> { + myAlertDialog.dismiss(); + result.confirm(); + }, "", R.string.txt_sure, R.string.txt_cancel, myAlertDialog -> { + myAlertDialog.dismiss(); + result.cancel(); + }); + return true; + } + + /** + * ç½‘é¡µå¼¹å‡ºç¡®å®šå–æ¶ˆæ¡† + */ + @Override + public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { + ViewUtil.Companion.getInstance() + .showDialog(mWebView.getContext(), message, myAlertDialog -> { + myAlertDialog.dismiss(); + result.confirm(); + }, "", R.string.txt_sure, R.string.txt_cancel, myAlertDialog -> { + myAlertDialog.dismiss(); + result.cancel(); + }); + + return true; + } + + /** + * 网页弹出输入框 + */ + @Override + public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, + JsPromptResult result) { + // DialogUtils.Companion.showEditTextDialog(mWebView.getContext(), message, defaultValue + // , any -> { + // String str = any.toString(); + // result.confirm(str); + // }, InputType.TYPE_CLASS_TEXT, 100); + // + DialogUtils.Companion.showEditTextDialog(mWebView.getContext(), message, defaultValue + , new GetResultCallback() { + @Override + public void onRequestError(@Nullable String exceptionCode) { + } + + @Override + public void onResult(@NonNull Object any) { + String str = any.toString(); + result.confirm(str); + } + }, InputType.TYPE_CLASS_TEXT, 100); + return true; + } + + /** + * 网页弹出选择文件请求(测试地å€ï¼šhttps://app.xunjiepdf.com/jpg2pdf/ã€http://www.script-tutorials + * .com/demos/199/index.html) + * + * @param callback 文件选择回调 + * @param params æ–‡ä»¶é€‰æ‹©å‚æ•° + */ + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + @Override + public boolean onShowFileChooser(WebView webView, ValueCallback callback, + FileChooserParams params) { + Util.Companion.checkPermissions(mWebView.getContext(), + new Util.RequestPermissionCallback() { + @Override + public void onRequestPermissionSuccess() { + openSystemFileChooser((BaseActivity) (mWebView.getContext()), callback, params); + } + + @Override + public void onRequestPermissionFail() { + callback.onReceiveValue(null); + XXPermissions.startPermissionActivity((BaseActivity) (mWebView.getContext()), + PermissionLists.getWriteExternalStoragePermission(), + PermissionLists.getReadExternalStoragePermission()); + } + }, "网页弹出选择文件请求", PermissionLists.getWriteExternalStoragePermission(), + PermissionLists.getReadExternalStoragePermission()); + + return true; + } + + /** + * 打开系统文件选择器 + */ + private void openSystemFileChooser(BaseActivity activity, ValueCallback callback, + FileChooserParams params) { + Intent intent = params.createIntent(); + String[] mimeTypes = params.getAcceptTypes(); + if (mimeTypes != null && mimeTypes.length > 0 && mimeTypes[0] != null && !"".equals(mimeTypes[0])) { + // 设置è¦è¿‡æ»¤çš„æ–‡ä»¶ç±»åž‹ + intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); + } + // è®¾ç½®æ˜¯å¦æ˜¯å¤šé€‰æ¨¡å¼ + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, + params.getMode() == FileChooserParams.MODE_OPEN_MULTIPLE); + // activity.startActivityForResult(Intent.createChooser(intent, params.getTitle()), + // (resultCode, data) -> { + // Uri[] uris = null; + // if (resultCode == Activity.RESULT_OK && data != null) { + // Uri uri = data.getData(); + // if (uri != null) { + // // 如果用户åªé€‰æ‹©äº†ä¸€ä¸ªæ–‡ä»¶ + // uris = new Uri[]{uri}; + // } else { + // // 如果用户选择了多个文件 + // ClipData clipData = data.getClipData(); + // if (clipData != null) { + // uris = new Uri[clipData.getItemCount()]; + // for (int i = 0; i < clipData.getItemCount(); i++) { + // uris[i] = clipData.getItemAt(i).getUri(); + // } + // } + // } + // } + // // ä¸ç®¡ç”¨æˆ·æœ€åŽæœ‰æ²¡æœ‰é€‰æ‹©æ–‡ä»¶ï¼Œæœ€åŽè¿˜æ˜¯è°ƒç”¨ onReceiveValueï¼Œå¦‚æžœæ²¡æœ‰è°ƒç”¨å°±ä¼šå¯¼è‡´ç½‘é¡µå†æ¬¡ä¸Šä¼ æ— å“应 + // callback.onReceiveValue(uris); + // }); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/CircleCountDownView.kt b/app/src/main/java/com/abbidot/tracker/widget/CircleCountDownView.kt new file mode 100644 index 0000000..e3e69bf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/CircleCountDownView.kt @@ -0,0 +1,147 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.os.CountDownTimer +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2023/3/3/003. + * @link + * @description: 倒计时圆形 + */ +class CircleCountDownView : AppCompatImageView { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + private lateinit var mPaint: Paint + + //倒计时默认30ç§’ + private var mCountDownTimer: CountDownTimer? = null + private var mSweepAngle: Float = 360f + + //倒计时å˜åŒ–的速率,越å°è¶Šå¿« + private var mSpeed = 100L + + private var mOnCircleCountDownCallback: OnCircleCountDownCallback? = null + + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, + defStyleAttr) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + //å¼€å¯æŠ—é”¯é½¿ + mPaint = Paint(Paint.ANTI_ALIAS_FLAG) + + if (null == attrs) { + mPaint.color = ContextCompat.getColor(mContext, R.color.btn_yellow_color) + mPaint.alpha = 255 / 2 + } else { + val obtainStyledAttributes = + mContext.obtainStyledAttributes(attrs, R.styleable.CircleCountDownView) + mPaint.color = obtainStyledAttributes.getColor(R.styleable.CircleCountDownView_color, + ContextCompat.getColor(mContext, R.color.btn_yellow_color)) + mPaint.alpha = + obtainStyledAttributes.getInt(R.styleable.CircleCountDownView_colorAlpha, 255 / 2) + obtainStyledAttributes.recycle() + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + LogUtil.e("onMeasure") + mWidth = measuredWidth + mHeight = measuredHeight +// val widthMode = MeasureSpec.getMode(widthMeasureSpec) +// val heightMode = MeasureSpec.getMode(heightMeasureSpec) +// if (widthMode == MeasureSpec.AT_MOST) { +// background?.apply { +// mWidth = this.minimumWidth +// } +// } +// if (heightMode == MeasureSpec.AT_MOST) { +// mHeight = this.minimumHeight +// } + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + drawArc(0f, 0f, mWidth.toFloat(), mHeight.toFloat(), 270f, -mSweepAngle, true, mPaint) + } + } + + fun startCountDown(second: Int) { + LogUtil.d("倒计时开始") + stopCountDown() + if (second <= 0) { + //ä¸éœ€è¦æ‰‡å½¢èƒŒæ™¯ + mSweepAngle = 0f + invalidate() + LogUtil.e("CircleCountDownView,æ—¶é—´ç§’ä¸èƒ½å°äºŽç­‰äºŽ0") + return + } + mSweepAngle = 360f + mSpeed = if (second < (5 * 60)) { + 80L + } else { + 180L + } + val quantity = mSweepAngle / second + mCountDownTimer = object : CountDownTimer(second * 1000L, mSpeed) { + override fun onTick(millisUntilFinished: Long) { + val time = millisUntilFinished / 1000f + mSweepAngle = quantity * time + postInvalidate() + } + + override fun onFinish() { + LogUtil.d("倒计时结æŸ") + mSweepAngle = 360f + invalidate() + mOnCircleCountDownCallback?.countDownCompleteCallback() + } + } + mCountDownTimer?.apply { + start() + mOnCircleCountDownCallback?.startCountDownCallback() + } + } + + fun stopCountDown() { + mCountDownTimer?.apply { + LogUtil.d("å€’è®¡æ—¶åœæ­¢") + cancel() + mSweepAngle = 360f + invalidate() + } + } + + fun setOnCircleCountDownCallback(onCircleCountDownCallback: OnCircleCountDownCallback) { + mOnCircleCountDownCallback = onCircleCountDownCallback + } + + interface OnCircleCountDownCallback { + fun startCountDownCallback() + fun countDownCompleteCallback() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/ColorPickerRectangle.java b/app/src/main/java/com/abbidot/tracker/widget/ColorPickerRectangle.java new file mode 100644 index 0000000..9758d7a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/ColorPickerRectangle.java @@ -0,0 +1,196 @@ +package com.abbidot.tracker.widget; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import androidx.appcompat.widget.AppCompatImageView; + +import com.abbidot.baselibrary.util.LogUtil; +import com.abbidot.tracker.R; + + +/** + * Created by lenovo on 2019/2/15. + * desc: 选色器 + * author: lli + */ +public class ColorPickerRectangle extends AppCompatImageView implements View.OnTouchListener { + + private Bitmap bitmap; + //当剿˜¾ç¤ºé€‰ä¸­å°åœ†åŠå¾„ + private final float mSmallRadius; + private float mSelectCircleX = 0; + private float mSelectCircleY = 0; + + private Bitmap bp;//色轮图片 + private int bw, bh;//色轮图片的尺寸 + private float x, y, radio; + private OnColorSelectListener onColorSelectListener; + private final Paint paint; + + public ColorPickerRectangle(Context context) { + this(context, null); + } + + public ColorPickerRectangle(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ColorPickerRectangle(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null); + + bp = BitmapFactory.decodeResource(context.getResources(), R.drawable.bg_color); + + bw = bp.getWidth(); + bh = bp.getHeight(); + + x = bw / 2f; + y = bh / 2f; + radio = Math.min(x, y); + + setImageBitmap(bp); + + setOnTouchListener(this); + + paint = new Paint(); + paint.setStrokeWidth(10); + paint.setColor(Color.RED); + paint.setAntiAlias(true); + + setClickable(true); + + bitmap = BitmapFactory.decodeResource(context.getResources(), + R.drawable.ico_color_selector); + mSmallRadius = Math.min(bitmap.getWidth() / 2f, bitmap.getHeight() / 2f); + } + + // float lastX = 0; + // float lastY = 0; + @Override + public boolean onTouch(View v, MotionEvent event) { + float xx = event.getX(); + float yy = event.getY(); + + if (!inCircle(xx, yy)) { + return false; + } + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + //çˆ¶èŠ‚ç‚¹ä¸æ‹¦æˆªå­èŠ‚ç‚¹,è§£å†³çˆ¶æŽ§ä»¶æ˜¯æ»‘åŠ¨æŽ§ä»¶çš„å†²çª + v.getParent().requestDisallowInterceptTouchEvent(true); + break; + case MotionEvent.ACTION_MOVE: + break; + case MotionEvent.ACTION_UP: + //父节点拦截å­èŠ‚ç‚¹ + v.getParent().requestDisallowInterceptTouchEvent(false); + if (onColorSelectListener != null) { + onColorSelectListener.onColorSelect(getColor(xx, yy)); + } + break; + } + x = xx; + y = yy; + invalidate(); + + return true; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + // x = getMeasuredWidth() / 2f; + // y = getMeasuredWidth() / 2f; + // radio = Math.min(x, y); + LogUtil.Companion.e("onMeasure"); + } + + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + // canvas.drawPoint(x, y, paint); + + //第一次进æ¥é»˜è®¤ä¸æ˜¾ç¤ºé€‰ä¸­çš„å°åœ†åœˆ + if (mSelectCircleX == 0 && mSelectCircleY == 0) { + mSelectCircleX = x - mSmallRadius; + mSelectCircleY = y - mSmallRadius; + canvas.drawBitmap(bitmap, 0, 0, paint); + } else + canvas.drawBitmap(bitmap, x - mSmallRadius, y - mSmallRadius, paint); + } + + private int getColor(float x, float y) { + + this.x = x; + this.y = y; + + int w = getWidth(); + int h = getHeight(); + + int dx = (int) ((x / w) * bw); + int dy = (int) ((y / h) * bh); + + int color = Color.BLACK; + + try { + color = bp.getPixel(dx, dy); + } catch (Exception e) { + e.printStackTrace(); + } + return color; + } + + private boolean inCircle(float x, float y) { + float cx = getWidth() / 2f; + float cy = getHeight() / 2f; + float d = + (float) Math.abs(Math.sqrt((x - cx) * (x - cx) + (y - cy) * (y - cy))) + mSmallRadius; + return d <= radio; + } + + public interface OnColorSelectListener { + public void onColorSelect(int color); + } + + public OnColorSelectListener getOnColorSelectListener() { + return onColorSelectListener; + } + + public void setOnColorSelectListener(OnColorSelectListener onColorSelectListener) { + this.onColorSelectListener = onColorSelectListener; + } + + /** + * 回收Bitmap内存 + */ + public void recycle() { + + if (bitmap != null) { + if (!bitmap.isRecycled()) { + bitmap.recycle(); + } + bitmap = null; + } + + if (bp != null) { + if (!bp.isRecycled()) { + bp.recycle(); + } + bp = null; + } + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/CreditCardView.kt b/app/src/main/java/com/abbidot/tracker/widget/CreditCardView.kt new file mode 100644 index 0000000..14a3a29 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/CreditCardView.kt @@ -0,0 +1,156 @@ +package com.abbidot.tracker.widget + +import android.animation.Animator +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.view.animation.AccelerateDecelerateInterpolator +import android.widget.FrameLayout +import android.widget.RelativeLayout +import coil.load +import com.abbidot.tracker.R +import com.abbidot.tracker.databinding.ViewCreditCardLayoutBinding +import com.abbidot.tracker.util.Util + + +/** + *Created by .yzq on 2022/4/6/006. + * @link + * @description: + */ +class CreditCardView : FrameLayout { + + private lateinit var mViewBinding: ViewCreditCardLayoutBinding + + //信用å¡å‰é¢çš„view + private lateinit var mFrontView: RelativeLayout + + //信用å¡åŽé¢çš„view + private lateinit var mBehindView: RelativeLayout + + //信用å¡ç±»åž‹å›¾ç‰‡ + private var mCardLogoImageId = 0 + + //动画执行时间 + private val mDuration = 350L + + constructor(context: Context) : super(context) { + init(context) + } + + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + + private fun init(context: Context) { +// val inflater = +// getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + + val view = inflate(context, R.layout.view_credit_card_layout, this) + mViewBinding = ViewCreditCardLayoutBinding.bind(view) + + mBehindView = mViewBinding.layoutBehindCreditCard.root + mFrontView = mViewBinding.layoutFrontCreditCard.root + } + + + fun setCardNumber(numberStr: String) { + val formatCardNumber = Util.formatCardNumber(numberStr) + mCardLogoImageId = Util.getCreditCardType(numberStr) + + mViewBinding.layoutFrontCreditCard.apply { + creditCardNumberText.text = formatCardNumber + creditCardLogoImg.load(mCardLogoImageId) + } + } + + fun setCardholderName(cardholderName: String) { + mViewBinding.layoutFrontCreditCard.frontCardHolderName.text = cardholderName + } + + fun setCardExpiry(cardExpiry: String) { + mViewBinding.layoutFrontCreditCard.frontCardExpiry.text = cardExpiry + } + + fun setCVV(cvv: String) { + mViewBinding.layoutBehindCreditCard.apply { + backCardCvv.text = cvv + backCardLogoImg.load(mCardLogoImageId) + } + } + + + /** + * 翻转背é¢åŠ¨ç”» + */ + fun showBehindAnimation() { + if (mBehindView.visibility == View.VISIBLE) return + val animatorStart = ObjectAnimator.ofFloat(this, "rotationY", 0f, -90f) + + val animatorEnd = ObjectAnimator.ofFloat(this, "rotationY", 90f, 0f) + animatorEnd.addListener(object : Animator.AnimatorListener { + override fun onAnimationStart(animation: Animator) { + mFrontView.visibility = View.GONE + mBehindView.visibility = View.VISIBLE + mViewBinding.layoutBehindCreditCard.backCardLogoImg.load(mCardLogoImageId) + } + + override fun onAnimationEnd(animation: Animator) { + + } + + override fun onAnimationCancel(animation: Animator) { + } + + override fun onAnimationRepeat(animation: Animator) { + } + }) + + startAnimator(animatorStart, animatorEnd) + } + + /** + * 翻转正é¢åŠ¨ç”» + */ + fun showFrontAnimation() { + if (mFrontView.visibility == View.VISIBLE) return + val animatorStart = ObjectAnimator.ofFloat(this, "rotationY", 0f, 90f) + + val animatorEnd = ObjectAnimator.ofFloat(this, "rotationY", -90f, 0f) + animatorEnd.addListener(object : Animator.AnimatorListener { + override fun onAnimationStart(animation: Animator) { + mFrontView.visibility = View.VISIBLE + mBehindView.visibility = View.GONE + } + + override fun onAnimationEnd(animation: Animator) { + } + + override fun onAnimationCancel(animation: Animator) { + } + + override fun onAnimationRepeat(animation: Animator) { + } + }) + + startAnimator(animatorStart, animatorEnd) + } + + private fun startAnimator(animatorStart: Animator, animatorEnd: Animator) { + val animatorSet = AnimatorSet() + animatorSet.play(animatorStart).before(animatorEnd) + animatorSet.duration = mDuration + animatorSet.interpolator = AccelerateDecelerateInterpolator() + animatorSet.start() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/CustomViewInterfaces.kt b/app/src/main/java/com/abbidot/tracker/widget/CustomViewInterfaces.kt new file mode 100644 index 0000000..aebfdc8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/CustomViewInterfaces.kt @@ -0,0 +1,25 @@ +package com.abbidot.tracker.widget + +/** + *Created by .yzq on 2024/1/25/025. + * @link + * @description: + */ +interface OnCircleViewScaleClickListener { + fun circleScaleClick() + fun circleStartDragClick() + fun circleEndDragClick() +} + +interface OnRectViewRotateScaleClickListener { + fun rectRotateClick() + fun rectScaleClick() + fun rectStartDragClick() + fun rectEndDragClick() +} + +interface OnPolygonViewPointPullClickListener { + fun polygonPointPullClick() + fun polygonStartDragClick() + fun polygonEndDragClick() +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/FencesCircleView.kt b/app/src/main/java/com/abbidot/tracker/widget/FencesCircleView.kt new file mode 100644 index 0000000..4cf918f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/FencesCircleView.kt @@ -0,0 +1,415 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.DashPathEffect +import android.graphics.Paint +import android.graphics.Point +import android.graphics.RectF +import android.text.TextUtils +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ImageUtil +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/22/022. + * @link + * @description:添加围æ åœ†å½¢ï¼Œåªé’ˆå¯¹å›´æ  + */ +class FencesCircleView : View { + + private var mWidth = 0 + private var mHeight = 0 + + private lateinit var mPaint: Paint + private lateinit var mRectF: RectF + + private var mDashedColor = 0 + private var mFillBgColor = 0 + + //最外é¢çš„圆åŠå¾„ + private var mMaxCircleRadius = 0f + + //ä¸­å¿ƒåæ ‡ç‚¹ + private var mCentreX = 0f + private var mCentreY = 0f + + //内圆åŠå¾„ + private lateinit var mInsideCirclePaint: Paint + + //定ä½å›¾æ ‡ + private var mLocationBitmap: Bitmap? = null + private var mZoomBitmap: Bitmap? = null + + //çº¿æœ«å°¾åæ ‡ç‚¹ + private var mLineEndX = 0f + private var mLineEndY = 0f + + //æ˜¯å¦æ˜¾ç¤ºè·ç¦»æ–‡å­— + private var isShowDistance = true + + //è·ç¦»æ˜¾ç¤º + private var mDistanceText = "" + private lateinit var mTextPaint: Paint + private var isScale = false + private var isDrag = false + private var mOldX = 0f + private var mOldY = 0f + + //是å¦éœ€è¦æµ‹é‡ï¼Œé˜²æ­¢ç™¾åº¦åœ°å›¾ä½¿ç”¨ä¼šæ‰§è¡ŒonMeasure/地图页é¢ä¸Šä¸‹æ»‘åŠ¨é‡æ–°å¸ƒå±€æ‰§è¡ŒonMeasure + private var isNeedMeasure = true + + private var mScaleClickListener: OnCircleViewScaleClickListener? = null + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + //åœ†çš„é»˜è®¤å¤§å° +// mMaxCircleRadius = QMUIDisplayHelper.dpToPx(68).toFloat() + mPaint = Paint() + LogUtil.e("${javaClass.canonicalName}------------------->>>init") + mPaint.style = Paint.Style.STROKE + mPaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + //虚线长度 + val dashPathWidth = QMUIDisplayHelper.dpToPx(6).toFloat() + mPaint.pathEffect = DashPathEffect(floatArrayOf(dashPathWidth, dashPathWidth), 0f) + mPaint.color = mDashedColor + + mTextPaint = Paint() + val tf = + ViewUtil.instance.setTypeface(context, context.getString(R.string.number_din_cond_font)) + mTextPaint.typeface = tf + mTextPaint.textSize = QMUIDisplayHelper.sp2px(context, 14).toFloat() + mTextPaint.color = ContextCompat.getColor(context, R.color.black) + + mInsideCirclePaint = Paint() + mInsideCirclePaint.color = mFillBgColor + + mRectF = RectF() + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mDashedColor = ContextCompat.getColor(context, R.color.tab_select) + mFillBgColor = ContextCompat.getColor(context, R.color.black20) + mLocationBitmap = + ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fences_zone_gps_svg) + mZoomBitmap = ImageUtil.getBitmapFromDrawableAndSvg( + context, R.drawable.icon_fence_circle_scale_svg + ) + return + } + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.FencesCircleView) + mDashedColor = typedArray.getColor( + R.styleable.FencesCircleView_fences_circle_dashed_color, + ContextCompat.getColor(context, R.color.tab_select) + ) + mFillBgColor = typedArray.getColor( + R.styleable.FencesCircleView_fences_circle_fill_bg_color, + ContextCompat.getColor(context, R.color.black20) + ) + mLocationBitmap = ImageUtil.getBitmapFromDrawableAndSvg( + context, typedArray.getResourceId( + R.styleable.FencesCircleView_fences_circle_location_drawable, + R.drawable.icon_fences_zone_gps_svg + ) + ) + mZoomBitmap = ImageUtil.getBitmapFromDrawableAndSvg( + context, typedArray.getResourceId( + R.styleable.FencesCircleView_fences_circle_zoom_drawable, + R.drawable.icon_fence_circle_scale_svg + ) + ) + typedArray.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + LogUtil.e("${javaClass.canonicalName}:onMeasure---mWidth=$mWidth,mHeight=$mHeight") + if (isNeedMeasure) { + mCentreX = mWidth / 2f + mCentreY = mHeight / 2f + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + LogUtil.e("onAttachedToWindow,${javaClass.canonicalName}视图显示") + } + + override fun onDraw(canvas: Canvas) { + LogUtil.d("${javaClass.canonicalName}------>onDraw") + super.onDraw(canvas) + drawCircle(canvas) + } + + private fun drawCircle(canvas: Canvas) { + mLineEndX = mCentreX + mMaxCircleRadius + mLineEndY = mCentreY + canvas.drawCircle(mCentreX, mCentreY, mMaxCircleRadius, mPaint) + canvas.drawCircle( + mCentreX, mCentreY, mMaxCircleRadius - mPaint.strokeWidth / 2f, mInsideCirclePaint + ) + mRectF.set( + mCentreX - mMaxCircleRadius, + mCentreY - mMaxCircleRadius, + mLineEndX, + mCentreY + mMaxCircleRadius + ) + + val imageHalfWidth = mLocationBitmap!!.width / 2f + val imageHalfHeight = mLocationBitmap!!.height / 2f + val left = mCentreX - imageHalfWidth + val top = mCentreY - imageHalfHeight + canvas.drawBitmap(mLocationBitmap!!, left, top, null) + + if (isShowDistance) { + if (!TextUtils.isEmpty(mDistanceText)) { + +// canvas.drawLine(mCentreX + imageHalfWidth, mCentreY, mLineEndX, mLineEndY, mPaint) + + //文字宽度 + val textWidth = mTextPaint.measureText(mDistanceText) + val fontMetrics = mTextPaint.fontMetrics + //文字高度 + val textHeight = fontMetrics.bottom - fontMetrics.top +// val x = if (mMaxCircleRadius > textWidth * 5) { +// mLineEndX - mMaxCircleRadius / 2 - textWidth / 2 +// } else { +// mCentreX + textWidth / 3f +// } +// canvas.drawText(mDistanceText, x, mCentreY - textHeight * 2, mTextPaint) + + val x = if (mCentreX - mMaxCircleRadius > textWidth + textHeight / 2) { + mCentreX - mMaxCircleRadius - textWidth - textHeight / 2 + } else { + mCentreX - mMaxCircleRadius + textHeight / 2 + } + canvas.drawText(mDistanceText, x, mCentreY + textHeight / 4, mTextPaint) + } + + mZoomBitmap?.apply { + canvas.drawBitmap(this, mLineEndX - width / 2, mLineEndY - height / 2, null) + } + } + } + + fun setOnCircleViewScaleClickListener(onCircleViewScaleClickListener: OnCircleViewScaleClickListener) { + mScaleClickListener = onCircleViewScaleClickListener + } + + /** + * 设置圆的åŠå¾„ å•ä½dp + */ + private fun setCircleRadius(dp: Int) { + mMaxCircleRadius = QMUIDisplayHelper.dpToPx(dp).toFloat() + invalidate() + } + + /** + * 设置圆的åŠå¾„ å•ä½px + */ + fun setCircleRadiusPx(px: Float) { + mMaxCircleRadius = px + invalidate() + } + + /** + * 设置默认的åŠå¾„ + */ + fun initDefaultRadius(dp: Int = 68) { + if (dp <= 0) return + setCircleRadius(dp) + } + + fun setCentreXY(point: Point) { + point.apply { + if (mCentreX != x.toFloat() || mCentreY != y.toFloat()) { + mCentreX = x.toFloat() + mCentreY = y.toFloat() + isNeedMeasure = false + invalidate() + } + } + } + +// private fun getCentreX() = mCentreX +// private fun getCentreY() = mCentreY +// +// private fun getLineEndX() = mLineEndX +// private fun getLineEndY() = mLineEndY + + /** + * 获å–圆心点 + */ + fun getCircleCentrePoint() = Point( + mCentreX.toInt(), mCentreY.toInt() + ) + + /** + * 获å–圆形直虚线的最åŽä¸€ä¸ªç‚¹ + */ + fun getCircleLineEndPoint() = Point( + mLineEndX.toInt(), mLineEndY.toInt() + ) + + /** + * 获å–圆形直虚线的左边最开始的一个点 + */ + fun getCircleLineStartPoint() = Point( + (mLineEndX - mMaxCircleRadius * 2).toInt(), mLineEndY.toInt() + ) + + /** + * 设置显示的è·ç¦» + */ + fun setShowDisDistance(distance: String) { + mDistanceText = distance + invalidate() + } + + /** + * 设置éšè—显示è·ç¦»æ–‡å­— + */ + fun setShowHideDisDistance(show: Boolean) { + if (isShowDistance != show) { + isShowDistance = show + invalidate() + } + } + + /** + * 设置边框颜色和图片 + */ + fun setColorAndImage( + context: Context, + dashedColorRes: Int = 0, + fillBgColorRes: Int = 0, + locationDrawableRes: Int = 0, + zoomDrawableRes: Int = 0 + ) { + var isRefresh = false + if (dashedColorRes > 0) { + mDashedColor = ContextCompat.getColor(context, dashedColorRes) + mPaint.color = mDashedColor + isRefresh = true + } + if (fillBgColorRes > 0) { + mFillBgColor = ContextCompat.getColor(context, fillBgColorRes) + mInsideCirclePaint.color = mFillBgColor + isRefresh = true + } + if (locationDrawableRes > 0) { + mLocationBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, locationDrawableRes) + isRefresh = true + } + if (zoomDrawableRes > 0) { + mZoomBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, zoomDrawableRes) + isRefresh = true + } + if (isRefresh) invalidate() + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + val x = event.x + val y = event.y + mZoomBitmap?.apply { + if (x in mLineEndX - width / 2..mLineEndX + width / 2 && y in mLineEndY - height / 2..mLineEndY + height / 2) { + isScale = true + mOldX = x + return true + } else if (mRectF.contains(x, y)) { + isDrag = true + mOldX = x + mOldY = y + mPaint.strokeWidth = QMUIDisplayHelper.dpToPx(3).toFloat() + mScaleClickListener?.circleStartDragClick() + invalidate() + return true + } + } + } + + MotionEvent.ACTION_MOVE -> { + val x = event.x + val y = event.y + if (isScale) { + val transformX = x - mOldX + //é™åˆ¶ç¼©æ”¾ä¸èƒ½å¤ªå° + if (mMaxCircleRadius + transformX < mLocationBitmap!!.height / 2f) { + return true + } + mMaxCircleRadius += transformX + mOldX = x + invalidate() + return true + } else if (isDrag) { + val transformX = x - mOldX + val transformY = y - mOldY + mCentreX += transformX + mCentreY += transformY + mOldX = x + mOldY = y + invalidate() + return true + } + } + + MotionEvent.ACTION_UP -> { + if (isScale) { + mScaleClickListener?.circleScaleClick() + isScale = false + } else if (isDrag) { + mScaleClickListener?.circleEndDragClick() + isDrag = false + mPaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + invalidate() + } + } + } + return super.onTouchEvent(event) + } + + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + LogUtil.e("${javaClass.canonicalName}视图销æ¯") + if (null != mLocationBitmap) { + mLocationBitmap?.recycle() + mLocationBitmap = null + } + if (null != mZoomBitmap) { + mZoomBitmap?.recycle() + mZoomBitmap = null + } + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/FencesPolygonView.kt b/app/src/main/java/com/abbidot/tracker/widget/FencesPolygonView.kt new file mode 100644 index 0000000..366aa4e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/FencesPolygonView.kt @@ -0,0 +1,856 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.DashPathEffect +import android.graphics.Paint +import android.graphics.Path +import android.graphics.Point +import android.graphics.RectF +import android.graphics.Region +import android.text.TextUtils +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import androidx.core.content.ContextCompat +import androidx.core.graphics.toRect +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.PointBean +import com.abbidot.tracker.util.ImageUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/22/022. + * @link 按以下点组æˆçš„多边形 + * A + * F B + * E C + * D + * @description:添加围æ å¤šè¾¹å½¢ï¼Œåªé’ˆå¯¹å›´æ  + */ +class FencesPolygonView : View { + + companion object { + const val POINT_A = 1 + const val POINT_B = 2 + const val POINT_C = 3 + const val POINT_D = 4 + const val POINT_E = 5 + const val POINT_F = 6 + } + + private var mWidth = 0 + private var mHeight = 0 + + //ä¸­å¿ƒåæ ‡ç‚¹ + private var mCentreX = 0f + private var mCentreY = 0f + private var mAPoint = PointBean() + private var mFPoint = PointBean() + private var mEPoint = PointBean() + private var mDPoint = PointBean() + private var mCPoint = PointBean() + private var mBPoint = PointBean() + private var mTempPoint = PointBean() + + //最外层组æˆçš„éšè—的矩形 + private var mOutHideRectWidth = 0f + private var mOutHideRectHeight = 0f + + //定ä½å›¾æ ‡ + private var mLocationBitmap: Bitmap? = null + private var mDotBitmap: Bitmap? = null + + private lateinit var mDashedPaint: Paint + private lateinit var mFillPaint: Paint + + private lateinit var mPath: Path + + private var mDashedColor = 0 + private var mFillBgColor = 0 + + private var mTouchPointTag = "" + private val mTageA = "A" + private val mTageB = "B" + private val mTageC = "C" + private val mTageD = "D" + private val mTageE = "E" + private val mTageF = "F" + + private var isDrag = false + private var mOldX = 0f + private var mOldY = 0f + + //创建矩形的区域, https://www.jianshu.com/p/6a5d8f0f68d4 + private lateinit var mRectRegion: Region + + //创建路径Path区域,最åŽèŽ·å¾—å’ŒçŸ©å½¢çš„äº¤é›† + private lateinit var mPathRegion: Region + private lateinit var mPathRectF: RectF + + //是å¦éœ€è¦æµ‹é‡ï¼Œé˜²æ­¢ç™¾åº¦åœ°å›¾ä½¿ç”¨ä¼šæ‰§è¡ŒonMeasure/地图页é¢ä¸Šä¸‹æ»‘åŠ¨é‡æ–°å¸ƒå±€æ‰§è¡ŒonMeasure + private var isNeedMeasure = true + + private var mPointPullClickListener: OnPolygonViewPointPullClickListener? = null + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mPath = Path() + + mRectRegion = Region() + mPathRegion = Region() + mPathRectF = RectF() + + mFillPaint = Paint() + mFillPaint.color = mFillBgColor + + mDashedPaint = Paint() + mDashedPaint.style = Paint.Style.STROKE + mDashedPaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + //虚线长度 + val dashPathWidth = QMUIDisplayHelper.dpToPx(6).toFloat() + mDashedPaint.pathEffect = DashPathEffect(floatArrayOf(dashPathWidth, dashPathWidth), 0f) + mDashedPaint.color = mDashedColor + + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { +// if (null == attrs) { +// return +// } + mDashedColor = ContextCompat.getColor(context, R.color.select_color) + mFillBgColor = ContextCompat.getColor(context, R.color.select_color4) + mLocationBitmap = + ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fences_zone_gps_svg) + mDotBitmap = ImageUtil.getBitmapFromDrawableAndSvg( + context, R.drawable.icon_fence_polygon_operate_svg + ) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + LogUtil.e("${javaClass.canonicalName}:onMeasure---mWidth=$mWidth,mHeight=$mHeight") + + if (isNeedMeasure) { + mCentreX = mWidth / 2f + mCentreY = mHeight / 2f + + initPoint() + } + } + + private fun initPoint() { + if (mOutHideRectHeight <= 0 || mOutHideRectWidth <= 0) return + mAPoint.x = mCentreX + mAPoint.y = mCentreY - mOutHideRectHeight / 2 + mFPoint.x = mCentreX - mOutHideRectWidth / 2 + mFPoint.y = mCentreY - mOutHideRectHeight / 4 + mEPoint.x = mFPoint.x + mEPoint.y = mCentreY + mOutHideRectHeight / 4 + mDPoint.x = mAPoint.x + mDPoint.y = mCentreY + mOutHideRectHeight / 2 + mCPoint.x = mCentreX + mOutHideRectWidth / 2 + mCPoint.y = mEPoint.y + mBPoint.x = mCPoint.x + mBPoint.y = mFPoint.y + + getCentreXY() + } + + private fun getCentreXY() { + val minX = minOf(mAPoint.x, mFPoint.x, mEPoint.x, mDPoint.x, mCPoint.x, mBPoint.x) + val maxX = maxOf(mAPoint.x, mFPoint.x, mEPoint.x, mDPoint.x, mCPoint.x, mBPoint.x) + val minY = minOf(mAPoint.y, mFPoint.y, mEPoint.y, mDPoint.y, mCPoint.y, mBPoint.y) + val maxY = maxOf(mAPoint.y, mFPoint.y, mEPoint.y, mDPoint.y, mCPoint.y, mBPoint.y) + val rectF = RectF(minX, minY, maxX, maxY) + + //ä¸­å¿ƒç‚¹æ”¹å˜æ—¶ + mCentreX = rectF.centerX() + mCentreY = rectF.centerY() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + LogUtil.e("onAttachedToWindow,${javaClass.canonicalName}视图显示") + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + getCentreXY() + canvas.let { + mLocationBitmap?.apply { + it.drawBitmap(this, mCentreX - width / 2, mCentreY - height / 2, null) + } + mPath.apply { + moveTo(mAPoint.x, mAPoint.y) + lineTo(mFPoint.x, mFPoint.y) + lineTo(mEPoint.x, mEPoint.y) + lineTo(mDPoint.x, mDPoint.y) + lineTo(mCPoint.x, mCPoint.y) + lineTo(mBPoint.x, mBPoint.y) + close() + + //计算控制点的边界 + mPath.computeBounds(mPathRectF, true) + //设置区域路径 + mRectRegion.set(mPathRectF.toRect()) + //设置剪辑æè¿°çš„区域 + mPathRegion.setPath(mPath, mRectRegion) + + it.drawPath(mPath, mFillPaint) + it.drawPath(mPath, mDashedPaint) + reset() + } + mDotBitmap?.apply { + it.drawBitmap(this, mAPoint.x - width / 2, mAPoint.y - height / 2, null) + it.drawBitmap(this, mFPoint.x - width / 2, mFPoint.y - height / 2, null) + it.drawBitmap(this, mEPoint.x - width / 2, mEPoint.y - height / 2, null) + it.drawBitmap(this, mDPoint.x - width / 2, mDPoint.y - height / 2, null) + it.drawBitmap(this, mCPoint.x - width / 2, mCPoint.y - height / 2, null) + it.drawBitmap(this, mBPoint.x - width / 2, mBPoint.y - height / 2, null) + } + + } + } + + @SuppressLint("ClickableViewAccessibility") + @Synchronized + override fun onTouchEvent(event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + val x = event.x + val y = event.y + mTouchPointTag = "" + if (isClickWherePoint(x, y, mAPoint)) { + mTouchPointTag = mTageA + } else if (isClickWherePoint(x, y, mFPoint)) { + mTouchPointTag = mTageB + } else if (isClickWherePoint(x, y, mEPoint)) { + mTouchPointTag = mTageC + } else if (isClickWherePoint(x, y, mDPoint)) { + mTouchPointTag = mTageD + } else if (isClickWherePoint(x, y, mCPoint)) { + mTouchPointTag = mTageE + } else if (isClickWherePoint(x, y, mBPoint)) { + mTouchPointTag = mTageF + } + if (!TextUtils.isEmpty(mTouchPointTag)) { + return true + } + if (mPathRegion.contains(x.toInt(), y.toInt())) { + isDrag = true + mOldX = x + mOldY = y + mDashedPaint.strokeWidth = QMUIDisplayHelper.dpToPx(3).toFloat() + mPointPullClickListener?.polygonStartDragClick() + invalidate() + return true + } + } + + MotionEvent.ACTION_MOVE -> { + val x = event.x + val y = event.y + mTempPoint.x = x + mTempPoint.y = y + var isInvalidate = false + when (mTouchPointTag) { + mTageA -> { + val intersectTBEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBEF$intersectTBEF") + if (intersectTBEF) { + return false + } + val intersectTBDE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBDE$intersectTBDE") + if (intersectTBDE) { + return false + } + val intersectTBCD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBCD$intersectTBCD") + if (intersectTBCD) { + return false + } + val intersectTBBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBBC$intersectTBBC") + if (intersectTBBC) { + return false + } + + val intersectTFBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFBC$intersectTFBC") + if (intersectTFBC) { + return false + } + val intersectTFCD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFCD$intersectTFCD") + if (intersectTFCD) { + return false + } + val intersectTFDE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFDE$intersectTFDE") + if (intersectTFDE) { + return false + } + val intersectTFEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFEF$intersectTFEF") + if (intersectTFEF) { + return false + } + + mAPoint.x = x + mAPoint.y = y + isInvalidate = true + } + + mTageB -> { + val intersectTCAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCAF$intersectTCAF") + if (intersectTCAF) { + return false + } + val intersectTCEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCEF$intersectTCEF") + if (intersectTCEF) { + return false + } + val intersectTCDE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCDE$intersectTCDE") + if (intersectTCDE) { + return false + } + val intersectTCCD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCCD$intersectTCCD") + if (intersectTCCD) { + return false + } + + + val intersectTACD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTACD$intersectTACD") + if (intersectTACD) { + return false + } + val intersectTADE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTADE$intersectTADE") + if (intersectTADE) { + return false + } + val intersectTAEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTAEF$intersectTAEF") + if (intersectTAEF) { + return false + } + val intersectTAFA = + isSegmentIntersect(mBPoint, mAPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTAFA$intersectTAFA") + if (intersectTAFA) { + return false + } + mFPoint.x = x + mFPoint.y = y + isInvalidate = true + } + + mTageC -> { + val intersectTBDE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBDE$intersectTBDE") + if (intersectTBDE) { + return false + } + val intersectTBEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBEF$intersectTBEF") + if (intersectTBEF) { + return false + } + val intersectTBFA = + isSegmentIntersect(mBPoint, mAPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBFA$intersectTBFA") + if (intersectTBFA) { + return false + } + val intersectTBAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mFPoint) + LogUtil.i("交点intersectTBAB$intersectTBAB") + if (intersectTBAB) { + return false + } + + val intersectTDAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDAB$intersectTDAB") + if (intersectTDAB) { + return false + } + val intersectTDAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDAF$intersectTDAF") + if (intersectTDAF) { + return false + } + val intersectTDEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDEF$intersectTDEF") + if (intersectTDEF) { + return false + } + val intersectTDED = + isSegmentIntersect(mCPoint, mDPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDED$intersectTDED") + if (intersectTDED) { + return false + } + mEPoint.x = x + mEPoint.y = y + isInvalidate = true + } + + mTageD -> { + val intersectTCEF = + isSegmentIntersect(mCPoint, mBPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCEF$intersectTCEF") + if (intersectTCEF) { + return false + } + val intersectTCAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCAF$intersectTCAF") + if (intersectTCAF) { + return false + } + val intersectTCAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCAB$intersectTCAB") + if (intersectTCAB) { + return false + } + val intersectTCBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mEPoint) + LogUtil.i("交点intersectTCBC$intersectTCBC") + if (intersectTCBC) { + return false + } + + val intersectTEBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEBC$intersectTEBC") + if (intersectTEBC) { + return false + } + val intersectTEAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEAB$intersectTEAB") + if (intersectTEAB) { + return false + } + val intersectTEAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEAF$intersectTEAF") + if (intersectTEAF) { + return false + } + val intersectTEFE = + isSegmentIntersect(mBPoint, mCPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEFE$intersectTEFE") + if (intersectTEFE) { + return false + } + mDPoint.x = x + mDPoint.y = y + isInvalidate = true + } + + mTageE -> { + val intersectTDAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDAF$intersectTDAF") + if (intersectTDAF) { + return false + } + val intersectTDAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDAB$intersectTDAB") + if (intersectTDAB) { + return false + } + val intersectTDBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDBC$intersectTDBC") + if (intersectTDBC) { + return false + } + val intersectTDCD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mDPoint) + LogUtil.i("交点intersectTDCD$intersectTDCD") + if (intersectTDCD) { + return false + } + + val intersectTFCD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFCD$intersectTFCD") + if (intersectTFCD) { + return false + } + val intersectTFBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFBC$intersectTFBC") + if (intersectTFBC) { + return false + } + val intersectTFAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFAB$intersectTFAB") + if (intersectTFAB) { + return false + } + val intersectTFAF = + isSegmentIntersect(mAPoint, mBPoint, mTempPoint, mBPoint) + LogUtil.i("交点intersectTFAF$intersectTFAF") + if (intersectTFAF) { + return false + } + mCPoint.x = x + mCPoint.y = y + isInvalidate = true + } + + mTageF -> { + val intersectTEAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEAB$intersectTEAB") + if (intersectTEAB) { + return false + } + val intersectTEBC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEBC$intersectTEBC") + if (intersectTEBC) { + return false + } + val intersectTECD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTECD$intersectTECD") + if (intersectTECD) { + return false + } + val intersectTEDE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mCPoint) + LogUtil.i("交点intersectTEDE$intersectTEDE") + if (intersectTEDE) { + return false + } + + val intersectTADE = + isSegmentIntersect(mDPoint, mCPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTADE$intersectTADE") + if (intersectTADE) { + return false + } + val intersectTACD = + isSegmentIntersect(mEPoint, mDPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTACD$intersectTACD") + if (intersectTACD) { + return false + } + val intersectTABC = + isSegmentIntersect(mFPoint, mEPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTABC$intersectTABC") + if (intersectTABC) { + return false + } + val intersectTAAB = + isSegmentIntersect(mAPoint, mFPoint, mTempPoint, mAPoint) + LogUtil.i("交点intersectTAAB$intersectTAAB") + if (intersectTAAB) { + return false + } + mBPoint.x = x + mBPoint.y = y + isInvalidate = true + } + } + if (isInvalidate) { + invalidate() + return true + } else if (isDrag) { + val transformX = x - mOldX + val transformY = y - mOldY + mCentreX += transformX + mCentreY += transformY + mAPoint.x += transformX + mAPoint.y += transformY + mBPoint.x += transformX + mBPoint.y += transformY + mCPoint.x += transformX + mCPoint.y += transformY + mDPoint.x += transformX + mDPoint.y += transformY + mEPoint.x += transformX + mEPoint.y += transformY + mFPoint.x += transformX + mFPoint.y += transformY + mOldX = x + mOldY = y + invalidate() + return true + } + } + + MotionEvent.ACTION_UP -> { + if (isDrag) { + mPointPullClickListener?.polygonEndDragClick() + isDrag = false + mDashedPaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + invalidate() + } else { + mPointPullClickListener?.polygonPointPullClick() + } + } + } + return super.onTouchEvent(event) + } + + private fun crossProduct(p1: PointBean, p2: PointBean, p3: PointBean): Float { + val x1 = p2.x - p1.x + val y1 = p2.y - p1.y + val x2 = p3.x - p1.x + val y2 = p3.y - p1.y + return x1 * y2 - x2 * y1 + } + + /** + * 判断两æ¡çº¿æ®µæ˜¯å¦ç›¸äº¤ + * https://zhuanlan.zhihu.com/p/644689588 + */ + private fun isSegmentIntersect( + pointBean1: PointBean, pointBean2: PointBean, pointBean3: PointBean, pointBean4: PointBean + ): Boolean { + val d1 = crossProduct(pointBean1, pointBean2, pointBean3) + val d2 = crossProduct(pointBean1, pointBean2, pointBean4) + val d3 = crossProduct(pointBean3, pointBean4, pointBean1) + val d4 = crossProduct(pointBean3, pointBean4, pointBean2) + + return d1 * d2 < 0 && d3 * d4 < 0 + } + + /** + * 是å¦ç‚¹å‡»äº†æŸä¸ªç‚¹ + */ + private fun isClickWherePoint(downX: Float, downY: Float, pointBean: PointBean): Boolean { + mDotBitmap?.apply { + if (downX in pointBean.x - width..pointBean.x + width && downY in pointBean.y - height..pointBean.y + height) { + return true + } + return false + } + return false + } + + fun setOnPolygonViewPointPullClickListener(pointPullClickListener: OnPolygonViewPointPullClickListener) { + mPointPullClickListener = pointPullClickListener + } + + /** + * è®¾ç½®é»˜è®¤çš„å¤§å° + */ + fun initDefaultWidthHeightSize(widthDp: Int = 120, heightDp: Int = 120) { + mOutHideRectWidth = QMUIDisplayHelper.dpToPx(widthDp).toFloat() + mOutHideRectHeight = QMUIDisplayHelper.dpToPx(heightDp).toFloat() + initPoint() + invalidate() + } + + /** + * 设置边框颜色和图片 + */ + fun setColorAndImage( + context: Context, + dashedColorRes: Int = 0, + fillBgColorRes: Int = 0, + locationDrawableRes: Int = 0, + dotDrawableRes: Int = 0 + ) { + var isRefresh = false + if (dashedColorRes > 0) { + mDashedColor = ContextCompat.getColor(context, dashedColorRes) + mDashedPaint.color = mDashedColor + isRefresh = true + } + if (fillBgColorRes > 0) { + mFillBgColor = ContextCompat.getColor(context, fillBgColorRes) + mFillPaint.color = mFillBgColor + isRefresh = true + } + if (locationDrawableRes > 0) { + mLocationBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, locationDrawableRes) + isRefresh = true + } + if (dotDrawableRes > 0) { + mDotBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, dotDrawableRes) + isRefresh = true + } + if (isRefresh) invalidate() + } + + /** + * 获å–中心点 + */ + fun getPolygonCentrePoint() = Point(mCentreX.toInt(), mCentreY.toInt()) + + /** + * 釿–°è®¾ç½®ä¸­å¿ƒç‚¹ + */ + fun setCentreXY(point: Point) { + point.let { + val diffValueX = it.x - mCentreX + val diffValueY = it.y - mCentreY + + mCentreX = it.x.toFloat() + mCentreY = it.y.toFloat() + + mAPoint.apply { + x += diffValueX + y += diffValueY + } + mBPoint.apply { + x += diffValueX + y += diffValueY + } + mCPoint.apply { + x += diffValueX + y += diffValueY + } + mDPoint.apply { + x += diffValueX + y += diffValueY + } + mEPoint.apply { + x += diffValueX + y += diffValueY + } + mFPoint.apply { + x += diffValueX + y += diffValueY + } + isNeedMeasure = false + invalidate() + } + } + + + fun setPolygonABCDEFPoint( + pointCentre: Point, + pointA: Point, + pointB: Point, + pointC: Point, + pointD: Point, + pointE: Point, + pointF: Point + ) { + mAPoint.apply { + x = pointA.x.toFloat() + y = pointA.y.toFloat() + } + mBPoint.apply { + x = pointB.x.toFloat() + y = pointB.y.toFloat() + } + mCPoint.apply { + x = pointC.x.toFloat() + y = pointC.y.toFloat() + } + mDPoint.apply { + x = pointD.x.toFloat() + y = pointD.y.toFloat() + } + mEPoint.apply { + x = pointE.x.toFloat() + y = pointE.y.toFloat() + } + mFPoint.apply { + x = pointF.x.toFloat() + y = pointF.y.toFloat() + } + mCentreX = pointCentre.x.toFloat() + mCentreY = pointCentre.y.toFloat() + invalidate() + } + + /** + * 获å–多边形的æŸä¸€ä¸ªç‚¹ + */ + fun getPolygonABCDEFPoint(wherePoint: Int): Point { + LogUtil.e("getPolygonABCDEFPoint,$mAPoint,$mCentreX") + var point = PointBean() + when (wherePoint) { + POINT_A -> point = mAPoint + POINT_B -> point = mBPoint + POINT_C -> point = mCPoint + POINT_D -> point = mDPoint + POINT_E -> point = mEPoint + POINT_F -> point = mFPoint + } + return Point(point.x.toInt(), point.y.toInt()) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + LogUtil.e("${javaClass.canonicalName}视图销æ¯") + if (null != mLocationBitmap) { + mLocationBitmap?.recycle() + mLocationBitmap = null + } + if (null != mDotBitmap) { + mDotBitmap?.recycle() + mDotBitmap = null + } + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/FencesRectView.kt b/app/src/main/java/com/abbidot/tracker/widget/FencesRectView.kt new file mode 100644 index 0000000..88bddfe --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/FencesRectView.kt @@ -0,0 +1,738 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.* +import android.text.TextUtils +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ImageUtil +import com.abbidot.tracker.util.ViewUtil +import com.abbidot.tracker.widget.FencesPolygonView.Companion.POINT_A +import com.abbidot.tracker.widget.FencesPolygonView.Companion.POINT_B +import com.abbidot.tracker.widget.FencesPolygonView.Companion.POINT_C +import com.abbidot.tracker.widget.FencesPolygonView.Companion.POINT_D +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.abs +import kotlin.math.atan2 +import kotlin.math.cos +import kotlin.math.pow +import kotlin.math.sin +import kotlin.math.sqrt + +/** + *Created by .yzq on 2022/1/22/022. + * @link + * @description:添加围æ çŸ©å½¢ï¼Œåªé’ˆå¯¹å›´æ  + * + * 按以下点组æˆçš„矩形 + * A B + * D C + */ +class FencesRectView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private lateinit var mStrokePaint: Paint + private lateinit var mFillPaint: Paint + + private lateinit var mRectF: RectF + + //矩形的宽高 + private var mRectWidth = 0f + private var mRectHeight = 0f + private var mRectLeft = 0f + private var mRectRight = 0f + private var mRectTop = 0f + private var mRectBottom = 0f + + //ä¸­å¿ƒåæ ‡ç‚¹ + private var mCentreX = 0f + private var mCentreY = 0f + + //定ä½å›¾æ ‡ + private var mLocationBitmap: Bitmap? = null + private var mDotBitmap: Bitmap? = null + private var mZoomBitmap: Bitmap? = null + private var mRotateBitmap: Bitmap? = null + + private var mDashedColor = 0 + private var mFillBgColor = 0 + + private var isRotate = false + private var isScale = false + private var isDrag = false + private var mOldX = 0f + private var mOldY = 0f + + //æ˜¯å¦æ˜¾ç¤ºè·ç¦» + private var isShowDistance = true + private var mRectWidthDistanceText = "" + private var mRectHeightDistanceText = "" + private lateinit var mTextPaint: Paint + + //旋转的角度(真实的角度å•ä½) + private var mRotateAngle = 0.0 + + //计算画布移动åŽï¼Œç‚¹å‡»æ—‹è½¬å›¾ç‰‡æŒ‰é’®ä¸€å¼€å§‹çš„åæ ‡è§’度,ç»è¿‡å¹³ç§»å标轴算出 + private var mStartRotateAngle = 0.0 + + //是å¦éœ€è¦æµ‹é‡ï¼Œé˜²æ­¢ç™¾åº¦åœ°å›¾ä½¿ç”¨ä¼šæ‰§è¡ŒonMeasure/地图页é¢ä¸Šä¸‹æ»‘åŠ¨é‡æ–°å¸ƒå±€æ‰§è¡ŒonMeasure + private var isNeedMeasure = true + + private var mRotateScaleClickListener: OnRectViewRotateScaleClickListener? = null + + constructor(context: Context) : super(context) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + private fun init(context: Context) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context +// mRectWidth = QMUIDisplayHelper.dpToPx(100).toFloat() +// mRectHeight = QMUIDisplayHelper.dpToPx(100).toFloat() + + mStrokePaint = Paint() + LogUtil.e("${javaClass.canonicalName}------------------->>>init") + mStrokePaint.style = Paint.Style.STROKE + mStrokePaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + //虚线长度 + val dashPathWidth = QMUIDisplayHelper.dpToPx(6).toFloat() + mStrokePaint.pathEffect = DashPathEffect(floatArrayOf(dashPathWidth, dashPathWidth), 0f) + mStrokePaint.color = ContextCompat.getColor(mContext, R.color.select_color) + + mFillPaint = Paint() + mFillPaint.style = Paint.Style.FILL + mFillPaint.color = ContextCompat.getColor(mContext, R.color.select_color4) + + mTextPaint = Paint() + val tf = + ViewUtil.instance.setTypeface(context, context.getString(R.string.number_din_cond_font)) + mTextPaint.typeface = tf + mTextPaint.textSize = QMUIDisplayHelper.sp2px(context, 14).toFloat() + mTextPaint.color = ContextCompat.getColor(mContext, R.color.black) + + mDotBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fence_dot_svg) + mLocationBitmap = + ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fences_zone_gps_svg) + mZoomBitmap = + ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fence_rect_zoom_svg) + mRotateBitmap = + ImageUtil.getBitmapFromDrawableAndSvg(context, R.drawable.icon_fence_rect_rotate_svg) + + mRectF = RectF() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + LogUtil.e("${javaClass.canonicalName}:onMeasure---mWidth=$mWidth,mHeight=$mHeight") + if (isNeedMeasure) { + mCentreX = mWidth / 2f + mCentreY = mHeight / 2f + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + LogUtil.e("onAttachedToWindow,${javaClass.canonicalName}视图显示") + } + + override fun onDraw(canvas: Canvas) { + LogUtil.e("${javaClass.canonicalName}------>onDraw") + super.onDraw(canvas) + + canvas.apply { + save() + //åªä¸ºæ—‹è½¬æ‰ç§»åЍ忠‡è½´ + translate(mCentreX, mCentreY) + rotate(mRotateAngle.toFloat()) + startDraw(this) + restore() + // val a = getRectABCDXYPoint(FencesRectView.POINT_A) + // drawCircle(a[0], a[1], 50f, mTextPaint) + // val b = getRectABCDXYPoint(FencesRectView.POINT_B) + // drawCircle(b[0], b[1], 50f, mTextPaint) + // val c = getRectABCDXYPoint(FencesRectView.POINT_C) + // drawCircle(c[0], c[1], 50f, mTextPaint) + // val d = getRectABCDXYPoint(FencesRectView.POINT_D) + // drawCircle(d[0], d[1], 50f, mTextPaint) + } + } + + private fun startDraw(canvas: Canvas) { + LogUtil.e("startDraw:mRotateAngle=$mRotateAngle") + + if (mRectWidth == 0f && mRectHeight == 0f) return + + mRectLeft = -mRectWidth / 2 + mRectTop = -mRectHeight / 2 + mRectRight = mRectLeft + mRectWidth + mRectBottom = mRectTop + mRectHeight + + mLocationBitmap?.apply { + val locationImageHalfWidth = width / 2f + val locationImageHalfHeight = height / 2f + val left = -locationImageHalfWidth + val top = -locationImageHalfHeight + canvas.drawBitmap(this, left, top, null) + } + + mRectF.apply { + left = mRectLeft + top = mRectTop + right = mRectRight + bottom = mRectBottom + } + canvas.drawRect(mRectF, mFillPaint) + canvas.drawRect(mRectF, mStrokePaint) + + mDotBitmap?.apply { + val dotImageHalfWidth = width / 2f + val dotImageHalfHeight = height / 2f + canvas.drawBitmap( + this, mRectLeft - dotImageHalfWidth, mRectTop - dotImageHalfHeight, null + ) + canvas.drawBitmap( + this, mRectRight - dotImageHalfWidth, mRectTop - dotImageHalfHeight, null + ) + canvas.drawBitmap( + this, mRectLeft - dotImageHalfWidth, mRectBottom - dotImageHalfHeight, null + ) + if (!isShowDistance) { + canvas.drawBitmap( + this, mRectRight - dotImageHalfWidth, mRectBottom - dotImageHalfHeight, null + ) + } + } + + + if (isShowDistance) { + + mRotateBitmap?.apply { + val startX = mRectLeft + mRectWidth / 2 + canvas.drawLine( + startX, + mRectTop, + startX, + mRectTop - QMUIDisplayHelper.dpToPx(3).toFloat(), + mStrokePaint + ) + canvas.drawBitmap( + this, + startX - width / 2, + mRectTop - height - QMUIDisplayHelper.dpToPx(2).toFloat(), + null + ) + mStartRotateAngle = atan2(mRectTop - height, startX - width / 2) / Math.PI * 180 + } + mZoomBitmap?.apply { + canvas.drawBitmap( + this, mRectRight - width / 2, mRectBottom - height / 2, null + ) + } + + canvasDistanceText(canvas) + } + } + + private fun canvasDistanceText(canvas: Canvas) { + val fontMetrics = mTextPaint.fontMetrics + if (!TextUtils.isEmpty(mRectWidthDistanceText)) { + //文字宽度 + val textWidth = mTextPaint.measureText(mRectWidthDistanceText) + //文字高度 + val textHeight = fontMetrics.bottom - fontMetrics.top + + val y = if (mHeight / 2 - mRectHeight / 2 > textHeight) { + mRectHeight / 2 + textHeight + } else { + mHeight / 2 - textHeight / 6 + } + canvas.drawText( + mRectWidthDistanceText, -(textWidth / 2), y, mTextPaint + ) + } + + if (!TextUtils.isEmpty(mRectHeightDistanceText)) { + //文字宽度 + val textWidth = mTextPaint.measureText(mRectHeightDistanceText) + //文字高度 + val textHeight = fontMetrics.bottom - fontMetrics.top + + val x = if (mWidth / 2 - mRectWidth / 2 > textWidth) { + mRectWidth / 2 + (textHeight / 6) + } else { + mWidth / 2 - textWidth - textHeight / 6 + } + canvas.drawText( + mRectHeightDistanceText, x, (textHeight / 2), mTextPaint + ) + } + } + + fun setOnRectViewRotateScaleClickListener(onRectViewRotateScaleClickListener: OnRectViewRotateScaleClickListener) { + mRotateScaleClickListener = onRectViewRotateScaleClickListener + } + + /** + * 设置默认长宽大å°,åˆå§‹åŒ–使用 + */ + fun initDefaultWidthHeight(width: Int = 100, height: Int = 100) { + if (width <= 0 && height <= 0) return + mRectWidth = QMUIDisplayHelper.dpToPx(width).toFloat() + mRectHeight = QMUIDisplayHelper.dpToPx(height).toFloat() + mRotateAngle = 0.0 + postInvalidate() + } + + /** + * 设置显示的è·ç¦» + */ + fun setShowDisDistance(widthDistance: String, heightDistance: String) { + mRectWidthDistanceText = widthDistance + mRectHeightDistanceText = heightDistance + postInvalidate() + } + + /** + * 设置éšè—显示è·ç¦»æ–‡å­— + */ + fun setShowHideDisDistance(show: Boolean) { + if (isShowDistance != show) { + isShowDistance = show + postInvalidate() + } + } + + /** + * 设置边框颜色和图片 + */ + fun setColorAndImage( + context: Context, + dashedColorRes: Int = 0, + fillBgColorRes: Int = 0, + locationDrawableRes: Int = 0, + zoomDrawableRes: Int = 0, + dotDrawableRes: Int = 0, + rotateDrawableRes: Int = 0 + ) { + var isRefresh = false + if (dashedColorRes > 0) { + mDashedColor = ContextCompat.getColor(context, dashedColorRes) + mStrokePaint.color = mDashedColor + isRefresh = true + } + if (fillBgColorRes > 0) { + mFillBgColor = ContextCompat.getColor(context, fillBgColorRes) + mFillPaint.color = mFillBgColor + isRefresh = true + } + + if (locationDrawableRes > 0) { + mLocationBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, locationDrawableRes) + isRefresh = true + } + if (zoomDrawableRes > 0) { + mZoomBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, zoomDrawableRes) + isRefresh = true + } + if (rotateDrawableRes > 0) { + mRotateBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, rotateDrawableRes) + isRefresh = true + } + if (dotDrawableRes > 0) { + mDotBitmap = ImageUtil.getBitmapFromDrawableAndSvg(context, dotDrawableRes) + isRefresh = true + } + if (isRefresh) invalidate() + } + + private fun getCentreX() = mCentreX + private fun getCentreY() = mCentreY + + /** + * 获å–中心点 + */ + fun getRectCentrePoint() = Point(mCentreX.toInt(), mCentreY.toInt()) + + /** + * 获å–矩形4个点的æŸä¸€ä¸ªç‚¹ + */ + fun getRectABCDPoint(wherePoint: Int): Point { + val points = getRectABCDXYPoint(wherePoint) + return Point(points[0].toInt(), points[1].toInt()) + } + + /** + * 返回矩形第哪个点(A,B,C,Dï¼‰çš„åæ ‡ + * A **** B + * D **** C + */ + private fun getRectABCDXYPoint(wherePoint: Int): FloatArray { + when (wherePoint) { + POINT_A -> { + val leftTop = getRotateXY(mRectLeft, mRectTop, mRotateAngle) + return floatArrayOf( + leftTop[0] + mCentreX, leftTop[1] + mCentreY + ) + } + + POINT_B -> { + val rightTop = getRotateXY(mRectRight, mRectTop, mRotateAngle) + return floatArrayOf( + rightTop[0] + mCentreX, rightTop[1] + mCentreY + ) + } + + POINT_D -> { + val leftBottom = getRotateXY(mRectLeft, mRectBottom, mRotateAngle) + return floatArrayOf( + leftBottom[0] + mCentreX, leftBottom[1] + mCentreY + ) + } + + POINT_C -> { + val rightBottom = getRotateXY(mRectRight, mRectBottom, mRotateAngle) + return floatArrayOf( + rightBottom[0] + mCentreX, rightBottom[1] + mCentreY + ) + } + } + return floatArrayOf( + 0f, 0f + ) + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent?): Boolean { + + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + val x = event.x + val y = event.y + LogUtil.e("action_down,x=$x,y=$y") + mRotateBitmap?.apply { + LogUtil.e("x2=${width / 2f + mCentreX},x1=${-width / 2f + mCentreX}") + LogUtil.e("y2=${-(mRectHeight / 2 + height) + mCentreY},aaa=${-mRectHeight / 2 + mCentreY}") + + if (isClickRotate(x, y, mRotateAngle)) { + LogUtil.e("点击了旋转") + isRotate = true + return true + } + } + //æ˜¯å¦æŒ‰ä¸‹äº†æ”¾å¤§ç¼©å°æŒ‰é’® + mZoomBitmap?.apply { + if (!isRotate && isClickScale(x, y, mRotateAngle)) { + isScale = true + LogUtil.e("点击了放大缩å°") + mOldX = x + mOldY = y + return true + } + } + + //因为有旋转角度,需è¦å‡åŽ»ä¸­å¿ƒ + if (mRectF.contains(x - mCentreX, y - mCentreY)) { + isDrag = true + mOldX = x + mOldY = y + mStrokePaint.strokeWidth = QMUIDisplayHelper.dpToPx(3).toFloat() + mRotateScaleClickListener?.rectStartDragClick() + invalidate() + return true + } + } + + MotionEvent.ACTION_MOVE -> { + val x = event.x + val y = event.y + LogUtil.e("action_move,x=$x,y=$y,oldX=$mOldX,oldY=$mOldY") + if (isRotate) { + //计算手指按下画布移动åŽçš„x,y角度 + val transformAngle = atan2(y - mCentreY, x - mCentreX) / Math.PI * 180 + //è®¡ç®—éœ€è¦æ—‹è½¬çš„角度 + mRotateAngle = transformAngle - mStartRotateAngle + LogUtil.e("mRotateAngle=$mRotateAngle") + invalidate() + return true + } else if (isScale) { + LogUtil.e("mRectWidth=$mRectWidth,mRectHeight=$mRectHeight,x - oldX=${x - mOldX},y - oldY=${y - mOldY}") + val transformX = x - mOldX + val transformY = y - mOldY + //é™åˆ¶ç¼©æ”¾ä¸èƒ½å¤ªå° + if (mRectWidth + transformX < mLocationBitmap!!.height || mRectHeight + transformY < mLocationBitmap!!.height) { + return true + } + mRectWidth += transformX + mRectHeight += transformY + mOldX = x + mOldY = y + invalidate() + return true + } else if (isDrag) { + val transformX = x - mOldX + val transformY = y - mOldY + mCentreX += transformX + mCentreY += transformY + mOldX = x + mOldY = y + invalidate() + return true + } + } + + MotionEvent.ACTION_UP -> { + if (isRotate) { + mRotateScaleClickListener?.rectRotateClick() + isRotate = false + } + if (isScale) { + mRotateScaleClickListener?.rectScaleClick() + isScale = false + } + if (isDrag) { + mRotateScaleClickListener?.rectEndDragClick() + isDrag = false + mStrokePaint.strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + invalidate() + } + } + } + return super.onTouchEvent(event) + } + + /** + * @param x æ˜¯åæ ‡è½´ç§»åŠ¨ä»¥ï¼ˆmCentreX,mCentreYï¼‰åŽŸç‚¹çš„åæ ‡ + * @param y + * 获å–以mCentreXã€mCentreYä¸ºåŽŸç‚¹çš„åæ ‡è½´è¿›è¡Œæ—‹è½¬åŽçš„XYåæ ‡ + */ + private fun getRotateXY(x: Float, y: Float, rotate: Double): FloatArray { + //Math.toRadians(double angdeg) 角度转化为弧度 + //Math.toDegrees(Math.PI/2);弧度转化为角度 (π/2的角度值) + val curAngle = atan2(y, x) / Math.PI * 180 + val sumAngle = curAngle + rotate + //将角度化为弧度 +// val angle = Math.PI / 180 * sumAngle + val angle = Math.toRadians(sumAngle) + //åˆå§‹å标与中点形æˆçš„直线长度ä¸ç®¡æ€Žä¹ˆæ—‹è½¬éƒ½æ˜¯ä¸ä¼šå˜çš„ï¼Œç”¨å‹¾è‚¡å®šç†æ±‚出然åŽå°†å…¶ä½œä¸ºæ–œè¾¹ + val c = sqrt(x.pow(2) + y.pow(2)) + //斜边乘sin值等于å³å¯æ±‚出yåæ ‡ + val a = sin(angle) * c + //斜边乘cos值等于å³å¯æ±‚出xåæ ‡ + val b = cos(angle) * c + //ç›®å‰çš„xyåæ ‡æ˜¯ç›¸å¯¹äºŽå›¾ç‰‡ä¸­ç‚¹ä¸ºåŽŸç‚¹çš„åæ ‡è½´ + return floatArrayOf((b).toFloat(), (a).toFloat()) + } + + /** + * 是å¦ç‚¹å‡»æŒ‰ä¸‹äº†æ—‹è½¬ï¼ŒæŒ‰ç…§ç§»åŠ¨äº†åæ ‡è½´åŽŸç‚¹ï¼ˆmCentreX,mCentreY)计算åˆå§‹åæ ‡ + */ + private fun isClickRotate(clickX: Float, clickY: Float, rotate: Double): Boolean { + var x1 = -(mRectWidth / 2 - mRotateBitmap!!.width / 2) + var x2 = (mRectWidth / 2 - mRotateBitmap!!.width / 2) + var y1 = -(mRectHeight / 2 + mRotateBitmap!!.height + mRotateBitmap!!.width) + var y2 = -(mRectHeight / 2 - mRotateBitmap!!.height) + val minX = getRotateXY(x1, y1, rotate) + val maxX = getRotateXY(x2, y2, rotate) + x1 = minX[0] + x2 = maxX[0] + if (minX[0] > maxX[0]) { + x1 = maxX[0] + x2 = minX[0] + } + y1 = minX[1] + y2 = maxX[1] + if (minX[1] > maxX[1]) { + y1 = maxX[1] + y2 = minX[1] + } + + //å¤„ç†æ—‹è½¬åˆ°æŸä¸ªè§’åº¦æ—¶ï¼Œæ—‹è½¬å›¾ç‰‡æŒ‰é’®ä¼šè¶…å‡ºåæ ‡èŒƒå›´å†…,ä¸åœ¨å¯ç‚¹å‡»å标范围内,把å¯ç‚¹å‡»çš„åæ ‡èŒƒå›´æ‰©å¤§ + if (abs(x2 - x1) < mRotateBitmap!!.height) { + if (x2 > 0) { + x2 += mRotateBitmap!!.height + } else { + x1 -= mRotateBitmap!!.height + } + } + if (abs(y2 - y1) < mRotateBitmap!!.height) { + if (y2 > 0) { + y2 += mRotateBitmap!!.height + } else { + y1 -= mRotateBitmap!!.height + } + } + + val transformX = clickX - mCentreX + val transformY = clickY - mCentreY + + if (transformX in x1..x2 && transformY in y1..y2) { + return true + } + return false + } + + /** + * 是å¦ç‚¹å‡»æŒ‰ä¸‹äº†æ”¾å¤§ç¼©å°,æŒ‰ç…§ç§»åŠ¨äº†åæ ‡è½´åŽŸç‚¹ï¼ˆmCentreX,mCentreY)计算åˆå§‹åæ ‡ + */ + private fun isClickScale(clickX: Float, clickY: Float, rotate: Double): Boolean { + var x1 = (mRectWidth / 2 - mZoomBitmap!!.width) + var x2 = (mRectWidth / 2 + mZoomBitmap!!.width) + var y1 = (mRectHeight / 2 - mRotateBitmap!!.height) + var y2 = (mRectHeight / 2 + mRotateBitmap!!.height) + val minX = getRotateXY(x1, y1, rotate) + val maxX = getRotateXY(x2, y2, rotate) + x1 = minX[0] + x2 = maxX[0] + if (minX[0] > maxX[0]) { + x1 = maxX[0] + x2 = minX[0] + } + y1 = minX[1] + y2 = maxX[1] + if (minX[1] > maxX[1]) { + y1 = maxX[1] + y2 = minX[1] + } + + val transformX = clickX - mCentreX + val transformY = clickY - mCentreY + + if (transformX in x1..x2 && transformY in y1..y2) { + return true + } + return false + } + + /** + * 设置显示编辑的矩形(利用å‡è®¾æ–¹å¼) + * é”™è¯¯æ–¹å¼ + fun setRectABCDXYPoint(left: Float, top: Float, right: Float, bottom: Float) { + //å‡è®¾A没有旋转的,原点在矩形中心,正常与x轴的角度135℃ + val noRotateAngle = 135.0 + val rotateAX = left - mCentreX + val rotateAY = top - mCentreY + //计算现在编辑åŽçš„矩形A点的角度 + val curAngle = atan2(rotateAY, rotateAX) / Math.PI * 180 + //计算旋转了多少度 + mRotateAngle = noRotateAngle - curAngle + //åˆå§‹å标与矩形中点形æˆçš„直线长度ä¸ç®¡æ€Žä¹ˆæ—‹è½¬éƒ½æ˜¯ä¸ä¼šå˜çš„ï¼Œç”¨å‹¾è‚¡å®šç†æ±‚出然åŽå°†å…¶ä½œä¸ºæ–œè¾¹ + val c = sqrt(rotateAX.pow(2) + rotateAY.pow(2)) + //将角度化为弧度,计算旋转åŽçš„与x轴的角度,然åŽç®—出长和宽 + val angle = Math.toRadians(curAngle) + //斜边乘sin值等于å³å¯æ±‚出yåæ ‡ + val a = sin(angle) * c + //斜边乘cos值等于å³å¯æ±‚出xåæ ‡ + val b = cos(angle) * c + mRectLeft = (-abs(b)).toFloat() + mRectTop = (-abs(a)).toFloat() + + // mRectWidth = abs(b * 2).toFloat() + mRectWidth = abs(right) - abs(left) + // mRectHeight = abs(a * 2).toFloat() + mRectHeight = abs(bottom) - abs(top) + + mRectRight = mRectWidth / 2 + mRectBottom = mRectHeight / 2 + + isEdit = true + + LogUtil.e("ç¼–è¾‘çš„åæ ‡($mRectLeft,$mRectTop),($mRectRight,$mRectBottom),($mCentreX,$mCentreY)") + postInvalidate() + } */ + + fun setRectABCDXYPoint( + pointCentre: Point, pointA: Point, pointB: Point, pointC: Point, pointD: Point + ) { + mCentreX = pointCentre.x.toFloat() + mCentreY = pointCentre.y.toFloat() + //利用å±å¹•çš„åæ ‡ç³»æ ¹æ®å‹¾è‚¡å®šç†ç®—出矩形的边长,A点和Dç‚¹ä¸Žåæ ‡è½´ç»„æˆä¸€ä¸ªä¸‰è§’å½¢ + mRectHeight = sqrt( + (abs(pointA.x - pointD.x).toFloat()).pow(2) + (abs(pointD.y - pointA.y).toFloat()).pow(2) + ) + //A点和Bç‚¹ä¸Žåæ ‡è½´ç»„æˆä¸€ä¸ªä¸‰è§’å½¢ + mRectWidth = sqrt( + (abs(pointB.x - pointA.x).toFloat()).pow(2) + (abs(pointB.y - pointA.y).toFloat()).pow(2) + ) + + val rotateAX = pointA.x - mCentreX + val rotateAY = pointA.y - mCentreY + //计算现在编辑åŽçš„矩形A点与xè½´å½¢æˆçš„角度 + val curAngle = atan2(rotateAY, rotateAX) / Math.PI * 180 + + //åˆå§‹å标与矩形中点形æˆçš„直线长度ä¸ç®¡æ€Žä¹ˆæ—‹è½¬éƒ½æ˜¯ä¸ä¼šå˜çš„ï¼Œç”¨å‹¾è‚¡å®šç†æ±‚出然åŽå°†å…¶ä½œä¸ºæ–œè¾¹ +// val c = sqrt(rotateAX.pow(2) + rotateAY.pow(2)) + //将角度化为弧度,计算旋转åŽçš„与x轴的角度,然åŽç®—出长和宽 +// val angle = Math.toRadians(curAngle) + //斜边乘sin值等于å³å¯æ±‚出yåæ ‡ +// val a = sin(angle) * c + //斜边乘cos值等于å³å¯æ±‚出xåæ ‡ +// val b = cos(angle) * c + + //æ ¹æ®çŸ©å½¢é•¿å®½ç®—å‡ºæ²¡æœ‰æ—‹è½¬çš„çŸ©å½¢åæ ‡ + val rectLeft = -mRectWidth / 2 + val rectTop = -mRectHeight / 2 + val rectRight = rectLeft + mRectWidth + val rectBottom = rectTop + mRectHeight + //计算A没有旋转的,原点在矩形中心,正常与x轴的角度 + val noRotateAngle = atan2(rectTop, rectLeft) / Math.PI * 180 + //计算旋转了多少度 + mRotateAngle = curAngle - noRotateAngle + LogUtil.e("没有旋转时åˆå§‹è§’度=$noRotateAngle,当剿—‹è½¬åŽçš„角度curAngle=$curAngle,旋转了多少度mRotateAngle=$mRotateAngle") + LogUtil.e("ç¼–è¾‘çš„åæ ‡($rectLeft,$rectTop),($rectRight,$rectBottom),($mCentreX,$mCentreY)") + postInvalidate() + } + + fun setCentreXY(point: Point) { + point.apply { + if (mCentreX != x.toFloat() || mCentreY != y.toFloat()) { + mCentreX = x.toFloat() + mCentreY = y.toFloat() + isNeedMeasure = false + invalidate() + } + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + LogUtil.e("onDetachedFromWindow,${javaClass.canonicalName}视图销æ¯") + if (null != mDotBitmap) { + mDotBitmap?.recycle() + mDotBitmap = null + } + if (null != mLocationBitmap) { + mLocationBitmap?.recycle() + mLocationBitmap = null + } + if (null != mRotateBitmap) { + mRotateBitmap?.recycle() + mRotateBitmap = null + } + if (null != mZoomBitmap) { + mZoomBitmap?.recycle() + mZoomBitmap = null + } + } +} + diff --git a/app/src/main/java/com/abbidot/tracker/widget/HorizontalBarChartView.kt b/app/src/main/java/com/abbidot/tracker/widget/HorizontalBarChartView.kt new file mode 100644 index 0000000..c546e4a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/HorizontalBarChartView.kt @@ -0,0 +1,260 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.abs + +/** + *Created by .yzq on 2024/1/3/003. + * @link + * @description: + */ +class HorizontalBarChartView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private val mXAxis = mutableListOf("00 Min", "240", "480", "720", "960", "1200", "1440") + private var mYAxis = mutableListOf("Fr", "Th", "We", "Tu", "Mo", "Su", "Today") + + //æ¯ä¸ªåœ†æŸ±çš„宽度 + private var mBarHeight = 0f + + private var mRadius = 0f + private var mData: MutableList? = null + + //æ¯ä¸ªæ•°å€¼1所需è¦ã€å ç”¨çš„高度 + private var mValueHeight = 0f + private var mMaxYAxisValue = 24 * 60 + private var mMaxValue = 0 + + private lateinit var mPaint: Paint + private lateinit var mTextPaint: Paint + private lateinit var mMaxPaint: Paint + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + //动画时长(毫秒) + private val mAnimatorDuration = 1000L + + private var mAxisTextColor = 0 + private var mBarValueColor = 0 + private var mBarMaxValueColor = 0 + private var mBarMaxValueTextColor = 0 + private var mBarValueTextColor = 0 + private var mBarValueBgColor = 0 + + //转æ¢å°æ—¶ + private var mConvertHour = false + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + mBarHeight = QMUIDisplayHelper.dpToPx(18).toFloat() + mRadius = QMUIDisplayHelper.dpToPx(8).toFloat() + + mPaint = Paint().apply { + color = mBarValueBgColor + } + mTextPaint = Paint().apply { + color = mAxisTextColor + textSize = QMUIDisplayHelper.sp2px(mContext, 10).toFloat() + } + mMaxPaint = Paint().apply { + color = mBarMaxValueColor + } + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mAxisTextColor = ContextCompat.getColor(context, R.color.select_color3) + mBarValueColor = ContextCompat.getColor(context, R.color.green_color1) + mBarMaxValueColor = ContextCompat.getColor(context, R.color.select_color) + mBarMaxValueTextColor = ContextCompat.getColor(context, R.color.select_color2) + mBarValueTextColor = ContextCompat.getColor(context, R.color.block_color2) + mBarValueBgColor = ContextCompat.getColor(context, R.color.dark_color) + return + } + + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.HorizontalBarChartView) + mAxisTextColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_axis_text_color, + ContextCompat.getColor(context, R.color.select_color3) + ) + mBarValueColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_value_color, + ContextCompat.getColor(context, R.color.green_color1) + ) + mBarMaxValueColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_max_value_color, + ContextCompat.getColor(context, R.color.select_color) + ) + mBarMaxValueTextColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_max_value_text_color, + ContextCompat.getColor(context, R.color.select_color2) + ) + mBarValueTextColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_value_text_color, + ContextCompat.getColor(context, R.color.block_color2) + ) + mBarValueBgColor = typedArray.getColor( + R.styleable.HorizontalBarChartView_bar_value_bg_color, + ContextCompat.getColor(context, R.color.dark_color) + ) + typedArray.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + drawBar(this) + } + } + + private fun drawBar(canvas: Canvas) { + val fontMetrics = mTextPaint.fontMetrics // 获å–å­—ä½“æŒ‡æ ‡ä¿¡æ¯ + val textHeight = abs((fontMetrics.top - fontMetrics.bottom))// 计算文本高度 + + val xSize = mXAxis.size + //å–æœ€é•¿çš„字体宽度 + var xTxtWith = mTextPaint.measureText(mXAxis[xSize - 1]) + for (i in 0 until xSize) { + val cTxtWith = mTextPaint.measureText(mXAxis[i]) + if (xTxtWith < cTxtWith) xTxtWith = cTxtWith + } + val xSpace = (mWidth - textHeight / 2 - xTxtWith * xSize) / (xSize - 1) + mTextPaint.color = mAxisTextColor + for (i in 0 until xSize) { + canvas.drawText( + mXAxis[i], xSpace * i + xTxtWith * i + textHeight / 2, mHeight.toFloat(), mTextPaint + ) + } + + val ySize = mYAxis.size + val ySpace = (mHeight - textHeight * ySize) / (ySize + 1) + for (i in 0 until ySize) { + canvas.drawText( + mYAxis[i], 0f, mHeight - (ySpace * (i + 1)) - textHeight * (i + 1), mTextPaint + ) + } + + mData?.apply { + if (size > 0) { + + val xWith = mWidth - xTxtWith + mValueHeight = xWith / mMaxYAxisValue + + val left = xTxtWith + for (i in 0 until size) { + val value = this[i] + val top = + mHeight - (ySpace * (i + 1)) - mBarHeight / 2 - textHeight * (i + 1) - textHeight / 4 + val right = value * mValueHeight + textHeight / 4 + val bottom = top + mBarHeight + + mPaint.color = mBarValueBgColor + canvas.drawRoundRect( + left, top, mWidth.toFloat(), bottom, mRadius, mRadius, mPaint + ) + + if (value < 0) continue + + //防止动画从x轴原点以下开始出现 + val newRight = with(right * mAnimatedPercent) { + if (this < left) left + value * mValueHeight * mAnimatedPercent + else this + } + + if (value == mMaxValue) { + canvas.drawRoundRect( + left, top, newRight, bottom, mRadius, mRadius, mMaxPaint + ) + } else { + mPaint.color = mBarValueColor + canvas.drawRoundRect( + left, top, newRight, bottom, mRadius, mRadius, mPaint + ) + } + //åŠ¨ç”»ç»“æŸæ˜¾ç¤ºæ–‡å­— + if (mAnimatedPercent == 1f) { +// mTextPaint.color = mBarMaxValueTextColor + mTextPaint.color = mBarValueTextColor + val string = if (mConvertHour) { + val h = value / 60 + val m = value % 60 + "${h}hr ${m}min" + } else { + "$value min" + } + val textWith = mTextPaint.measureText(string) + canvas.drawText( + string, + mWidth - textWith - textHeight / 3f, + top + textHeight / 1.1f, + mTextPaint + ) + } + } + } + } + } + + + fun setData( + data: MutableList, yAxis: MutableList? = null, convertHour: Boolean = false + ) { + if (null != yAxis) mYAxis = yAxis + mConvertHour = convertHour + val size = data.size + mMaxValue = 0 + for (i in 0 until size) { + if (data[i] > mMaxValue) { + mMaxValue = data[i] + } + } + //æ ¹æ®y轴最大值决定x轴的值 + mMaxYAxisValue = (mMaxValue / 60 + 1) * 60 + val step = mMaxYAxisValue / 6 + for (i in 1..6) { + mXAxis[i] = (i * step).toString() + } + + mData = data + ViewUtil.instance.setValueAnimator(0f, 100f, mAnimatorDuration) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/InviteFamilyAnimateView.kt b/app/src/main/java/com/abbidot/tracker/widget/InviteFamilyAnimateView.kt new file mode 100644 index 0000000..fd6ca05 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/InviteFamilyAnimateView.kt @@ -0,0 +1,415 @@ +package com.abbidot.tracker.widget + +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Path +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.core.animation.doOnEnd +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ImageUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.abs + + +/** + *Created by .yzq on 2024/2/7/007. + * @link + * @description: + */ +class InviteFamilyAnimateView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private var mScreenWidth = 0 + + //最大圆的åŠå¾„ + private var mMaxCircleRadius = 0f + + //邮件矩形长度 + private val mMailRectLength = QMUIDisplayHelper.dpToPx(100) + + //最大图片大长度 + private val mMaxImageLength = QMUIDisplayHelper.dpToPx(50) + + //黄色å字长度 + private val mYellowCrossLength = QMUIDisplayHelper.dpToPx(18) + + //底部矩形露出的长度 + private val mOutPartRectLength = ((mMailRectLength / 2f) / 3f) * 2 + + private lateinit var mCirclePaint: Paint + private lateinit var mMailPaint: Paint + private lateinit var mImagePaint: Paint + + private lateinit var mMailPath: Path + private lateinit var mImagePath: Path + + private lateinit var mFirstRectF: RectF + + // private lateinit var mSecondRectF: RectF + private lateinit var mRectF: RectF + + private var mBitmap1: Bitmap? = null + private var mBitmap2: Bitmap? = null + private var mBitmap3: Bitmap? = null + private var mBitmap4: Bitmap? = null + + private var mBitmap1Angle = -120f + private var mBitmap2Angle = -35f + private var mBitmap3Angle = -75f + private var mBitmap4Angle = -135f + + private var mBitmap1RotationAnimator: ValueAnimator? = null + private var mBitmap2RotationAnimator: ValueAnimator? = null + private var mBitmap3RotationAnimator: ValueAnimator? = null + private var mBitmap4RotationAnimator: ValueAnimator? = null + private var isStartAnim = false + + constructor(context: Context) : super(context) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + private fun init(context: Context) { + mContext = context + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mScreenWidth = QMUIDisplayHelper.getScreenWidth(context) + + mCirclePaint = Paint() + mMailPaint = Paint() + mImagePaint = Paint() + + mMailPath = Path() + mImagePath = Path() + + mFirstRectF = RectF() + mRectF = RectF() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + mBitmap1 = + ImageUtil.getBitmapFromDrawableAndSvg(mContext, R.drawable.invite_family_animate_image1) + mBitmap2 = + ImageUtil.getBitmapFromDrawableAndSvg(mContext, R.drawable.invite_family_animate_image2) + mBitmap3 = + ImageUtil.getBitmapFromDrawableAndSvg(mContext, R.drawable.invite_family_animate_image3) + mBitmap4 = + ImageUtil.getBitmapFromDrawableAndSvg(mContext, R.drawable.invite_family_animate_image4) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = maxOf(measuredWidth, mScreenWidth) + mMaxCircleRadius = mWidth / 2f + //最大åŠåœ†åŠå¾„+露出最大图片/2+底部矩形露出部分长度 + mHeight = (mMaxCircleRadius + mMaxImageLength / 2 + mOutPartRectLength).toInt() + setMeasuredDimension(mWidth, mHeight) + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + LogUtil.e("InviteFamilyAnimateView----------------onSizeChanged") + super.onSizeChanged(w, h, oldw, oldh) + } + + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + LogUtil.e("InviteFamilyAnimateView----------------onLayout") + super.onLayout(changed, left, top, right, bottom) + if (!isStartAnim) planetRotationAnimation() + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + drawCircle(this) + drawMail(this) + drawImage(this) + } + } + + private fun drawCircle(canvas: Canvas) { + canvas.apply { + mFirstRectF.apply { + left = 0f + top = mMaxImageLength / 2f + right = mWidth.toFloat() + bottom = mMaxCircleRadius * 2 + mMaxImageLength / 2f + } + mCirclePaint.color = ContextCompat.getColor(mContext, R.color.block_color) + drawArc(mFirstRectF, -180f, 180f, true, mCirclePaint) + + val secondCircleSpace = mMaxCircleRadius / 4 + mRectF.apply { + left = mFirstRectF.left + secondCircleSpace + top = mFirstRectF.top + secondCircleSpace + right = mFirstRectF.right - secondCircleSpace + bottom = mFirstRectF.bottom - secondCircleSpace + } + mCirclePaint.color = ContextCompat.getColor(mContext, R.color.white_gray_color) + drawArc(mRectF, -180f, 180f, true, mCirclePaint) + + val thirdCircleSpace = secondCircleSpace * 2 + mRectF.apply { + left = mFirstRectF.left + thirdCircleSpace + top = mFirstRectF.top + thirdCircleSpace + right = mFirstRectF.right - thirdCircleSpace + bottom = mFirstRectF.bottom - thirdCircleSpace + } + mCirclePaint.color = ContextCompat.getColor(mContext, R.color.block_color3) + drawArc(mRectF, -180f, 180f, true, mCirclePaint) + } + } + + private fun drawMail(canvas: Canvas) { + val halfWith = mWidth / 2f + val halfMailRectLength = mMailRectLength / 2f + mMailPath.apply { + //画下é¢å¡«å……ç™½è‰²çŸ©å½¢ï¼Œå¡«å……åˆæˆå›¾å½¢çš„空白 + mRectF.apply { + left = halfWith - halfMailRectLength + top = mHeight - halfMailRectLength + right = halfWith + halfMailRectLength + bottom = mHeight - mMailRectLength / 3f + } + mMailPaint.strokeWidth = 0f + mMailPaint.color = ContextCompat.getColor(mContext, R.color.white) + canvas.drawRect(mRectF, mMailPaint) + + //画最上é¢çš„三角形 + moveTo(halfWith, (mHeight - mMailRectLength).toFloat()) + lineTo(mRectF.left, mRectF.top) + lineTo(mRectF.right, mRectF.top) + close() + canvas.drawPath(mMailPath, mMailPaint) + reset() + + //画矩形 + mRectF.apply { + left = halfWith - (halfMailRectLength / 5f) * 4 + top = + mHeight - halfMailRectLength - (halfMailRectLength - (halfMailRectLength / 2.5f)) + right = halfWith + (halfMailRectLength / 5f) * 4 + bottom = mHeight - (halfMailRectLength / 6f) * 2 + } + mMailPaint.color = ContextCompat.getColor(mContext, R.color.select_color) + canvas.drawRect(mRectF, mMailPaint) + + //ç”»å³è¾¹çš„三角形 + moveTo(halfWith + halfMailRectLength, mHeight - halfMailRectLength) + lineTo(halfWith + halfMailRectLength, mHeight.toFloat()) + lineTo(halfWith - halfMailRectLength, mHeight.toFloat()) + close() + mMailPaint.color = ContextCompat.getColor(mContext, R.color.white_color10) + canvas.drawPath(mMailPath, mMailPaint) + reset() + + //画左边的三角形 + moveTo(halfWith - halfMailRectLength, mHeight - halfMailRectLength) + lineTo(halfWith - halfMailRectLength, mHeight.toFloat()) + lineTo(halfWith + halfMailRectLength, mHeight.toFloat()) + close() + mMailPaint.color = ContextCompat.getColor(mContext, R.color.white) + canvas.drawPath(mMailPath, mMailPaint) + reset() + + //画绿色的åå­— + mMailPaint.strokeWidth = AppUtils.dpToPx(2.5f) + mMailPaint.color = ContextCompat.getColor(mContext, R.color.select_color2) + val linStartX1 = halfWith - mYellowCrossLength / 2f + val linStartY1 = mHeight - halfMailRectLength - halfMailRectLength / 6f + //画横线 + canvas.drawLine( + linStartX1, linStartY1, linStartX1 + mYellowCrossLength, linStartY1, mMailPaint + ) + val linStartY2 = linStartY1 - mYellowCrossLength / 2 + //画竖线 + canvas.drawLine( + halfWith, linStartY2, halfWith, linStartY2 + mYellowCrossLength, mMailPaint + ) + } + } + + private fun drawImage(canvas: Canvas) { + val halfWith = mWidth / 2f +// mImagePath.apply { +// moveTo(0f, mMaxCircleRadius + mMaxImageLength / 2f) +// quadTo( +// halfWith, +// -mMaxCircleRadius*2, +// mWidth.toFloat(), +// mMaxCircleRadius + mMaxImageLength / 2f +// ) +// canvas.drawPath(this, mMailPaint) +// reset() +// } + + canvas.apply { + val circleY = mMaxCircleRadius + mMaxImageLength / 2f + + mBitmap1?.let { + val point = Utils.getPointOnCircleArc( + halfWith, circleY, mMaxCircleRadius, mBitmap1Angle.toDouble() + ) + //矫正xè½´ + val checkX = abs(1f / 180f * mBitmap1Angle) + 1 + drawBitmap(it, point[0] - it.width * checkX, point[1] - it.height, null) + } + mBitmap2?.let { + val point = Utils.getPointOnCircleArc( + halfWith, circleY, mMaxCircleRadius, mBitmap2Angle.toDouble() + ) + //矫正xè½´ + val checkX = abs(1f / 180f * mBitmap2Angle) + 1 + drawBitmap(it, point[0] - it.width * checkX, point[1] - it.height, null) + } + + val secondCircleSpace = mMaxCircleRadius / 4 + mBitmap3?.let { + val point = Utils.getPointOnCircleArc( + halfWith, + circleY, + mMaxCircleRadius - secondCircleSpace, + mBitmap3Angle.toDouble() + ) + //矫正xè½´ + val checkX = abs(1f / 180f * mBitmap3Angle) + 1 + drawBitmap(it, point[0] - it.width * checkX, point[1] - it.height, null) + } + + mBitmap4?.let { + val point = Utils.getPointOnCircleArc( + halfWith, + circleY, + mMaxCircleRadius - secondCircleSpace * 2, + mBitmap4Angle.toDouble() + ) + //矫正xè½´ + val checkX = abs(1f / 180f * mBitmap4Angle) + 1 + drawBitmap(it, point[0] - it.width * checkX, point[1] - it.height, null) + } + } + } + + /** + * æ˜Ÿçƒæ—‹è½¬åŠ¨ç”» + */ + private fun planetRotationAnimation() { + isStartAnim = true + mBitmap1RotationAnimator = setRotationAnimator(mBitmap1Angle, 0f).apply { + duration = 10 * 1000 + addUpdateListener { + mBitmap1Angle = it.animatedValue as Float + postInvalidate() + } + } + mBitmap1RotationAnimator?.apply { + if (!isRunning) { + LogUtil.e("木有开始") + start() + } + } + + mBitmap2RotationAnimator = setRotationAnimator(mBitmap2Angle, -180f).apply { + duration = 25 * 1000 + addUpdateListener { + mBitmap2Angle = it.animatedValue as Float +// postInvalidate() + } + } + mBitmap2RotationAnimator?.apply { + if (!isRunning) { + start() + } + } + + mBitmap3RotationAnimator = setRotationAnimator(mBitmap3Angle, -180f).apply { + duration = 20 * 1000 + addUpdateListener { + mBitmap3Angle = it.animatedValue as Float +// postInvalidate() + } + } + mBitmap3RotationAnimator?.apply { + if (!isRunning) { + start() + } + } + + mBitmap4RotationAnimator = setRotationAnimator(mBitmap4Angle, 0f).apply { + duration = 15 * 1000 + addUpdateListener { + mBitmap4Angle = it.animatedValue as Float +// postInvalidate() + } + } + mBitmap4RotationAnimator?.apply { + if (!isRunning) { + start() + } + } + } + + private fun setRotationAnimator(startValue: Float, endValue: Float): ValueAnimator { + return ValueAnimator.ofFloat(startValue, endValue).apply { + repeatMode = ValueAnimator.REVERSE + //匀速å˜åŒ– + interpolator = LinearInterpolator() + doOnEnd { + repeatCount = ValueAnimator.INFINITE + if (startValue == 0f || endValue == -180f) { + setFloatValues(-180f, 0f) + } else { + setFloatValues(0f, -180f) + } + start() + } + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + mBitmap1RotationAnimator?.cancel() + mBitmap2RotationAnimator?.cancel() + mBitmap3RotationAnimator?.cancel() + mBitmap4RotationAnimator?.cancel() + if (null != mBitmap1) { +// mBitmap1?.recycle() + mBitmap1 = null + } + if (null != mBitmap2) { +// mBitmap2?.recycle() + mBitmap2 = null + } + if (null != mBitmap3) { +// mBitmap3?.recycle() + mBitmap3 = null + } + if (null != mBitmap4) { +// mBitmap4?.recycle() + mBitmap4 = null + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/LineChartView.kt b/app/src/main/java/com/abbidot/tracker/widget/LineChartView.kt new file mode 100644 index 0000000..853be47 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/LineChartView.kt @@ -0,0 +1,270 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.DashPathEffect +import android.graphics.LinearGradient +import android.graphics.Paint +import android.graphics.Path +import android.graphics.Shader +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.abs + +/** + *Created by .yzq on 2024/1/4/004. + * @link + * @description: + */ +class LineChartView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private lateinit var mAxisPaint: Paint + private lateinit var mDashedPaint: Paint + private lateinit var mChartPaint: Paint + private lateinit var mGradientPaint: Paint + private lateinit var mPath: Path + private lateinit var mGradientPath: Path + + private var mXAxis = mutableListOf("Today", "30/11", "24/11", "18/11", "12/11", "6/11") + private val mYAxis = mutableListOf(240, 480, 720, 960, 1200, 1440) + private var mMaxYAxisValue = 60 * 24 + + private var mData: MutableList? = null + private var mMaxValue = 0 + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + //动画时长(毫秒) + private val mAnimatorDuration = 2500L + + private var mAxisTextColor = 0 + private var mAxisDashedColor = 0 + private var mLineChartColor = 0 + private var mLineGradientStartColor = 0 + private var mLineGradientEndColor = 0 + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + + mAxisPaint = Paint().apply { + textSize = QMUIDisplayHelper.sp2px(mContext, 10).toFloat() + color = mAxisTextColor + } + mChartPaint = Paint().apply { + color = mLineChartColor + strokeWidth = AppUtils.dpToPx(1f) + style = Paint.Style.STROKE + //æ‹è§’的形状。有三个值å¯ä»¥é€‰æ‹©ï¼šMITER 尖角〠BEVEL 平角和 ROUND 圆角 + strokeJoin = Paint.Join.MITER + } + mDashedPaint = Paint().apply { + color = mAxisDashedColor + style = Paint.Style.STROKE + strokeWidth = AppUtils.dpToPx(0.5f) + } + mGradientPaint = Paint().apply { + style = Paint.Style.FILL + } + + mPath = Path() + mGradientPath = Path() + + //è¦ç”»çš„实线和间隔的长度 + val dashedWidth = QMUIDisplayHelper.dpToPx(4).toFloat() + val dashPathEffect = DashPathEffect(floatArrayOf(dashedWidth, dashedWidth), 0f) + mDashedPaint.pathEffect = dashPathEffect + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mAxisTextColor = ContextCompat.getColor(context, R.color.block_color2) + mAxisDashedColor = ContextCompat.getColor(context, R.color.white_gray_color1) + mLineChartColor = ContextCompat.getColor(context, R.color.select_color) + mLineGradientStartColor = ContextCompat.getColor(context, R.color.white) + mLineGradientEndColor = ContextCompat.getColor(context, R.color.green_color2) + return + } + + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.LineChartView) + mAxisTextColor = typedArray.getColor( + R.styleable.LineChartView_line_axis_text_color, + ContextCompat.getColor(context, R.color.block_color2) + ) + mAxisDashedColor = typedArray.getColor( + R.styleable.LineChartView_line_axis_dashed_color, + ContextCompat.getColor(context, R.color.white_gray_color1) + ) + mLineChartColor = typedArray.getColor( + R.styleable.LineChartView_line_chart_color, + ContextCompat.getColor(context, R.color.select_color) + ) + mLineGradientStartColor = typedArray.getColor( + R.styleable.LineChartView_line_gradient_start_color, + ContextCompat.getColor(context, R.color.white) + ) + mLineGradientEndColor = typedArray.getColor( + R.styleable.LineChartView_line_gradient_end_color, + ContextCompat.getColor(context, R.color.green_color2) + ) + typedArray.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + val fontMetrics = mAxisPaint.fontMetrics // 获å–å­—ä½“æŒ‡æ ‡ä¿¡æ¯ + val textHeight = abs((fontMetrics.top - fontMetrics.bottom))// 计算文本高度 + + val xSize = mXAxis.size + var xTxtMaxWith = 0f + for (i in 0 until xSize) { + val xTxtWith = mAxisPaint.measureText(mXAxis[i]) + if (xTxtMaxWith < xTxtWith) xTxtMaxWith = xTxtWith + } + val xSpace = (mWidth - xTxtMaxWith * xSize) / (xSize - 1) + for (i in 0 until xSize) { + val x = xSpace * i + xTxtMaxWith * i + canvas.drawText( + mXAxis[i], x, mHeight.toFloat() - textHeight / 4, mAxisPaint + ) + } + + val ySize = mYAxis.size + val newYAxisHeight = mHeight - textHeight - textHeight / 3 + val ySpace = (newYAxisHeight - textHeight * ySize) / ySize + for (i in 0 until ySize) { + canvas.drawText( + mYAxis[i].toString(), + 0f, + newYAxisHeight - (ySpace * (i + 1)) - textHeight * i, + mAxisPaint + ) + } + + //虚线个数 + val dashedCount = 16 + val newX = mWidth - xTxtMaxWith + val strokeWidth = mDashedPaint.strokeWidth + val dashedSpace = (newX - strokeWidth * dashedCount) / (dashedCount - 1) + for (i in 0 until dashedCount) { + val x = xTxtMaxWith + i * dashedSpace + strokeWidth * (i + 1) +// canvas.drawLine(x, newY, x, 0f, mDashedPaint) + mPath.moveTo(x, newYAxisHeight) + mPath.lineTo(x, 0f) + canvas.drawPath(mPath, mDashedPaint) + mPath.reset() + } + + mData?.apply { + if (size > 0) { + val dotWidth = mChartPaint.strokeWidth + //value=1所å çš„åƒç´  + val valueHeight = newYAxisHeight / mMaxYAxisValue + //点之间的间隔 + val dotSpace = (newX - dotWidth * size) / (size - 1) + //ä»Žæ•°å€¼åæ ‡today原点开始连线 + mGradientPath.moveTo(xTxtMaxWith, newYAxisHeight) + for (i in 0 until size) { + val value = this[i] + val x = xTxtMaxWith + i * dotSpace + i * dotWidth + //需è¦ä¸Žy轴值对é½ï¼Œè¦åŠ ä¸Šæ–‡å­—çš„é«˜åº¦textHeight / 1.5f + var y = newYAxisHeight - value * valueHeight + y /= mAnimatedPercent + //防止从x轴底部画起 + if (y > newYAxisHeight) y = newYAxisHeight + if (i == 0) mPath.moveTo(x, y) + else mPath.lineTo(x, y) + mGradientPath.lineTo(x, y) + } + //开始忠‡ä¸Žç»“æŸå标是什么方å‘å°±ä»¥ä»€ä¹ˆæ–¹å‘æ¸å˜ + val shader = LinearGradient( + xTxtMaxWith, + //从最高的那个点开始æ¸å˜ + newYAxisHeight - mMaxValue * valueHeight + textHeight / 1.5f, + xTxtMaxWith, + newYAxisHeight, + mLineGradientEndColor, + mLineGradientStartColor, + Shader.TileMode.CLAMP + ) + //最åŽä»Žæ•°å€¼é¡¶ç‚¹åæ ‡é—­åˆ + mGradientPath.lineTo(mWidth.toFloat(), newYAxisHeight) + //画一个闭åˆçš„路径进行æ¸å˜ + mGradientPath.close() + mGradientPaint.shader = shader + canvas.drawPath(mGradientPath, mGradientPaint) + mGradientPath.reset() + + canvas.drawPath(mPath, mChartPaint) + mPath.reset() + } + } + } + + fun setData(data: MutableList, xAxis: MutableList? = null) { + if (null != xAxis) mXAxis = xAxis + val size = data.size + mMaxValue = 0 + for (i in 0 until size) { + if (data[i] > mMaxValue) { + mMaxValue = data[i] + } + } + mData = data + if (mMaxValue == 0) { + mAnimatedPercent = 0f + invalidate() + return + } + //æ ¹æ®x轴最大值决定y轴的值 + mMaxYAxisValue = (mMaxValue / 60 + 1) * 60 + val step = mMaxYAxisValue / 6 + for (i in 0..5) { + mYAxis[i] = (i + 1) * step + } + + ViewUtil.instance.setValueAnimator(0f, 100f, mAnimatorDuration) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt b/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt new file mode 100644 index 0000000..f169f74 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MapDeviceNetView.kt @@ -0,0 +1,135 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseView + + +/** + *Created by .yzq on 2024/10/16/016. + * @link + * @description: + */ +class MapDeviceNetView : BaseView { + + /** + * 网络类型,0没有网络 1蜂çªç½‘ 2wifi + */ + private var mNetType = NO_NET_TYPE + + //ç¡®å®šåœ†çš„å·¦ä¸Šè§’çš„åæ ‡è½´åŽŸç‚¹ä½ç½® + private var mOffsetX = 0 + private var mOffsetY = 0 + private var mWhiteCircleRadius = 0f + + companion object { + const val NO_NET_TYPE = 0 + const val DATA_NET_TYPE = 1 + const val WIFI_NET_TYPE = 2 + } + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + + override fun init(context: Context, attrs: AttributeSet?) { + super.init(context, attrs) + mWhiteCircleRadius = AppUtils.dpToPx(8f) + + mPaint.apply { + strokeWidth = mStrokeWidth + strokeCap = Paint.Cap.ROUND + //å¼€å¯æŠ—é”¯é½¿ + flags = Paint.ANTI_ALIAS_FLAG + } + } + + + override fun startDraw(canvas: Canvas) { + return + if (mNetType == NO_NET_TYPE) return + canvas.apply { + mPaint.apply { + color = ContextCompat.getColor(mContext, R.color.white) + style = Paint.Style.FILL + } + val bigCy = mOffsetY.toFloat() + mWhiteCircleRadius + drawCircle( + mOffsetX.toFloat() + mWhiteCircleRadius, bigCy, mWhiteCircleRadius, mPaint + ) + mPaint.apply { + color = ContextCompat.getColor(mContext, R.color.select_color) + style = Paint.Style.FILL + } + if (mNetType == DATA_NET_TYPE) { + val barNUm = 4 + val twoSpace = (mWhiteCircleRadius * 2 - mStrokeWidth * 6) / 2 + val stopY = mOffsetY.toFloat() + mWhiteCircleRadius + AppUtils.dpToPx(3f) + for (i in 0 until barNUm) { + val startX = mOffsetX.toFloat() + twoSpace + mStrokeWidth * i + mStrokeWidth * i + val startY = if (i == 0) mOffsetY.toFloat() + mWhiteCircleRadius + 5 + else mOffsetY.toFloat() + mWhiteCircleRadius - 5 * i + 2 + drawLine(startX, startY, startX, stopY, mPaint) + } + } else if (mNetType == WIFI_NET_TYPE) { + val cx = mOffsetX.toFloat() + mWhiteCircleRadius + val cy = mOffsetY.toFloat() + mWhiteCircleRadius + mWhiteCircleRadius / 2.3f + drawCircle(cx, cy, mStrokeWidth, mPaint) + mPaint.style = Paint.Style.STROKE + val insideRadius = mWhiteCircleRadius / 2 + val startAngle = -130f + val sweepAngle = 80f + drawArc( + cx - insideRadius, + cy - insideRadius, + cx + insideRadius, + cy + insideRadius, + startAngle, + sweepAngle, + false, + mPaint + ) + val outsideRadius = mWhiteCircleRadius - mStrokeWidth + drawArc( + cx - outsideRadius, + cy - outsideRadius, + cx + outsideRadius, + cy + outsideRadius, + startAngle, + sweepAngle, + false, + mPaint + ) + } + } + } + + fun setOffsetXY(x: Int, y: Int) { + mOffsetX = x + mOffsetY = y + invalidate() + } + + fun setShowNetType(type: Int) { + mNetType = if (type <= NO_NET_TYPE) NO_NET_TYPE + else if (type >= WIFI_NET_TYPE) WIFI_NET_TYPE + else type + invalidate() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MapMarkerInfoView.kt b/app/src/main/java/com/abbidot/tracker/widget/MapMarkerInfoView.kt new file mode 100644 index 0000000..2114676 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MapMarkerInfoView.kt @@ -0,0 +1,133 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Path +import android.text.TextUtils +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2024/8/26/026. + * @link + * @description: + */ +class MapMarkerInfoView : View { + + private lateinit var mContext: Context + private var mOffsetX = 0 + private var mOffsetY = 0 + + //文字和边界的è·ç¦»ã€‚三角形的直线长 + private var mPadding = 0 + + private lateinit var mTextPaint: Paint + private lateinit var mPaint: Paint + + //å°ä¸‰è§’形的path + private lateinit var mTrianglePath: Path + + private var mTimeText = "" + private var mAddressText = "" + + constructor(context: Context) : super(context) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + private fun init(context: Context) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + mPaint = Paint().apply { + color = ContextCompat.getColor(mContext, R.color.white) + } + //å¼€å¯æŠ—é”¯é½¿ + mTextPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = ContextCompat.getColor(mContext, R.color.black) + textSize = QMUIDisplayHelper.sp2px(mContext, 12).toFloat() + } + mPadding = AppUtils.dpToPx(6) + + mTrianglePath = Path() + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + if (TextUtils.isEmpty(mAddressText) && TextUtils.isEmpty(mTimeText)) return + mTrianglePath.apply { + reset() + moveTo((mOffsetX - mPadding).toFloat(), (mOffsetY - mPadding).toFloat()) + lineTo(mOffsetX.toFloat(), mOffsetY.toFloat()) + lineTo((mOffsetX + mPadding).toFloat(), (mOffsetY - mPadding).toFloat()) + close() + } + canvas.apply { + + drawPath(mTrianglePath, mPaint) + + val fontMetrics = mTextPaint.fontMetrics + //文字高度 + val textHeight = fontMetrics.bottom - fontMetrics.top + //时间文字宽度 + val timeTextWith = mTextPaint.measureText(mTimeText) + //åœ°å€æ–‡å­—宽度 + val addressTextWith = mTextPaint.measureText(mAddressText) + val maxTextWith = maxOf(timeTextWith, addressTextWith) + + drawRoundRect( + mOffsetX - maxTextWith / 2 - mPadding, + mOffsetY - textHeight * 2 - mPadding * 2, + mOffsetX + maxTextWith / 2 + mPadding, + mOffsetY.toFloat() - mPadding, + AppUtils.dpToPx(6f), + AppUtils.dpToPx(6f), + mPaint + ) + drawText( + mTimeText, + mOffsetX - timeTextWith / 2, + mOffsetY - textHeight / 2 - mPadding, + mTextPaint + ) + drawText( + mAddressText, + mOffsetX - addressTextWith / 2, + mOffsetY - textHeight / 2 - textHeight - mPadding, + mTextPaint + ) + } + } + + fun setShowText(time: String, address: String) { + mTimeText = time + mAddressText = address + invalidate() + } + + fun setOffsetXY(x: Int, y: Int) { + mOffsetX = x + mOffsetY = y + invalidate() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyBluetoothAnimView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyBluetoothAnimView.kt new file mode 100644 index 0000000..1f8ac2d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyBluetoothAnimView.kt @@ -0,0 +1,194 @@ +package com.abbidot.tracker.widget + +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Path +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2024/6/19/019. + * @link + * @description: + */ +class MyBluetoothAnimView : View { + private lateinit var mContext: Context + private lateinit var mPathPaint: Paint + private lateinit var mArcPaint: Paint + private lateinit var mPath: Path + + private var mWidth = 0 + private var mHeight = 0 + private var mStrokeWidth = 0f + + private lateinit var mLeftSmallRectF: RectF + private lateinit var mLeftBigRectF: RectF + private lateinit var mRightSmallRectF: RectF + private lateinit var mRightBigRectF: RectF + + private lateinit var mValueAnimator: ValueAnimator + + private var mValue = 0 + + //正在动画中 + private var isAnim = false + + //是å¦éœ€è¦åŠ¨ç”» + private var mNeedAnim = true + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(mWidth, mHeight) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mWidth = AppUtils.dpToPx(30) + mHeight = AppUtils.dpToPx(16) + mStrokeWidth = AppUtils.dpToPx(1f) + + mPathPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.data_black_color) + strokeWidth = mStrokeWidth + strokeCap = Paint.Cap.ROUND + strokeJoin = Paint.Join.ROUND + style = Paint.Style.STROKE + } + + mArcPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.block_color2) + strokeWidth = mStrokeWidth + style = Paint.Style.STROKE + } + + initDrawData() + } + + private fun initDrawData() { + val centerX = mWidth / 2 - mPathPaint.strokeWidth / 2 + val centerY = mHeight / 2 - mPathPaint.strokeWidth / 2 + mPath = Path().apply { + moveTo(centerX, 0f) + lineTo(centerX, mHeight.toFloat()) + lineTo(centerX + centerX / 3, centerY + centerY / 2) + lineTo(centerX - centerX / 4, centerY / 2) + + moveTo(centerX, 0f) + lineTo(centerX + centerX / 3, centerY / 2) + lineTo(centerX - centerX / 4, centerY + centerY / 2) + } + + val bigRadius = centerY + val smallRadius = centerY / 2 + val diffRadius = bigRadius - smallRadius + mLeftSmallRectF = RectF( + bigRadius - smallRadius + mPathPaint.strokeWidth / 2, + bigRadius - smallRadius + mPathPaint.strokeWidth / 2, + bigRadius + smallRadius, + bigRadius + smallRadius + ) + mRightSmallRectF = RectF( + mWidth - bigRadius * 2 + diffRadius, + bigRadius - smallRadius + mPathPaint.strokeWidth / 2, + mWidth - diffRadius, + bigRadius + smallRadius + ) + mLeftBigRectF = RectF( + mPathPaint.strokeWidth / 2, mPathPaint.strokeWidth / 2, bigRadius * 2, bigRadius * 2 + ) + mRightBigRectF = RectF( + mWidth - bigRadius * 2 + mPathPaint.strokeWidth / 2, + mPathPaint.strokeWidth / 2, + mWidth.toFloat() - mPathPaint.strokeWidth / 2, + bigRadius * 2 + ) + + //动画 + mValueAnimator = ValueAnimator.ofInt(0, 3).apply { + duration = 1800 + repeatMode = ValueAnimator.RESTART + repeatCount = ValueAnimator.INFINITE + interpolator = LinearInterpolator() + addUpdateListener { + mValue = it.animatedValue as Int + postInvalidate() + if (!isAnim && mValue == 2) { + cancel() + } + } + } + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + canvas.apply { + drawPath(mPath, mPathPaint) + if (mNeedAnim) { + if (!isAnim || mValue >= 1) { + drawArc(mLeftSmallRectF, 120f, 120f, false, mArcPaint) + drawArc(mRightSmallRectF, -60f, 120f, false, mArcPaint) + } + if (!isAnim || mValue == 2) { + drawArc(mLeftBigRectF, 130f, 100f, false, mArcPaint) + drawArc(mRightBigRectF, -50f, 100f, false, mArcPaint) + } + } else { + if (mValue > 0) { + drawArc(mLeftSmallRectF, 120f, 120f, false, mArcPaint) + drawArc(mRightSmallRectF, -60f, 120f, false, mArcPaint) + drawArc(mLeftBigRectF, 130f, 100f, false, mArcPaint) + drawArc(mRightBigRectF, -50f, 100f, false, mArcPaint) + } + } + } + } + + /** + * è®¾ç½®åŠ¨ç”»å¼€å§‹å’Œåœæ­¢ + */ + fun setBluetoothAnimStartAndStop(show: Boolean) { + isAnim = show + if (show) { + mValueAnimator.start() + } + } + + fun setValue(value: Int) { + if (value >= 0) { + mNeedAnim = false + mValue = value + invalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyChartView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyChartView.kt new file mode 100644 index 0000000..99b2a6c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyChartView.kt @@ -0,0 +1,134 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2022/1/7/007. + * @link + * @description: 自定义柱状图 + */ +class MyChartView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + //æ¯ä¸ªåœ†æŸ±çš„宽度 + private var mBarWidth = 0f + + //åœ†æŸ±ä¹‹é—´çš„é—´è· + private var mBarSpace = 0f + private var mRadius = 0f + private var mData: MutableList? = null + private lateinit var mPaint: Paint + + //æ˜¯å¦æ˜¾ç¤ºY轴分钟 + private var isShowMinY = false + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + //æ¯ä¸ªæ•°å€¼1所需è¦ã€å ç”¨çš„高度 + private var mValueHeight = 0f + + //动画时长(毫秒) + private val mAnimatorDuration = 1000L + + constructor(context: Context) : super(context) { + init(context) + } + + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + private fun init(context: Context) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + mData = ArrayList() + mBarWidth = QMUIDisplayHelper.dpToPx(8).toFloat() + mRadius = QMUIDisplayHelper.dpToPx(4).toFloat() + mPaint = Paint() + mPaint.color = ContextCompat.getColor(mContext, R.color.btn_yellow_color) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + LogUtil.e("onMeasure") + mWidth = measuredWidth + mHeight = measuredHeight + } + + override fun onDraw(canvas: Canvas) { + LogUtil.d("MyChartView------>onDraw") + super.onDraw(canvas) + startDraw(canvas) + } + + private fun startDraw(canvas: Canvas) { + canvas.drawColor(ContextCompat.getColor(mContext, R.color.home_data_black_color1)) +// if (isShowMinY) { +// mPaint!!.color = ContextCompat.getColor(mContext!!, R.color.white) +// mPaint!!.textSize = QMUIDisplayHelper.sp2px(mContext, 11).toFloat() +// val str = "60 min" +// val fontMetrics = mPaint!!.fontMetrics +// //èŽ·å–æ–‡å­—的高度 +// val height = fontMetrics.bottom - fontMetrics.top +// canvas.drawText(str, height / 4, height, mPaint!!) +// +// mPaint!!.color = ContextCompat.getColor(mContext!!, R.color.btn_yellow_color) +// } + val size = mData!!.size + if (size > 0) { + //执行一次 + if (mValueHeight == 0f) { + //从所有数æ®ä¸­æ‰¾å‡ºæœ€å¤§å€¼ +// var max = Collections.max(mData) +// if (max == 0) max = 1 + //直接用60分钟作为最大值 + val max = 60 + //æ¯ä¸ªæ•°å€¼1所需è¦ã€å ç”¨çš„高度 + mValueHeight = (mHeight / max).toFloat() + mBarSpace = ((mWidth - mBarWidth * size) / size) + } + for (i in 0 until size) { + val value = mData!![i] + if (value <= 0) continue + val left: Float = (mBarSpace * i + i * mBarWidth) + val top: Float = (mHeight - value * mValueHeight) + val right: Float = (mBarSpace * i + mBarWidth * (i + 1)) + val bottom = mWidth.toFloat() + canvas.drawRoundRect( + left, top / mAnimatedPercent, right, bottom, mRadius, mRadius, mPaint + ) + } + } + } + + + fun setData(data: MutableList, showMinY: Boolean = false) { + mData = data + isShowMinY = showMinY + ViewUtil.instance.setValueAnimator(0f, 100f, mAnimatorDuration) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyMonthView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyMonthView.kt new file mode 100644 index 0000000..36f8cc7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyMonthView.kt @@ -0,0 +1,105 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import com.haibin.calendarview.Calendar +import com.haibin.calendarview.MonthView +import java.lang.String +import kotlin.Boolean +import kotlin.Int + +/** + *Created by .yzq on 2024/1/9/009. + * @link + * @description: + */ +class MyMonthView(context: Context) : MonthView(context) { + + /** + * ç»˜åˆ¶é€‰ä¸­çš„æ—¥å­ + * + * @param canvas canvas + * @param calendar 日历日历calendar + * @param x 日历Card xèµ·ç‚¹åæ ‡ + * @param y 日历Card yèµ·ç‚¹åæ ‡ + * @param hasScheme hasScheme éžæ ‡è®°çš„æ—¥æœŸ + * @return 返回true 则绘制onDrawSchemeï¼Œå› ä¸ºè¿™é‡ŒèƒŒæ™¯è‰²ä¸æ˜¯æ˜¯äº’斥的,所以返回true + */ + override fun onDrawSelected( + canvas: Canvas, calendar: Calendar, x: Int, y: Int, hasScheme: Boolean + ): Boolean { + mSelectedPaint.style = Paint.Style.FILL + canvas.drawCircle( + x + mItemWidth / 2f, y + mItemHeight / 2f, mItemWidth / 2.5f, mSelectedPaint + ) + return false + } + + /** + * ç»˜åˆ¶æ ‡è®°çš„äº‹ä»¶æ—¥å­ + * + * @param canvas canvas + * @param calendar 日历calendar + * @param x 日历Card xèµ·ç‚¹åæ ‡ + * @param y 日历Card yèµ·ç‚¹åæ ‡ + */ + override fun onDrawScheme(canvas: Canvas, calendar: Calendar, x: Int, y: Int) { + } + + /** + * 绘制文本 + * + * @param canvas canvas + * @param calendar 日历calendar + * @param x 日历Card xèµ·ç‚¹åæ ‡ + * @param y 日历Card yèµ·ç‚¹åæ ‡ + * @param hasScheme æ˜¯å¦æ˜¯æ ‡è®°çš„æ—¥æœŸ + * @param isSelected 是å¦é€‰ä¸­ + */ + override fun onDrawText( + canvas: Canvas, calendar: Calendar, x: Int, y: Int, hasScheme: Boolean, isSelected: Boolean + ) { + val cx = x + mItemWidth / 2 + + val isInRange = isInRange(calendar) + + if (isSelected) { + canvas.drawText( + String.valueOf(calendar.day), cx.toFloat(), mTextBaseLine + y, mSelectTextPaint + ) +// canvas.drawText( +// calendar.lunar, +// cx.toFloat(), +// mTextBaseLine + y + mItemHeight / 10, +// mSelectedLunarTextPaint +// ) + } else if (hasScheme) { + canvas.drawText( + String.valueOf(calendar.day), + cx.toFloat(), + mTextBaseLine + y, + if (calendar.isCurrentMonth && isInRange) mSchemeTextPaint else mOtherMonthTextPaint + ) +// canvas.drawText( +// calendar.lunar, +// cx.toFloat(), +// mTextBaseLine + y + mItemHeight / 10, +// mCurMonthLunarTextPaint +// ) + } else { + canvas.drawText( + String.valueOf(calendar.day), + cx.toFloat(), + mTextBaseLine + y, + if (calendar.isCurrentDay) mCurDayTextPaint else if (calendar.isCurrentMonth && isInRange) mCurMonthTextPaint else mOtherMonthTextPaint + ) +// canvas.drawText( +// calendar.lunar, +// cx.toFloat(), +// mTextBaseLine + y + mItemHeight / 10, +// if (calendar.isCurrentDay && isInRange) mCurDayLunarTextPaint else if (calendar.isCurrentMonth) mCurMonthLunarTextPaint else mOtherMonthLunarTextPaint +// ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyRoomView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyRoomView.kt new file mode 100644 index 0000000..a9bde51 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyRoomView.kt @@ -0,0 +1,167 @@ +package com.abbidot.tracker.widget + +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Path +import android.graphics.PathMeasure +import android.util.AttributeSet +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R + + +/** + *Created by .yzq on 2024/3/28/028. + * @link + * @description: + */ +class MyRoomView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private lateinit var mPaint: Paint + private lateinit var mGrayPaint: Paint + + private lateinit var mLeftHalfPath: Path + private lateinit var mRightHalfPath: Path + private lateinit var mLeftHalfPathMeasure: PathMeasure + private lateinit var mRightHalfPathMeasure: PathMeasure + + private lateinit var mCloseAnimator: ValueAnimator + private lateinit var mOpenAnimator: ValueAnimator + private val mAnimatorDuration = 2500L + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mWidth = AppUtils.dpToPx(150) + mHeight = mWidth + + mPaint = Paint().apply { + strokeWidth = AppUtils.dpToPx(8f) + style = Paint.Style.STROKE + strokeCap = Paint.Cap.ROUND + strokeJoin = Paint.Join.ROUND + color = ContextCompat.getColor(mContext, R.color.black) + } + mGrayPaint = Paint().apply { + strokeWidth = AppUtils.dpToPx(8f) + style = Paint.Style.STROKE + strokeCap = Paint.Cap.ROUND + strokeJoin = Paint.Join.ROUND + color = ContextCompat.getColor(mContext, R.color.white_gray_color) + } + + mLeftHalfPathMeasure = PathMeasure() + mLeftHalfPath = Path().apply { + moveTo(mWidth / 2f, 0f + mPaint.strokeWidth / 2) + lineTo(0f + mPaint.strokeWidth / 2, mHeight / 2f) + mLeftHalfPathMeasure.setPath(this, false) + val node = FloatArray(2) + val tempPathLength = mLeftHalfPathMeasure.length + //获å–path指定长度æŸä¸ªçš„点 + mLeftHalfPathMeasure.getPosTan(tempPathLength - tempPathLength / 6, node, null) + lineTo(node[0], node[1]) + lineTo(node[0], mHeight.toFloat() - mPaint.strokeWidth / 2) + lineTo(mWidth / 2f, mHeight.toFloat() - mPaint.strokeWidth / 2) + } + mLeftHalfPathMeasure.setPath(mLeftHalfPath, false) + + mRightHalfPathMeasure = PathMeasure() + mRightHalfPath = Path().apply { + moveTo(mWidth / 2f, 0f + mPaint.strokeWidth / 2) + lineTo(mWidth - mPaint.strokeWidth / 2, mHeight / 2f) + mRightHalfPathMeasure.setPath(this, false) + val node = FloatArray(2) + val tempPathLength = mRightHalfPathMeasure.length + //获å–path指定长度æŸä¸ªçš„点 + mRightHalfPathMeasure.getPosTan(tempPathLength - tempPathLength / 6, node, null) + lineTo(node[0], node[1]) + lineTo(node[0], mHeight.toFloat() - mPaint.strokeWidth / 2) + lineTo(mWidth / 2f, mHeight.toFloat() - mPaint.strokeWidth / 2) + } + mRightHalfPathMeasure.setPath(mRightHalfPath, false) + + val pathLength = mLeftHalfPathMeasure.length + // åˆ›å»ºä¸€ä¸ªå€¼åŠ¨ç”»å™¨æ¥æ›´æ–°animatedValue + mCloseAnimator = ValueAnimator.ofFloat(0f, pathLength).apply { + duration = mAnimatorDuration + interpolator = LinearInterpolator() + addUpdateListener { + mAnimatedValue = it.animatedValue as Float + invalidate() + } + } + mOpenAnimator = ValueAnimator.ofFloat(pathLength, 0f).apply { + duration = mAnimatorDuration + interpolator = LinearInterpolator() + addUpdateListener { + mAnimatedValue = it.animatedValue as Float + invalidate() + } + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(mWidth, mHeight) + } + + private var mAnimatedValue = 0f + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + canvas.drawPath(mLeftHalfPath, mGrayPaint) + canvas.drawPath(mRightHalfPath, mGrayPaint) + +// val dst = FloatArray(2) + // 使用animatedValueæ¥è®¡ç®—路径上的点,获å–path指定长度一个的点 +// mLeftHalfPathMeasure.getPosTan(mAnimatedValue, dst, null) +// canvas.drawCircle(dst[0], dst[1], 10f, mPaint) + + val path = Path() + //获å–pathæŒ‡å®šé•¿åº¦æŸæ®µ + mLeftHalfPathMeasure.getSegment(0f, mAnimatedValue, path, true) + canvas.drawPath(path, mPaint) + + val path1 = Path() + mRightHalfPathMeasure.getSegment(0f, mAnimatedValue, path1, true) + canvas.drawPath(path1, mPaint) + } + + fun playOpenAnimator() { + mOpenAnimator.start() + } + + fun playCloseAnimator() { + mCloseAnimator.start() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MySignalView.kt b/app/src/main/java/com/abbidot/tracker/widget/MySignalView.kt new file mode 100644 index 0000000..7d889e0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MySignalView.kt @@ -0,0 +1,99 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2024/3/11/011. + * @link + * @description:直播使用的è“ç‰™ä¿¡å· + */ +class MySignalView : View { + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + private var mStrokeWidth = 0f + private var mLineSpace = 0f + + private lateinit var mPaint: Paint + private val mMaxValue = 4 + private var mValue = 0 + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(mWidth, mHeight) + LogUtil.e("onMeasure $widthMeasureSpec,$heightMeasureSpec") + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context +// initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mWidth = AppUtils.dpToPx(24) + mHeight = mWidth + mStrokeWidth = AppUtils.dpToPx(2f) + mLineSpace = (mWidth - mStrokeWidth * mMaxValue) / (mMaxValue - 1) + + mPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.black) + strokeWidth = mStrokeWidth + strokeCap = Paint.Cap.ROUND + } + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + for (i in 1..mMaxValue) { + mPaint.color = if (i > mValue) { + ContextCompat.getColor(mContext, R.color.black15) + } else { + ContextCompat.getColor(mContext, R.color.black) + } + + //需è¦å‡åŽ»1个åƒç´  + val startX = (mStrokeWidth * i) + (mLineSpace * (i - 1)) - i + val startY = mHeight - (mHeight * (i / 4f)) + canvas.drawLine(startX, startY, startX, mHeight.toFloat(), mPaint) + } + } + + fun setValue(value: Int) { + mValue = if (value < 0) { + 0 + } else if (value > mMaxValue) { + mMaxValue + } else value + invalidate() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyView.kt new file mode 100644 index 0000000..46207e4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyView.kt @@ -0,0 +1,67 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Camera +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2022/4/25/025. + * @link + * @description: + */ +class MyView : View { + + private lateinit var mPaint: Paint + private lateinit var mCamera: Camera + + constructor(context: Context) : super(context) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, + defStyleAttr) { + init(context) + } + + private fun init(context: Context) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + //å¼€å¯æŠ—é”¯é½¿ + mPaint = Paint(Paint.ANTI_ALIAS_FLAG) + mPaint.style = Paint.Style.STROKE + mPaint.strokeWidth = 2f + mPaint.color = ContextCompat.getColor(context, R.color.gray_color3) + + mCamera= Camera() + } + + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + +// mCamera.save() // ä¿å­˜ Camera çš„çŠ¶æ€ + mCamera.rotateX(60f) // 旋转 Camera 的三维空间 + canvas.translate(width/2f, height/2f) // æ—‹è½¬ä¹‹åŽæŠŠæŠ•å½±ç§»åŠ¨å›žæ¥ + mCamera.applyToCanvas(canvas) // 把旋转投影到 Canvas + canvas.translate(-width/2f, -height/2f) // æ—‹è½¬ä¹‹å‰æŠŠç»˜åˆ¶å†…å®¹ç§»åŠ¨åˆ°è½´å¿ƒï¼ˆåŽŸç‚¹ï¼‰ +// mCamera.restore() // æ¢å¤ Camera çš„çŠ¶æ€ + + + canvas.drawCircle(width/2f, height/2f, 50f, mPaint) + canvas.drawCircle(width/2f, height/2f, 150f, mPaint) + mPaint.strokeWidth = 2f + canvas.drawCircle(width/2f, height/2f, 250f, mPaint) + mPaint.strokeWidth =2f + canvas.drawCircle(width/2f, height/2f, 350f, mPaint) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/MyWiFiSignalView.kt b/app/src/main/java/com/abbidot/tracker/widget/MyWiFiSignalView.kt new file mode 100644 index 0000000..748416a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/MyWiFiSignalView.kt @@ -0,0 +1,198 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2024/3/27/027. + * @link + * @description:wifi ä¿¡å·view + */ +class MyWiFiSignalView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + private var mMinCircleRadius = 0f + private var mCircleStrokeWidth = 0f + private var mValueColor = 0 + + private lateinit var mPaint: Paint + private lateinit var mRectF: RectF + + private val mMaxValue = 2 + private var mValue = 0 + + //æ˜¯å¦æ˜¾ç¤ºé” + private var isShowLock = false + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mWidth = AppUtils.dpToPx(25) + mHeight = mWidth + + //å¼€å¯æŠ—é”¯é½¿ + mPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + strokeCap = Paint.Cap.ROUND + } + mRectF = RectF() + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mMinCircleRadius = AppUtils.dpToPx(3f) + mCircleStrokeWidth = AppUtils.dpToPx(2f) + mValueColor = ContextCompat.getColor(context, R.color.green_color100) + return + } + + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyWiFiSignalView) + mMinCircleRadius = typedArray.getDimension( + R.styleable.MyWiFiSignalView_min_circle_radius, AppUtils.dpToPx(3f) + ) + mCircleStrokeWidth = typedArray.getDimension( + R.styleable.MyWiFiSignalView_circle_stroke_width, AppUtils.dpToPx(2f) + ) + mValueColor = typedArray.getColor( + R.styleable.MyWiFiSignalView_value_color, + ContextCompat.getColor(context, R.color.green_color100) + ) + typedArray.recycle() + } + + /** + * æµ‹é‡æ¨¡å¼æœ‰ä¸‰ç§ï¼šEXACTLY(精确模å¼ï¼‰ã€AT_MOST(最大模å¼ï¼‰å’Œ UNSPECIFIED(未指定模å¼ï¼‰ã€‚ + * 当 View çš„å®½åº¦å’Œé«˜åº¦éƒ½æŒ‡å®šä¸ºå…·ä½“æ•°å€¼æ—¶ï¼Œæµ‹é‡æ¨¡å¼ä¸º EXACTLY;当 View 的宽度和高度都为 wrap_content 时, + * æµ‹é‡æ¨¡å¼ä¸º AT_MOST;当 View çš„å®½åº¦æˆ–é«˜åº¦æœªæŒ‡å®šæ—¶ï¼Œæµ‹é‡æ¨¡å¼ä¸º UNSPECIFIED + */ + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + + val widthMeasureMode = MeasureSpec.getMode(widthMeasureSpec) + val heightMeasureMode = MeasureSpec.getMode(heightMeasureSpec) + if (widthMeasureMode == MeasureSpec.AT_MOST || heightMeasureMode == MeasureSpec.AT_MOST || widthMeasureMode == MeasureSpec.UNSPECIFIED || heightMeasureMode == MeasureSpec.UNSPECIFIED) { + setMeasuredDimension(mWidth, mHeight) + } else { + val max = maxOf(measuredWidth, measuredHeight) + setMeasuredDimension(max, max) + mHeight = max + mWidth = max + } + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + /** + * ä¸åŒåŠå¾„çš„åŒå¿ƒåœ† + */ + private fun startDraw(canvas: Canvas) { + val circleX = mWidth / 2f + val circleY = mHeight - mMinCircleRadius + mPaint.apply { + style = Paint.Style.FILL + strokeWidth = 1f + color = mValueColor + } + canvas.drawCircle(circleX, circleY, mMinCircleRadius, mPaint) + + val r2 = mHeight / 2f - mMinCircleRadius + mPaint.apply { + style = Paint.Style.STROKE + strokeWidth = mCircleStrokeWidth + color = if (mValue < mMaxValue - 1) { + ContextCompat.getColor(mContext, R.color.white_gray_color) + } else { + mValueColor + } + } + mRectF.apply { + left = circleX - r2 + top = mHeight / 2f - mPaint.strokeWidth + right = circleX + r2 + bottom = circleY + r2 - mPaint.strokeWidth + } + canvas.drawArc(mRectF, -135f, 90f, false, mPaint) + + val r3 = mHeight - mMinCircleRadius + mPaint.color = if (mValue < mMaxValue) { + ContextCompat.getColor(mContext, R.color.white_gray_color) + } else { + mValueColor + } + mRectF.apply { + left = circleX - r3 + top = 0f + mPaint.strokeWidth / 2f + right = circleX + r3 + bottom = circleY + r3 + mPaint.strokeWidth / 2f + } + canvas.drawArc(mRectF, -135f, 90f, false, mPaint) + + if (isShowLock) { + mPaint.apply { + style = Paint.Style.FILL + color = mValueColor + } + val r = mMinCircleRadius / 3 + mRectF.apply { + left = mWidth - mMinCircleRadius * 2.2f + top = mHeight - mMinCircleRadius * 2.2f + right = mWidth.toFloat() + bottom = mHeight.toFloat() + } + canvas.drawRoundRect(mRectF, r, r, mPaint) + + val l = (mRectF.right - mRectF.left) / 6f + mRectF.apply { + left = mWidth - (l * 5) + top = mHeight / 2f + mMinCircleRadius / 1.5f + right = mWidth - l + bottom = mHeight - mMinCircleRadius / 1.5f + } + mPaint.apply { + style = Paint.Style.STROKE + strokeWidth = AppUtils.dpToPx(1.5f) + } + canvas.drawOval(mRectF, mPaint) + } + } + + fun setValue(value: Int, showLock: Boolean = false) { + mValue = if (value > mMaxValue) mMaxValue + else if (value < 0) 0 + else value + isShowLock = showLock + invalidate() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/NonSwipeRecyclerView.kt b/app/src/main/java/com/abbidot/tracker/widget/NonSwipeRecyclerView.kt new file mode 100644 index 0000000..81cfa4c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/NonSwipeRecyclerView.kt @@ -0,0 +1,24 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.recyclerview.widget.RecyclerView + +/** + *Created by .yzq on 2024/6/23/023. + * @link + * @description:䏿‹¦æˆªæ»‘动事件(å³ä¸æ‹¦æˆªæ»‘动事件使其父布局或者活动å¯ä»¥æ»‘动) + */ +class NonSwipeRecyclerView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : RecyclerView(context, attrs, defStyleAttr) { + + override fun onInterceptTouchEvent(e: MotionEvent?): Boolean { + return false + } + + override fun onTouchEvent(e: MotionEvent?): Boolean { + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/RingChartView.kt b/app/src/main/java/com/abbidot/tracker/widget/RingChartView.kt new file mode 100644 index 0000000..a07d495 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/RingChartView.kt @@ -0,0 +1,196 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2024/1/2/002. + * @link + * @description:圆形图表 + */ +class RingChartView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + private lateinit var mYellowPaint: Paint + private lateinit var mGrayPaint: Paint + private lateinit var mTextPaint: Paint + + private lateinit var mRectF: RectF + + //圆的åŠå¾„ + private var mRadius = 0 + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + //动画时长(毫秒) + private val mAnimatorDuration = 1000L + + //绿圆扫过的角度 + private var mSweepAngle = 0f + private var mPercentText = "0" + + private var showPercent = true + private var mRingValueColor1 = 0 + private var mRingValueColor2 = 0 + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + + mYellowPaint = Paint().apply { + color = mRingValueColor1 + //画笔的样å¼,圆形,进度æ¡é€‚åˆä½¿ç”¨ +// strokeCap = Paint.Cap.ROUND + //画笔的填充样å¼,æè¾¹ + style = Paint.Style.STROKE + } + mGrayPaint = Paint().apply { + color = mRingValueColor2 + style = Paint.Style.STROKE + } + mTextPaint = Paint().apply { + textSize = QMUIDisplayHelper.sp2px(mContext, 10).toFloat() + color = ContextCompat.getColor(mContext, R.color.white) + } + mRectF = RectF() + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mRingValueColor1 = ContextCompat.getColor(context, R.color.select_color2) + mRingValueColor2 = ContextCompat.getColor(context, R.color.gray_color6) + return + } + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.RingChartView) + showPercent = typedArray.getBoolean(R.styleable.RingChartView_show_percent_text, true) + mRingValueColor1 = typedArray.getColor( + R.styleable.RingChartView_ring_value_color1, + ContextCompat.getColor(context, R.color.select_color2) + ) + mRingValueColor2 = typedArray.getColor( + R.styleable.RingChartView_ring_value_color2, + ContextCompat.getColor(context, R.color.gray_color6) + ) + typedArray.recycle() + } + + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + drawRing(this) + } + } + + private fun drawRing(canvas: Canvas) { + if (mRadius == 0) { + mRadius = mHeight / 2 + val strokeWidth = mRadius / 2.5f + //圆弧的宽度,呿­£å¸¸åœ†å†…外å„伸长一åŠå®½åº¦ + mYellowPaint.strokeWidth = strokeWidth + mGrayPaint.strokeWidth = strokeWidth + } + //计算圆环的一åŠå®½åº¦ + val ringHalfRadius = mRadius / 5f + //算上圆环的宽度一åŠåŽçš„åŠå¾„ + val r = mRadius - ringHalfRadius + val left = mWidth / 2f - r + val top = mHeight / 2f - r + val right = mWidth / 2f + r + val bottom = mHeight / 2f + r + mRectF.let { + it.left = left + it.top = top + it.right = right + it.bottom = bottom + } +// canvas.drawRect(mRectF, mGrayPaint) + + canvas.drawArc(mRectF, 270f, -mSweepAngle / mAnimatedPercent, false, mYellowPaint) + val graySweepAngle = 360f - mSweepAngle + //默认是ç°è‰²çš„圆环 + canvas.drawArc(mRectF, 270f, graySweepAngle / mAnimatedPercent, false, mGrayPaint) + + //åŠ¨ç”»ç»“æŸæ˜¾ç¤ºæ–‡å­— + if (mAnimatedPercent == 1f && showPercent && mPercentText.toFloat() > 0f) { + val fontMetrics = mTextPaint.fontMetrics + //èŽ·å–æ–‡å­—的高度 + val height = fontMetrics.bottom - fontMetrics.top + //æ ¹æ®åœ†å¼§çš„角度确定文字显示的ä½ç½®,180°则显示中间ä½ç½® + + val yYellowText = angleToY(mSweepAngle, height) + canvas.drawText("$mPercentText%", ringHalfRadius, yYellowText, mTextPaint) + + val yGrayText = angleToY(graySweepAngle, height) + val grayText = Utils.formatDecimal(100 - mPercentText.toFloat(), 2) + canvas.drawText("$grayText%", mWidth - r + ringHalfRadius, yGrayText, mTextPaint) + } + } + + /** + * æ ¹æ®åœ†å¼§çš„角度确定文字显示的ä½ç½®,180°则显示中间ä½ç½® + */ + private fun angleToY(angle: Float, default: Float): Float { + return if (angle >= 180f) mHeight / 2f + else if (angle >= 60f) (angle / 180f) * (mHeight / 2f) + else default + } + + + fun setData(data1: Float, data2: Float) { + if (data1 == 0f && data2 == 0f) { + val sum = 2 + mPercentText = Utils.formatDecimal((1f / sum) * 100, 2) + mSweepAngle = 360f * (1f / sum) + mAnimatedPercent = 1f + mYellowPaint.color = ContextCompat.getColor(mContext, R.color.gray_color12) + invalidate() + } else { + val sum = data1 + data2 + mPercentText = Utils.formatDecimal((data1 / sum) * 100, 2) + mSweepAngle = 360f * (data1 / sum) + mYellowPaint.color = mRingValueColor1 + ViewUtil.instance.setValueAnimator(0f, 100f, mAnimatorDuration) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } + + mPercentText = mPercentText.replace(",", ".") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/RingScaleView.kt b/app/src/main/java/com/abbidot/tracker/widget/RingScaleView.kt new file mode 100644 index 0000000..75e53f7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/RingScaleView.kt @@ -0,0 +1,416 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.DashPathEffect +import android.graphics.Paint +import android.graphics.Path +import android.graphics.Rect +import android.graphics.RectF +import android.graphics.Region +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.min + + +/** + *Created by .yzq on 2024/2/4/004. + * @link + * @description:圆环刻度尺 + */ +class RingScaleView : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + private lateinit var mOutCirclePaint: Paint + private lateinit var mScalePaint: Paint + private lateinit var mFillPaint: Paint + private lateinit var mTextPaint: Paint + private lateinit var mDashedPaint: Paint + private lateinit var mDragPaint: Paint + private lateinit var mPathPaint: Paint + + private lateinit var mRectF: RectF + private lateinit var mRect: Rect + + private lateinit var mDragPath: Path + private lateinit var mPathRegion: Region + + //最外é¢çš„圆需è¦åˆ»åº¦çš„个数 + private val mOutCircleScale = 360 + + //最外é¢çš„圆的åŠå¾„ + private var mOutCircleRadius = 0f + + //内圆的åŠå¾„ + private var mInsideCircleRadius = 0f + + //显示结果的圆åŠå¾„ + private var mShowResultCircleRadius = 0f + private var mDragCircleRadius = 0f + + //最外é¢åœ†çš„线的长度 + private val mOutCircleStrokeHeight = QMUIDisplayHelper.dpToPx(18).toFloat() + + //最外é¢åœ†çš„线的宽度 + private var mOutCircleStrokeWidth = 0f + + private lateinit var mMinimumString: String + private lateinit var mRecommencedString: String + + //选中的值 + private var mValue = 30 + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mMinimumString = context.getString(R.string.txt_minimum) + mRecommencedString = context.getString(R.string.txt_recommenced) + + mOutCirclePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + style = Paint.Style.STROKE + //虚线长度 + strokeWidth = mOutCircleStrokeHeight + color = ContextCompat.getColor(context, R.color.line_color1) + } + mScalePaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.data_black_color) + strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + } + mFillPaint = Paint() + mTextPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.block_color2) + textSize = QMUIDisplayHelper.sp2px(context, 8).toFloat() + } + mDashedPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.line_color1) + } + mDragPaint = Paint().apply { + strokeWidth = QMUIDisplayHelper.dpToPx(1).toFloat() + color = ContextCompat.getColor(context, R.color.select_color) + style = Paint.Style.STROKE + } + mPathPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.select_color2) + } + + mDragPath = Path() + mPathRegion = Region() + mRectF = RectF() + mRect = Rect() + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + + } + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + mShowResultCircleRadius = QMUIDisplayHelper.dpToPx(28).toFloat() + mDragCircleRadius = mShowResultCircleRadius / 2f + //外圆的åŠå¾„,虚线的长度默认圆内外å„å ä¸€åŠ,åœ†çš„å¤–è¾¹è· + mOutCircleRadius = + width.coerceAtMost(height) / 2f - mOutCirclePaint.strokeWidth / 2f - QMUIDisplayHelper.dpToPx( + 20 + ) + //计算出周长 + val circumference = 2 * Math.PI * mOutCircleRadius + + //æ ¹æ®è™šçº¿+空白间隔=圆的周长(这里默认虚线宽度和空白间隔一样大å°) + val dashOutGapSize = circumference / (mOutCircleScale * 2) + mOutCircleStrokeWidth = dashOutGapSize.toFloat() + mOutCirclePaint.pathEffect = DashPathEffect( + floatArrayOf( + mOutCircleStrokeWidth, mOutCircleStrokeWidth + ), 0f + ) + + mInsideCircleRadius = mOutCircleRadius - mOutCirclePaint.strokeWidth / 2f + + mDashedPaint.strokeWidth = mScalePaint.strokeWidth * 2 + val dashSpace = mOutCircleStrokeWidth * 3 + mDashedPaint.pathEffect = DashPathEffect( + floatArrayOf(dashSpace, dashSpace), 0f + ) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + } + + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + val halfWith = mWidth / 2f + val halfHeight = mHeight / 2f + canvas.apply { + //画虚线 + val lineStartY = halfHeight - mInsideCircleRadius + drawLine(halfWith, lineStartY, halfWith, halfHeight, mDashedPaint) + + //outScaleRectF + mRectF.apply { + left = halfWith - mOutCircleRadius + top = halfHeight - mOutCircleRadius + right = halfWith + mOutCircleRadius + bottom = halfHeight + mOutCircleRadius + } + mOutCirclePaint.color = ContextCompat.getColor(mContext, R.color.select_color2) + drawArc(mRectF, -90f, mValue.toFloat(), false, mOutCirclePaint) + mOutCirclePaint.color = ContextCompat.getColor(mContext, R.color.black25) + drawArc(mRectF, -90f, -(360f - mValue), false, mOutCirclePaint) + + //填充推è的颜色区域 + mRectF.apply { + left = halfWith - mInsideCircleRadius + top = lineStartY + right = halfWith + mInsideCircleRadius + bottom = halfHeight + mInsideCircleRadius + } + mFillPaint.color = ContextCompat.getColor(mContext, R.color.yellow_color10) + drawArc(mRectF, -90f, 30f, true, mFillPaint) + mFillPaint.color = ContextCompat.getColor(mContext, R.color.green_color10) + drawArc(mRectF, -60f, 180f, true, mFillPaint) + //写区域文字 + save() + rotate(-75f, halfWith, halfHeight) + mTextPaint.color = ContextCompat.getColor(context, R.color.block_color2) + mTextPaint.textSize = QMUIDisplayHelper.sp2px(context, 8).toFloat() + //文字宽度 + var textWidth = mTextPaint.measureText(mMinimumString) + var fontMetrics = mTextPaint.fontMetrics + //文字高度 + var textHeight = fontMetrics.bottom - fontMetrics.top + drawText( + mMinimumString, + halfWith + textWidth + textHeight / 2, + halfHeight + textHeight / 3, + mTextPaint + ) + restore() + drawText( + mRecommencedString, + halfWith - mShowResultCircleRadius / 3, + halfHeight + mShowResultCircleRadius + textHeight * 2, + mTextPaint + ) + + //画圆里é¢çš„大å°åˆ»åº¦ + save() + var curRotation = 0 + val scaleTempY = lineStartY + mOutCircleStrokeHeight / 2 + for (i in 0 until 24) { + val y2 = if (curRotation % 90 == 0) { + mScalePaint.color = ContextCompat.getColor(mContext, R.color.data_black_color) + scaleTempY + QMUIDisplayHelper.dpToPx(6) //+240 + } else { + mScalePaint.color = ContextCompat.getColor(mContext, R.color.block_color2) + scaleTempY + } + drawLine(halfWith, lineStartY, halfWith, y2, mScalePaint) + curRotation += 15 + rotate(15f, halfWith, halfHeight) + } + restore() + + //画最外层的刻度 + mTextPaint.textSize = QMUIDisplayHelper.sp2px(mContext, 12).toFloat() + mTextPaint.color = ContextCompat.getColor(mContext, R.color.select_color3) + val cR = (min(mWidth, height) - QMUIDisplayHelper.dpToPx(10)) / 2f + for (i in 0 until 360 step 45) { + textWidth = mTextPaint.measureText("$i") + fontMetrics = mTextPaint.fontMetrics + textHeight = fontMetrics.bottom - fontMetrics.top + val cXy = getPointOnCircle(halfWith, halfHeight, cR, i.toDouble()) + if (i == 0) { + drawText("0", cXy[0] - textWidth / 2f, cXy[1] + textHeight / 2f, mTextPaint) + } else { + drawText("$i", cXy[0] - textWidth / 2f, cXy[1], mTextPaint) + } + } + mTextPaint.textSize = QMUIDisplayHelper.sp2px(mContext, 10).toFloat() + textWidth = mTextPaint.measureText("30") + fontMetrics = mTextPaint.fontMetrics + textHeight = fontMetrics.bottom - fontMetrics.top + val cXy = getPointOnCircle(halfWith, halfHeight, cR, 30.0) + drawText("30", cXy[0] - textWidth / 2f, cXy[1] + textHeight / 5f, mTextPaint) + + //ç”»å¯æ‹–动的圆 + val circleXY = getPointOnCircle( + halfWith, halfHeight, mOutCircleRadius, (mValue * mAnimatedPercent).toDouble() + ) + drawLine(halfWith, halfHeight, circleXY[0], circleXY[1], mDashedPaint) + //外层圆环形 + drawCircle( + circleXY[0], circleXY[1], mDragCircleRadius, mDragPaint + ) + val dragCircleRadius = mDragCircleRadius - mDragPaint.strokeWidth / 2 + mDragPath.reset() + mDragPath.addCircle( + circleXY[0], circleXY[1], dragCircleRadius, Path.Direction.CW + ) + mRect.apply { + left = 0 + top = 0 + right = mWidth + bottom = mHeight + } + mPathRegion.setEmpty() + //å–出rectå’ŒmDragPath交集区域 + mPathRegion.setPath(mDragPath, Region(mRect)) + drawPath(mPathRegion.boundaryPath, mPathPaint) + //圆心相åŒçš„矩形 +// val rect1 = Rect( +// (halfWith - dragCircleRadius).toInt(), +// (circleY + dragCircleRadius).toInt(), +// (halfWith + dragCircleRadius).toInt(), +// (circleY - dragCircleRadius).toInt() +// ) + + //画显示值的白色圆 + mFillPaint.color = ContextCompat.getColor(mContext, R.color.white) + drawCircle(halfWith, halfHeight, mShowResultCircleRadius, mFillPaint) + + //画出值 + val valueString = "$mValue" + mTextPaint.textSize = QMUIDisplayHelper.sp2px(mContext, 18).toFloat() + mTextPaint.color = ContextCompat.getColor(mContext, R.color.data_black_color) + //文字宽度 + textWidth = mTextPaint.measureText(valueString) + drawText(valueString, halfWith - textWidth / 2, halfHeight, mTextPaint) + val minString = "min" + mTextPaint.textSize = QMUIDisplayHelper.sp2px(mContext, 12).toFloat() + mTextPaint.color = ContextCompat.getColor(mContext, R.color.block_color2) + //文字宽度 + textWidth = mTextPaint.measureText(minString) + fontMetrics = mTextPaint.fontMetrics + //文字高度 + textHeight = fontMetrics.bottom - fontMetrics.top + drawText( + minString, halfWith - textWidth / 2, halfHeight + textHeight / 1.3f, mTextPaint + ) + } + } + + /** + *求圆上æŸä¸ªç‚¹çš„åæ ‡ + * @angle è§’åº¦æ˜¯ä»¥åœ†çš„å³æ–¹å¼€å§‹è®¡ç®—角度,顺时针增加 + */ + private fun getPointOnCircle( + centerX: Float, centerY: Float, radius: Float, angle: Double + ): FloatArray { + //转æ¢è§’度从圆的正上方开始,顺时针增加 + return Utils.getPointOnCircleArc(centerX, centerY, radius, angle - 90) + } + + fun getValue() = mValue + + fun setValue(value: Int) { + mValue = if (value >= ConstantInt.MinSportGoal) value + else ConstantInt.DefaultSportGoal + ViewUtil.instance.setValueAnimator(0f, 100f) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent?): Boolean { + when (event!!.action) { + MotionEvent.ACTION_DOWN -> { + val x = event.x + val y = event.y + if (mPathRegion.contains(x.toInt(), y.toInt())) { + mDragCircleRadius = mShowResultCircleRadius / 2f + AppUtils.dpToPx(3.9f) + return true + } + return false + } + + MotionEvent.ACTION_MOVE -> { + val x = event.x + val y = event.y + //é™åˆ¶å·¦å³æ»‘动超过 + val point = getPointOnCircle(mWidth / 2f, mHeight / 2f, mOutCircleRadius, 30.0) + //é™åˆ¶å³åŠè¾¹åœ†éƒ¨åˆ† + if (mValue == 30) { + if (x < point[0]) return false + } + //é™åˆ¶å·¦è¾¹åœ†éƒ¨åˆ† + else if (mValue in 270..360) { + if (x > mWidth / 2f) return false + } + //获å–ä»¥åœ†å³æ–¹ä¸º0度的角度 + val slipAngle = Utils.getAngleFromCenter(x, y, mWidth / 2f, mHeight / 2f) + mValue = (slipAngle + 90).toInt() + if (mValue in 1..30) { + mValue = 30 + return false + } else if (mValue < 0) { + mValue += 360 + } else if (mValue == 360 || mValue == 0) { + mValue = 360 + return false + } + invalidate() + } + + MotionEvent.ACTION_UP -> { + mDragCircleRadius = mShowResultCircleRadius / 2f + invalidate() + } + } + return super.onTouchEvent(event) + } + + /** + * è§£å†³æ»‘åŠ¨å†²çª + */ + override fun dispatchTouchEvent(event: MotionEvent?): Boolean { + //ç¦æ­¢çˆ¶å®¹å™¨æ‹¦æˆªå­å…ƒç´ éœ€è¦çš„事件。 + parent.requestDisallowInterceptTouchEvent(true) + return super.dispatchTouchEvent(event) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/SignalRadarView.kt b/app/src/main/java/com/abbidot/tracker/widget/SignalRadarView.kt new file mode 100644 index 0000000..f1f18f0 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/SignalRadarView.kt @@ -0,0 +1,283 @@ +package com.abbidot.tracker.widget + +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.LinearGradient +import android.graphics.Paint +import android.graphics.RectF +import android.graphics.Shader +import android.util.AttributeSet +import android.view.View +import android.view.animation.LinearInterpolator +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R + +/** + *Created by .yzq on 2024/3/14/014. + * @link + * @description: + */ +class SignalRadarView : View { + + private lateinit var mContext: Context + + private lateinit var mPaint: Paint + private lateinit var mScanPaint: Paint + + private lateinit var mRectF: RectF + + private var mWidth = 0 + private var mHeight = 0 + + private var mStartScanAngle = 0f + private var mMaxRadius = 0f + private var mMinRadius = 0f + private var mCircleRadius1 = 0f + private var mCircleRadius2 = 0f + private var mCircleRadius3 = 0f + private var mCircleRadius4 = 0f + + private var mCircle1Animator: ValueAnimator? = null + private var mCircle2Animator: ValueAnimator? = null + private var mCircle3Animator: ValueAnimator? = null + private var mCircle4Animator: ValueAnimator? = null + private var mScanAnimator: ValueAnimator? = null + + private lateinit var mSignalStrengthColors: IntArray + private var mValue = 0 + + //增幅 + private val mRate = 40f + + constructor(context: Context) : super(context) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context) + } + + private fun init(context: Context) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw- + setLayerType(LAYER_TYPE_SOFTWARE, null) + + mContext = context + mPaint = Paint().apply { + strokeWidth = AppUtils.dpToPx(1f) + style = Paint.Style.STROKE + } + mScanPaint = Paint().apply { + color = ContextCompat.getColor(context, R.color.radar_color9) + } + + mSignalStrengthColors = intArrayOf( + R.color.radar_color4, + R.color.radar_color7, + R.color.radar_color5, + R.color.radar_color6, + R.color.radar_color9 + ) + + mRectF = RectF() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mHeight = AppUtils.dpToPx(160) + mWidth = mHeight + mRectF.apply { + left = 0f + top = 0f + right = mWidth.toFloat() + bottom = mHeight.toFloat() + } + setMeasuredDimension(mWidth, mHeight) + } + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + super.onLayout(changed, left, top, right, bottom) + mMaxRadius = mHeight / 2f - mPaint.strokeWidth + mCircleRadius1 = mMaxRadius - AppUtils.dpToPx(70) + mMinRadius = mCircleRadius1 + mCircleRadius4 = mCircleRadius1 + mCircleRadius3 = mCircleRadius1 + mCircleRadius2 = mCircleRadius1 + startScanAnimator() + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + +// val circleX = mWidth / 2f +// val circleY = mHeight / 2f + + canvas.apply { +// var radius = mMaxRadius +// mPaint.style = Paint.Style.FILL +// onDrawCircle(mContext, canvas, R.color.radar_color4, radius, mPaint) +// mPaint.style = Paint.Style.STROKE +// drawLine(circleX, 0f, circleX, mHeight.toFloat(), mPaint) +// drawLine(0f, circleY, mWidth.toFloat(), circleY, mPaint) +// radius -= mPaint.strokeWidth + onDrawCircle(mContext, canvas, R.color.radar_color9, mCircleRadius4, mPaint) +// radius -= AppUtils.dpToPx(18) + onDrawCircle(mContext, canvas, R.color.radar_color9, mCircleRadius3, mPaint) +// radius -= AppUtils.dpToPx(20) + onDrawCircle(mContext, canvas, R.color.radar_color9, mCircleRadius2, mPaint) +// radius -= AppUtils.dpToPx(22) + onDrawCircle(mContext, canvas, R.color.radar_color9, mCircleRadius1, mPaint) + + val strength = (mValue * 20) + mRate + drawArc(mRectF, mStartScanAngle, strength, true, mScanPaint) + } + } + + private fun onDrawCircle( + context: Context, canvas: Canvas, colorId: Int, radius: Float, paint: Paint + ) { + paint.color = ContextCompat.getColor(context, colorId) + canvas.drawCircle(mWidth / 2f, mHeight / 2f, radius, paint) + } + + /** + * 动画 + */ + private fun startScanAnimator() { + if (null == mScanAnimator) { + mScanAnimator = ValueAnimator.ofFloat(0f, 360f).apply { + duration = 1500 + repeatCount = ValueAnimator.INFINITE + //匀速å˜åŒ– + interpolator = LinearInterpolator() + addUpdateListener { + mStartScanAngle = it.animatedValue as Float + val circleX = mWidth / 2f + val circleY = mHeight / 2f + val strength = (mValue * 20) + mRate + //开始忠‡ä¸Žç»“æŸå标是什么方å‘å°±ä»¥ä»€ä¹ˆæ–¹å‘æ¸å˜ + val start = Utils.getPointOnCircleArc( + circleX, circleY, circleY, mStartScanAngle.toDouble() + strength + ) + val end = Utils.getPointOnCircleArc( + circleX, circleY, circleY, mStartScanAngle.toDouble() + ) + val shader = LinearGradient( + start[0], + start[1], + end[0], + end[1], + ContextCompat.getColor(mContext, mSignalStrengthColors[mValue]), + ContextCompat.getColor(mContext, R.color.transparent), + Shader.TileMode.CLAMP + ) + mScanPaint.shader = shader +// postInvalidate() + } + } + } + mScanAnimator?.apply { + if (!isRunning) { + LogUtil.e("木有开始") + start() + } + } + + if (null == mCircle1Animator) { + mCircle1Animator = setCircleAnimator().apply { + addUpdateListener { + mCircleRadius1 = it.animatedValue as Float + postInvalidate() + } + } + } + mCircle1Animator?.apply { + if (!isRunning) { + start() + } + } + + if (null == mCircle2Animator) { + mCircle2Animator = setCircleAnimator().apply { + addUpdateListener { + mCircleRadius2 = it.animatedValue as Float +// postInvalidate() + } + startDelay = 400 + } + } + mCircle2Animator?.apply { + if (!isRunning) { + start() + } + } + + if (null == mCircle3Animator) { + mCircle3Animator = setCircleAnimator().apply { + addUpdateListener { + mCircleRadius3 = it.animatedValue as Float +// postInvalidate() + } + startDelay = 700 + } + } + mCircle3Animator?.apply { + if (!isRunning) { + start() + } + } + + if (null == mCircle4Animator) { + mCircle4Animator = setCircleAnimator().apply { + addUpdateListener { + mCircleRadius4 = it.animatedValue as Float +// postInvalidate() + } + startDelay = 1100 + } + } + mCircle4Animator?.apply { + if (!isRunning) { + start() + } + } + } + + private fun setCircleAnimator(): ValueAnimator { + return ValueAnimator.ofFloat(mMaxRadius - AppUtils.dpToPx(70), mMaxRadius).apply { + duration = 1500L + repeatCount = ValueAnimator.INFINITE + //匀速å˜åŒ– + interpolator = LinearInterpolator() + } + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + mScanAnimator?.cancel() + mCircle1Animator?.cancel() + mCircle2Animator?.cancel() + mCircle3Animator?.cancel() + mCircle4Animator?.cancel() + } + + fun setValue(value: Int) { + if (value < 0) return + mValue = value + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/SmallDotProgressView.kt b/app/src/main/java/com/abbidot/tracker/widget/SmallDotProgressView.kt new file mode 100644 index 0000000..9802af2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/SmallDotProgressView.kt @@ -0,0 +1,122 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.qmuiteam.qmui.util.QMUIDisplayHelper + +/** + *Created by .yzq on 2024/1/22/022. + * @link + * @description:å°åœ†çš„è¿›åº¦æ¡ + */ +class SmallDotProgressView : View { + + private var mWidth = 0 + private var mHeight = 0 + + private val mRadius = AppUtils.dpToPx(2.2f) + private val mBorderSize = AppUtils.dpToPx(1f) + private val mCircleSpace = QMUIDisplayHelper.dpToPx(6) + private val mMaxProgress = 4 + private var mProgress = 1 + + private var mDefColor = 0 + private var mBorderColor = 0 + private var mProgressColor = 0 + + private lateinit var mDefPaint: Paint + private lateinit var mProgressPaint: Paint + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + + initAttrs(context, attrs) + + mDefPaint = Paint() + mDefPaint.color = mDefColor + + mProgressPaint = Paint() + mProgressPaint.color = mBorderColor + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + mDefColor = ContextCompat.getColor(context, R.color.line_color1) + mBorderColor = ContextCompat.getColor(context, R.color.select_color) + mProgressColor = ContextCompat.getColor(context, R.color.select_color2) + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas.apply { + startDraw(this) + } + } + + private fun startDraw(canvas: Canvas) { + for (i in 0 until mMaxProgress) { + val cx = mRadius + mRadius * 2 * i + mCircleSpace * i + val cy = mHeight / 2f + if (i == mProgress - 1) { + mDefPaint.color = mProgressColor + canvas.drawCircle(cx, cy, mRadius, mProgressPaint) + canvas.drawCircle(cx, cy, mRadius - mBorderSize, mDefPaint) + } else { + mDefPaint.color = mDefColor + canvas.drawCircle(cx, cy, mRadius, mDefPaint) + } + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mHeight = (mRadius * 2).toInt() + mWidth = (mRadius * 2 * mMaxProgress + mCircleSpace * (mMaxProgress - 1)).toInt() + setMeasuredDimension(mWidth, mHeight) + +// // 获å–- 网规则的模å¼å’Œå¤§å° +// val widthMode = MeasureSpec.getMode(widthMeasureSpec) +// val widthSize = MeasureSpec.getSize(widthMeasureSpec) +// // 获å–高- 测é‡è§„则的模å¼å’Œå¤§å° +// val heightMode = MeasureSpec.getMode(heightMeasureSpec) +// val heightSize = MeasureSpec.getSize(heightMeasureSpec) +// LogUtil.e("$widthMode,$widthSize,,,$heightMode,$heightSize,----${MeasureSpec.AT_MOST},${MeasureSpec.EXACTLY},${MeasureSpec.UNSPECIFIED}") + } + + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { + super.onLayout(changed, left, top, right, bottom) + //处ç†å¸ƒå±€é«˜åº¦å˜å¤§(如RelativeLayout,强制å˜å®½),居中 + val newHeight = bottom - top + if (newHeight > mHeight) { + mHeight = newHeight + invalidate() + } + } + + fun setProgress(progress: Int) { + if (progress != mProgress && progress >= 0) { + mProgress = progress + invalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/TypefaceButton.kt b/app/src/main/java/com/abbidot/tracker/widget/TypefaceButton.kt new file mode 100644 index 0000000..c11651f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/TypefaceButton.kt @@ -0,0 +1,32 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.layout.QMUIButton + +/** + * Created by .yzq on 2021/12/10/010. + * + * @link + * @description: 自定义button 方便设置字体 + */ +class TypefaceButton @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0) : + QMUIButton(context, attrs, defStyleAttr) { + @SuppressLint("CustomViewStyleable") + private fun initTypefaceTextView(context: Context, attrs: AttributeSet?) { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TypefaceTextView) + val type = typedArray.getString(R.styleable.TypefaceTextView_typeface) ?: return + val typeface = ViewUtil.instance.setTypeface(context, type) + setTypeface(typeface) + typedArray.recycle() + } + + init { + initTypefaceTextView(context, attrs) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/TypefaceRoundButton.kt b/app/src/main/java/com/abbidot/tracker/widget/TypefaceRoundButton.kt new file mode 100644 index 0000000..bff29ec --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/TypefaceRoundButton.kt @@ -0,0 +1,32 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton + +/** + * Created by .yzq on 2021/12/10/010. + * + * @link + * @description: 自定义椭圆button 方便设置字体 + */ +class TypefaceRoundButton @JvmOverloads constructor(context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0) : + QMUIRoundButton(context, attrs, defStyleAttr) { + @SuppressLint("CustomViewStyleable") + private fun initTypefaceTextView(context: Context, attrs: AttributeSet?) { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TypefaceTextView) + val type = typedArray.getString(R.styleable.TypefaceTextView_typeface) ?: return + val typeface = ViewUtil.instance.setTypeface(context, type) + setTypeface(typeface) + typedArray.recycle() + } + + init { + initTypefaceTextView(context, attrs) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/TypefaceTextView.kt b/app/src/main/java/com/abbidot/tracker/widget/TypefaceTextView.kt new file mode 100644 index 0000000..9d604ad --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/TypefaceTextView.kt @@ -0,0 +1,29 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil + +/** + * Created by .yzq on 2021/12/10/010. + * + * @link + * @description: 自定义TextView 方便设置字体 + */ +class TypefaceTextView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : AppCompatTextView(context, attrs, defStyleAttr) { + private fun initTypefaceTextView(context: Context, attrs: AttributeSet?) { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TypefaceTextView) + val type = typedArray.getString(R.styleable.TypefaceTextView_typeface) ?: return + val typeface = ViewUtil.instance.setTypeface(context, type) + setTypeface(typeface) + typedArray.recycle() + } + + init { + initTypefaceTextView(context, attrs) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/VerifyEditText.kt b/app/src/main/java/com/abbidot/tracker/widget/VerifyEditText.kt new file mode 100644 index 0000000..b06f6fd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/VerifyEditText.kt @@ -0,0 +1,297 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.drawable.Drawable +import android.text.* +import android.text.InputFilter.LengthFilter +import android.text.method.HideReturnsTransformationMethod +import android.text.method.PasswordTransformationMethod +import android.util.AttributeSet +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.view.inputmethod.InputMethodManager +import android.widget.EditText +import android.widget.LinearLayout +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import java.util.* + +/** + * Created by SongSenior on 2021/4/16 + * 一个 EditText å’Œ n 个 TextView + */ +class VerifyEditText @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + private val mTextViewList: MutableList = ArrayList() + private var mEditText: EditText? = null + private var drawableNormal: Drawable? = null + private var drawableSelected: Drawable? = null + private var mContext: Context? = null + + //默认 item 个数为 4 个 + private val mDefaultItemCount = 4 + + //默认æ¯ä¸ª item 的宽度为 100 + private val mDefaultItemWidth = 100 + + //默认æ¯ä¸ª item 的间è·ä¸º 50 + private val mDefaultItemMargin = 50 + + //默认æ¯ä¸ª item 的字体大å°ä¸º 14 + private val mDefaultItemTextSize = 14 + + //é»˜è®¤å¯†ç æ˜Žæ–‡æ˜¾ç¤ºæ—¶é—´ä¸º 200ms,之åŽå¯†æ–‡æ˜¾ç¤º + private val mDefaultPasswordVisibleTime = 200 + + //是å¦å¤§å°å†™ + private var mCapitalLetter = false + + //监å¬ç¼–辑输入事件 + private var mOnEditClickListener: OnClickListener? = null + //输入完æˆç›‘å¬ + private var mInputCompleteListener: InputCompleteListener? = null + + init { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + mContext = context + orientation = HORIZONTAL + gravity = Gravity.CENTER + @SuppressLint("CustomViewStyleable") val obtainStyledAttributes = + getContext().obtainStyledAttributes(attrs, R.styleable.VerifyEditText) + drawableNormal = + obtainStyledAttributes.getDrawable(R.styleable.VerifyEditText_verify_background_normal) + drawableSelected = obtainStyledAttributes.getDrawable( + R.styleable.VerifyEditText_verify_background_selected + ) + val textColor = obtainStyledAttributes.getColor( + R.styleable.VerifyEditText_verify_textColor, + ContextCompat.getColor(context, android.R.color.black) + ) + val verifyTypeface = + obtainStyledAttributes.getString(R.styleable.VerifyEditText_verify_typeface) + val typeface = ViewUtil.instance.setTypeface(context, verifyTypeface) + + var count = obtainStyledAttributes.getInt( + R.styleable.VerifyEditText_verify_count, mDefaultItemCount + ) + val inputType = obtainStyledAttributes.getInt( + R.styleable.VerifyEditText_verify_inputType, InputType.TYPE_CLASS_NUMBER + ) + val passwordVisibleTime = obtainStyledAttributes.getInt( + R.styleable.VerifyEditText_verify_password_visible_time, mDefaultPasswordVisibleTime + ) + val width = obtainStyledAttributes.getDimension( + R.styleable.VerifyEditText_verify_width, mDefaultItemWidth.toFloat() + ).toInt() + val height = + obtainStyledAttributes.getDimension(R.styleable.VerifyEditText_verify_height, 0f) + .toInt() + val margin = obtainStyledAttributes.getDimension( + R.styleable.VerifyEditText_verify_margin, mDefaultItemMargin.toFloat() + ).toInt() + val textSize = px2sp( + context, obtainStyledAttributes.getDimension( + R.styleable.VerifyEditText_verify_textSize, + sp2px(context, mDefaultItemTextSize.toFloat()).toFloat() + ) + ).toFloat() + val password = + obtainStyledAttributes.getBoolean(R.styleable.VerifyEditText_verify_password, false) + mCapitalLetter = + obtainStyledAttributes.getBoolean(R.styleable.VerifyEditText_capital_letter, false) + obtainStyledAttributes.recycle() + if (count < 2) count = 2 //最少 2 个 item + mEditText = EditText(context) + mEditText!!.inputType = inputType + mEditText!!.layoutParams = LayoutParams(1, 1) + mEditText!!.isCursorVisible = false + mEditText!!.background = null + mEditText!!.filters = arrayOf(LengthFilter(count)) //é™åˆ¶è¾“入长度为 count + mEditText!!.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + val textView = mTextViewList[start] //获å–对应的 textview + if (before == 0) { + //输入 + val input = s.subSequence(start, s.length) + //èŽ·å–æ–°è¾“入的字 + textView.text = if (mCapitalLetter) { + //å­—æ¯è½¬æ¢ä¸ºå¤§å†™ + input.toString().uppercase(Locale.getDefault()) + } else { + input + } + + if (password) { //如果需è¦å¯†æ–‡æ˜¾ç¤º + textView.transformationMethod = + HideReturnsTransformationMethod.getInstance() + //passwordVisibleTime 毫秒åŽè®¾ç½®ä¸ºå¯†æ–‡æ˜¾ç¤º + textView.postDelayed({ + textView.transformationMethod = + PasswordTransformationMethod.getInstance() + }, passwordVisibleTime.toLong()) + } + setTextViewBackground(textView, drawableSelected) + } else { + //删除 + textView.text = "" + setTextViewBackground(textView, drawableNormal) + } + if (mInputCompleteListener != null && s.length == mTextViewList.size) mInputCompleteListener!!.complete( + s.toString() + ) + mOnEditClickListener?.onClick(this@VerifyEditText) + } + + override fun afterTextChanged(s: Editable) {} + }) + addView(mEditText) + //点击弹出软键盘 + setOnClickListener { v: View? -> + mEditText!!.requestFocus() + showSoftKeyBoard() + } + //éåŽ†ç”Ÿæˆ textview + for (i in 0 until count) { + val textView = TextView(context) + textView.textSize = textSize + textView.filters = arrayOf(LengthFilter(1)) + textView.gravity = Gravity.CENTER + textView.setTextColor(textColor) + textView.typeface = typeface + val layoutParams = LayoutParams( + width, if (height == 0) ViewGroup.LayoutParams.WRAP_CONTENT else height + ) + if (i == 0) layoutParams.leftMargin = -1 else layoutParams.leftMargin = margin + textView.layoutParams = layoutParams + setTextViewBackground(textView, drawableNormal) + addView(textView) + mTextViewList.add(textView) + } + } + + /** + * view æ·»åŠ åˆ°çª—å£æ—¶ï¼Œå»¶è¿Ÿ 500ms 弹出软键盘 + */ + override fun onAttachedToWindow() { + super.onAttachedToWindow() + mEditText!!.postDelayed({ showSoftKeyBoard() }, 500) + } + + /** + * 设置背景 + * + * @param textView + * @param drawable + */ + private fun setTextViewBackground(textView: TextView, drawable: Drawable?) { + if (drawable != null) textView.background = drawable + } + + /** + * 设置背景颜色 + */ + fun setBoxBackground(drawable: Drawable?) { + for (textView in mTextViewList) { + setTextViewBackground(textView, drawable) + } + } + + fun setEditClickListener(onClickListener: OnClickListener) { + mOnEditClickListener = onClickListener + } + + /** + * 获å–当å‰è¾“入的内容 + * + * @return + */ + val content: String + get() { + val text = mEditText!!.text + return if (TextUtils.isEmpty(text)) "" else { + if (mCapitalLetter) { + //å­—æ¯è½¬æ¢ä¸ºå¤§å†™ + mEditText!!.text.toString().uppercase(Locale.getDefault()) + } else mEditText!!.text.toString() + } + } + + /** + * 清除内容 + */ + fun clearContent() { + mEditText!!.setText("") + for (i in mTextViewList.indices) { + val textView = mTextViewList[i] + textView.text = "" + setTextViewBackground(textView, drawableNormal) + } + } + + /** + * 设置默认的内容 + * + * @param content + */ + fun setDefaultContent(content: String) { + mEditText!!.setText(content) + mEditText!!.requestFocus() + val chars = content.toCharArray() + val min = chars.size.coerceAtMost(mTextViewList.size) + for (i in 0 until min) { + val aChar = chars[i] + val s = aChar.toString() + val textView = mTextViewList[i] + textView.text = s + setTextViewBackground(textView, drawableSelected) + } + if (mInputCompleteListener != null && min == mTextViewList.size) mInputCompleteListener!!.complete( + content.substring(0, min) + ) + } + + /** + * 显示软键盘 + */ + private fun showSoftKeyBoard() { + val imm = mContext!!.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm.showSoftInput(mEditText, InputMethodManager.SHOW_FORCED) + } + + /** + * 添加输入完æˆçš„ç›‘å¬ + * + * @param inputCompleteListener + */ + fun addInputCompleteListener(inputCompleteListener: InputCompleteListener?) { + mInputCompleteListener = inputCompleteListener + val content = mEditText!!.text + if (!TextUtils.isEmpty(content) && content.toString().length == mTextViewList.size) { + mInputCompleteListener!!.complete(content.toString()) + } + } + + interface InputCompleteListener { + fun complete(content: String?) + } + + private fun px2sp(context: Context, pxValue: Float): Int { + val fontScale = context.resources.displayMetrics.scaledDensity + return (pxValue / fontScale + 0.5f).toInt() + } + + private fun sp2px(context: Context, spValue: Float): Int { + val fontScale = context.resources.displayMetrics.scaledDensity + return (spValue * fontScale + 0.5f).toInt() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/VerticalBottomToTopSeekBar.kt b/app/src/main/java/com/abbidot/tracker/widget/VerticalBottomToTopSeekBar.kt new file mode 100644 index 0000000..7ecf2d6 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/VerticalBottomToTopSeekBar.kt @@ -0,0 +1,76 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.appcompat.widget.AppCompatSeekBar + +/** + * Created by .yzq on 2022/1/6/006. + * + * @link + * @description: 垂直滑动滚动æ¡,从下往上滑动 + */ +class VerticalBottomToTopSeekBar : AppCompatSeekBar { + constructor(context: Context) : super(context) {} + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {} + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, + defStyleAttr) { + } + + /** + *onDraw事件中旋转画布,由水平å˜åž‚ç›´ + */ + @Synchronized + override fun onDraw(canvas: Canvas) { + canvas.rotate(-90f) + canvas.translate(-height.toFloat(), 0f) + super.onDraw(canvas) + } + + /** + * measureäº‹ä»¶ä¸­é‡æ–°è®¡ç®—控件尺寸,对æ¢å®½é«˜å€¼ + */ + @Synchronized + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + val width = measuredWidth + val height = measuredHeight + setMeasuredDimension(width, height) + } + + /** + * åˆ‡è®°åŠ ä¸Šå°ºå¯¸å˜æ›´æ—¶çš„äº‹ä»¶ï¼Œå˜æ›´å¯¹æ¢å®½é«˜å€¼ + */ + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(h, w, oldh, oldw) + } + + /** + * 最åŽé‡è½½â€”ä¸‹æ»‘åŠ¨äº‹ä»¶ï¼Œé‡æ–°è®¡ç®—progress值 + */ + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { + if (!isEnabled) return false + when (event.action) { + MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP -> { + if (max <= 0) return true + //因为我这是å‘上滑动的,所以最大值乘Y轴的滑动比例得到上é¢çš„å–值,实际值å†ç”¨æœ€å¤§å€¼åŽ»å‡å³å¯ + progress = max - (max * event.y / height).toInt() + onSizeChanged(width, height, 0, 0) + } + } + return true + } + + /** + * 调用setProgress(int progress)å¤±æ•ˆï¼Œæ»šåŠ¨æ¡æ²¡æœ‰å˜åŒ– + */ + @Synchronized + override fun setProgress(progress: Int) { + super.setProgress(progress) + onSizeChanged(width, height, 0, 0) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/VerticalTopToBottomSeekBar.kt b/app/src/main/java/com/abbidot/tracker/widget/VerticalTopToBottomSeekBar.kt new file mode 100644 index 0000000..cbc702f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/VerticalTopToBottomSeekBar.kt @@ -0,0 +1,98 @@ +package com.abbidot.tracker.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.appcompat.widget.AppCompatSeekBar +import com.abbidot.baselibrary.util.LogUtil + +/** + * Created by .yzq on 2022/1/6/006. + * + * @link + * @description: 垂直滑动滚动æ¡,从上往下滑动 + */ +class VerticalTopToBottomSeekBar : AppCompatSeekBar { + + private var mOnSeekBarChangeListener: OnSeekBarChangeListener? = null + + constructor(context: Context) : super(context) {} + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {} + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, + defStyleAttr) { + } + + /** + *onDraw事件中旋转画布,由水平å˜åž‚ç›´ + */ + @Synchronized + override fun onDraw(canvas: Canvas) { + canvas.rotate(90f) + canvas.translate(0f, -width.toFloat()) + super.onDraw(canvas) + } + + /** + * measureäº‹ä»¶ä¸­é‡æ–°è®¡ç®—控件尺寸,对æ¢å®½é«˜å€¼ + */ + @Synchronized + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + val width = measuredWidth + val height = measuredHeight + setMeasuredDimension(width, height) + } + + /** + * åˆ‡è®°åŠ ä¸Šå°ºå¯¸å˜æ›´æ—¶çš„äº‹ä»¶ï¼Œå˜æ›´å¯¹æ¢å®½é«˜å€¼ + */ + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(h, w, oldh, oldw) + } + + /** + * 最åŽé‡è½½â€”ä¸‹æ»‘åŠ¨äº‹ä»¶ï¼Œé‡æ–°è®¡ç®—progress值 + */ + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent): Boolean { + if (!isEnabled) return false + when (event.action) { + MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP -> { + if (max <= 0) return true + //因为我这是å‘下滑动的,所以最大值乘Y轴的滑动比例得到上é¢å€¼å³å¯ + progress = (max * event.y / height).toInt() + LogUtil.d("$progress") + onSizeChanged(width, height, 0, 0) + if (null != mOnSeekBarChangeListener) { + mOnSeekBarChangeListener!!.onProgressChanged(progress) + //æ‰‹æŒ‡åœæ­¢æŒ‰å±å¹•,离开å±å¹• + if (event.action == MotionEvent.ACTION_UP) { + mOnSeekBarChangeListener!!.onStopChanged(progress) + } + } + } + } + return true + } + + /** + * 调用setProgress(int progress)å¤±æ•ˆï¼Œæ»šåŠ¨æ¡æ²¡æœ‰å˜åŒ– + */ + @Synchronized + override fun setProgress(progress: Int) { + super.setProgress(progress) + onSizeChanged(width, height, 0, 0) + } + + fun setOnSeekBarChangeProgressListener(l: OnSeekBarChangeListener) { + mOnSeekBarChangeListener = l + } + + + interface OnSeekBarChangeListener { + fun onProgressChanged(progress: Int) + fun onStopChanged(progress: Int) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/DateItem.java b/app/src/main/java/com/abbidot/tracker/widget/calender/DateItem.java new file mode 100644 index 0000000..d0a6ef8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/DateItem.java @@ -0,0 +1,103 @@ +package com.abbidot.tracker.widget.calender; + +/** + * Created by ZZ on 2016/3/16. + */ +public class DateItem { + + private int day; + private int week; + private int year; + private int month; + private boolean isLastMonth; + private boolean isNextMonth; + private boolean selected; + private boolean current; + //æ˜¯å¦æ˜¯æœªåˆ°çš„æ—¥æœŸã€‚大于今天 + private boolean isFuture; + + public boolean isCurrent() { + return current; + } + + public boolean isFuture() { + return isFuture; + } + + public void setFuture(boolean future) { + isFuture = future; + } + + public void setCurrent(boolean current) { + this.current = current; + } + + public boolean isSelected() { + return selected; + } + + public void setSelected(boolean selected) { + this.selected = selected; + } + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + + public int getMonth() { + return month; + } + + public void setMonth(int month) { + this.month = month; + } + + public boolean isLastMonth() { + return isLastMonth; + } + + public void setIsLastMonth(boolean isLastMonth) { + this.isLastMonth = isLastMonth; + } + + public boolean isNextMonth() { + return isNextMonth; + } + + public void setIsNextMonth(boolean isNextMonth) { + this.isNextMonth = isNextMonth; + } + + public int getDay() { + return day; + } + + public void setDay(int day) { + this.day = day; + } + + public int getWeek() { + return week; + } + + public void setWeek(int week) { + this.week = week; + } + + @Override + public String toString() { + return "DateItem{" + + "day=" + day + + ", week=" + week + + ", year=" + year + + ", month=" + month + + ", isLastMonth=" + isLastMonth + + ", isNextMonth=" + isNextMonth + + ", selected=" + selected + + '}' + "\n"; + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/DateUtil.java b/app/src/main/java/com/abbidot/tracker/widget/calender/DateUtil.java new file mode 100644 index 0000000..58caa1e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/DateUtil.java @@ -0,0 +1,108 @@ +package com.abbidot.tracker.widget.calender; + +import android.util.Log; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +/** + * Created by zz on 2016/1/13. + */ +public class DateUtil { + + public static String getYearMonthDay() { + return new SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()).format(new Date()); + } + + public static String getYearMonthDayHourMinuteSecond() { + return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault()).format(new Date()); + } + + public static String getHourMinuteSecond() { + return new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date()); + } + + public static int getCurrentYear() { + Calendar calendar = Calendar.getInstance(); + return calendar.get(Calendar.YEAR); + } + + public static int getCurrentMonth() { + Calendar calendar = Calendar.getInstance(); + return calendar.get(Calendar.MONTH)+1; + } + + public static int getCurrentDay() { + Calendar calendar = Calendar.getInstance(); + return calendar.get(Calendar.DAY_OF_MONTH); + } + + public static int getCurrentWeek() { + return calWeek(getCurrentYear(), getCurrentMonth(), getCurrentDay()); + } + + public static int calWeek(int y, int m, int d) { + int day = calPassDay(y, m, d); + Log.i("TAG", y+"-"+m+"-"+d+",passDay="+day); + int s = (y-1)+(y-1)/4-(y-1)/100+(y-1)/400+day; + return s%7; + } + + public static int calPassDay(int y, int m, int d) { + int passDay = 0; + for (int i=0; i<=m-1; i++) { + passDay += calDayOfMonth(y, i); + } + return passDay+d; + } + + public static int calDayOfMonth(int y, int m) { + int day = 0; + switch (m) { + case 12: + day = 31; + break; + case 11: + day = 30; + break; + case 10: + day = 31; + break; + case 9: + day = 30; + break; + case 8: + day = 31; + break; + case 7: + day = 31; + break; + case 6: + day = 30; + break; + case 5: + day = 31; + break; + case 4: + day = 30; + break; + case 3: + day = 31; + break; + case 2: + day = isLeapYear(y)?29:28; + break; + case 1: + day = 31; + break; + } + return day; + } + + public static boolean isLeapYear(int y) { + return y % 4 == 0 && y % 100 != 0 || y % 400 == 0; + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/DayAdapter.java b/app/src/main/java/com/abbidot/tracker/widget/calender/DayAdapter.java new file mode 100644 index 0000000..d9b3b4c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/DayAdapter.java @@ -0,0 +1,187 @@ +package com.abbidot.tracker.widget.calender; + +import android.content.Context; +import android.graphics.drawable.GradientDrawable; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.abbidot.tracker.R; + +import java.util.List; + + +/** + * Created by user999 on 2016/6/7. + */ +public class DayAdapter extends RecyclerView.Adapter { + + private List datas; + private Context context; + private int dayTextColorSelected; + private int dayTextColorNormal; + private int daySelectionColor; + private int weekTextColor; + private OnItemClick itemClick; + private int pressShapeSelectorId; + private int todayPointColor; + + public DayAdapter(Context context, List datas, int dayTextColorSelected, + int dayTextColorNormal, int daySelectionColor, int weekTextColor, + int pressShapeSelectorId, int todayPointColor) { + this.datas = datas; + this.context = context; + this.dayTextColorSelected = dayTextColorSelected; + this.dayTextColorNormal = dayTextColorNormal; + this.daySelectionColor = daySelectionColor; + this.weekTextColor = weekTextColor; + this.pressShapeSelectorId = pressShapeSelectorId; + this.todayPointColor = todayPointColor; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public List getData() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = View.inflate(parent.getContext(), R.layout.list_item_day, null); + ViewUtil.scaleContentView(view.findViewById(R.id.list_item_root_layout)); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, final int position) { + DateItem item = datas.get(position); + int week = item.getWeek(); + holder.tvWeek.setTextSize(12); + switch (week) { + case 0: + holder.tvWeek.setText("SUN"); + break; + case 1: + holder.tvWeek.setText("MON"); + break; + case 2: + holder.tvWeek.setText("TUE"); + break; + case 3: + holder.tvWeek.setText("WED"); + break; + case 4: + holder.tvWeek.setText("THU"); + break; + case 5: + holder.tvWeek.setText("FRI"); + break; + case 6: + holder.tvWeek.setText("SAT"); + break; + } + GradientDrawable p = (GradientDrawable) holder.tvDay.getBackground(); + if (p != null) { + if (item.isSelected()) { + p.setColor(daySelectionColor); + } else { + p.setColor(ContextCompat.getColor(context, R.color.sleep_time_gray_color)); + } + } else { + } + GradientDrawable t = (GradientDrawable) holder.tvPoint.getBackground(); + if (t != null) { + if (item.isCurrent()) { + t.setColor(todayPointColor); + } else { + t.setColor(0x00000000); + } + } else { + } + + holder.rootView.setBackgroundResource(pressShapeSelectorId); + holder.tvWeek.setTextColor(weekTextColor); + holder.tvDay.setText(item.getDay() + ""); + + holder.tvPoint.setVisibility(item.isCurrent() ? View.VISIBLE : View.INVISIBLE); + + if (item.isFuture()) { + holder.tvDay.setTextColor(ContextCompat.getColor(context, + R.color.sleep_time_gray_color2)); + holder.rootView.setOnClickListener(null); + } else { + holder.tvDay.setTextColor(item.isSelected() ? dayTextColorSelected : + dayTextColorNormal); + holder.rootView.setOnClickListener(v -> { + if (itemClick != null) { + itemClick.onItemClick(datas.get(position).getYear(), + datas.get(position).getMonth(), datas.get(position).getDay(), + datas.get(position).getWeek()); + } + }); + } + } + + public void setPressShapeSelectorId(int pressShapeSelectorId) { + this.pressShapeSelectorId = pressShapeSelectorId; + notifyDataSetChanged(); + } + + public void setDayTextColorSelected(int dayTextColorSelected) { + this.dayTextColorSelected = dayTextColorSelected; + notifyDataSetChanged(); + } + + public void setDayTextColorNormal(int dayTextColorNormal) { + this.dayTextColorNormal = dayTextColorNormal; + notifyDataSetChanged(); + } + + public void setDaySelectionColor(int daySelectionColor) { + this.daySelectionColor = daySelectionColor; + notifyDataSetChanged(); + } + + public void setWeekTextColor(int weekTextColor) { + this.weekTextColor = weekTextColor; + notifyDataSetChanged(); + } + + public void setTodayPointColor(int todayPointColor) { + this.todayPointColor = todayPointColor; + notifyDataSetChanged(); + } + + public void setItemClick(OnItemClick itemClick) { + this.itemClick = itemClick; + } + + public interface OnItemClick { + void onItemClick(int year, int month, int day, int week); + } + + @Override + public int getItemCount() { + return datas == null ? 0 : datas.size(); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + public View rootView; + public TextView tvWeek; + public TextView tvDay; + public View tvPoint; + + public ViewHolder(View itemView) { + super(itemView); + rootView = itemView.findViewById(R.id.list_item_root_layout); + tvWeek = itemView.findViewById(R.id.item_week); + tvDay = itemView.findViewById(R.id.item_day); + tvPoint = itemView.findViewById(R.id.item_point); + } + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/DayV2Adapter.java b/app/src/main/java/com/abbidot/tracker/widget/calender/DayV2Adapter.java new file mode 100644 index 0000000..94c5f77 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/DayV2Adapter.java @@ -0,0 +1,215 @@ +package com.abbidot.tracker.widget.calender; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.abbidot.tracker.R; + +import java.util.List; + + +/** + * Created by user999 on 2016/6/7. + */ +public class DayV2Adapter extends RecyclerView.Adapter { + + private List datas; + private Context context; + private int dayTextColorSelected; + private int dayTextColorNormal; + private int daySelectionColor; + private int daySelectionDrawable = 0; + private int weekTextColor; + private OnItemClick itemClick; + private int pressShapeSelectorId; + private int todayPointColor; + private int todayBgDrawable = 0; + private int todayTextColor = 0; + + public DayV2Adapter(Context context, List datas, int dayTextColorSelected, + int dayTextColorNormal, int daySelectionColor, int weekTextColor, + int pressShapeSelectorId, int todayPointColor) { + this.datas = datas; + this.context = context; + this.dayTextColorSelected = dayTextColorSelected; + this.dayTextColorNormal = dayTextColorNormal; + this.daySelectionColor = daySelectionColor; + this.weekTextColor = weekTextColor; + this.pressShapeSelectorId = pressShapeSelectorId; + this.todayPointColor = todayPointColor; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public List getData() { + return datas; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = View.inflate(parent.getContext(), R.layout.item_horizontal_calender_day, null); + // ViewUtil.scaleContentView(view.findViewById(R.id.list_item_root_layout_v2)); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(ViewHolder holder, final int position) { + DateItem item = datas.get(position); + int week = item.getWeek(); + holder.tvWeek.setTextSize(12); + switch (week) { + case 0: + holder.tvWeek.setText("Sun"); + break; + case 1: + holder.tvWeek.setText("Mon"); + break; + case 2: + holder.tvWeek.setText("Tue"); + break; + case 3: + holder.tvWeek.setText("Wed"); + break; + case 4: + holder.tvWeek.setText("Thu"); + break; + case 5: + holder.tvWeek.setText("Fri"); + break; + case 6: + holder.tvWeek.setText("Sat"); + break; + } + // GradientDrawable p = (GradientDrawable) holder.tvDay.getBackground(); + // if (p != null) { + // if (item.isSelected()) { + // p.setColor(daySelectionColor); + // } else { + // //"æ—¥"默认的背景颜色 + // p.setColor(ContextCompat.getColor(context, R.color.transparent)); + // } + // } else { + // } + if (item.isSelected()) { + if (item.isCurrent()) { + //䏿˜¾ç¤º"今天" + // holder.tvCurrentDay.setVisibility(View.VISIBLE); + // holder.tvDay.setVisibility(View.INVISIBLE); + // holder.tvWeek.setVisibility(View.INVISIBLE); + holder.tvCurrentDay.setVisibility(View.GONE); + holder.tvDay.setVisibility(View.VISIBLE); + holder.tvWeek.setVisibility(View.VISIBLE); + } else { + holder.tvCurrentDay.setVisibility(View.GONE); + holder.tvDay.setVisibility(View.VISIBLE); + holder.tvWeek.setVisibility(View.VISIBLE); + } + if (daySelectionDrawable == 0) { + holder.tvDay.setBackgroundResource(R.drawable.shape22_green_yellow_bg); + } else + holder.tvDay.setBackgroundResource(daySelectionDrawable); + } else { + //"æ—¥"默认的背景颜色 + holder.tvDay.setBackgroundResource(R.color.transparent); + + holder.tvCurrentDay.setVisibility(View.GONE); + holder.tvDay.setVisibility(View.VISIBLE); + holder.tvWeek.setVisibility(View.VISIBLE); + } + + + // GradientDrawable t = (GradientDrawable) holder.tvPoint.getBackground(); + // if (t != null) { + // if (item.isCurrent()) { + // t.setColor(todayPointColor); + // } else { + // t.setColor(0x00000000); + // } + // } else { + // } + + holder.rootView.setBackgroundResource(pressShapeSelectorId); + holder.tvWeek.setTextColor(weekTextColor); + holder.tvDay.setText(item.getDay() + ""); + + // holder.tvPoint.setVisibility(item.isCurrent() ? View.VISIBLE : View.INVISIBLE); + + if (item.isFuture()) { + holder.tvDay.setTextColor(ContextCompat.getColor(context, + R.color.sleep_time_gray_color2)); + holder.rootView.setOnClickListener(null); + } else { + holder.tvDay.setTextColor(item.isSelected() ? dayTextColorSelected : + dayTextColorNormal); + holder.rootView.setOnClickListener(v -> { + if (itemClick != null) { + itemClick.onItemClick(datas.get(position).getYear(), + datas.get(position).getMonth(), datas.get(position).getDay(), + datas.get(position).getWeek()); + } + }); + } + + if (todayBgDrawable > 0) { + holder.tvCurrentDay.setBackgroundResource(todayBgDrawable); + } else { + + } + if (todayTextColor > 0) { + holder.tvCurrentDay.setTextColor(ContextCompat.getColor(context,todayTextColor)); + } else { + + } + } + + public void setItemClick(OnItemClick itemClick) { + this.itemClick = itemClick; + } + + public interface OnItemClick { + void onItemClick(int year, int month, int day, int week); + } + + @Override + public int getItemCount() { + return datas == null ? 0 : datas.size(); + } + + public static class ViewHolder extends RecyclerView.ViewHolder { + public View rootView; + public TextView tvWeek; + public TextView tvDay; + // public View tvPoint; + + public TextView tvCurrentDay; + + public ViewHolder(View itemView) { + super(itemView); + rootView = itemView.findViewById(R.id.list_item_root_layout_v2); + tvWeek = itemView.findViewById(R.id.tv_item_calender_week); + tvDay = itemView.findViewById(R.id.tv_item_calender_day); + tvCurrentDay = itemView.findViewById(R.id.tv_item_calender_today); + // tvPoint = itemView.findViewById(R.id.item_point); + } + } + + public void setDaySelectionDrawable(int selectionDrawable) { + if (selectionDrawable > 0) { + daySelectionDrawable = selectionDrawable; + notifyDataSetChanged(); + } + } + + public void setTodaySelectionBgTextColor(int selectionDrawable, int textColor) { + todayBgDrawable = selectionDrawable; + todayTextColor = textColor; + notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderView.java b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderView.java new file mode 100644 index 0000000..826fc63 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderView.java @@ -0,0 +1,596 @@ +package com.abbidot.tracker.widget.calender; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.NumberPicker; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.abbidot.tracker.R; +import com.abbidot.tracker.adapter.SpaceItemDecoration; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 水平滑动日历,获å–当月日期天数 + * Created by zz on 2016/9/14. + * + */ +public class HorizontalCalenderView extends FrameLayout { + + + private View rootView; + private RecyclerView rv; + private LinearLayout llYear; + private LinearLayout llMonth; + private TextView tvYear; + private TextView tvMonth; + private TextView tvYearUnit; + private TextView tvMonthUnit; + + private DayAdapter adapter; + + private int minYear; + + private int curYear; + + private int curMonth; + + private int curDay; + + private int curWeek; + + private int selectedYear; + + private int selectedMonth; + + private int selectedDay; + + private int selectedWeek; + + private int firstWeek; + + private int curMonthLastDay; + + private OnDaySelectedListener daySelectedListener; + + private OnYearMonthClickListener onYearMonthClickListener; + + private boolean showPickDialog; + private int unitColor; + private int yearTextColor; + private int monthTextColor; + + private int dayTextColorSelected; + private int dayTextColorNormal; + private int daySelectionColor; + private int weekTextColor; + + private int pressShapeSelectorId; + private int todayPointColor; + + public HorizontalCalenderView(Context context) { + super(context); + init(context, null); + } + + public HorizontalCalenderView(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public HorizontalCalenderView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + + initAttrs(context, attrs); + + rootView = LayoutInflater.from(context).inflate(R.layout.horizontal_calender_view, null); + + rv = rootView.findViewById(R.id.rv); + llYear = rootView.findViewById(R.id.ll_year); + llMonth = rootView.findViewById(R.id.ll_month); + tvYear = rootView.findViewById(R.id.tv_year); + tvMonth = rootView.findViewById(R.id.tv_month); + tvYearUnit = rootView.findViewById(R.id.tv_year_unit); + tvMonthUnit = rootView.findViewById(R.id.tv_month_unit); + + initData(context); + + initEvent(); + + addView(rootView); + } + + private void initAttrs(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HorizontalCalenderView); + showPickDialog = a.getBoolean(R.styleable.HorizontalCalenderView_zhc_show_pick_dialog, + true); + minYear = a.getInteger(R.styleable.HorizontalCalenderView_zhc_min_year, 2012); + unitColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_unit_color, 0xff3498DB); + yearTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_year_text_color, + 0xff000000); + monthTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_month_text_color, + 0xff000000); + dayTextColorSelected = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_selected_text_color, + 0xffffffff); + dayTextColorNormal = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_unselected_text_color, + 0xff000000); + weekTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_week_text_color, + 0xff9e9e9e); + daySelectionColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_selection_color, + 0xff3498DB); + //默认背景颜色 + pressShapeSelectorId = + a.getResourceId(R.styleable.HorizontalCalenderView_zhc_press_shape_selector, + R.color.blue); + todayPointColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_today_point_color, + 0xffed9f24); + a.recycle(); + } + + private void initData(Context context) { + curYear = DateUtil.getCurrentYear(); + curMonth = DateUtil.getCurrentMonth(); + curDay = DateUtil.getCurrentDay(); + curWeek = DateUtil.getCurrentWeek(); + selectedYear = curYear; + selectedMonth = curMonth; + selectedDay = curDay; + selectedWeek = curWeek; + + tvYear.setText(curYear + ""); + tvMonth.setText(curMonth + ""); + + List items = getItems(); + adapter = new DayAdapter(context, items, dayTextColorSelected, dayTextColorNormal, + daySelectionColor, weekTextColor, pressShapeSelectorId, todayPointColor); + adapter.setItemClick(new DayAdapter.OnItemClick() { + @Override + public void onItemClick(int year, int month, int day, int week) { + setSelectedDate(year, month, day, week); + } + }); + LinearLayoutManager manager = new LinearLayoutManager(context); + manager.setOrientation(LinearLayoutManager.HORIZONTAL); + rv.setLayoutManager(manager); + rv.addItemDecoration(new SpaceItemDecoration(20, 20, 0, 0)); + rv.setHasFixedSize(true); + rv.offsetChildrenHorizontal(3); + rv.setAdapter(adapter); + rv.scrollToPosition(curDay - 4); + } + + /** + * èŽ·å–æ—¥æœŸitem + * + * @return + */ + private List getItems() { + List items = new ArrayList<>(); + firstWeek = getFirstDayOfWeek(selectedYear, selectedMonth); + int tempWeek = firstWeek; + + int lastMonthDay = getLastDayOfMonth(selectedYear, selectedMonth) - firstWeek; + curMonthLastDay = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + int nextMonthDay = 1; + + for (int i = 0; i < 42; i++) { + DateItem item = new DateItem(); + if (i < firstWeek) { + lastMonthDay++; + item.setIsLastMonth(true); + item.setDay(lastMonthDay); + } else { + item.setIsLastMonth(false); + int d = i - firstWeek + 1; + if (d <= curMonthLastDay) { + item.setIsNextMonth(false); + if (d == selectedDay) { + item.setSelected(true); + } + item.setDay(i - firstWeek + 1); + item.setWeek(tempWeek % 7); + item.setYear(selectedYear); + item.setMonth(selectedMonth); + if (selectedYear == curYear && selectedMonth == curMonth) { + if (d == curDay) + item.setCurrent(true); + else if (d > curDay) + item.setFuture(true); + } + items.add(item); + tempWeek++; + } else { + item.setIsNextMonth(true); + item.setDay(nextMonthDay); + nextMonthDay++; + } + } + } + return items; + } + + public void setUnitColorResId(int colorResId) { + this.unitColor = getContext().getResources().getColor(colorResId); + setUnitColor(this.unitColor); + } + + public void setUnitColor(int colorValue) { + if (tvYearUnit != null) + tvYearUnit.setTextColor(colorValue); + if (tvMonthUnit != null) + tvMonthUnit.setTextColor(colorValue); + } + + public void setYearTextColorResId(int yearTextColorResId) { + this.yearTextColor = getContext().getResources().getColor(yearTextColorResId); + setYearTextColor(yearTextColor); + } + + public void setTodayPointColorResId(int todayPointColorResId) { + this.todayPointColor = getContext().getResources().getColor(todayPointColorResId); + setTodayPointColor(todayPointColor); + } + + public void setTodayPointColor(int todayPointColor) { + adapter.setTodayPointColor(todayPointColor); + } + + public void setYearTextColor(int yearTextColor) { + if (tvYear != null) + tvYear.setTextColor(yearTextColor); + } + + + public void setMonthTextColorResId(int monthTextColorResId) { + this.monthTextColor = getContext().getResources().getColor(monthTextColorResId); + setMonthTextColor(monthTextColor); + } + + public void setMonthTextColor(int monthTextColor) { + if (tvMonth != null) + tvMonth.setTextColor(monthTextColor); + } + + public void setWeekTextColorResId(int weekTextColorResId) { + this.weekTextColor = getContext().getResources().getColor(weekTextColorResId); + setWeekTextColor(weekTextColor); + } + + public void setWeekTextColor(int weekTextColor) { + adapter.setWeekTextColor(weekTextColor); + } + + public void setDaySelectionColorResId(int daySelectionColorResId) { + this.daySelectionColor = getContext().getResources().getColor(daySelectionColorResId); + setDaySelectionColor(daySelectionColor); + } + + public void setDayTextColorSelectedResId(int dayTextColorSelectedRedId) { + this.dayTextColorSelected = getContext().getResources().getColor(dayTextColorSelectedRedId); + setDayTextColorSelected(dayTextColorSelected); + } + + public void setDayTextColorSelected(int dayTextColorSelected) { + adapter.setDayTextColorSelected(dayTextColorSelected); + } + + public void setDayTextColorNormalResId(int dayTextColorNormalRedId) { + this.dayTextColorNormal = getContext().getResources().getColor(dayTextColorNormalRedId); + setDayTextColorNormal(dayTextColorNormal); + } + + public void setDayTextColorNormal(int dayTextColorNormal) { + adapter.setDayTextColorNormal(dayTextColorNormal); + } + + public void setDaySelectionColor(int daySelectionColor) { + adapter.setDaySelectionColor(daySelectionColor); + } + + private void initEvent() { + llYear.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + new AlertDialog.Builder(getContext()).setView(ll) + .setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + } + }).setNegativeButton("å–æ¶ˆ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onYearClick(selectedYear, selectedMonth); + } + } + }); + + llMonth.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + monthPicker.requestFocus(); + + new AlertDialog.Builder(getContext()).setView(ll) + .setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + } + }).setNegativeButton("å–æ¶ˆ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onMonthClick(selectedYear, selectedMonth); + } + } + }); + } + + public boolean isShowPickDialog() { + return showPickDialog; + } + + public void setShowPickDialog(boolean showPickDialog) { + this.showPickDialog = showPickDialog; + } + + public int getFirstDayOfWeek(int y, int m) { + return DateUtil.calWeek(y, m, 1); + } + + public int getLastDayOfMonth(int y, int m) { + if (m == 1) { + return DateUtil.calDayOfMonth(y - 1, 12); + } else { + return DateUtil.calDayOfMonth(y, m - 1); + } + } + + public interface OnYearMonthClickListener { + void onYearClick(int selectedYear, int selectedMonth); + + void onMonthClick(int selectedYear, int selectedMonth); + } + + public interface OnDaySelectedListener { + void onSelected(boolean hasChanged, int year, int month, int day, int week, DateItem items); + } + + public String setSelectedDate() { + return String.format(selectedYear + "-" + selectedMonth + "-" + selectedDay); + } + + public int getSelectedYear() { + return selectedYear; + } + + public int getSelectedMonth() { + return selectedMonth; + } + + public int getSelectedDay() { + return selectedDay; + } + + public int getSelectedWeek() { + return selectedWeek; + } + + public void setSelectedDate(int year, int month, int day) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), day); + daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay != day, year, month, day, selectedWeek, dateItem); + } + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + /** + * è¡¥é½0的日期 + * + * @param separated 日期分隔符 + * @param year + * @param month + * @param day + * @return + */ + public String fillingDate(String separated, int year, int month, int day) { + return year + separated + (month < 10 ? "0" + month : month + "") + separated + (day < 10 ? "0" + day : day + ""); + } + + /** + * æ ¹æ®æ—¥æœŸæ‰¾åˆ°è¯¥item下所有熟悉å˜é‡ + * + * @param items + * @param day + * @return + */ + private DateItem getDayFindItem(List items, int day) { + DateItem dateItem = null; + for (int i = 0; i < items.size(); i++) { + if (items.get(i).getDay() == day) { + dateItem = items.get(i); + break; + } + } + return dateItem; + } + + private void setSelectedDate(int year, int month, int day, int week) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = week; + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + if (daySelectedListener != null) { + DateItem dateItem = getDayFindItem(adapter.getData(), day); + daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay != day, year, month, day, selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setPressShapeSelectorId(int pressShapeSelectorId) { + this.pressShapeSelectorId = pressShapeSelectorId; + if (llYear != null) + llYear.setBackgroundResource(pressShapeSelectorId); + if (llMonth != null) { + llMonth.setBackgroundResource(pressShapeSelectorId); + } + adapter.setPressShapeSelectorId(pressShapeSelectorId); + } + + public void setSelectedYear(int year) { + int lastYear = selectedYear; + this.selectedYear = year; + this.selectedWeek = DateUtil.calWeek(year, selectedMonth, selectedDay); + tvYear.setText(year + ""); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedDay); + daySelectedListener.onSelected(lastYear != year, year, selectedMonth, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedYearAndMonth(int year, int month) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedDay); + daySelectedListener.onSelected(lastYear != year || lastMonth != month, year, month, + selectedDay, selectedWeek, dateItem); + } + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedMonth(int month) { + int lastMonth = this.selectedMonth; + this.selectedMonth = month; + tvMonth.setText(month + ""); + this.selectedWeek = DateUtil.calWeek(selectedYear, month, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedDay); + daySelectedListener.onSelected(lastMonth != month, selectedYear, month, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public String getSelectedDate() { + return selectedYear + "-" + selectedMonth + "-" + selectedDay; + } + + public String getSelectedDate(String gapStr) { + return selectedYear + gapStr + selectedMonth + gapStr + selectedDay; + } + + public void setOnDaySelectedListener(OnDaySelectedListener daySelectedListener) { + this.daySelectedListener = daySelectedListener; + } + + public void setOnYearMonthClickListener(OnYearMonthClickListener onYearMonthClickListener) { + this.onYearMonthClickListener = onYearMonthClickListener; + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV1.java b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV1.java new file mode 100644 index 0000000..1713c0b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV1.java @@ -0,0 +1,644 @@ +package com.abbidot.tracker.widget.calender; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.NumberPicker; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.abbidot.tracker.R; +import com.abbidot.tracker.adapter.SpaceItemDecoration; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 水平滑动日历,èŽ·å–æœ€è¿‘30天日期天数 + */ +public class HorizontalCalenderViewV1 extends FrameLayout { + + private View rootView; + private RecyclerView rv; + private LinearLayout llYear; + private LinearLayout llMonth; + private TextView tvYear; + private TextView tvMonth; + private TextView tvYearUnit; + private TextView tvMonthUnit; + + private DayAdapter adapter; + + private int minYear; + + private int curYear; + + private int curMonth; + + private int curDay; + + private int curWeek; + + private int selectedYear; + + private int selectedMonth; + + private int selectedDay; + + private int selectedWeek; + + private int firstWeek; + + private int curMonthLastDay; + + private OnDaySelectedListener daySelectedListener; + + private OnYearMonthClickListener onYearMonthClickListener; + + private boolean showPickDialog; + private int unitColor; + private int yearTextColor; + private int monthTextColor; + + private int dayTextColorSelected; + private int dayTextColorNormal; + private int daySelectionColor; + private int weekTextColor; + + private int pressShapeSelectorId; + private int todayPointColor; + + public HorizontalCalenderViewV1(Context context) { + super(context); + init(context, null); + } + + public HorizontalCalenderViewV1(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public HorizontalCalenderViewV1(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + + initAttrs(context, attrs); + + rootView = LayoutInflater.from(context).inflate(R.layout.horizontal_calender_view, null); + + rv = rootView.findViewById(R.id.rv); + llYear = rootView.findViewById(R.id.ll_year); + llMonth = rootView.findViewById(R.id.ll_month); + tvYear = rootView.findViewById(R.id.tv_year); + tvMonth = rootView.findViewById(R.id.tv_month); + tvYearUnit = rootView.findViewById(R.id.tv_year_unit); + tvMonthUnit = rootView.findViewById(R.id.tv_month_unit); + + initData(context); + + initEvent(); + + addView(rootView); + } + + private void initAttrs(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HorizontalCalenderView); + showPickDialog = a.getBoolean(R.styleable.HorizontalCalenderView_zhc_show_pick_dialog, + true); + minYear = a.getInteger(R.styleable.HorizontalCalenderView_zhc_min_year, 2012); + unitColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_unit_color, 0xff3498DB); + yearTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_year_text_color, + 0xff000000); + monthTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_month_text_color, + 0xff000000); + dayTextColorSelected = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_selected_text_color, + 0xffffffff); + dayTextColorNormal = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_unselected_text_color, + 0xff000000); + weekTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_week_text_color, + 0xff9e9e9e); + daySelectionColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_selection_color, + 0xff3498DB); + //默认背景颜色 + pressShapeSelectorId = + a.getResourceId(R.styleable.HorizontalCalenderView_zhc_press_shape_selector, + R.color.blue); + todayPointColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_today_point_color, + 0xffed9f24); + a.recycle(); + } + + private void initData(Context context) { + curYear = DateUtil.getCurrentYear(); + curMonth = DateUtil.getCurrentMonth(); + curDay = DateUtil.getCurrentDay(); + curWeek = DateUtil.getCurrentWeek(); + selectedYear = curYear; + selectedMonth = curMonth; + selectedDay = curDay; + selectedWeek = curWeek; + + tvYear.setText(curYear + ""); + tvMonth.setText(curMonth + ""); + + //获å–当月的日期 + // List items = getItems(); + //èŽ·å–æœ€è¿‘30天的日期 + List items = getLast30DaysItems(); + adapter = new DayAdapter(context, items, dayTextColorSelected, dayTextColorNormal, + daySelectionColor, weekTextColor, pressShapeSelectorId, todayPointColor); + adapter.setItemClick(new DayAdapter.OnItemClick() { + @Override + public void onItemClick(int year, int month, int day, int week) { + setSelectedDate(year, month, day, week); + } + }); + LinearLayoutManager manager = new LinearLayoutManager(context); + manager.setOrientation(LinearLayoutManager.HORIZONTAL); + rv.setLayoutManager(manager); + rv.addItemDecoration(new SpaceItemDecoration(20, 20, 0, 0)); + rv.setHasFixedSize(true); + rv.offsetChildrenHorizontal(3); + rv.setAdapter(adapter); + + DateItem dateItem = getDayFindItem(adapter.getData(), curMonth, curDay); + rv.scrollToPosition(items.indexOf(dateItem) - 3); + } + + /** + * èŽ·å–æœ€è¿‘30天日期item + * + * @return + */ + private List getLast30DaysItems() { + List last30DaysItem = new ArrayList<>(); + List currentMonthItem = getItems(); + int pastDayIndex = 0; + for (int i = 0; i < currentMonthItem.size(); i++) { + if (!currentMonthItem.get(i).isFuture()) { + pastDayIndex++; + } + } + //èŽ·å–æœ€è¿‘多少天的日期 + int lastDays = 30; + if (pastDayIndex < lastDays) { + //处ç†å½“剿˜¯1月的情况 + int lastMonth = curMonth - 1; + int year = curYear; + if (lastMonth <= 0) { + lastMonth = 12; + year--; + } + List lastMonthItem = getMonthItems(year, lastMonth); + lastMonthItem = lastMonthItem.subList(pastDayIndex, lastMonthItem.size()); + last30DaysItem.addAll(lastMonthItem); + } + last30DaysItem.addAll(currentMonthItem); + return last30DaysItem; + } + + /** + * èŽ·å–æ—¥æœŸitem + * + * @return + */ + private List getMonthItems(int year, int month) { + List items = new ArrayList<>(); + int firstWeek = getFirstDayOfWeek(year, month); + int tempWeek = firstWeek; + + int lastMonthDay = getLastDayOfMonth(year, month) - firstWeek; + int curMonthLastDay = DateUtil.calDayOfMonth(year, month); + int nextMonthDay = 1; + + for (int i = 0; i < 42; i++) { + DateItem item = new DateItem(); + if (i < firstWeek) { + lastMonthDay++; + item.setIsLastMonth(true); + item.setDay(lastMonthDay); + } else { + item.setIsLastMonth(false); + int d = i - firstWeek + 1; + if (d <= curMonthLastDay) { + item.setIsNextMonth(false); + if (month == selectedMonth && d == selectedDay) { + item.setSelected(true); + } + item.setDay(i - firstWeek + 1); + item.setWeek(tempWeek % 7); + item.setYear(year); + item.setMonth(month); + if (year == curYear && month == curMonth) { + if (d == curDay) + item.setCurrent(true); + else if (d > curDay) + item.setFuture(true); + } + items.add(item); + tempWeek++; + } else { + item.setIsNextMonth(true); + item.setDay(nextMonthDay); + nextMonthDay++; + } + } + } + return items; + } + + /** + * èŽ·å–æ—¥æœŸitem + * + * @return + */ + private List getItems() { + firstWeek = getFirstDayOfWeek(selectedYear, selectedMonth); + curMonthLastDay = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + return getMonthItems(selectedYear, selectedMonth); + } + + public void setUnitColorResId(int colorResId) { + this.unitColor = getContext().getResources().getColor(colorResId); + setUnitColor(this.unitColor); + } + + public void setUnitColor(int colorValue) { + if (tvYearUnit != null) + tvYearUnit.setTextColor(colorValue); + if (tvMonthUnit != null) + tvMonthUnit.setTextColor(colorValue); + } + + public void setYearTextColorResId(int yearTextColorResId) { + this.yearTextColor = getContext().getResources().getColor(yearTextColorResId); + setYearTextColor(yearTextColor); + } + + public void setTodayPointColorResId(int todayPointColorResId) { + this.todayPointColor = getContext().getResources().getColor(todayPointColorResId); + setTodayPointColor(todayPointColor); + } + + public void setTodayPointColor(int todayPointColor) { + adapter.setTodayPointColor(todayPointColor); + } + + public void setYearTextColor(int yearTextColor) { + if (tvYear != null) + tvYear.setTextColor(yearTextColor); + } + + + public void setMonthTextColorResId(int monthTextColorResId) { + this.monthTextColor = getContext().getResources().getColor(monthTextColorResId); + setMonthTextColor(monthTextColor); + } + + public void setMonthTextColor(int monthTextColor) { + if (tvMonth != null) + tvMonth.setTextColor(monthTextColor); + } + + public void setWeekTextColorResId(int weekTextColorResId) { + this.weekTextColor = getContext().getResources().getColor(weekTextColorResId); + setWeekTextColor(weekTextColor); + } + + public void setWeekTextColor(int weekTextColor) { + adapter.setWeekTextColor(weekTextColor); + } + + public void setDaySelectionColorResId(int daySelectionColorResId) { + this.daySelectionColor = getContext().getResources().getColor(daySelectionColorResId); + setDaySelectionColor(daySelectionColor); + } + + public void setDayTextColorSelectedResId(int dayTextColorSelectedRedId) { + this.dayTextColorSelected = getContext().getResources().getColor(dayTextColorSelectedRedId); + setDayTextColorSelected(dayTextColorSelected); + } + + public void setDayTextColorSelected(int dayTextColorSelected) { + adapter.setDayTextColorSelected(dayTextColorSelected); + } + + public void setDayTextColorNormalResId(int dayTextColorNormalRedId) { + this.dayTextColorNormal = getContext().getResources().getColor(dayTextColorNormalRedId); + setDayTextColorNormal(dayTextColorNormal); + } + + public void setDayTextColorNormal(int dayTextColorNormal) { + adapter.setDayTextColorNormal(dayTextColorNormal); + } + + public void setDaySelectionColor(int daySelectionColor) { + adapter.setDaySelectionColor(daySelectionColor); + } + + private void initEvent() { + llYear.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + new AlertDialog.Builder(getContext()).setView(ll).setPositiveButton("确定", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + } + }).setNegativeButton("å–æ¶ˆ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onYearClick(selectedYear, selectedMonth); + } + } + }); + + llMonth.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + monthPicker.requestFocus(); + + new AlertDialog.Builder(getContext()).setView(ll).setPositiveButton("确定", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + } + }).setNegativeButton("å–æ¶ˆ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onMonthClick(selectedYear, selectedMonth); + } + } + }); + } + + public boolean isShowPickDialog() { + return showPickDialog; + } + + public void setShowPickDialog(boolean showPickDialog) { + this.showPickDialog = showPickDialog; + } + + public int getFirstDayOfWeek(int y, int m) { + return DateUtil.calWeek(y, m, 1); + } + + public int getLastDayOfMonth(int y, int m) { + if (m == 1) { + return DateUtil.calDayOfMonth(y - 1, 12); + } else { + return DateUtil.calDayOfMonth(y, m - 1); + } + } + + public interface OnYearMonthClickListener { + void onYearClick(int selectedYear, int selectedMonth); + + void onMonthClick(int selectedYear, int selectedMonth); + } + + public interface OnDaySelectedListener { + void onSelected(boolean hasChanged, int year, int month, int day, int week, DateItem items); + } + + public String setSelectedDate() { + return String.format(selectedYear + "-" + selectedMonth + "-" + selectedDay); + } + + public int getSelectedYear() { + return selectedYear; + } + + public int getSelectedMonth() { + return selectedMonth; + } + + public int getSelectedDay() { + return selectedDay; + } + + public int getSelectedWeek() { + return selectedWeek; + } + + public void setSelectedDate(int year, int month, int day) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), month, day); + daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay != day, year, month, day, selectedWeek, dateItem); + } + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + /** + * è¡¥é½0的日期 + * + * @param separated 日期分隔符 + * @param year + * @param month + * @param day + * @return + */ + public String fillingDate(String separated, int year, int month, int day) { + return year + separated + (month < 10 ? "0" + month : month + "") + separated + (day < 10 ? "0" + day : day + ""); + } + + /** + * æ ¹æ®æ—¥æœŸæ‰¾åˆ°è¯¥item下所有属性å˜é‡ + * + * @param items + * @param day + * @return + */ + private DateItem getDayFindItem(List items, int month, int day) { + DateItem dateItem = null; + for (int i = 0; i < items.size(); i++) { + items.get(i).setSelected(false); + if (items.get(i).getDay() == day && items.get(i).getMonth() == month) { + dateItem = items.get(i); + dateItem.setSelected(true); + // break; + } + } + return dateItem; + } + + private void setSelectedDate(int year, int month, int day, int week) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = week; + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + DateItem dateItem = getDayFindItem(adapter.getData(), month, day); + if (daySelectedListener != null) { + daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay != day, year, month, day, selectedWeek, dateItem); + } + + adapter.notifyDataSetChanged(); + rv.scrollToPosition(adapter.getData().indexOf(dateItem) - 3); + rv.smoothScrollToPosition(adapter.getData().indexOf(dateItem) + 3); + } + + public void setPressShapeSelectorId(int pressShapeSelectorId) { + this.pressShapeSelectorId = pressShapeSelectorId; + if (llYear != null) + llYear.setBackgroundResource(pressShapeSelectorId); + if (llMonth != null) { + llMonth.setBackgroundResource(pressShapeSelectorId); + } + adapter.setPressShapeSelectorId(pressShapeSelectorId); + } + + public void setSelectedYear(int year) { + int lastYear = selectedYear; + this.selectedYear = year; + this.selectedWeek = DateUtil.calWeek(year, selectedMonth, selectedDay); + tvYear.setText(year + ""); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedMonth, selectedDay); + daySelectedListener.onSelected(lastYear != year, year, selectedMonth, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedYearAndMonth(int year, int month) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedMonth, selectedDay); + daySelectedListener.onSelected(lastYear != year || lastMonth != month, year, month, + selectedDay, selectedWeek, dateItem); + } + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedMonth(int month) { + int lastMonth = this.selectedMonth; + this.selectedMonth = month; + tvMonth.setText(month + ""); + this.selectedWeek = DateUtil.calWeek(selectedYear, month, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), month, selectedDay); + daySelectedListener.onSelected(lastMonth != month, selectedYear, month, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public String getSelectedDate() { + return selectedYear + "-" + selectedMonth + "-" + selectedDay; + } + + public String getSelectedDate(String gapStr) { + return selectedYear + gapStr + selectedMonth + gapStr + selectedDay; + } + + public void setOnDaySelectedListener(OnDaySelectedListener daySelectedListener) { + this.daySelectedListener = daySelectedListener; + } + + public void setOnYearMonthClickListener(OnYearMonthClickListener onYearMonthClickListener) { + this.onYearMonthClickListener = onYearMonthClickListener; + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV2.java b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV2.java new file mode 100644 index 0000000..7dbf740 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/HorizontalCalenderViewV2.java @@ -0,0 +1,685 @@ +package com.abbidot.tracker.widget.calender; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.NumberPicker; +import android.widget.TextView; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.abbidot.tracker.R; +import com.abbidot.tracker.adapter.SpaceItemDecoration; +import com.qmuiteam.qmui.util.QMUIDisplayHelper; + +import java.util.ArrayList; +import java.util.List; + + +/** + * 水平滑动日历,èŽ·å–æœ€è¿‘30天日期天数 + */ +public class HorizontalCalenderViewV2 extends FrameLayout { + + private View rootView; + private RecyclerView rv; + private LinearLayout llYear; + private LinearLayout llMonth; + private TextView tvYear; + private TextView tvMonth; + private TextView tvYearUnit; + private TextView tvMonthUnit; + + private DayV2Adapter adapter; + + private int minYear; + + private int curYear; + + private int curMonth; + + private int curDay; + + private int curWeek; + + private int selectedYear; + + private int selectedMonth; + + private int selectedDay; + + private int selectedWeek; + + private int firstWeek; + + private int curMonthLastDay; + + private OnDaySelectedListener daySelectedListener; + + private OnYearMonthClickListener onYearMonthClickListener; + + private boolean showPickDialog; + private int unitColor; + private int yearTextColor; + private int monthTextColor; + + private int dayTextColorSelected; + private int dayTextColorNormal; + private int daySelectionColor; + private int weekTextColor; + + private int pressShapeSelectorId; + private int todayPointColor; + + public HorizontalCalenderViewV2(Context context) { + super(context); + init(context, null); + } + + public HorizontalCalenderViewV2(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public HorizontalCalenderViewV2(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + + initAttrs(context, attrs); + + rootView = LayoutInflater.from(context).inflate(R.layout.horizontal_calender_view, null); + + rv = rootView.findViewById(R.id.rv); + llYear = rootView.findViewById(R.id.ll_year); + llMonth = rootView.findViewById(R.id.ll_month); + tvYear = rootView.findViewById(R.id.tv_year); + tvMonth = rootView.findViewById(R.id.tv_month); + tvYearUnit = rootView.findViewById(R.id.tv_year_unit); + tvMonthUnit = rootView.findViewById(R.id.tv_month_unit); + + initData(context); + + initEvent(); + + addView(rootView); + } + + private void initAttrs(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HorizontalCalenderView); + showPickDialog = a.getBoolean(R.styleable.HorizontalCalenderView_zhc_show_pick_dialog, + true); + minYear = a.getInteger(R.styleable.HorizontalCalenderView_zhc_min_year, 2012); + unitColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_unit_color, 0xff3498DB); + yearTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_year_text_color, + 0xff000000); + monthTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_month_text_color, + 0xff000000); + dayTextColorSelected = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_selected_text_color, + 0xffffffff); + dayTextColorNormal = + a.getColor(R.styleable.HorizontalCalenderView_zhc_day_unselected_text_color, + 0xff000000); + weekTextColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_week_text_color, + 0xff9e9e9e); + daySelectionColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_selection_color, + 0xff3498DB); + //默认背景颜色 + pressShapeSelectorId = + a.getResourceId(R.styleable.HorizontalCalenderView_zhc_press_shape_selector, + R.color.blue); + todayPointColor = a.getColor(R.styleable.HorizontalCalenderView_zhc_today_point_color, + 0xffed9f24); + a.recycle(); + } + + private void initData(Context context) { + curYear = DateUtil.getCurrentYear(); + curMonth = DateUtil.getCurrentMonth(); + curDay = DateUtil.getCurrentDay(); + curWeek = DateUtil.getCurrentWeek(); + selectedYear = curYear; + selectedMonth = curMonth; + selectedDay = curDay; + selectedWeek = curWeek; + + tvYear.setText(curYear + ""); + tvMonth.setText(curMonth + ""); + + //获å–当月的日期 + // List items = getItems(); + //èŽ·å–æœ€è¿‘365天的日期 + List items = getLast365DaysItems(); + adapter = new DayV2Adapter(context, items, dayTextColorSelected, dayTextColorNormal, + daySelectionColor, weekTextColor, pressShapeSelectorId, todayPointColor); + adapter.setItemClick((year, month, day, week) -> { + setSelectedDate(year, month, day, week); + }); + LinearLayoutManager manager = new LinearLayoutManager(context); + manager.setOrientation(LinearLayoutManager.HORIZONTAL); + rv.setLayoutManager(manager); + rv.addItemDecoration(new SpaceItemDecoration(QMUIDisplayHelper.dpToPx(5), + QMUIDisplayHelper.dpToPx(5), 0, 0)); + rv.setHasFixedSize(true); + rv.offsetChildrenHorizontal(3); + rv.setAdapter(adapter); + + DateItem dateItem = getDayFindItem(adapter.getData(), selectedYear, curMonth, curDay); + rv.scrollToPosition(items.indexOf(dateItem) - 3); + } + + /** + * èŽ·å–æœ€è¿‘30天日期item + * + * @return + */ + private List getLast30DaysItems() { + List last30DaysItem = new ArrayList<>(); + List currentMonthItem = getItems(); + int pastDayIndex = 0; + for (int i = 0; i < currentMonthItem.size(); i++) { + if (!currentMonthItem.get(i).isFuture()) { + pastDayIndex++; + } + } + //èŽ·å–æœ€è¿‘多少天的日期 + int lastDays = 30; + if (pastDayIndex < lastDays) { + //处ç†å½“剿˜¯1月的情况 + int lastMonth = curMonth - 1; + int year = curYear; + if (lastMonth <= 0) { + lastMonth = 12; + year--; + } + List lastMonthItem = getMonthItems(year, lastMonth); + lastMonthItem = lastMonthItem.subList(pastDayIndex, lastMonthItem.size()); + last30DaysItem.addAll(lastMonthItem); + } + last30DaysItem.addAll(currentMonthItem); + return last30DaysItem; + } + + /** + * èŽ·å–æœ€è¿‘365天日期item + * + * @return + */ + private List getLast365DaysItems() { + List last30DaysItem = new ArrayList<>(); + List currentMonthItem = getItems(); + int pastDayIndex = 0; + for (int i = 0; i < currentMonthItem.size(); i++) { + if (!currentMonthItem.get(i).isFuture()) { + pastDayIndex++; + } + } + int lastMonth = curMonth; + int year = curYear - 1; + while (lastMonth != curMonth || year != curYear) { + List lastMonthItem = getMonthItems(year, lastMonth); + last30DaysItem.addAll(lastMonthItem); + lastMonth++; + if (lastMonth == 13) { + lastMonth = 1; + year++; + } + } + last30DaysItem = last30DaysItem.subList(pastDayIndex, last30DaysItem.size()); + last30DaysItem.addAll(currentMonthItem); + return last30DaysItem; + } + + /** + * èŽ·å–æ—¥æœŸitem + * + * @return + */ + private List getMonthItems(int year, int month) { + List items = new ArrayList<>(); + int firstWeek = getFirstDayOfWeek(year, month); + int tempWeek = firstWeek; + + int lastMonthDay = getLastDayOfMonth(year, month) - firstWeek; + int curMonthLastDay = DateUtil.calDayOfMonth(year, month); + int nextMonthDay = 1; + + for (int i = 0; i < 42; i++) { + DateItem item = new DateItem(); + if (i < firstWeek) { + lastMonthDay++; + item.setIsLastMonth(true); + item.setDay(lastMonthDay); + } else { + item.setIsLastMonth(false); + int d = i - firstWeek + 1; + if (d <= curMonthLastDay) { + item.setIsNextMonth(false); + if (month == selectedMonth && d == selectedDay) { + item.setSelected(true); + } + item.setDay(i - firstWeek + 1); + item.setWeek(tempWeek % 7); + item.setYear(year); + item.setMonth(month); + if (year == curYear && month == curMonth) { + if (d == curDay) + item.setCurrent(true); + else if (d > curDay) + item.setFuture(true); + } + items.add(item); + tempWeek++; + } else { + item.setIsNextMonth(true); + item.setDay(nextMonthDay); + nextMonthDay++; + } + } + } + return items; + } + + /** + * èŽ·å–æ—¥æœŸitem + * + * @return + */ + private List getItems() { + firstWeek = getFirstDayOfWeek(selectedYear, selectedMonth); + curMonthLastDay = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + return getMonthItems(selectedYear, selectedMonth); + } + + public void setUnitColorResId(int colorResId) { + this.unitColor = getContext().getResources().getColor(colorResId); + setUnitColor(this.unitColor); + } + + public void setUnitColor(int colorValue) { + if (tvYearUnit != null) + tvYearUnit.setTextColor(colorValue); + if (tvMonthUnit != null) + tvMonthUnit.setTextColor(colorValue); + } + + public void setYearTextColorResId(int yearTextColorResId) { + this.yearTextColor = getContext().getResources().getColor(yearTextColorResId); + setYearTextColor(yearTextColor); + } + + // public void setTodayPointColorResId(int todayPointColorResId) { + // this.todayPointColor = getContext().getResources().getColor(todayPointColorResId); + // setTodayPointColor(todayPointColor); + // } + + // public void setTodayPointColor(int todayPointColor) { + // adapter.setTodayPointColor(todayPointColor); + // } + + public void setYearTextColor(int yearTextColor) { + if (tvYear != null) + tvYear.setTextColor(yearTextColor); + } + + + public void setMonthTextColorResId(int monthTextColorResId) { + this.monthTextColor = getContext().getResources().getColor(monthTextColorResId); + setMonthTextColor(monthTextColor); + } + + public void setMonthTextColor(int monthTextColor) { + if (tvMonth != null) + tvMonth.setTextColor(monthTextColor); + } + + // public void setWeekTextColorResId(int weekTextColorResId) { + // this.weekTextColor = getContext().getResources().getColor(weekTextColorResId); + // setWeekTextColor(weekTextColor); + // } + + // public void setWeekTextColor(int weekTextColor) { + // adapter.setWeekTextColor(weekTextColor); + // } + + // public void setDaySelectionColorResId(int daySelectionColorResId) { + // this.daySelectionColor = getContext().getResources().getColor(daySelectionColorResId); + // setDaySelectionColor(daySelectionColor); + // } + + // public void setDayTextColorSelectedResId(int dayTextColorSelectedRedId) { + // this.dayTextColorSelected = getContext().getResources().getColor + // (dayTextColorSelectedRedId); + // setDayTextColorSelected(dayTextColorSelected); + // } + + // public void setDayTextColorSelected(int dayTextColorSelected) { + // adapter.setDayTextColorSelected(dayTextColorSelected); + // } + + // public void setDayTextColorNormalResId(int dayTextColorNormalRedId) { + // this.dayTextColorNormal = getContext().getResources().getColor(dayTextColorNormalRedId); + // setDayTextColorNormal(dayTextColorNormal); + // } + + // public void setDayTextColorNormal(int dayTextColorNormal) { + // adapter.setDayTextColorNormal(dayTextColorNormal); + // } + // + // public void setDaySelectionColor(int daySelectionColor) { + // adapter.setDaySelectionColor(daySelectionColor); + // } + + private void initEvent() { + llYear.setOnClickListener(view -> { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + new AlertDialog.Builder(getContext()).setView(ll) + .setPositiveButton("确定", (dialogInterface, i) -> { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + }).setNegativeButton("å–æ¶ˆ", (dialogInterface, i) -> { + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onYearClick(selectedYear, selectedMonth); + } + }); + + llMonth.setOnClickListener(view -> { + if (showPickDialog) { + LinearLayout ll = new LinearLayout(getContext()); + + final NumberPicker yearPicker = new NumberPicker(getContext()); + yearPicker.setMinValue(minYear); + yearPicker.setMaxValue(DateUtil.getCurrentYear()); + yearPicker.setValue(selectedYear); + final NumberPicker monthPicker = new NumberPicker(getContext()); + monthPicker.setMinValue(1); + monthPicker.setMaxValue(12); + monthPicker.setValue(selectedMonth); + + ll.setOrientation(LinearLayout.HORIZONTAL); + ll.setGravity(Gravity.CENTER); + ll.addView(yearPicker); + ll.addView(monthPicker); + + monthPicker.requestFocus(); + + new AlertDialog.Builder(getContext()).setView(ll) + .setPositiveButton("确定", (dialogInterface, i) -> { + int year = yearPicker.getValue(); + int month = monthPicker.getValue(); + setSelectedYearAndMonth(year, month); + }).setNegativeButton("å–æ¶ˆ", (dialogInterface, i) -> { + }).show(); + } + if (onYearMonthClickListener != null) { + onYearMonthClickListener.onMonthClick(selectedYear, selectedMonth); + } + }); + } + + public boolean isShowPickDialog() { + return showPickDialog; + } + + public void setShowPickDialog(boolean showPickDialog) { + this.showPickDialog = showPickDialog; + } + + public int getFirstDayOfWeek(int y, int m) { + return DateUtil.calWeek(y, m, 1); + } + + public int getLastDayOfMonth(int y, int m) { + if (m == 1) { + return DateUtil.calDayOfMonth(y - 1, 12); + } else { + return DateUtil.calDayOfMonth(y, m - 1); + } + } + + public interface OnYearMonthClickListener { + void onYearClick(int selectedYear, int selectedMonth); + + void onMonthClick(int selectedYear, int selectedMonth); + } + + public interface OnDaySelectedListener { + void onSelected(boolean hasChanged, int year, int month, int day, int week, DateItem items); + } + + public String setSelectedDate() { + return String.format(selectedYear + "-" + selectedMonth + "-" + selectedDay); + } + + public int getSelectedYear() { + return selectedYear; + } + + public int getSelectedMonth() { + return selectedMonth; + } + + public int getSelectedDay() { + return selectedDay; + } + + public int getSelectedWeek() { + return selectedWeek; + } + + public void setSelectedDate(int year, int month, int day) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + setSelectedDate(year, month, day, selectedWeek); + + // if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + // DateItem dateItem = getDayFindItem(adapter.getData(), month, day); + // daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay + // != day, year, month, day, selectedWeek, dateItem); + // } + // tvYear.setText(year + ""); + // tvMonth.setText(month + ""); + // // adapter.setDatas(getItems()); + // adapter.notifyDataSetChanged(); + // //自动滑动到显示的日期 + // int position=0; + // List dateItemList=adapter.getData(); + // for (int i=0;i items, int year, int month, int day) { + DateItem dateItem = null; + for (int i = 0; i < items.size(); i++) { + items.get(i).setSelected(false); + if (items.get(i).getYear() == year && items.get(i).getDay() == day && items.get(i) + .getMonth() == month) { + dateItem = items.get(i); + dateItem.setSelected(true); + // break; + } + } + return dateItem; + } + + private void setSelectedDate(int year, int month, int day, int week) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + int lastDay = selectedDay; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedDay = day; + this.selectedWeek = week; + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + DateItem dateItem = getDayFindItem(adapter.getData(), year, month, day); + if (daySelectedListener != null) { + daySelectedListener.onSelected(lastYear != year || lastMonth != month || lastDay != day, year, month, day, selectedWeek, dateItem); + } + + adapter.notifyDataSetChanged(); + int index = adapter.getData().indexOf(dateItem); + int position = index - 3; + if (position < 0) + position = 0; + rv.scrollToPosition(position); + rv.smoothScrollToPosition(index + 3); + } + + // public void setPressShapeSelectorId(int pressShapeSelectorId) { + // this.pressShapeSelectorId = pressShapeSelectorId; + // if (llYear != null) + // llYear.setBackgroundResource(pressShapeSelectorId); + // if (llMonth != null) { + // llMonth.setBackgroundResource(pressShapeSelectorId); + // } + // adapter.setPressShapeSelectorId(pressShapeSelectorId); + // } + + public void setSelectedYear(int year) { + int lastYear = selectedYear; + this.selectedYear = year; + this.selectedWeek = DateUtil.calWeek(year, selectedMonth, selectedDay); + tvYear.setText(year + ""); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null) { + DateItem dateItem = getDayFindItem(adapter.getData(), year, selectedMonth, selectedDay); + daySelectedListener.onSelected(lastYear != year, year, selectedMonth, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedYearAndMonth(int year, int month) { + int lastYear = selectedYear; + int lastMonth = selectedMonth; + this.selectedYear = year; + this.selectedMonth = month; + this.selectedWeek = DateUtil.calWeek(selectedYear, selectedMonth, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), year, selectedMonth, selectedDay); + daySelectedListener.onSelected(lastYear != year || lastMonth != month, year, month, + selectedDay, selectedWeek, dateItem); + } + tvYear.setText(year + ""); + tvMonth.setText(month + ""); + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public void setSelectedMonth(int month) { + int lastMonth = this.selectedMonth; + this.selectedMonth = month; + tvMonth.setText(month + ""); + this.selectedWeek = DateUtil.calWeek(selectedYear, month, selectedDay); + int totalDayOfMonth = DateUtil.calDayOfMonth(selectedYear, selectedMonth); + + if (daySelectedListener != null && totalDayOfMonth >= selectedDay) { + DateItem dateItem = getDayFindItem(adapter.getData(), selectedYear, month, selectedDay); + daySelectedListener.onSelected(lastMonth != month, selectedYear, month, selectedDay, + selectedWeek, dateItem); + } + adapter.setDatas(getItems()); + adapter.notifyDataSetChanged(); + rv.scrollToPosition(selectedDay - 4); + rv.smoothScrollToPosition(selectedDay + 2); + } + + public String getSelectedDate() { + return selectedYear + "-" + selectedMonth + "-" + selectedDay; + } + + public String getSelectedDate(String gapStr) { + return selectedYear + gapStr + selectedMonth + gapStr + selectedDay; + } + + public void setOnDaySelectedListener(OnDaySelectedListener daySelectedListener) { + this.daySelectedListener = daySelectedListener; + } + + public void setOnYearMonthClickListener(OnYearMonthClickListener onYearMonthClickListener) { + this.onYearMonthClickListener = onYearMonthClickListener; + } + + public void setDaySelectionDrawable(int selectionDrawable) { + adapter.setDaySelectionDrawable(selectionDrawable); + } + + public void setTodaySelectionBgTextColor(int selectionDrawable, int textColor) { + adapter.setTodaySelectionBgTextColor(selectionDrawable, textColor); + } +} diff --git a/app/src/main/java/com/abbidot/tracker/widget/calender/ViewUtil.java b/app/src/main/java/com/abbidot/tracker/widget/calender/ViewUtil.java new file mode 100644 index 0000000..ac47b44 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/calender/ViewUtil.java @@ -0,0 +1,272 @@ +package com.abbidot.tracker.widget.calender; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.res.Resources; +import android.os.Build.VERSION; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.View; +import android.view.View.MeasureSpec; +import android.view.ViewGroup; +import android.view.ViewGroup.MarginLayoutParams; +import android.widget.AbsListView; +import android.widget.GridView; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.TextView; + +public class ViewUtil { + public static final int INVALID = Integer.MIN_VALUE; + + public static int UI_WIDTH = 720; + public static int UI_HEIGHT = 1280; + public static int UI_DENSITY = 4; + + public static void setAbsListViewHeight(AbsListView absListView, int lineNumber, + int verticalSpace) { + int totalHeight = getAbsListViewHeight(absListView, lineNumber, verticalSpace); + ViewGroup.LayoutParams params = absListView.getLayoutParams(); + params.height = totalHeight; + ((MarginLayoutParams) params).setMargins(0, 0, 0, 0); + absListView.setLayoutParams(params); + } + + public static int getAbsListViewHeight(AbsListView absListView, int lineNumber, + int verticalSpace) { + int totalHeight = 0; + int w = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + int h = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + absListView.measure(w, h); + ListAdapter mListAdapter = absListView.getAdapter(); + if (mListAdapter == null) { + return totalHeight; + } + int count = mListAdapter.getCount(); + if (absListView instanceof ListView) { + for (int i = 0; i < count; i++) { + View listItem = mListAdapter.getView(i, null, absListView); + listItem.measure(w, h); + totalHeight += listItem.getMeasuredHeight(); + } + if (count == 0) { + totalHeight = verticalSpace; + } else { + totalHeight = + totalHeight + (((ListView) absListView).getDividerHeight() * (count - 1)); + } + } else if (absListView instanceof GridView) { + int remain = count % lineNumber; + if (remain > 0) { + remain = 1; + } + if (mListAdapter.getCount() == 0) { + totalHeight = verticalSpace; + } else { + View listItem = mListAdapter.getView(0, null, absListView); + listItem.measure(w, h); + int line = count / lineNumber + remain; + totalHeight = line * listItem.getMeasuredHeight() + (line - 1) * verticalSpace; + } + } + return totalHeight; + } + + public static void measureView(View view) { + ViewGroup.LayoutParams p = view.getLayoutParams(); + if (p == null) { + p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); + } + int childWidthSpec = ViewGroup.getChildMeasureSpec(0, 0 + 0, p.width); + int lpHeight = p.height; + int childHeightSpec; + if (lpHeight > 0) { + childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY); + } else { + childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + } + view.measure(childWidthSpec, childHeightSpec); + } + + public static int scaleValue(Context context, float value) { + DisplayMetrics mDisplayMetrics = getDisplayMetrics(context); + int width = mDisplayMetrics.widthPixels; + int height = mDisplayMetrics.heightPixels; + if (width > height) { + width = mDisplayMetrics.heightPixels; + height = mDisplayMetrics.widthPixels; + } + if (mDisplayMetrics.scaledDensity >= UI_DENSITY) { + if (width > UI_WIDTH) { + value = value * (1.3f - 1.0f / mDisplayMetrics.scaledDensity); + } else if (width < UI_WIDTH) { + value = value * (1.0f - 1.0f / mDisplayMetrics.scaledDensity); + } + } else { + float offset = UI_DENSITY - mDisplayMetrics.scaledDensity; + if (offset > 0.5f) { + value = value * 0.9f; + } else { + value = value * 0.95f; + } + } + return scale(mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels, value); + } + + public static DisplayMetrics getDisplayMetrics(Context context) { + Resources mResources; + if (context == null) { + mResources = Resources.getSystem(); + } else { + mResources = context.getResources(); + } + DisplayMetrics mDisplayMetrics = mResources.getDisplayMetrics(); + return mDisplayMetrics; + } + + public static int scaleTextValue(Context context, float value) { + return scaleValue(context, value); + } + + public static int scale(int displayWidth, int displayHeight, float pxValue) { + if (pxValue == 0) { + return 0; + } + float scale = 1; + try { + int width = displayWidth; + int height = displayHeight; + if (width > height) { + width = displayHeight; + height = displayWidth; + } + float scaleWidth = (float) width / UI_WIDTH; + float scaleHeight = (float) height / UI_HEIGHT; + scale = Math.min(scaleWidth, scaleHeight); + } catch (Exception e) { + } + return Math.round(pxValue * scale + 0.5f); + } + + public static float applyDimension(int unit, float value, DisplayMetrics metrics) { + switch (unit) { + case TypedValue.COMPLEX_UNIT_PX: + return value; + case TypedValue.COMPLEX_UNIT_DIP: + return value * metrics.density; + case TypedValue.COMPLEX_UNIT_SP: + return value * metrics.scaledDensity; + case TypedValue.COMPLEX_UNIT_PT: + return value * metrics.xdpi * (1.0f / 72); + case TypedValue.COMPLEX_UNIT_IN: + return value * metrics.xdpi; + case TypedValue.COMPLEX_UNIT_MM: + return value * metrics.xdpi * (1.0f / 25.4f); + } + return 0; + } + + public static void scaleContentView(ViewGroup contentView) { + ViewUtil.scaleView(contentView); + if (contentView.getChildCount() > 0) { + for (int i = 0; i < contentView.getChildCount(); i++) { + View view = contentView.getChildAt(i); + if (view instanceof ViewGroup) { + scaleContentView((ViewGroup) (view)); + } else { + scaleView(contentView.getChildAt(i)); + } + } + } + } + + @SuppressLint("NewApi") + public static void scaleView(View view) { + if (view instanceof TextView) { + TextView textView = (TextView) view; + setTextSize(textView, textView.getTextSize()); + } + ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) view.getLayoutParams(); + if (null != params) { + int width = INVALID; + int height = INVALID; + if (params.width != ViewGroup.LayoutParams.WRAP_CONTENT && params.width != ViewGroup.LayoutParams.MATCH_PARENT) { + width = params.width; + } + if (params.height != ViewGroup.LayoutParams.WRAP_CONTENT && params.height != ViewGroup.LayoutParams.MATCH_PARENT) { + height = params.height; + } + setViewSize(view, width, height); + setPadding(view, view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), + view.getPaddingBottom()); + } + if (view.getLayoutParams() instanceof MarginLayoutParams) { + MarginLayoutParams mMarginLayoutParams = (MarginLayoutParams) view.getLayoutParams(); + if (mMarginLayoutParams != null) { + setMargin(view, mMarginLayoutParams.leftMargin, mMarginLayoutParams.topMargin, + mMarginLayoutParams.rightMargin, mMarginLayoutParams.bottomMargin); + } + } + if (VERSION.SDK_INT >= 16) { + int minWidth = scaleValue(view.getContext(), view.getMinimumWidth()); + int minHeight = scaleValue(view.getContext(), view.getMinimumHeight()); + view.setMinimumWidth(minWidth); + view.setMinimumHeight(minHeight); + } + } + + public static void setTextSize(TextView textView, float sizePixels) { + float scaledSize = scaleTextValue(textView.getContext(), sizePixels); + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, scaledSize); + } + + public static void setViewSize(View view, int widthPixels, int heightPixels) { + int scaledWidth = scaleValue(view.getContext(), widthPixels); + int scaledHeight = scaleValue(view.getContext(), heightPixels); + ViewGroup.LayoutParams params = view.getLayoutParams(); + if (params == null) { + return; + } + if (widthPixels != INVALID) { + params.width = scaledWidth; + } + if (heightPixels != INVALID && heightPixels != 1) { + params.height = scaledHeight; + } + view.setLayoutParams(params); + } + + public static void setPadding(View view, int left, int top, int right, int bottom) { + int scaledLeft = scaleValue(view.getContext(), left); + int scaledTop = scaleValue(view.getContext(), top); + int scaledRight = scaleValue(view.getContext(), right); + int scaledBottom = scaleValue(view.getContext(), bottom); + view.setPadding(scaledLeft, scaledTop, scaledRight, scaledBottom); + } + + public static void setMargin(View view, int left, int top, int right, int bottom) { + int scaledLeft = scaleValue(view.getContext(), left); + int scaledTop = scaleValue(view.getContext(), top); + int scaledRight = scaleValue(view.getContext(), right); + int scaledBottom = scaleValue(view.getContext(), bottom); + if (view.getLayoutParams() instanceof MarginLayoutParams) { + MarginLayoutParams mMarginLayoutParams = (MarginLayoutParams) view.getLayoutParams(); + if (mMarginLayoutParams != null) { + if (left != INVALID) { + mMarginLayoutParams.leftMargin = scaledLeft; + } + if (right != INVALID) { + mMarginLayoutParams.rightMargin = scaledRight; + } + if (top != INVALID) { + mMarginLayoutParams.topMargin = scaledTop; + } + if (bottom != INVALID) { + mMarginLayoutParams.bottomMargin = scaledBottom; + } + view.setLayoutParams(mMarginLayoutParams); + } + } + } +} diff --git a/app/src/main/java/com/abbidot/tracker/wxapi/WXBaseActivity.kt b/app/src/main/java/com/abbidot/tracker/wxapi/WXBaseActivity.kt new file mode 100644 index 0000000..d96ab43 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/wxapi/WXBaseActivity.kt @@ -0,0 +1,52 @@ +package com.abbidot.tracker.wxapi + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.FragmentActivity +import com.abbidot.tracker.util.ThirdPartyUtil +import com.tencent.mm.opensdk.modelbase.BaseReq +import com.tencent.mm.opensdk.modelbase.BaseResp +import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler + +/** + *Created by .yzq on 2022/7/11/011. + * @link + * @description:å°è£…微信Activityç±» + */ +open class WXBaseActivity : FragmentActivity(), IWXAPIEventHandler { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + ThirdPartyUtil.mApi.handleIntent(intent, this) + initData() + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + ThirdPartyUtil.mApi.handleIntent(intent, this) + } + + override fun onReq(baseReq: BaseReq?) { + baseReq?.let { + onWXReq(it) + } + } + + override fun onResp(baseResp: BaseResp?) { + baseResp?.let { + onWXResp(it) + } + } + + open fun initData() {} + + /** + * 处ç†å¾®ä¿¡è¯·æ±‚回调 + */ + open fun onWXReq(baseReq: BaseReq) {} + + /** + * 处ç†å¾®ä¿¡è¯·æ±‚åŽè¿”回回调 + */ + open fun onWXResp(baseResp: BaseResp) {} +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt b/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt new file mode 100644 index 0000000..13656a3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt @@ -0,0 +1,73 @@ +package com.abbidot.tracker.wxapi + +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.deprecated.ui.fragment.vm.LoginCNViewModel +import com.hjq.toast.Toaster +import com.tencent.mm.opensdk.constants.ConstantsAPI +import com.tencent.mm.opensdk.modelbase.BaseResp +import com.tencent.mm.opensdk.modelmsg.SendAuth +import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject + +/** + *Created by .yzq on 2022/7/8/008. + * @link + * @description:微信登录回调Activity + */ +@AndroidEntryPoint +class WXEntryActivity : WXBaseActivity() { + @Inject + lateinit var mLoginCNViewModel: LoginCNViewModel + + override fun initData() { + mLoginCNViewModel.mWXLoginResultLiveData.observe(this) { + LogUtil.e(it.toString()) + XEventBus.post(EventName.WXLoginResult, it) + finish() + } + } + + override fun onWXResp(baseResp: BaseResp) { + if (baseResp.type == ConstantsAPI.COMMAND_SENDAUTH) { + val result: String + val r = baseResp as SendAuth.Resp + when (baseResp.errCode) { + BaseResp.ErrCode.ERR_OK -> { + result = "登录æˆåŠŸ" + val code = r.code + LogUtil.e("${result}TAG_WECHAT_CODE", code) + mLoginCNViewModel.wxLogin(code) + } + BaseResp.ErrCode.ERR_AUTH_DENIED -> { + result = "用户拒ç»å¾®ä¿¡æŽˆæƒç™»å½•" + LogUtil.e("ERROR", result) + Toaster.show(result) + finish() + } + BaseResp.ErrCode.ERR_USER_CANCEL -> { + result = "ç”¨æˆ·å–æ¶ˆå¾®ä¿¡æŽˆæƒç™»å½•" + LogUtil.e("ERROR", result) + Toaster.show(result) + finish() + } + else -> { + result = "微信授æƒç™»å½•失败,${baseResp.errStr},code=${r.code}" + LogUtil.e("ERROR", result) + Toaster.show(result) + finish() + } + } + } + //分享回调 + else if (baseResp.type == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) { + when (baseResp.errCode) { + BaseResp.ErrCode.ERR_OK -> Toaster.show("分享æˆåŠŸ") + BaseResp.ErrCode.ERR_AUTH_DENIED -> Toaster.show("分享出错") + BaseResp.ErrCode.ERR_USER_CANCEL -> Toaster.show("å–æ¶ˆåˆ†äº«") + } + finish() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/wxapi/WXPayEntryActivity.kt b/app/src/main/java/com/abbidot/tracker/wxapi/WXPayEntryActivity.kt new file mode 100644 index 0000000..b23ddcd --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/wxapi/WXPayEntryActivity.kt @@ -0,0 +1,44 @@ +package com.abbidot.tracker.wxapi + +import android.content.Intent +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.deprecated.ui.activity.profile.recharge.PaymentResultActivity +import com.hjq.toast.Toaster +import com.tencent.mm.opensdk.modelbase.BaseResp + +/** + *Created by .yzq on 2022/7/11/011. + * @link + * @description:微信支付回调Activity + */ +class WXPayEntryActivity : WXBaseActivity() { + + override fun onWXResp(baseResp: BaseResp) { + LogUtil.e("WXPayEntryActivity", "code=" + baseResp.errCode) + when (baseResp.errCode) { + BaseResp.ErrCode.ERR_OK -> { + Toaster.show(R.string.txt_pay_success) + //支付æˆåŠŸ + LogUtil.e("WXPayEntryActivity", "支付æˆåŠŸ") + val intent = Intent(this, PaymentResultActivity::class.java) + intent.putExtra(ConstantString.Type, ConstantInt.Type1) + startActivity(intent) + } + BaseResp.ErrCode.ERR_USER_CANCEL -> { + Toaster.show(R.string.txt_cancel_pay) + //å–æ¶ˆæ”¯ä»˜ + LogUtil.e("WXPayEntryActivity", "å–æ¶ˆæ”¯ä»˜") + } + else -> { + Toaster.show(R.string.txt_pay_fail) + //支付失败 + LogUtil.e("WXPayEntryActivity", "支付失败${baseResp.errStr}") + } + } + finish() + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-v23/shape_transparent_black_bg.xml b/app/src/main/res/drawable-v23/shape_transparent_black_bg.xml new file mode 100644 index 0000000..a99cfd6 --- /dev/null +++ b/app/src/main/res/drawable-v23/shape_transparent_black_bg.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi/bg_color.png b/app/src/main/res/drawable-xhdpi/bg_color.png new file mode 100644 index 0000000000000000000000000000000000000000..72a289a83c460bb4e27ac5b0857eed5962f986a0 GIT binary patch literal 88189 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 `IassPlzxIt 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⁣h#6PN(x_k8h7+b1XU+S_sXI*F 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/bg_dialog.png b/app/src/main/res/drawable-xhdpi/bg_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..337d3e6943e2baa4bd3bbbb8616e09592c21f86e GIT binary patch literal 16849 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 h+qJHqKLv9i^WN-=H>!kws$tHNLq`v0?Dx9C@V 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 Jvd$@?2>|`Fqz(W8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/gray_ico_switch_on.png b/app/src/main/res/drawable-xhdpi/gray_ico_switch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1225270bd423d1d8cd01a57b3e5e59968f7d79f8 GIT binary patch literal 1882 zcmV-g2c`IlP)Jf%b>6>^jS;so<+nMoUAT6d#$ODFf`f``zY#2(GyB?ZU^mcN^}%d+#~t{_fdx z&pG#;k3hkZmS&5mG4xqVNg{xF0HXmq7(hP-*(gEk20*R=I0fJ&A+(D4$S#+w^rRBR z84c21LerkJC1?b^2GA@3qq<8k!t2ihq*xHduU%zjN4q0SSAiwQbc+=PO8_#pI|A^# zmhJ9)=yLW8= zQ;vYF6loUA6j3DG0mR7>i^T8aCTWm8FBXG`%5J4g;$68&QMAd6;|Kk%>+1!9X1dDC zDmo+BsWho3tCa#p0Qz)EsvcaVjRjuFiIp@}jlnc`TY(ohy%M)Z0%Vsv?e>m%cL=P} zWJ?BUIggzTj4oWTEFpxC^)8FiN=aO?e4GdY;ey-PZ))vEJ|sGt;& z%P~>=_W^?m7JRNp+O|ky%W?Z{MK?r`+37BHH+izcS!6GlC$@T?6nM=jh zh}A&?b;KBT|Nb3;P+KEP;CdxE$p*Kx^sT_TcO3mK=bzaO4OgfFcxgc_rdrjxs6yR) zh24iA)=RgU9}toQgNQ(2iP2=M1ZYyIgw>iiE=hygD|BkH3yV+wG7pX)kX*4!x6{tT zd&&5=0c$jyGe8CAuW~h*TeY~*&|`jTcQ;#ikz&=XrWQAhh?#DOqvTFtP1ZdCp6V_m zrPmv$$4LGv&x855?yWwitoz)~G6_RTW78~_38F}j@FqNq{ont_fO`f-)(eos<$68E z2d}niZKB)ZI3h`$VzPcpfQ51d)c$>9Y7Aak#J9G#V)E@LUK}d-fl#b1-(g=U0c$i_ zYXJ;b8#pC7I^vr!MT42k`E;>5lKIQ!9#mH_*Nf&5 zqsdwTU>0w{K0i~7)NCzpVs$DH%isQ7$g<;PGXr)PfN8w#AZLXRtLW@a<-`$Lw+~#md*4n8u!Az+UI@-5+bV8KCbIUBEWppm;Bv z0gDC(Y}ik`YH0Tc2X~JavfK9ifZU8mXnq}#hpJTVqI>CMR5#R*2E#`4Ewk(<6Nhg zI$$C>Sf|bU+}mZGqNizU`=*be65eX&U?yQ;BsUO@H@n2A{t-ciQ77K091W0hvkFp5-U;Bsdc*p683Z1!AL+mWscM96YE zO5B|(n=G(wakMnhrDbas3x8Rd>MH8N2D;W$x#cZflbP+UyI%D zm(GefeN05nQBlgLwj28aVP20lDYs)rjApY9l;rW4xKZZ7Rc@Rc1i!FT$xoO32bOo( U3HRb25&!@I07*qoM6N<$f)YQI{Qv*} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_back.png b/app/src/main/res/drawable-xhdpi/ico_back.png new file mode 100644 index 0000000000000000000000000000000000000000..efdd50e319dc0d4e19e091fe78cb5f5ed3320a9c GIT binary patch literal 649 zcmV;40(Sk0P)X(XqS zd}hXpX10lE{LOzR<8cUU+-Qw$@VHe?*C*$bYvBy|vTR`}OWl%BZmDT%;g@`JCPUfk z?c5}qyasp^z^gJJe%2b#X>vgr-)GP}02@@0fP=^VB#5-c^YcK zqz@;!ZWuoVXnzj&mk7H>mVR4VTpbKdd*$fxqZZ71atmOCa&-7f6J`}x!H5pPxbz=E z_=8E6m^#cFuG>p?(cyiYFe^A$Fypvd81q1Lv#wjK#1H5MgW-PgG zFL?xF*~gs0jNsY=Q^!qVQi>O5OOe2XA|HOy-p9`CPi@TwQU4w@WWSn+JudR$*Yj?~ z#OG?bZW#XrXlE`lXE4>W?1udx0Itp8j;GIyA55gOOrL7WZAHm#VwSQzJ)6n+#~?f@ zv-JHkH>3R>HJsd75cTgeLy~F*P!+cb$b_fkER|EYwWf}16VM1wfS05Goe4t@pJz&x z3D3q^Dtn>vW(?N`pi!Iv>wZOTBxoGB7|74Z*-##^jWjE`3b>uzq7KUo*RyL7{9>FB z-slIzTqHz3;R056ZS^!r*Qr-i8N$7xx5T!R_#$u*cfr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_bluetooth.png b/app/src/main/res/drawable-xhdpi/ico_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..e701052d1c95256878ea6d9584e5eda4210022f2 GIT binary patch literal 634 zcmV-=0)_pFP)T)VJ4U4_YGcQ?-D-fy7z6-0ESAc$`2 z(nWo2iVwj;xx-9J(j-l1>|KSNlV8r`f6pP*94Y0Q;c&PGpasBHO1-S} z&)TTYF$jV+X8w`!dBMyNwbs9n`@u=UhPMwOa2)4}lrpXQ!93szi$m~mQs##H4cK{Ju@#6(Y+{&wzI~P8dqh$={U~KY-z~%{T%=o0St)fRua1QFa z?uu>OMxMKe&GUW#3V?S2R%UPj2L&BxYn+1`L$}+#YFXAN^PE#f3H$*wn@oyl2K^ia zfd}Ak6h+S}!RG4%d?$jlm^R519Fm*4m^#IVXU3 za@+EKKOmyLO1YiN1u27?VKnEJ{tn;|P3OcL0O$VK5bAU~i5Z&%0OuDOo6NkUwO%zh zaMlb1{y;<~+PjMkdZpBj9Jp#FnD-58oDfkYgyI_xoSV81pRCeIoLO z5Kre`|E}w<+P3{O6VdZltM#bY>+RNMdSuWSou!oaXf)bp<}ovOwbrkW1J3OK0J$8G Uc23?D;Q#;t07*qoM6N<$f>28+;{X5v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_cancel.png b/app/src/main/res/drawable-xhdpi/ico_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf9fa8d358b4fac76667a7fd1161f2fe393be24 GIT binary patch literal 1363 zcmV-Z1+4msP)0i9V7$-(^KAvrh`FUdjN zL{L%ppdcRg7!_m{HJW4%L6AVYpNWW*L*jNys+k@p$#l<~?&+R%=QYe_`c=Jp->Z7v z{kp3V0vy}h+xKNMnJ0+oaR9iBh;9df8xiq_0P319LPQ4uP(s8%0pJ=Ueq-DA*WKOS zzcktzstQ<^#Q;S-9LWp@pyzXbOFCfdZdI8{L0C+F~gAQWiRRFk<&1Qf167~cnrF@ErJ_3N7 zgY=vrnST-S1tG+jwQQ~lNJ{x45xoxp=Mpr~Fs5E7qG7`@K0L1E1RyEp(?s+c0A#}S zm_S(@5uX)8d{J%t5kOMPyNT#~0JtfE18j!L9BvN_A=X`G6+q>y)psdgkW~R*6+%4f zUfn8yEX#Tg0Nzp6lIC`Zm=i)cEF3_569@o*r06~;?ELY4(w%%W=>U>a=832fR%@E% z5%H1`qUZoJP4m~JK0ZV>Dg0Ps7{#{3)uAlB}1A?nf!*>qIn{F9px3`C~cyDhH_?OLQL+Mc!jvUb1+8PWE4Z-H- zCUkUkKt7*`TrQ_--;s86b8}EA6yV_C0D5|QU}Hnt?h zG$4h`i;DNSYFg<$?%6jk8353P-~RaovqHHpQ8 z^uwyp9Pu{k%*;$fPx7j_0psK2fwyl}-6~QK(i>)Vra^DH)&Zn9?G*xfb#)bnhleY# zefX76&}~xQzU80$+GlZb5&HZ46|4x}B+@m=HLKY#4ojty^Aa+SBNjk$3?!;PG@v?U zH6RTrT=3~n@O=2WpWx|_IK3h5=+A)tBhdK__)`FQE?lIhR{9F3BIJmunA#zR7?_ia zpp#j=2|CFvd|IbNorF|LhvHLG%1cD_b_j1wohTx{A%rOCl*}4aOGLYfct<5Av+PAW zZ>$XKL{cyRuhYUSuJof2;*k?+;bkv6>xBil=Fmem3k$gXbZH8o(iAQv(==Z~L@sV} zR_b@y<>DqE9AC3N%j1})`3xem02dud^HCzAmkq=Cyw)In3oJ<~xjq>eSb89(gnmH8 z3qpu%UgK+|L>GVUeQQcU{mtngp-XgC!`R*3y~VceSBU5$07Uz)CAwKyMa0XQOy<3= zuC9Mnx~c0ywUm_01U^YbkGW+65s_;Sg-Zrgu~@Cme?-K!fZQ^H-`ckQRgf}){{!dD VY5Ph%GB6cG*YOCZ?hZAF1(5-Y$rX%94Z(h>-M{RFUUC9wv4u;f0;uT&LO1VT~~ z83MTPDKH~>)Aj!v@F8SGa-0f2oKq8sBxV4vG$azhuO!|_$V4EL=(-8pwf+EY3cOi? z24xDccy{?|(@9igo#w1r0R@RZTqfJJ6S@f`+Nq0#8@$^>ZBz+%%4VDF3MlQArSsYD z0fP$LNuX#8DZw|QWl_TY6f%O(M#4oP0el!a!nJ)bvJ~*mP^USoeH)t;5Rr0+xwr=Q zjl7<5dZ=AbRSLufyxfIGM2cT2gJR__^>Ok%2k_APtTNHAfvwpotf%4Ed{((6IoCXi zRQEuuaELns@Sf?z)*i`)2KYvXIST-9j7b4+(VX#>K+bMja#aN^UCS9$70B65ORlPb frE583idWzlR9Vk;00000NkvXXu0mjf3iRm6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_center.png b/app/src/main/res/drawable-xhdpi/ico_center.png new file mode 100644 index 0000000000000000000000000000000000000000..490ce33ea9afbb8efdf073291b80b35644413eb6 GIT binary patch literal 676 zcmV;V0$crwP)cjGe>S{Wtt{27Tt(cjz0A)SYZr(o*aC*9XA*t&S&iO$!o-C1LXU7QHyMok>QV^7ym8@xr zTw5I%;68wD0LT0wx>*Of0?4=kOB9Uyp?=Z`(h%TS>I8_#0KNdY zg?9j?g>t4?u1wZLHUQjg){zdG0k9&{F)z!t_F^rFa5LN)-L zTy_c~CrO_6%F#qJ*s;}Z^Xv!uV)A|7$`nXWQaI^_(W$0@0j0KoOL3l%q8I1^Q~-7{ghw3fGS2YY&YGS&F|Awm4E7|g$}o7_xtWL3$}>*2e1s-aleSM6MW zSt>0o`~=kGPxLlhsR*V`NnBeU72v6fBXG@Qt-*F>hA)Q^uE5XuGDhp zL8;PDcF$_e=1PAN@f01Blx^!TL5-Iq~M1YV=wDQQ?oOEB*a|;X@FPj-PFxxE{o7i z{#8WI7sJX_qw{Kc;q+V9t}5ee0>1y_cHL+-|F6tnYHBmTEk6KHWK1xuJoXd-0000< KMNUMnLSTYs>^}|w literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_color_selector.png b/app/src/main/res/drawable-xhdpi/ico_color_selector.png new file mode 100644 index 0000000000000000000000000000000000000000..f7cc2edfbc6ba031696147e86d0fb21b97c23b50 GIT binary patch literal 1450 zcmV;b1y%ZqP)T*-+!;QzV-ixBYG?mu?27> za4c{Lus^T|up_WTn(kNN7vL-4GvGsD4e*Yne|u??dZ8>LrU0{nvw;&5m^!Kr`ek4l z@T{c2>nLd+(-pvom|E?vq07k?%!1ch@z;?A}?tIX1z#YI6 zNq=-cY~;<#03+g5;4WbAs*`p3{yN}FNzYf&(=ot^*b2DSlT?{t4Bqv&oh#|DPIPw! zFd}vZUH}g7L@D5{^g8eg@DcDS@EzdoX7RS(1vmgW7&so74tVQ#BJTmGNcy(j%WVNh zgpF7QOlzYofYrbw$pik`Zt~{m5wUgh#1{Z3b#Q#X1ZGI`$19XlfDy4D@CLAR8)H`h z3nlr>b}bR%opNIWT&C}P;224t7rj&nFd}?8dz+OxlP`QlNP4krR2c;kadNsU_ASwG z=VOp24Vy_8V7j>9YIEk61D8lLD;YD12(zCDfU`;_@y4 zmPbf3+aGs{2!~$p0y*z$GBK?|(3=6;Y0NLMe&$$R1$DnxxJSAp>-n z;)GADIOG|UR4FQ`YiQkZDGKodhr?iSU0XGyJ`iYn} zbbwn_)mkiRI0ZUc6TgmrTu~}Y{O%)ZIJ&5kx?d*A9&6mCP3ry@NsjP`r4^vRj04A_ z;>&zVi^mgTMEDr_IOU|g_>#_|JC>X=E|T#qpIzm~pc30omo&=uq5|lHz(pmB`d&tB zQ#P}y4@tVX)#f6A&M~_Az^U;fnMft<4}ha{olxzX5Z(m#ECK1V+GUd5KGJiE2&d%l zE%26&`P_Wq`h4e22#t{y+DKgTb{k1giZrRH;_{dML7DuJR<3#*NfXGbjX)0rE2^ga zQwrXc@xls?Kqerism->XPRX-YZRPqs_1L`H(#o|VeK_ZUnp?S!ORZeFkSDi-y=&!a zTFJp}#%unBsh#rff^2xt9Zi$Mv2CYp0qJYRoeb_<=|@AXFL!rOc9AtnaYK-wNLD_1_Bq14rC5;TkR&a{vGU07*qoM6N<$ Eg1J$-XaE2J literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_data_behavior.png b/app/src/main/res/drawable-xhdpi/ico_data_behavior.png new file mode 100644 index 0000000000000000000000000000000000000000..783ec36176eae4089203144ba9a15a417f79e08a GIT binary patch literal 3961 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 M07*qoM6N<$g7;2--v9sr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_done.png b/app/src/main/res/drawable-xhdpi/ico_done.png new file mode 100644 index 0000000000000000000000000000000000000000..5646c5f04b3ea1a42821b8d492e0ca010913e05c GIT binary patch literal 1527 zcmV_GK&ZkZ8%$ak3 z_srax**S+0Luqbqp6Ky-rZV%b0LC%%6#y-C-p*ElR7Ddm04{0@Me zSbBC)n}3LCwh-d;P&$VMB&B?WnYRJRbdaG|R6WnkbA3MF+x>+M03@ZnpP4@f;IY!9 z1KS!z^q>&p)4sZ207yzXo|(S~aESvAv_oYz+-?>^{2CP23n=ilI+(^2vRQzKgb-7L zU$v+ZXe?HQq;D@=kr}hnx+*H(b0HyI8594>c<0;Gmlfx``nm-@#PpugPDdsx0LYLf0sm6O1Dxk0RQ)ybstAdXeQ zP-y1@it?6SKrSF_6G7T|P)A1xIy(MEZmzxmE2IUW*S0iZNL6P8OWevl@eS0u` z_;AZ!I>yTLCFyYSUO(zcH+rs14-SP4)13 zy(v5A^jFOGb%e%Q1&mWcJardAg5lz=oQnmnUrERvP0-S^aQXRFmwV`ZbB@P`v5|vTO+{duEVqw&JiKr0w zA=cN3&aN(0EnS8^d-sL4EtTLT)PsUVjGi8>c;O{{xO3M4NT~)VDS%X`Y7zP3s?~UR z`v?BtYPUao<_s)fwloo=W>9@3bcprWti8P*ry83uVf;AT&W;9Uy@|?61!O|Mq*rkP zMR^4-AQzCeQR-g7i@+~<1<$?286HxLdkr}92=reA-VR`fwUL^(t#_zUgi2zhc1~)2=BIEfzwobwe^kyjo^%C8GS^ zkj#J=xp89wSObE317|cUiHRE)4jdLj+%h06Jm5t`J+XkwIdoIV!~(&g=%%KKkeVV0 zNz=4PiAW_k87lcZj6iaexBAc7VXuB^nl_z?R0EZCAf3xOW}f5o`F4gfGUDAhDW%F! zrV=dOn5Kk&Afj19h~wexi+XvmPl~P;04_}vP=5ocww$7?FO1gK))9tblrVEKfC&x- z^$QU-cs!o1qehK7YsQAC9u!JQAWh&s%v=~u6G%iV=g>uFI!!>G|Cm|j0t%)H{LV0p duVP6P_&;fv&0j1pAZ-8u002ovPDHLkV1iL1zkC1y literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fance_rotate.png b/app/src/main/res/drawable-xhdpi/ico_fance_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..82904805a6a36bb2652d49ad126893a06667569c GIT binary patch literal 1967 zcmV;g2T=HlP)iNR~E1NxW~g5{RdjZx@Ql;P;;XZ zS1;G#(z)x%K3;Pez7|**Jp!T64}pcH z)RFFX=j-caB!88MxOdK=yttm$R&vf?1hB0=!S;ZeBuQ&H=c`D;}7U1fe z4NO5HnY_S{Ig`=b$?}c@SCrNxctk47uGNuggaX(hyoiR1F~&|(1Y5bm7vYPB-ceX( z^Q15G@NOhw;WX#mm%N4o9LN|;p{TX@+!XXMH#{ihq*ov{p%6J46)4KD1($*TgRI~^ zz83=Ly1;X+y}^gj*dSxtu!ABxa?T$IkRpI3N!rFa4_h4LjRjGj1}VN?-iQq^pGA5~ zNxO36r}f36k34WbvkH|Z4VVzpPt`t~W6$E#RoUd`zL#Y=oPc{W#)>70S*7F!!P!lH z@>N<`k5wU=D9CHh2?T_>#mz6&P%pQDa&@;xRaqlO_}L>W-dh!LVSWvQhNMu!RLeQ< zD^f)=hmn50@!hdWs+7_tgDsQnLH2E7%f!Gr6*{GedO3 zeHi{gYdig6{Uz-9EFaZXO-2K+Uzv?9YtNEd#FBUT3BdG^ll(=3qjt<6eGFt0G?s4~ zfro;f+7$gc=_=yi{u@g*(H-s{N4uM(Al|{ay~c-sbowXS`})-AgCj+9%un5fG~0ttr6Dt`1HX zcs6faZ)pfEmOeI9?pZU5wp_=j?U`*Hp#Y?{1}y9{<^aWc74p@?qiFM%W^wRFZ}`?v3Q*) zY#nZvvD6N&^fF17w(yW@$peN&#O3bpk_q95<(N9YUy$pm@VKJ%A{XW&56Wnw(U zITuyaR=@zLkV4N0QOUJY~rDWj&$>_tN{HNx9A!Z}?4eg7^K@_OcUgFB@AkvA+6xlW2SWlUvnZ+iQ&y6x4)nLxC0F zO^wC*n#Q7)nvJy9)M^@wTW?2WQJ0NcwA8wtz&RfYU|1Wi+agWtHd~hEqX2#bKrLOP zhA}6sW+SDL*6I2?U7_aRn1I{MCDeTKj@Fn?*mS}=Hexb~t~QB|E~U})UFC<32I@%A z1l-XH-RgW-ov_JEbhVc-ov`VIO`%zj|Lb;c?LTQUNFR>UAJhN<002ovPDHLkV1nbS BumS)8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fance_scale1.png b/app/src/main/res/drawable-xhdpi/ico_fance_scale1.png new file mode 100644 index 0000000000000000000000000000000000000000..64bf3a4c8b2ebd98d3189e8c2d9c91b81a96191e GIT binary patch literal 1748 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_feelback.png b/app/src/main/res/drawable-xhdpi/ico_feelback.png new file mode 100644 index 0000000000000000000000000000000000000000..4f52ecf78b086db1a1dc09e687d1384e9fc847a9 GIT binary patch literal 2532 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 LNkvXXu0mjf57W%9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fence_rectangle_active.png b/app/src/main/res/drawable-xhdpi/ico_fence_rectangle_active.png new file mode 100644 index 0000000000000000000000000000000000000000..b5bcdbcb6d9038f44b074fed1ba4dd50bba68d78 GIT binary patch literal 1311 zcmV+)1>pLLP)2FpkcAk6nKUt|C6qf#-97 z&vTyNJ?H)m;vd%n_W@NvA&?EEPj_now%AUw8F+1mQ_l7F2Jj%z2>cyu9J*1g<4RyB zuoXy)(P*wCxP23gfev60coxv(Q_*9e2~Gd+8^fTqq%vErtIaWr?p$R0bJJB)vXLA= zK>t@Q&I5fNZG)lRJB}9|J2GUA@6dGQ_1i}?6B^I#xn*PCt(mXiSg2>{{5e{i|Db+L z7XxQ6=s}+X%7Nc3foL?nR*fr#@gsrf6g&;g2%D&sL;VvxQQgk*j&pj5-9RZYs{gQq ztOfR^q)^it3~T}(OH>f2;~E>Dl<64TP*n%L2~$ zd`8*_$11`%g z2%3k85VTpMMb@%z6^N{Da>N#}M_Obp>sA5riX$Ls9zrDFXw;wVM$#yWG>3rsMq?yn z5;TWkx|yK4z_OYOnm4qgGCf_w*{`0Gdpg9EjKCq3y_uj1ng;<7UF?x2xu-)wNuwM> z#ah!OjdBPmxu-*@s7RCC)2*ANQEtT~VfP?5g(kVDTRO=--HJ^`TBO&1&u++l&-jXh z7T@TS7J@cQG|4?30!r@b5K3}S4^UBPa^KUfp`=l6#UzdLASP&@(IoeDODDOfTQSK! zJ%|aKpm`JU&`a)n&Js;-;W-49gxw*Ou1S&g4Hz4q4A$P>YWAKOeF@O7kR8Skd=0E9ulDbL zwRugIf|ZFIKk-NQ*T96id0o5eIeJb9)%U;}t3Z>zcMk9<@cehGIz5%tCk@yJ=<wyThtL8g~jl^>X2LeZ9kdC6(Dpt8QLk_;b_4z9b{j zs`-tZAvOH%mjnK;!-ITs;PmA0r^i#KqofVcSIs}IsELaPJOb>G6K2upiC64tF1FX( zt#QEGJ^TvP18)Lh`}m!pEeAFLl|UY_7>KT@JQoq{<8=Baz6+cLbad(0MOfAe{{{aH V_IFf&?FIk<002ovPDHLkV1ny>cEbPw literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fence_round.png b/app/src/main/res/drawable-xhdpi/ico_fence_round.png new file mode 100644 index 0000000000000000000000000000000000000000..847ee578943816a4d01e202b6fe6067abd08e7c7 GIT binary patch literal 3385 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 P00000NkvXXu0mjfm%V^- literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fence_round_active.png b/app/src/main/res/drawable-xhdpi/ico_fence_round_active.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f5878a127ee93e217134599bf86b361fdf8f06 GIT binary patch literal 3146 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_fence_time.png b/app/src/main/res/drawable-xhdpi/ico_fence_time.png new file mode 100644 index 0000000000000000000000000000000000000000..86fcbbb88b6a542688944271c0cd296ce9f388f7 GIT binary patch literal 1119 zcmV-l1fctgP)#3vjGON^b}#JfF(dgxgVn~kMN)TyVdre4>l zUo~MB86FaKuY&s z6h)7PVfcN!{aFB>=WS=^mjHCP8UGF7XJ%$1x-=C{Vs?gz9`=2IU;4lQ07xmH2JlqM zV3C<$&SWxE<#Krr04F+=KF4vk0(c0(Mae!9J?s1auGV+5uqS^l<$PLeJyxkyP85s9 zEHe)^8jaa{z23}bv-x~Je{_0!S{IAObL`ll zQ|))T5Td5F{<6(Eh-koZ9M)PNZEJwTxm->zEiJ7PLM+&55k=8Pl2SegV5j|ILMgS= z^Ss^6{A7E}IgYcz>_t)ZQ@f6tCxal^;kxbw5sfGQ48S1(MO&P~o}Qj#wOZ|W0Bg?& z0Kj6kT3z4Q*EgWG{?`6GV*pOtkQS9vYez;#yeNuh+MS#4)grKw-4KT1A?x!3080iS z>FqhC)W$-gkP||@3E-X%AbG8IRS5A{(t+s)5JKEpE|=?4%2`V-XaO+uY!C!P2EcKg zDI&V71HhSb=_@5l;)k2 zTI-96DDODV5o`P@xvu*R5hdIaw`tp6r${D=$fV$ol=69{)DvkwW9D6CX(His(^37o zT<%n@Rx@cz-{MYLi}#4=NVC~2bai#D(OUmt$&ZB)12I*&u6rO=R6`Y8UDsVtL>~g! zbWYFzD$L-y&G-FZJ82#sHRjP34mr&>}k_#0~&swkBTyIAL4ZM7uYa z%k3$ZN~ffhlPR)0t+gJkR4T_>^PmG=@7G#CXz04XzrVY;w|7ImUjH$h&1QrU*Hx?4 zuND>-&KSDZS{rJ2jH>}T(!c?k0gU8Im!Pu^bb0Y^Ju5nMMr=HJ@st4$#RRCW=6~d lz|4?Oq9~ebPhUEf{{ZF5=Py{X*i!%i002ovPDHLkV1f&K5|RJ_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_gou_off.png b/app/src/main/res/drawable-xhdpi/ico_gou_off.png new file mode 100644 index 0000000000000000000000000000000000000000..5d9eb8a02c2329b38c1f78121b438a7ff09b76b3 GIT binary patch literal 1300 zcmV+v1?&2WP)#!)K<+tn0n6a*%pN@8b$H)CV~%Y+Xu;0ZTlkl zY*9pOvlcNqm(&YJZK;y86$B$%TE(iwSfyxlR!ny1lL=>K-6lC_lTD$x^KzCsvopW> z=Ko#h5H7Puml-dbz$<-XO$#?ITw{U%pCp)>JkPrmfCR7wz%2l-2@P`|z-a&{063;; z9wQ=Nj%=1};laT{(c9bms8VV-5oyTC#>}UM5HF68kH0oJIH)53FwcM`0gsG~tV<*k zLjZchInNT&TL3-+@HK#QEiEmprl+UZ5>clRBF)S>0PDi>ez{!UnayUuuNS&*VB5C) zgb;57xDLQs0K0-9$mepo@?wkU^Z7(7mD14r0Nf1VHvsobDL<_Tx-MYP^ZJ?D2C!Od zl86RO)BLlZ1&4=+*Cdn4LjW=WW|%pf$zFIe1z|+h;ok%1$8iw(09OziU;cbYm6lvgwy*tYG>LWmCmwAM^M90WnG zy}ex&i^X?pHw7S2N@Xm|(oXzuYc%jhlF%zTj*})Lrxu!-Jt9g1=&#w#1tElK7{>8h z3pP{|^Eq8*LC0})9jpP{7CS}&e<-C4%d&K~yr?zW=?(yRcA>E5dEORgb^%-0-2^~;{MFS&MD%;9RO-)WvtKL(8)m=n8kRWXre?=+HW1PK z0Im(;&MBqtu`KJ$#pL3;u1+R%sku-nbVXHwk%=R8u*Zq$6~lcY;3HpSS(I7wD<{Qs=h6J4qzjIl_)Py20^eXPMs3V!W!DP?c0dR z4zGZp)&4K)Q+osNMYtZ0M^Hx=L`|;z2qNKs^P-GzmP!V7w%nJ#u!EIOAqJXC{-Dz@EpQ|M|Y(`OmlK zJ9C67I%JA+Qvv_4-(1D4tvxC2?FEww<7py;E6b`wxD+8T}BjNgU@w zn0TSURVvj$GMNQF36sP?JHYU8qntQ#%RpO{7=x=VTawJ1*E@ll4r0oZ&o@hV_i&If z9Jp<#fG(4uku^$LlF1n5Fmk-OPuuqG5L;e(b`jXP5mv2&$B*IkX~^eC^*J2pGn0MZ z4BWQY0T&}XIXW?sfNk5Lx%oq=%a`HQDR1cY;y9Ora+!kv0{j>h>|dX2=v2ye+BXC#uu!r$_1&ehTdK{a|Q}!8euXCt*y}5=;wL&4h|oN+qw$J zMvpko+PJ`<0@c1?whc|5rkTw`S63EZ?l;n*>_Rkqi}3SL?&+LDF_*s-G&{`z&$b-i?{-?%q#;OJ4v=>uZf5o@WG z{y9hUE?EM)Y-R+!-Pf<(-Q(`vpel&*&zVjiM5(=HGuGF;&d;1VzU0*_clWq|KL}bs zk99i?Za{T)uxl60n&pRk`4SEtf(H*wptUB(24vdu7cPX|yJ7Zh7xKjm7y98tQ|KJE zwGAd;Mn(-tXH}Nfiby7qpr!^|T0ki{cMkgd1E-7$;yz>*!S%6r?%b=0eANETxdN1Z z)fXsrtk zUUc4t|2+oh2Y~OwLPrMol+CZe$}moOw0($d4O1T8Jdqq9E1M4&Li>Tmh6}g@9QfZZ zguIZ&8?7f#)=(&X1AH;E2=5h~hP^@}ah95zzfJb(AQL9!cu?@kd|m;cOn1kNU2(kP lxS<1;QZY0tHrbSQ{5^nbBtCT`04@Lk002ovPDHLkV1gHb=Q98R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_gps_no.png b/app/src/main/res/drawable-xhdpi/ico_gps_no.png new file mode 100644 index 0000000000000000000000000000000000000000..f189670d9a55a47452cf448614c9cf4f01e13199 GIT binary patch literal 1300 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_history_point.png b/app/src/main/res/drawable-xhdpi/ico_history_point.png new file mode 100644 index 0000000000000000000000000000000000000000..0db34f49b917fc32341f5bea4ffdf7c40f44bab1 GIT binary patch literal 2942 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_history_point_one.png b/app/src/main/res/drawable-xhdpi/ico_history_point_one.png new file mode 100644 index 0000000000000000000000000000000000000000..b0fe63ac3cf41990857d844556267525c42acc4b GIT binary patch literal 2913 zcmV-n3!e0eP)(|Xt zjS|bXP60qi2B8B7^Jn1g0JH(%4WJHyx(0W$0ptL93Luq({mQ^^aA>Yv2QCj|aV6E| zHnX=O9Us&Ja2~?J`Y`af0Mu7$^En4Q$-s}fpeR0o?Ypm1pT+8S0Vs`+bk9Zh`y3bz zpceqU*a1L2=_d}hqb}+s__3Imwg$_lj-Th+damG88Te!Xjco0#gucfdY(pVfbQc!) z!dA9z0#Gv7x(X0J_YFv~z+c z0YI=4qt#u91IYq}u#Rlcuh!bO8Xz4X+85xl0P0z5>=l>K0+=?0#UHW8532yu@vsp9 z+YZ3l8Y2!=wwM89f?2{ha($8wP!bOx%K;jUW!I7GL^YS=3>Y8G61K{*E32_r`A{tb z{~myo9Hlj&3@tDtLRbO~73x;f$$ZG41ZWNcaFtS4!`>HaAoLGndw#a$x5XZ0n61v% zzyVqAw|Y?mp{u3Y%`8BMbj-08}-s{nMIzvJ8h-WLIcC^BW^N}L0+Up&P2HFxncPq3){4}I!m&Kh4d zXsl>H(PiLir{3(B;)+J90Cbgy&t$+_8@E%Dx}qYEWfOnHi387M*Y|4Rg2>(eXw|-! z>^h|dIWQ}fB}AG9i1-{g2)6*dVYPNUR9HPLP5iAYN^MUkygS4jzHL2_ms5gsCtl$4 zzlfnN7Xs<4qd`h~Qf2`(eiiv7qaKvR!xnL{Wp-$*)hhpaBohlp-ZZM$Ca4zH?DU6M zLl>jxhju@~${A@!&**nswSy>c>x6?X4rTFW7?c5YhHE|Qq9h$)4XjgXpVA|H>yUOM z-$?n_$AZg#9qK*q9vX3=CRs8r6~F8^{uMX<5U60_<{8;=^6AdvMB`-uCGqf&I1po> z=31xq#+6)*>z`~?sc|z`#GdOYKD+YoY)sc)N2ea1Si8$#e0Ffx6RetP+=~VdZ-m*a zeXTRD2W4bwKwA-@lUz@*zjE2N`2jXB`>&B7&MpkzhS@1UrvzEgi_tEmHntuP63ZQl z&%pAjG<=pzGhcV?JQJ#*J^XYCOBAsX0ZQgt9|6K`M_Ko*op&4ic09J&FgJG%B4Yy( z+(p0kSvnyVKkqaC#WWh=_}#7w00OOxe1lkAx(JYthff6%r9_iG>U=)^7JiJ)Fsquz zo#orxqWhoqTWmD;&=_P&PTW@n5UH9T!V;oN0XhtzuRR*8MCZm&(-HgSL$g&EM72Uc zt$r@KcsdJnhu=U^A<@sq;$BOG!>L`AxFG(uAuOREGpw9xAIbWal~U6Z^%Ax{Li8th zOqQCw)CbzJzZ2i3T+G1??RC7&H@(8HI7TUOHLn2P^;t64b`>B{)b22nav=wQ8<P;j~ecdo`jh|U_m3z>vRlfMk2({?}>;M6zb5zzaa{g`X{nqk&$P{9J z{vOzNG#F0Kvi2k_ePbN~^Z!#vqExo<1s) z?HT=28}|kxP&s*4(bhu(h`0j9RGcZ#iP+i`^9YCIGO7fe1Wwm?>LYwiV|4B*J%FA+ z`2uqyZa}cim6f?MW?plQnATJ_pb`bM381PgEEVc$;kIJhEj)Q3oq5u$zZd4N^@C@9 z%Nwl5|P0`i6UBL3C>{c^yCMP>$UgHHj2WI&$hL-#kgZ+g8-tShmt5&$@R;*m^3H_#YOVLDK$vr#fClY zB^$T@A5XAu!R;zG27J&EGgtY-#l?nQNAFw?0Yp)}^5rHVjt`^X)gkS=F~LO^8aH>t z{764>fF_~1$<&}*F@&)6rLJAd#hSTkNKMW|?Yd5wxY!5peb`Xd$F)#d9HcJ;=%B{J z$%C2rWQ;LAO8WdmYh&fN?eIpUa*A|V*DH8*m;P#F@owyb*s~o$ypNR72f3-sMKeEl z)bX@yx_~&%t6nIYqB|)x*m@*bq(v)=Ie@4Pv4dUSa;UVUgEk2@!aH3?#zW&-tK%Q* zA}XQ17*u9v6qm(BmH-+xs~JYlY9`fzs_nfPYSVgXPo)#TGdE^M7rZVALrtRr_a?8 zW&;8)AUDfAFC!PAh)GQ_eqoF1?kMK$=?OD>tK;FSDA(}=l0oYrb0Qa@h3i{`R>KY= zddk%RkSfxC{o-`Qe`TISmJ3k)g^p<0L{Z{_JuodN?bUAkQ2aGx*mYGsD6mr03#0T5fskCuO%GGW?6R|}E zmno3~h}gpKPKHXxVzvdryfzL#DwHLP+we9^UZ4nmRG%c=xmh(H>)Fo>ZG!c?N<>{$ zp7B=1v_+4;ulkTsDPU%j7wGj>9=@0XOO<}9r1LqLGB`yxxkYyR4EDz2O|6xhv_n1q zX$VU!!@wvqG$c?_iiG0N`CasVY+Y%*{bH^a6t8VL7$ipJ4kDHls0_VGRSF*E6w=;0 z(XEz*@(9=OX)o?pIF9hyAuQ1-{m?E+oU~O#wCmACI<#C>h&@~v8=xqU(2iirOX4I4 zuJEC~G~g%Hq{C28`X;g}O-d9irN+_5o&yONz~1h_;!jof$?l2dy0h6>za(8`8wY>X z2p`XDUWFri^*~vfNKOtLjv|}`;4sTuI{}$efWqHfeH20et7-i;`pgf9qWNqH)C&Qc zZXH@1FzwGl#hzr=qu4 zd4w0k%c+LLz-lunrGTjX{xQHdbGSx@vYnaMR<`*VWXS=#qAMF&A26^n0J^JT1tc0u zyOqZ|SWJz$qRUicQg~QP0ia9X`Wx;u^HBM9iS$0jzz;d2IJQP!@@9VK8|UJI%r^xH z!IiEFq|63dSCyU@q05l601z!%c1@rLnxuSqUFyQVl%Mvh@@xDL^k_U}Su{lU00000 LNkvXXu0mjf+hJ@r literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_history_track_active.png b/app/src/main/res/drawable-xhdpi/ico_history_track_active.png new file mode 100644 index 0000000000000000000000000000000000000000..6aaae0a0a6dbeda047917b51ec5fe442511879cb GIT binary patch literal 2428 zcmV-?34`{DP)e3k7XD6mb`l^25P`5M1WcMRnuHQ@ff=xrQ7cR1m_Y^EEW~JuQzZixk#VajnJEyB zU@?=ysyGr7MjVGxXN(5O$RbO+BeDnJ@?#8=)|^#t>*E-B!Uvppcn#=18^&VC;;IABAo720jLI02H*sPjuH4M!*uw2 z;LvQ!ZR#wy$!J41ek2+QNM_J4349NL{yJ@5VNfA~{~L>>bC?S)F)Z)eRx&6weL0 zimFE$cnZMX01UAMK#ZjSFzAB_gy)T>>{{7mNp*ZbTl)opGYGsCz+l|A+$g(Ykpc1wQDQJ2YpcMcjWjW_3&SijKH^KaNEalewiP5U2n;<)an0Auw! zBU%4AffvV7et{lbzX{sU4}}FI=q&(G8~BgW(>I~Z0N$%Z{fi0oNsT{Xei3wtlgF81 z$^#JRkI~N7VW32Tk}`?59rM+;&ji^xZ6?550QB?KSQpDz0%Wz&*3W(M!zY4lobot8 ze*qBSi;-?5+epBIILiB*R-ZHzWard{42YkxW*x0gbg~>1usDwL-q&JRQ)i1g%}U@8 z0hqOb_5c|XV5VCrPy8zMMbaglJY9il2Y?_oupaij-UQ`=SlafbH^04(Am?ngw+H@^ zwZ5y0CMZeXW;c%nIpdr?J!LA_%7_~|dmZX0dy11h5@h3)cK}+V!*CB$<##QV|BO3_ z-4ay7)~O1V!W&@5()yCv1k*jSl)I~=f(t&NN(TaY9$k{HT?DlE&Rb$)! zxDZs#sV@+)#;8vJSaKBwxffvDeFbNZ*Py;mG0Kz!H#FRg8RFF^33-*g8Ui@}tbS=iI4lSaR1su!k=za&Qo)KY9~JP3VK5P~+CX zefpX)A*mnC0h-q3Ed+|VXjClao_1*2I5h*nT8;E-65I0U)5!Uw;M}!MoZ25RZMqF% zeY3Iv~t!*LbGXOI+^<1M+=Imk=@4Vt79T6FbtfEAO_wUx^2){qKP~QFIjGV>#3nw_?p;l?)I&w4pIH7gsn*m6tQZT+R|f+P~#@#zjg}w>wj_!E2j6QYsSH3 z_G#*s?V<)e`cx2PGa_qv(q4@hW{9kb`*v%51ZK@23K7Jqt+Lx9goK$9H8dDO!JRS! zZGxb40ETFw(`S)PYcYy;FJ+=LJEcnoCr7 zNpGi*)?nGp18Ar>F6R@{$Bf5*Hxdso8V*66*x<3lb zvL+xnRPLuI2olkpp?hAReQ*vNmY;yqWazsAW1`=?*=PY1I|k0+BUv*H-=A zf=T!4t4MaFJNEOUz+jY#^?=lbnbuC~krSbV$Qrn7Z*HH2@rix)z&9t%1cHrIrKeo= zc&1g?+pfvxk~{UT(VA1PPJ*N-?X`B&U%7u|ok8|$u}kjSqQ`~d?XMI3g>KQip0xL8 z+eZX_NA_0WYNh;O&r{EYO_Ar`z5ODNe(RcyYtfstd^FNBqV*8ee%q&c6s7D0XsQ;} zi)U)_O1j)lfFP`n^~E9TTp0$x$`^RcnJ zajm-Z{yl2`i07jIXYR{mBqYsvm4)(KIcS%Ia~4pYQakhY*HtI+@rE;6{5D)>$f!^( zSbYl;W=N^|@?JpY97U=nc#RE=&99!s7dhuUeI$vrs;JV4xg!Eoemw{xljvh%f|r-Z zFIp(SUHM^e5$AQfv=wm*`NN!cw+Z~U%yJmRzcqaZSOMJ|Pg{3(gy}6LcQE2(A-Pa- z9!1y(;5L0Pr`v0PSBLsUpN}Fme`?kkQ*-5qzQjuR<)}h|X>vT}dfb;%-D>MS4yEDk z+BkJKfSeoaKpp?qLir!5bzgM^wE*-U$yB4VdBxv*s8@|A=dtiy0J`#-YIY2GUP-|0 zILZ^*Q_W5DC)O5G%x(lFkAPUsmby?-Tr9varFxsKJh|r=L2crs-m59pUc565c&|HN zZeoJ+wA!g=wf^}%g4zPNxgKYwgd3*Rd{%pY1>je^&Gk5Ky)EYSNJ4Ff^DuCyU$6vF z79(iwM9L{wV^QmKDI=((F>ys#6)Jy2palS?7?>3hY0Ux#W%r0Hy4<~$?>J?o0*FiA z9&p}g7OM5_d5{wa-F6aqM*teP^vFxzJP{zaxkFL@3k6DChid}GDMt}kwQPTjGBmOA uC92Ug9)^;K_|(Y)&CD<4LMab6dW%A00006A;2;7*+}5hC+x6D&leo z98T0AO9BCO*mQ6Jg$M?ah@g?9FalxeuIkPVbibU}G~+DQUE8Z+#xwVC-TU49zN&i5 zefK>=B?{*}EgTNF1aKSYyea3r2@y30@G}4^0DmH!5C9Fpe>vxeiRcg!eF@-mpU=0K zh@zDhHhJwR91dR}jYfY9pbHUo1d#30=UL8qK7h@NqO4$y9dn77(%ch*IOnx>UGE2A zD1Z(CJn;iSd`X)CEMttVB%=SxCQEAIr%#`*lbM-0j&uGy09VNl)&%ba5xr7WRJ5R8 zy?Wcx>Y&j7v^7(wZL=<)c=7^wRFxW&@w>I0rXK-HP22Qwg}QRZ6JWf0BYHB zQiXIc02r>S>QbvQStdx=^+!18qBFK^V>O6M))W2GNXFQkR{UCOY$z1!LqzWYNV5W3 z4RoTM^9TKYzvwF5&7?!2P-i0A03gE*teQP9=A3u;`~6!|#hvmCN{m*YR>Kb2>bp7@ zi^W=}8r_l-B<4A~u76UEhH|T-?G;54DFsWNcy%HpNvu2;i**bH0w0%uUV#A4c`aSnKLgO>C(v*^P1wg6yPb%{ zT&YAV5Tt3^?*aVD4zeBHFApBX+SRMDYv&GpbL23Jii+%*+ty`_p=aOz7(aOm($mw; z>?f+K`a)8IL_Q}YBjalT^~{j$K0o%|cX;lpCy>7-<)~^G*0TPE<_*5Ipe;?17}iCCU7AdNY&|wE(rm4>d0JZ9&$F_!j>ZWJg+k+qXugvGlG(iR%FB55 zr7|OCiE8V%?eOBlMNs{h_6cQrmWDM!Rn_@%f;3J00D#C8N|OEs5ml88)(Tn>c@(L@=7|W(` zINUlGi-}dcRJk+fR%juy#a>n>J^lv_7$P=YtG+0T(uQIb^y%(;~Xr0eUTyT{k?i)*6in@*c*CfhiCUB5muGc&C;(5=osL68_~>bpfUvVUaYL-=&ZcInVWgqv?^ zhOXVZp?CiWkzLobdWk~O2ZcE2qPk1E9Qo=H`rrQ>6c@WLvPc@6&*#JF36EjGkYNzS zNtTfKf{fP!l05x=54foEkNz8EUCT(K_aE+>5#JGowxDqteJ>K zy)7;5(5W*PEP6v~=Pw94l_;W=%6xe+G2}lveHy+#a@bQpV<+Zf_@jm!6t?{mktPTd ztN2E?tsNLdqfubmSFF7;~R_3V&JhXG67(1v_xn)$V??_)^2G#j083 zWIR83V1Im`Wh6`9eGfUUTDfu)U#xnS?r;^EMPrdI5Lp8wS+rys+O}_R5y@CBp6=kB zr|Y_YR(8V7Rb&>8#neG$4UA;z@)c-#`!6jb8LC}On2ASTq+H!ZX4N*;uE|HcK6AT9 zyO?qn!FZ9hx7tXjdQ0DW6E8eJ+tB=m#y4U0`?iW%jc|TU+B@0y5tF_>yLTa2iQCD- zXW{W<$XmA#|Ju7JDYxTtCt=tqSEWs5w|#^sUDvm9&Moz7$G`s`qlXUmeA(dS>k8DV zgY{eU;SU6yn8$4@Y#b)~AUT$3sQB^g*Pwl99A*acW zNvHX4BXeWlf50G2o8@{-$+&nS@te)$oSS-RcUyDuOS)-`bX!sXGjZB<*GV%Xn#C9^ z;h;S@BjoF#6d9$Czvc+#nZ=@5z>l-%0boBGVGQ^XJcF z{@giOwfx;m|B^&nRa9x*+A;@sck7N$ci&^TFd-F@xvHv`DL;=voMN|0YL#_q6v z6e01eHB}TvRDM*q(}h-FfH=(3CJ+dSTOAC=w2!Gd4rPJsP$<-wh~EB*9jJTA@Av=J ztof#2&?SJHBbjDYUQDdj9O^aWDRC_PJpj)031&{bc`nXD^i@?=6s%en%fDD@#9%Ne zMmKS>Kr_ppF0Z1vSfE#`(aP~Cmdvo`Y6^>QJTVOrwRTnUa+6VJr<%>0>F5_L4_fMa zoEZ{sm@l#5sR08ja4+&dwGU5mH3T z7i927i7UGL6VY(ac{>lY0-_>I+z+&*T3pd(^vWWUNTb9hZ`~8et=!hgiGyw;EwO=! zmRHM5-cpQw>5)hzhjZS%+%pkigf&fj6-Wb;Kk(?9fuNvin)U++{TiMQ+zfcG66lui0IYE) zq|%lY$go0|9cltHvZ5i0&@saT2%HZkX$-44Edn-4pf#@k+lMAmz+n~$Cp7eQN-7$e zP7!a4iPJ4Ik)%fZbQ397i8KBLZ3zvxO(32~5|g38ZNqLAIo%LJR`qKucB_d>Uj#`M z$Z}aovrFG4X5S9{my-#8xlN{jjz~DEkzqGc-w-0<4^Unw^Y+*rMt60RJHMKeEDNd% z2}Q$hz5uSn>VUzRidj@~m_@@dRnrJ3KtaH263{ElYyw#Wx6MR-Sfk$8gc5AVm1d{F zW8-Lb2vG!wU7|yVox|0wB!dY?|1^&^le=FEV2$GUqKqk$nA_jXk}s1?TQ4(nu$f1@ z!l$Pqys#sHS=H#7Z)MqNFYg`-@uvf=d^pyN-W_xUkNOhK+2QA{+cR)kMa(9F=CI1t zb&V9HTbMn>P0{>np19e~(>JCgpmE2l1}67*F|1JHrbUN2v89&9FJ8~^&Tbx9RnFFx z<*ZvajBVw9J~-4w_45NR9(aAV%mdrvRE@W>uL*ASie&#e%8VXXp6O*WUNCZb9UFHB zsC&5+xv3V`mxoz?D8&1BdzrS*M^!+fC8AKAVPWN%9LBBovHi<7_CD60q^z)bZ!0rz zaP#8!W?mna&6As&`0QAOF}KNx+Wkz*%a@Sw$>Ey98wVw-Ln?j~tr00ug zKoaoH?Z~#OI4|w+bNHbG3g;f=-LXX+I1`|6Q5r|;!gy^G%~6@(Z>r(sbNw$a!WBV< zo*%@h8E-cXsSIj#N)tHPB(twUqkoQx={w_Wy48wZ5_xu01C0@dhX;C?z17d^dvch( zwt?z^LPJEMUAn}&ak;EH9;Uh>&cwbhW^D^#5(K99OJz@OjQe}KFgFBXAXQ!Xif)w_isAj>&TKuovL@cQ?Z%Yj;_W7v1Sm5!W#_?D*UK?cP?k!2` z!cde7?+npXS)?wkk+&?u-f<54Wr>LM>Y3Bu%!FPp9@*gM!+X7y)kO)$HBPo9*;^au zt)FMp`;D`d?FsVs^lKPaoXXPuL4G&PL*XB4*f7CMc8ZBihl%5jN$z?7JZ3>)Vs96Z z4oCqc-uvfy#!uYLyoG~#a%ekdZK&p*FY2gy;rj0%;fjDlmlaWN$T!iNgoGyWd>@#! zIc|)hUKt{%T2&4=DwMcIJa&;C^%`9raR>ycXi*r^$w@(~gjEt~2rGPC5vHTZOj}IG zW)(RXRLM`3j0l!wNqklw!|OJ2TZt2kNo3LP0QdKCF|5eWeJko1-rb4ABC`9Of;-eg zh0jNiLJx;d`YA3-r{dYt?+^TCv&`n2Bq{<`ttt=qu+TYOVnzZ!W%^F&%= zP}!<6qMeDO%_@!lC|-w1V^rl_NW~^W2e;X9%Gsbow=9V+8D_RsC-hP!(;;#uD06dr zo8g@G6%hmkQY->@ch{o|`_IKFJFhEWjVz~`(Is|H)cM(bB8Wv3`Dyn|y5=~(Kk#?? z=hvV4Pj!0XJQ9w}IIR~vqYD+2NyH>VT-HdaQ0&%ALr-@Zi-;jUtddAaw?sIh(i~N( z3CctgDjhs#iaq*X0#*JbjS-a;n}u!}7v3c+DyN%c*i8c7bSq~4MgM<&yYToXc-{Cr zH^r$6X?Pui5ivo4q$aYpBE-@`BA-{sSiaMbH`i>auM~?&T+xi|(FBumZ8Hf7A|zzh zP*%G5a7Y*;MOSl*26Z6?w@ozWxXz<1uG0aH?(QV6L;yh)Iae2ENUv<(9NXpc0P7>C zaCw-Ay2AKw4kEH@7*gmG*x4v@=h8+HS~xk~OPgZCCh4L>Gi2u0su**3g^WhlGuMhF z3ADvj=Ijixr82@N6TK*!peF&ftx2YQ)Wl0e-Ha%58p7p>-s%75W8R2N`sJFjitxvM z4Xi%U$hJp&UM64#x~vGXdYFln6g!XaPT;l*WZK}>8!Rk7mSC_~q&^U*zD?u4>r(K} zujZOGi31Pjv8^gh*DNa=D1N@19b`Nf=Q;8rZHn+ zIx|0MpJhiEXX{D(~{eE^V%+G$3!apk7 zSbngLgAcXi(D|5gue>S2;(e_w9GQu%YR2z_BVo!K61;hP7XGM8Qq@?x=@j*m7~5y` zMbK;Of7iv;a8v;u`0YU=HiwOwUnI%036uvEUKwa+P_BsHY6dSkOaCGV3vbC}(Vie@ zLn_P5S`C=3p1*Bs?n6**xSm6iMh>Y*{Bk>eCN*D4#D{jq@_L#r32i=1px7`M8SJyX2o zrRpCzE-`RK)+k&NLEn3LI}5oEqsI_Pz^YR+gL2?lv&uE;7P_X3Y^+Hl$VpC&cNvy= z=2TLgVWpxuNr~4?Fs$OSn>f~xpfuk``*g`TX6kUes$<46)MgfG3d^i03*xd%{Hk}V zk-im82|g|hGJkY7PYlYqJTJzR|Je8HKQWe$JS&R6I?qlROE^$IocQkxamf!hG*rQZ1p-7kFg teTct8BXQZx`Z2+gtW?%rp07b>CrgkwAQ?y%#sU(L#$gy9rrEmtpP4gz@ALb8zu*1)?birX z!Y5tz?Ag;vtF7d5icsBH1Wdm_&O82STgjee*HWofSM8vc%8Hbflp^8ht=q&8J{ zZU0~O`+3_ogtcqd6a)naJ3lSYMX@gKt1JkDfN2})St^F#%%9Es80rmuOxv5+8TuNq zt&NN>e_ISJK( zpZ<`R44ErpDN&iKVBV*p_J1VFK5-07P8Agwozz$HHdR%l(V$YPP$(3Q##>xmjJ35jc6N4#7_L(IR7wgH zLncsOUQSU_5ifReCpb8m5hF*+FW(;@&y=ZC`EJP)2EX+d>()dvbJk3XOG@bB>B-{7 zi}CUGmD`>^mCB46(>ZYPp#0pmvpc_T{{^?s?&ROiA!+t>bf@-VuP?*4SqmKdy^H6( z)f`T}fdAlr{QH~vj0+lP1a&7jmqCLE6X5TUkM972#*IU-)pEb&KG$yDVE_L8v}oCq zz<@w1%FB89@F8#c`LX2t@7T6=E2X7ngoTH(e(kzPSvoNxfj0*Z#Pg+YxVgCzA0N;C z@-jk##EILmq&%I1KD2$q1g~k z?+;xm(}?JGA}B%KM1eN*HZ8ti&-~*K%ncqvVnQOm1ALLzF>PAABI-qQ?&PvNE{=DH z4B=wtMcg{M8Er3Guz*>gea7|c*J<0fEmOiL6R~0$7cX9v1*|nK82~R^x{UBi;c^3s z&87|xd@ytvV}pX|@6(@SM~|XbtLf3RC(aH{nKo-C)22`tc{`&Y8o_+c{WE3-ePcq@7M9@S`ytJ9>;> zul1^ts4gWXkP|)-&zD_zASzJFU?97&!82m?%#@1R*xu!z4k)D=D>HSiA_j#RHdh|r8RC4D0Ip+U&K9fFugr!E7 zHYyykl<>)ujDVkWaKP_vKgNfI;N$Bf#R22S2N~;kY~R7Ckt6VW&5Msd{+O{r<76@< z;HKr?^~+?8cmWTOrc_$n$v_1g5NrjM5@>xPVpA8IgkK~1SQ_45o=gY|CN?&PxBdKx zij9$97ZV-B=z!6zU$+iFKR+t9T3lUS`EkQWLPA1#$-{%xGwDciKXdl18a~umco+c3 zL`BO=N+mojj1?MdvBgoFgLuU_G!z%l%|=_lfL#WCc)A?)3=hv>~wY>tVRSu89l z;M+wDd3(@c_QdaFPuyY~Yh|V;SV*OQ+7A$;r*- z>;HUBTIy;114fgTl|{#n9p$;YMRON2GB3zt)dGC-_z5{HOLJIZQ6cS~f1c3LP(s7Q zb~7P#0#Tbc^LIBlh7BFciIY_d40>~*OiIg^E#>FHqxUD4#FQ5iP{q4*>UWd+#UK|3Fm-Yc=Pt6HE)MIus~TUV}FL2yWj@%Ol$J7ppy zLZyUNaIcuXd-lqsY3Q(FL`Ox_w_jg2tY1%PSQzuZ{EFFg=g9rnZQS%|9+p;3dcD5- zBtb-_R2hv(U!-~|iAZgvm5Wp^T(}@JX_$V@mxtNe*;HyYawwP6~*6pbq{$v?>-!%9r2)ym0EB2FriE0)&3 zAAX$m?Blepf&LjhXaUuUZ&@)vq9$O2LZ+Xl{xoK1)6h2V8Q?RTkVZ^J#y+(BzQVrf zB&*Y!)mGSCDbp>MIT3Yjz@H_kx@=YCoI#g3A2B5cr66F_=>=9N=?jImtJf3+g#Ll?IU_(NvPo2hW=%xOD z1?bA6Yg8Uyj{f*Y6h-+cnzaO*=Rhw-FxWWr_<-voqpp+4XEC%jx#!RxU5}U&g;0=( z(%A*k&I$Co8mHH_0M~cu)>vhqmAZOq^_HEC?)VSr&um9=uLPx2^J<_{ZSAAtM}VtO zE$cf^stfS5Oj;5Iy{-an>Q=NVF_4*vLQ{$0+zQkV)r!_Vrc3}=?T70E+|X&FK~+oV zSWja}OL}Q@($S@EL4P(5Zk$1(0)YS6+xV>mXugBI2ba#M}%75fn|Efvsbe zxd!g58spO+o|YQQ*bRY|WAaW0`YT5evy;(ZJ&Krj38fAc4vvU+&hp0KX@In>a2;9N z{Eo(aiD{A5>K%+}oec1PF5-<8^jD6dzjhREr6b(Ci=Y67y|b)jRb1A8^Vk?A>uMt@ zyh>haHF8?2mDH-QISrTLa=jFX(&xQf=x(KrrIAuCh_T)Ue%Y%>2>N7fwwG7$<~qHuYSAebv;Qy{{F6Tg1){D3eZghKyP4?o zFIRypE0uvL)G7o!N3d!F(v^rTpjhW$6f8MxK5FXYqrSgCnD$fKp*osP{{H})G{`Z& SLeOFW0000$P{{yYGRs1aJqr6YXy!oj*EI)%KvV;C0_C~_=M>Zv zDkOD)!w<_}dEgCU$&FBSVdzCa5N%xh1aMClsTkB>$TKe^u1(gxWTiuG8;n;`1}V_t z0rg4;CEke|8ww{LWY7Hpk4~$JNAU;flqeLTL)?E$CBgFNPD((x7>8~;%iCSA_&y!H zi_m?jAYxRoJS6uDCRdgkP^Y(r^Y;RNZ~l=*UHA=yw%mi4y|l^TUF@RT~woCd8z+5PLUG?=E9P%0hJFwMT$>_btK+-T~lLr|eo5 zT2jZFy*L-;v4K_;=(4Z!We95IofNq<;L&@($4fr~)va*BXu+a0GH-nZ(WiHE3AhM2 zP+U&nCX#BK;pf(fLASEJ9q`1|uP7=GN3VC2_?v7L@UF=VhvJy?`#g^M1|jT)gkC*C zUMc9ub?J%ez^GG5vfg^yve7OsyNvUjwS(+(Ct@bm|J5qQ?nP8&~n zb?roEBz-{^id!A(CIm0Uo5ApD1+$la9hx3Q?ff$oyZK~=3T8iywp@CjO{73?z^)k3 z2`5f3f6Rqfn78$9yzEx2ZjELaE_tHGh$c_NAC(j1@Wb1wS<}D36^( zC1^V$P$7EXE7)~kS2n7EB8B>OjSOj5t*m@olaj-^Ogp}H^n`V-S(X&`WEQaJa2}ZT z;7~zPz@!8JX7t^+i1>teALzhjgx`=+An(y8P4F8q5Jz@4Ip2O$w*ThYmsjyJyNfa% zT_(M=hv*Pd3KNpQL@y#L)yPIqIFQQ6!-|+TWkQ*-!Le8Q@q?8t`Ot^R@X=-KF{>`I zcO&`$AwH#t-!)>S^!-R-c3qSKNS84hZ(-{Xu5Bw}4Q<`{H>PwrGj( zg3lN`b}Z!NaBA`t&Lkwz@w+(kHf#VP@E~R2 zbT-}|3I`M-l1~ARD*2p80HiME%)(~~YTt_!M-S8V$yPLs*+MgMfK7|v;n>l1T0Gg5 z^a3M2hrG$@PugO$H01o1>$Ggw0X%E5D$T}-nCEnD&A*3I+^3DK&s)bI$B^YeLY<@aT3<{ddgZek)0 zA|h}A$yO^*d3tK^bAR}OV?%~$Cx1(&enA4h3djb#oE$#X&0ay)+Gs9bb+T*64u-!p zivH2_m>J%a`VAVgYRx)cjhMjZlXjjT_D?*#^6{uz2g`+nguf8TjF~g|>A*GO;3O1)sFeDnzmK9~ep=r?CGzka-&_4zBwX;h!yr%r1v)Rw;e z*uUXd8h!U2!$*$PTz2m3Z{TS$6EkZT9>BqA@AB51*)*R#nSU)k!D@`a|Kwx zF^2{(`jghVBa`-7UhLG2_^mrxv3xCmn=+dA9Xm07?h;xzsmosm4Ip91 zZq6J@p?aNKoIZD*KWlViVeE1IGG;RWjbXepE)u<80Q;wZ#O@O(nH={mdGWt;wtqk3 zeS8^oJ(m`WLQ(hb%-*$&kmM8wb_n4{LIQ_-_tvuepZy0A{>#r8fn%*&lY8Va9+d%K zktduA$PDBnb9LDB6W>Nv;pK4?cz)JyoLR|iT{2aB{nh?rq9%WYbH{5~)$06n?gFO2 zH;EF}1CKuOaP0(V*1bqjqvkw2Y8pek)FV1Nnq}+v6aMxVQ1lRB!mCjz)ayXu(S5M; zb>`3c3sc{o#&5|fWTmAsa>97>e*BT6VPX8%K7>gL+cfXE=I6)zd3m&qk0+{cUz~Z@ z$q4B{c9D%1J9kj4abt@A{FCHHjWl=HRR)})Fg|%L28NW~?1q}?4lSo--4OIOgQ*j> zji!!+>{$Ay1~_2CHl8%3lko4!T3yn!^Rp!HS_$S_PC|-3;0VonX|+{&Z>E3@=Xusn+_;_&knrEpqAhY;Qb$yh$#sPLt(JDgJCG z^Ez~7*!=l4t>R6=(xq(3$)S5#7;QIh#JX@H^<=yP|NGqY44ycVHeI_QtX7;GH{v~e zHs({OsQS_r?s#Qus}>#h}z#8rtsgQXHYITA7 z0dQ^~T)qSWq0po?>{|(im%zUjs3y3c4%LF8Q7iEF!S}ZnhzlwBSo8>^7gxN4@$vD& zcwrxEi4~{03OCGwEJ=Egkw84K7ib6s%h&|uRU${3HBht!6^LLvkSH^*(L_~yiS~PG z3`tIImhLW>lb-_7+4U5WEWM9jGyFmlmrIqAu_gNmskl^3Rzb2$D%R>}g_;PhK#|qD z%E>=p3iS=* zne^3snDP}DW#uF5?205*^37FgowbkZY6;~IcuR0T#-poS60e8AXQk4G!uZr{7#w~N zJ$JsJBC%_aS&2 z)?)vEIAwzcrKFI*o>-67!xx(z0tlgG99@{#;_dK$~eA^qIE#-BohJ) z%JwFRo;Uec4yX`eq-{zj9%`Ulryp{VXQ>7yR;DI>j@fpd3$Z(<4 zqx<_(cv3iu?jIoPJhDC#sH!`Qs{1?tY5#3SJ_lfg6J?fi>k#50gx!o+1@Vs%SJin} zx<6pKH6q0mp__!xITk^4ZFc?O{}apETr9bsU$7=v7DczwYS1@=Xi&l`b#4y^`jif_ zT!BUHT=V>U(t`o6$l}$cUN{VW(5anJgd7d|l@7P$ujD0u4Z$h&B%$cHu%!LY`zcZJ zeF}61T^|J@M_f$=R4=U)Z~oJKLkFi+loS;;p%ZL+82EZS09hgzj5L#h-65eY(>f(Z~Z4|h7lerunbC@NsA*=yaK)&hBNgsY#ETs_;u~@~n=!kAxW5YLY__DG^XCG)N9bMo> znWqjNy0m*+;&knX=Qd-80vte#O16u$Nm@42vG%6B7q9ef=gFcS@4tT{T`g~2 zdTReUH{zB`C96zDM zhsI9$dj5{RkIS~hr&?H{qXH2++L@IVuD?AXP2faR)gvd|+;79*9@qb=e|+2|C#U*} zh*5L0^x_~RK+qY{pWLIxD-Y!+ab-@G(Rc8-%_;A!Jf4u_I@~vM45gAu($g@aO^%jg%UMi9s}8OtRY7R9(Xj-&l+2zNmjEG^6j zub%4KvS0SOb;rMdR_N!#dFYxOE-!rck!3a#g>DvKvc!&KwjjVmkh(MnYqrGSl|dC5 zI0Fp~*9BK+sVjUI5crU)Cpq}6`(u+={pZnAKc%ASoC}BW`b#_W!mew6r4s(U>4LNl zU#U&R_Xq+NW;Qw1#`&(mZVbTfk~C+xh42Y{f!D{sI5MU2j~(`W%HdWgS`kkr%M`g? zmf4QBmFi`}9VS*rp;`q(DnuYi7y)8Tl$hrs5%Rbwj=TAE=n^MesOv3^>Hy)lchvSLw9mc@ z5N8VPf{xi)q>9d=^v;AfZ8lO#_d<~Ufct^x%r$bO^_&{r*UkJg;rgSi(R z=q;9$cR%RI3q?3T@GYD9nz`g`hdS)?ugUL_<@;K&dp6G#L$nukAs^N_ zHwe+Kj*nr1QwUxP+-9)i5V#;?*(kY9phr^iNc`Tjkw@Obs#{I1Gxocp;neZB7i{~- z&)PKHZ>l9XuPB7(-r468tokd4%C<2*L*1Kh!u<8Gk$neYSO)(7Lx`XyEVzsYDuah1 zBN0U9Zrqd0aQ^W&J{5QiPr=YOj4y?r#fT4gU>|P9?@^4(&q3_pN5;t^D9pi`aX;43 zt3#POpCJ<8_A|`2-^J)Rl0ZfXT0TOy9z^CA<5@)niG3JWAu`iOkZDB}^e3pQL`}UH zW8@;df80uB*Fzj=9Qqrv!7TXsc(3tRug5_As-4(|nRR%?7&3W9#Mi%pF2qc#jg~WK zAb)xv&g99VA!^TF+;7f99oUccrxgUFz7`%Ay;onyfAleOS1b>WZn^X(ObM~4e}!}) zvvDW>Su+tu-I0I$3z_$}p$dxdswyeE>O7>^Msn@7h^F_Dxn&3;2qr#;bb7QGQzgNg ztC8^{#H45O8g@V=7qw|2M!(B2hg?JQ&>Ac=2fKI--m4Q3mG8iSQ`d=x(jiae?%OqA zPMJyStygg?Kf>7cc^De=Eaw)-|UnaidIWm7;Me4OzDR|&# zxB+Ay|1&{g>LTgcR`CtCJxTwQ(p zo=0{Yhm|`RudW=T12JR0@RQZ3mquf!>ha?}Hi{3+hA%m3#|Pi?ZoU=kp`Vlb?J_uT z2ElW)zle9sZJ39v zFkXEVHFGN7tUQdnU&0ar8Pkm8MhiBGm6#9C#=EWUu_eT>`xfcjZ$T{j0cQ8^q=oyCxClUL3C4Sn# zeWx6&e?N>JJ4vnmJ6t;tYv4fqO9Zk<9z5EFp@GQqeC)br^vDkK;;1>{*KW>Qx8}QiDgX7s;U` z?+`n;{@CBV8Eg1((lgE@y7C2#yh7TZev06krC6(9C%x(oqGz2=uz4%VF{7|AyBh2H zXG#3{KCC+zh2zKi--j^2b2HxN3d~ampk9BI)T|4LB{SeyB!>;h+Oa(ZH~yFjL^hS9 z>UR;08yb#UW6e&i-a~K?ynuN39+WQ$#{Gy`|Jis4-y*$i8phOx$g%h1?RXgT(~&i`_$9^R zb1nBhK=gaJ6V=&XzJj);E6D%DZ-_`pRvtzb^dQ)@0c-kcconM=zdRE&5M;*9#Ge03 z*rD|&Y@Rh6FiTDgCz9vYqs*ePVY+*k5*c(Q?%wAxR$Prg;tb?DYr^~Vp4LmtaNoLw zOx{RTaSZw5LwAY;eTNqn`He^9J&UDWU5+Li%^ZYsa}&p09BJ$ zvc9;vW?~ji=|g{8JK5rBBphbV#2~;Aqn^b}p8&oN{L^t=gm?Jie%8?r{;LR)swb!c znWZ@qIiT7=#0^CELWJ+Zzz9}w7?H{{HlY!Y0U00H07IW1wJ}<}DN!1Rng+zWfft0x zO7nW!MoWL`6^(&Pknwvq+5O9kLm#(ZIQ9BdUt0I52$@J-2puek{$1}leazAfNVxkD z;XPT4^mWZ z+P&8JQse3jVdrVr8%9J^Phn(^0_Yl;hkv#+;zHslTS*t6yd-|%dpBfHOJm1cjobG$ z6eL^X3e6mL-O>R{6*&aAM=)$ny&PqnJ}D|q2uM_4h?M$>L>HZsvULPOhD<6S&SZFG zK;`z2rPuc;TogOpc5j3Ts*8B6_Tt4gTvVA8^2kayDRxDUClmzb0ZA?k1Ne-4=n2l&*wIbI=}Q5UODi8 z3MXtroj>xQIO17F0j=F*7*`04kJ9+fV9ttRour_xYv|x?k|Zi!j~d#0i80~84M$sc z%nni6ee93>9ock;9!3!D!txIAde|5<4AO&LtP4#n%`!E~tg5fPbY~7iN+;=$S{|Ff z>9Ws?JZ?)&jV@a#x9qy#3a6TW)$&zdwCGyVohm^FpGF4%Dsp#zW%TsjKe3whXtKT{ z-``H+yJ>vi$1CjpYiHK3n~oK~6V8C@i|5WPc=_eWqM1ZrUEX(TQd|L=q+A>DtISH2)O{RTrg)O*EC zTgDXJIdIt9`%bhozR=;0hnq$Z8`4;tyso4!c`3<;Qj1Jjq=ANE~lKHv6&&iEGEza2VPG?#`rycGPrsmEyYHMpJi|X31r!vVAc}*>4PIFt# z2mdIR84k)bhE;k-X-K-I@z}N>||Zk zGmStQIet^3xFTcPn|lm5D%P$s-<sWB>pF07*qoM6N<$ Eg3ZYEBLDyZ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_lay_newcard.png b/app/src/main/res/drawable-xhdpi/ico_lay_newcard.png new file mode 100644 index 0000000000000000000000000000000000000000..9579afe57953af40154c2691a5de9f356116911d GIT binary patch literal 1203 zcmV;k1WfyhP)QJOa?7gm<__@Wr*35>5Oh}6EzMNHFL(7M6!Tm4A=0* zMYm*2=EfpZz7YN33yX@~SOXn}GGPTbKnMf2VVhAYwCwhp`^>U-bQ(U<-u6lQ;od&? z=KSveoafxx93k8efaCy3^fM=rPmKaxE60(q%x3cs061@BiT8m(-CCknt4jcm4{kb~X{A9A>tW%cB|ZF- zbY~DED&c`o0NfkYBNSc%HC_dt&D!_>awMc`w?2xt9-gRqlU`HzS;!3g?+5&8&;#BJ z@Sngl+A2W;ON~1J3JZ?b50KBI6$TdI69_9TKv8{=!U~5K7T6OAyR^UrU4Y}Gurqy^ z@OW7lB)wiA0ep8$A+~vNwYX~>3V^L3OL zC84DDJcX%#>2WNRFxaR`KtZ)0*Q_%rN{`3BEvd+>`YpJCOY>HtM6JZu&)TphI}vXc zCu7gaE;R0a3K<`s1?%Q;`kgGa^xVMi4as<~-V8(kU)WWU1nue-c>UdPlj)wCiIJhkhGfoyYO_tyV_O`s` zll7=->_x|*mBJSu(4)L48M7`H2b(Nt*prR#JI8URbwn7zCw4ypz2zo425dO(|`?0@lkmHbT=N7%W!sIE_Qt0j$>sS zWPSXL--P-{xNY&kOI=LkfuB_=squVTdb>Co`PF*Jmy2=XKt8Ta*m2~i0W^0{P`IWKv=9-3 z%cE1M`1*JMz2UtmAw(!eT+^D(N3mSB!`!!l~e>>Nu$9*v8FG?Kv|<97N2!jJe^ zDOG>WHiKJ^IlsVu3gRKw@(^-OExaFuTH6x!{g7%*^F(_{wH|scae{6x{RcAYOi$HO RT!9aT3-s}73zD;5hK?3N=H{+dw$!5QBSsEe| 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 qJm>h4_?975NX3xwpE =4-7RP^8y?4@`y~#on2qZ)>NJJ3u91ox@${?E?n+WQtBZ5T5UBF!s0Tq`)77-K~ z5CsE>MpU9WiXxg|LL_O(3h8X!NiWr1RdXtc1XRR)nt^#=>O;Nd{_eZ?|L%JN=U5ZY zF<#C+U|E*m5k)Zq2%Y7-tp~mmR8>{aa!@oxL1+!;A2i^4AnI&}ZUdZqP5^70sVEAf zD7FRGBKvI6u+ws!09I6)K*J9RP5aT?l2NS=5Ok=5fPjoDn9-S1(fvW}S5&xgdlZZ& z9Sw~V9TUSyh__Q-UQa`lipePA^#)1p6h?Gp*eSF4*uAHTl2Qp*y^Io4u-RnNlCAXY zVaMSJLlAzua^B7o%By_nML2S#nG1WxGH77N>9X?#u;v%PYd2EK8g#C0h)rb}BS44( zSp@Vtl%z@MlUB7tw~d8E&Kd@d+=0#*iP2=HzCOTbAM_`qYb;k?x0`)M0x{8g>f8Y~ zEYF}%uee`~Qg|=7lGop=r^G4a_ls!m6+{_Dm8hxla>otfJpWX0IK|a3yt0Rx5AGp4 z+JHe-IZ{^7;9>FPZJ+#`NIh*1Yv6LQ0l9oFa@o^Z9aYDS^Fz=CO6Gn{#`8|{;^L)W zbN8cVWM?N(=2RIqJc1Q3^`frM&6U@c5EASt=!uL7^8U(X>^4j5DY)pB3Lby4nS>4& zk{kx=8f2P00Yo8$)ncUjXfyZS5lPN%X(z4M(BPr}@Q=_NEJWFY1mzI^<{*02$M(&m zh>iP04L-eS6_y5hYyMR{IeR>d&L{Q*=Y1V!agNfmFuaV3KXb@`*PK0UBji6o!5 zomA^qc5YgRCBly+&BYKm=hu+V|MDOsuHQ#yrh~dVg|3|qY~OGZU|{`w<=i{3k@R#M z&PtVuqs+{ktpO`c%c&&)8-cWBfwHOqw@x&WbF-!!reBPe*t54DN1TO}j#^!Gyh&Vf z&F35_3lSTm>4G1#Nk$O$6z;3w>4$qU%HB-@|irQn+nex7L3PUMk~-6#+8SEgU=y4^Ou;ZDJe&zmHKj z)zZ`)hSefbT-_}$}8%)`idz2 zxpZXvfp_dEVD$KP_@secGh{XEH*N)?x^)LVO-=M4mPbg9#%weZk|jRd(wmr=a7_uA ze*Zys?9!9m(L_a+%+e<#x%^T)p-_OU|L)>og^3O^0sH}xmS!K5$LYCcLJT(BsVaWl zeudj-?_*=Gm(+M2g3!$7HCg1$DdMYtyFm<+KnLZ@G2xV zjD!2rSiWc})27b^2C`<|k4&3UM4tVMdd?N;9h(?bd=OHiYodQfAW98N<9a^2*wjC<38xQ zw6u|HN7;CJejo0qWl}ohaqV2B9ytBEMSJz4umgq^2 zHxO+PAS*Ioe&glN8+9z0qa8_lq=1jh#uZTKHnyftM~9D3HVtU~_fv5-gU93(A8V)h zz)_~(oW%Sm2Dcyh(@%>Saa}H5x^$$V*vBgidJ}FHnWBYrb{yXqwyR$1A#DmpwCJt^0&&@3ASjj?9cG8a)D{s3$hs%6A1`9?9v# zqqDoWfl;{qo}c;fbCr(CX3DEVy!ND>p@ZY7YY0$V>mf741{^6w*CNHuF$EfhsheM5-++uCJ)a%kWAOK2qZ~H z5LApt0q3Ek-1TrFCZn0^>UxF^jNjY3l{8ErckBsD( z=$Ywf$-D%5o*&KJ`3IQyu!oL4j8v3*7&1i9jtzZ(R|_)xZlL%Z57=c8nmM%ZdQwv3 z+x9*4kk&@cekhOJk6d)^ix=u~oDyg$8)Kmjz8ZkG~CS-&1eU z+B^!X62#r?M-W8pHuEp@p15hZxyPPX-H-h|qZga@0H49y|Giz#9boMdPY{H22l$ut zXazp&AL83&SiS~a21K`BV9)NRDd+aH;UW4jZPWjO|B}1@2Rr`<5BHd*SQFc)00000 LNkvXXu0mjfaRe{K literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_link_pet.png b/app/src/main/res/drawable-xhdpi/ico_link_pet.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a8f3316fc40a1af1f5372a0c77755e84b4ae46 GIT binary patch literal 2149 zcmV-r2%7haP)wym{{C<-?p%kM8OZx28m0gS}IyK zMzdh&-M3pv9S~!PAOAHL3TniUKSbJ~o2^kvfb!vXwo~@KW6tEh&D+_T+4*`qZHJr8 zAG`0qd(Qd2bI(2Zd=OF|K@hwFz=kM_)+?pfG4mw=&IfQ7fHNHV{{eUjz%xX2D2k$| zlu~~O@VM6c-)XW)X)JE7y@HuPO++68u&zrQPcieai0FP}%oAO%we0nt0kC`b?lUr( z%s2oKz-7H=)UEd<06z@F$t_#9h}LvHx(2}a{j-%)H!<_)0i0WhqvHVn0N^nIhluE4 z7>2XV{9-JGfJa1UXEK>QGhYfow#fzn?*VXnoi&dT(GQ|1`o8CRFLr}M#{e)hS!*>B zeH*}QYnYe=@DLI0C8GVKqoYSVVRC9}YHb*X8;R&z0P+*NksQx4^DV}hfQYyg8XW;J zJw1JK7={+WRW(GPB%)o}Y<6#swmg5-kBxDwR&3pP%>T zXiG3Lqm(L)j*kAZQz3fs-qh68yQ3&70eEw~o*bFkY}P9j3SxkpjuinA;mhUnF93WX zvC_lLJld@VUWvI@pUX)^L{k8+Nxbu$TrT&~l|X0;fK&Tv0GksF-;>MbZY&fEVXF+T z#=KIglqr|XKLT(=g5G^v>(4aX4ov~@eSZfLeI>ErPGd~+@70j4EgJ3e+z@~u2(D%3 zq(%L)G3Lg$xaremYprO)XJhirTxfJU)CHheEMBCP`cuO3csQ5Kee6V2`$qV>?eO!2 zO?WAaqRYp|#{OCR&N2YpzTXeveQxp$Ghcq97`#@MYI1V&tf8TyKPOIyN43^h*V=<+ z0QkOdh{$(@UQtS2+3%ySRiSI=xg%2UAg^)H#*8tsY}J1)0l*z6hXA}z9y0S?p67kF zQwEx;=+UD`w-eFzj?TSn*RH)SjV)GV6rYuNL{giV01yPh*O__3F@9Jnby*r7p0)Ni z0C&~^^fhD5_FjW69%B?ma*eLK%|tYzwZ0>!vj{+`R2nXq%d?3q?RCbO`+CigtQQ2q zUzqtF$+d~-uUhMOrbO>LW)^=&#*r`#N8+paA^_IfF9Q%?U&hn6qwlasljp`jPz07?`^7fO^TdFgq?7;|-+ zU%#IKINIXoZ*($#N+P@BkceZFn&(#wXg`c#%tMW5xLq{hXUzO@2f${}^X@;DHNf|M z$yik#JR*8XG(ci{S2zGRc%JvWQyhTz64B#M#wP>-Nj|>bA(GcxA8rQ#=VeKhND>#x zPeUt)cq2I2$Kb1u(4f1**4hGqpE`51-x%}$ zw5?b_?*i7^rI(>%vG^vXRP2EruT(1MjE|3((*&Vk0MuTGi6~!ne1ag5QZy+}8km5H z6l@t|F0BIK`~LTc=qC5o2Qnlk#ZHep00tr`D!ET%%z>%~xUjgS#Hw*~W*)4txClMa zi4g(7mAXpC<{YO5sYQoYJ2jS!0s(j-48#1g)R;RBmLx|jmCE`wj>LW@N16E!&-3C0 zaP#yy5$(`gZ|k*B;3_!2380!Dm%__zHoL9e=uRtq1wrsFW{y+*&n_%1tlPSE>yh}~ zWdRUttyFs#-Gr06Ktjs)rRSjK0*S`2DXOj;0<+e>1%Nas#MRj+eUX$zzUviJH;e(gqG%~WjmO}W$;A=}L9kQm@fQt7 zN=C7l`^s7?#x-fU?>5FP%1}$|)l%7&&_9War6u?Ok%T=shTZe0PJkgHuoSAm5v=d_S;S`RHEkDY<43ve?m&$>$S~E zVpeNyTkR2Q>lj?=gplV_Uo2mRh(6b(aq{=#lQZ){X`GCr=)Y2{GdDL^ZLJ#~9v+rp ztWxR%iA@rb#3!3JP6GI$G;DQS#ol%{xDhCc*4Z%t>stY@gE>;oRy?6vXX^>!nx~~# z=fjEe)DGmWzVb9P|B{HNPw3|9M$*OY^8ntK=nIzid5Jvb0K6jAsS>GiziNLmfWNIq b`~3d_hW*R&isu7;00000NkvXXu0mjfUAY#P literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_list_next.png b/app/src/main/res/drawable-xhdpi/ico_list_next.png new file mode 100644 index 0000000000000000000000000000000000000000..92b54cfd7cc08566cdf030040e2a42af49d1ed60 GIT binary patch literal 665 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 LNkvXXu0mjf!)rqd literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_loading_wechat2.png b/app/src/main/res/drawable-xhdpi/ico_loading_wechat2.png new file mode 100644 index 0000000000000000000000000000000000000000..6f79662c187406b398ace5929201fb867db15e1d GIT binary patch literal 2108 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 JPDHLkV1o2S918#d literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_map_battery_low.png b/app/src/main/res/drawable-xhdpi/ico_map_battery_low.png new file mode 100644 index 0000000000000000000000000000000000000000..887ba09ce92a558706d086aa57e85c9a974c57be GIT binary patch literal 663 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_map_gps.png b/app/src/main/res/drawable-xhdpi/ico_map_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..ee20e7b283ab5d50299cef0d210569711e7f8737 GIT binary patch literal 1060 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 BSc?Dv literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_map_refresh.png b/app/src/main/res/drawable-xhdpi/ico_map_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..156843d102c0d1ac7c33d39a7f5c0e1547fb56e4 GIT binary patch literal 4835 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 JPDHLkV1iAaD186` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_off.png b/app/src/main/res/drawable-xhdpi/ico_off.png new file mode 100644 index 0000000000000000000000000000000000000000..5257c3ad95ba374df1f6a7c0de19b593656e03ce GIT binary patch literal 1298 zcmV+t1?~EYP)7%Q6#m|B;wW2G4lSpaI)n-ka05hzKq3eP6$lO$P6+gQbucQ>rKAzw-M2e0ImYC1;7Sv?jHc>0i0##Z%or1866${I+aQVtDTNk zqcAiywAJ_hCz<(S0GF>u7r^gC^p;z@&#hE8+_ltjfn0A@DPAakwH^L)N9-J+vPwm3vgs)q+xt~{1AZ0A_gV^ykJ?DOe7M8 zN~@2`v)ODcm&*wN&jZ*NkqyM-@xHdUw)v&(EeSB4PFqb)O=@NLX(gYCUTtn}-k(S$ zW>y2NbZj=8ZJwE#*~iRJ0|>YOR6d_?PbQPO((#J`YR{bjaK9crNkr|oZIApHV5PdA z=e04ja>8X=b}}B1?<)1=B7m;z4iHgND@_p5UAAqXttPn8mgjjYJblE>>Oz5;(~jdr zj}$Hd=y_f{GanBv9X#+x@XVlYaz3a7|B7&tx%Vg-TM&*TNgi%r85R^Xz(hZizE_keQ2fMz^{M z(DS@)%&fMuk%-1;XJ@Zn>PD?6U>!Mr0MG(pj)=C~wmlI7TtE*XDTFw>o?w=o1T>)hDbSe!DM%*{a%e5EHj zEQIK*)`V-ZBc)W?t5@k7hOvXBl>Go+)Q5AY<2WCz#c;KBT-Uvah~C$D`W3);0qg=0 z7>2QNxx`;B0F~^h0wV|lRTUWkPAGui0k|H(Z$gOHN(O2nmr{-bxB|fU3gDD3gGPi9 zchmwvr8%UOX8^PTm{tJux(Gcfgm|EmaxLUi%J+1!Qutp0totpl`%6;yVWz$Vwd=Y& zi0I3@O?7o&Ea-YLS}g8y9Ov~~#JkctT-SY+h>E4&Lb;{>C`w~~e*RY-u*dTG{B^Z1 zSXDck%jJI51#6+9q2WqJkt~$_uInBlq9^pK4hkWjtECsEl&Ydq7gl`(LWswUo(w_g zrs-#$mwjfw({Y?nYXQ=A-P?)i6WugT6VcTnZ*xK0>ALQ2A_`l+$&1l;D(1{_oZ-+h zl^XXkBD#A$8+T^@P@g-6>8KDQBn^rf7Xj3L!8;d&`mikP!P0)H9C@Tt;7;vo#R0xz zS=NDSkVm;(ZZCjmBIMEOd_JF85qT8ueL9_PjKyMyB0P-}Rh@oQO?shF=u0M(b4y*w ziUg*ebD>Z;0HCKF z1q|R%J;|lzC}03@#$vI(9UUENp=G~{9*ksq*@&Et; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_on.png b/app/src/main/res/drawable-xhdpi/ico_on.png new file mode 100644 index 0000000000000000000000000000000000000000..53c3d925d16d6f1e48a96b9b59a627a8eb2952be GIT binary patch literal 1618 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_pet_link.png b/app/src/main/res/drawable-xhdpi/ico_pet_link.png new file mode 100644 index 0000000000000000000000000000000000000000..0cae31787d3e82af0983fdfc39131c6c05044c4d GIT binary patch literal 682 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 UN3`?7=}!kh8Cx1r46u*?2e?Ge5dZ)H literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_recharge.png b/app/src/main/res/drawable-xhdpi/ico_recharge.png new file mode 100644 index 0000000000000000000000000000000000000000..f20ae0cc0fa444924e5f5838f6e86a2222abf982 GIT binary patch literal 2867 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 RuRH(%002ovPDHLkV1l8TadiLy literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_search.png b/app/src/main/res/drawable-xhdpi/ico_search.png new file mode 100644 index 0000000000000000000000000000000000000000..bb69da6cb7b4ffbd8f073d1b917194dd392ecc99 GIT binary patch literal 1793 zcmV+c2mbhpP)1!s6#m{iM+QY z!hRZErg^C6;asqGGT<#>rnw+=0B9qi%peK!`T*?*kNNAJj`$Y9=w!{)qyQEyXw%C> z%LrJ(pyT6U5m01c9W?I+xqZ7GN7pagECEUy-8T~W0RU#R#wYal0C>x7rImxZTsbaQ zYyv7(T$kPiaAsU%4de?1zPaSs8{*)`BA{oibHMlzz?=w1FnZ!FpNcE4OElR02FCr;Fe7K6Pd0QJ;# zkg!(f#kEmLL?Y0cvCj7xp8!Zy86^x7<7pmge@V)|p(wMaaFQ8o2{Bd!m>;G?;3rFt zy|NKrLjoPy>~Wf>eFNZt5U?+ydDk^tMNHG2x!a}30o(>uX9F=^T^h)}U5`Xv0=>Px zGloXo9|0U$4Z>@rW8Ve9Z8S@bz9$XyN&>A7iSRBacVRi7&(*@HOF&Os4}$P$P?-p? zmhxgnBgf)=*E7~NV5sUA^yw4nh>K$r=;-b3&_>*?z}Rl;A74mEoVPz_KIoKgm}>yK zHTb&*EZX6Sjp1vh1~olxJ_Mpi0-twkEm*iih{5VTojjj(u8G0>1+|+%KF+@L@&U zR_kKQN6Iv_>{77B7Sa*jQ3(_Qbozy*b8s8*!`>rUvRw<=2)+@}oIRNmybcE_Yr+lQ0?sW{lvLXY32TG23EK&rL z8EYvq)(3=D8S4e$O(lb_uC7^b%gj8$6%~g(KBZK!gWW;+kusT_e~>m~Z-IgKiZmj= zqMWzin@R$@VW}Nh?Zp1ERXRd7cvVHD=6OI*TkAns8UWfdr#*2@e}Dh*RFLTE>P@>X z?k}o}R^T(Qk^^?IGaeJENg!#O$B;{#LS$Z$j;QEU_7fROWz0{RX>kP}VbE=%dA070 z>YvCA^Fx3x2{_0MzN+ll!74E+9x20ofE!0Qq?Xl~EEgy#Jm*bx=h zC=;$K=f(Sz@_JmEl7_XKfcrwQHqU8K99u7C8{SIj8S^?Yy%7S=#PrO}7H^ep+kZDh zq|>r8?DA_>X)_MCTZ4AS4riOXRH!)`5>T3Y#(D;fyKA6q2Gjj=AgAt)B9&NGDo0z} zR}hm*jhP|19)p)fNz+IKCc?ayfMs;YDLQ;BJDze z)h$D^29^u(P13Q$qF%j3VuW7h>SF{nye*r!u~7Y#I>V}_P?g1s_PmDO*aaeL1pc+B zXRJ$!@gf6Noneg0sFTytt`zqH#3rB=XJ@miR!@5hgk^Oudz<1zz=)RMql>n^B?>@O z1oi=U81s5G?7aiPWdI!<#o#^}27aXRbuh0wvH5eEw<|Za8sL*6;KNLGq|MWb=xhQO zF=IXvQWFbx55PMCDuD4Th`w_@d^%Xj{n2SyCwhQt(5l`IqPFk*i$I*ouaMP^?$-gn zJ_KNkJh1&}^!1HQdLL-oy9kP^ytYy6=8!vBFwx3#KKJCbCZL>48Qr%scuk0-yAq>` z!-~azRgy!;|DHkrZjP)oO4~9gcUpk^{ z)0=h#)O+$UCw>D^agnQ9jFKa&A~Wp>j77mPF9ztNiYSafeqR%e%(NshzBi0LvfK{F j9wNM4a>UbNf6w^`QAS!%j$VeQ00000NkvXXu0mjfUSCI( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_setting.png b/app/src/main/res/drawable-xhdpi/ico_setting.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6c53bfd92deec2cb1444c1ab083951cd01beb6 GIT binary patch literal 2865 zcmV-13(oY3P)=R4o;p8Gw{ch0$l2qYqg<2a`#5{YKt_m>h;gNV!}q7;DX5k!tBOTUQZi0D-j z={5|b%k#WW%d(y&B0sDm6o$cZoMQo8M?@C`m=}h36143Vk)Hy%)v~Nt%GI|l0C()z zadcf>UAu@}37{?z-UDC@5k2Mm{*J-H!IypCe{;!_B?rpw{BX3}wryLTVHigwlgZ-@ z!&odLXA;plBC;UR=KvAib>P5(w#ADV?=7WcNdO(kX(6Ip0UQHBP5gclxyiDut)+xd zmj6YBdU|@!5RvNuv;Z&w{0qSK>2&(OvBpspz|PLjK)@3svfQ$)?UMzV zD0(`M(?mo%?vDign|gbDmp3;z4~`~pQ~>wv*)uDb%iTvrp8)Wdh+6i*z5cLc?}H>&rBKQh7Gj4yZbc5FdhML zG=N|B_V!*-Xo({LbX|87fU5z#o=7A$P#r_=c< z?O>Bb0CZjVLIC#y*zfy(^HjCGLW2n`@d*I4i0E^sY5qLlW(Yvts!W?UO|4B=+pE** z^qo`L@(Rc9y6#nKfgfu7Nia0oQdO4_4=)SNWg? zX0zG(BI4>R?fd=-4Gj%DY5!`c`6dyqCZc;x)4Zex zUU38*$GJz3vLf;=%d&1Dbqr*)*_Q$6Irq$TI{n8QfW;B$>FGJk_kCTJUolPdI0{yn zr-^9S!i5V>B9a<_#SsXOeOWy_`@VlVIgWD!5q)E{Jx&eC(Gke+m5JyE1@HkPx`2p2 zZZyecG5EX{*MhvK$Z z0qj>NX@7tJ^uy&0WoA7AHHIABbIiOnBu^~O)hRoD`gFzZfC6}M)lH|X|B1j`F-sn|!w#Tr+ZTz*&!UWoh|bSsGQWz#TPe?k0g##R z0&qpd0o}yRUx~{2d(~rssK$b#-;m+<4=SB`=7==ulMvnfcuSbbF+~N(z#0Qy!Z+b7tqNRjb}) z=Fb&{gQ|j!W?haZwygpgL#$N+P!HO+ zZ9fU%j5w66f{ZQ9tgm*(R22Yi+rCgl^iE~MQe0b~*a6(QapTOszCQJ2A2(sqds{I_ z&;HC@Q3y)x0NS?wbrD%R!NJR`x00E^Q;Dvz0=RbV+PQ;+gSu6jRf$r1*8t#A01qV+ ziLIXJy;@&iKak7i=6jy^VE`8dTa*gBK_38%ng1D8P^EkUeExN%jo0wVS6n_suPc%{JUS_^13ZwGG4WQ0_ z3SvGatX#eJC6mcT#m>s5gmiRtSf1zU#yG6?Yrs$oGmnV2D%EHH|5yQ3p@Btg2JoqJ zl>l%vGp`8IeneAd{sDk5hLE9gEti!$T@;fWJAm5J=FOWE+qZAmbMU2Q4(K#y{!^K4 zM{Q=?cC(0R;7>WUsi~>y`moc*Xo9N(pmr1-=YCWMh;IQ%F>~n1_~8Qz78G@7mGY?H z#>^VR8w*tpz~FU02|%eEz8+>a;}{Jyzc$QuR!pSH%o-RU3soDy1^_!tXgb~i&SmC3 zv7i_CDqN_PZQH9f_@;!iZ#6YF&8~Dl3h@eG$IR-$jfJXafwpa5A|g5mYN|jf8qY;! z0KhV4eyEgE<@{e20Bzg8Mnu9qOP_IfCIEOXh>D2x+~WrD7eQi9BxM4oF2gXcY-?-#%UD7Jca~nppHN9> z0DjEOkzH`H0vLp+sUI)wp}r6Ub*Mf}M4HgJwZ6Xo)xN&I>4ss<)vQVp`Akd>)&0q2 za&c>GtA;j5qF4b`4VYQ?eTOC7EGz;<)SAg;)`jI8-ad8!H*DCD%H?u;`j}gZV&lN8 z$GIiUtY`7a6gz-{6)poXlm-=9yDBnj25KggQGZ}XR22XN5Y@HRT#vBGe(fnD zSt2^2k~@$>1*-~RV15o4>rxQIa5{1ssmUq615QDa*-<1&bIA?SwB(45YeYInT#GI$DJmU1y1@j zhgzadNc$~Jw3)1_UhA28b;z;D(!95~_o)8_jgaQRlQ>uL(eQ$s~3^p9HElk!1yU03~`%ZAFH1OOgOMC#@-YK3=-gBcXw(R=7Y z5izw?=uk*lHk-XwM6_n!7Sl9i$>u5lxlWFjuIv5|z()ZLEx3in$MjA^Yvo;)PNy{z zzD5B8uIqjYfEHxiJ1{WNn6EEUSpF`5r?JoX{g2ej-@T1qLHWCjP1798u&)(hEb)#N z6kxnFola|U${`v7U~o{rKVJfrh|V=l^VzBRE@!jZQ$^(0`4XW0{r#UUtZY)W2<^Uo z`yL2f<64APtM_U+#grk(ajqmHjW(MJ;E`FgX0?=6gf@>*S6A1xBab{%%K_(2_Hhwe z@lG#;9Bfr|+`8H--SNg7Z!BNBbg2etj-XPJ?dtp2g+&GC3vqAOIKX#WA?|E8`#~+d zJ-iS%5v>?rFEtW?%CvLm&SMgZL`RU&QdkQ9$)FVc?p!X{SL{hmly_g>tW+vhpG+p_ z2c_W8Dl7#L;BL?J)-*OYs;_iRDrtekxr2`pT(6bhCP55Lsj(OSuU~i2yO~>J{}@4G zPx;Sb5RvA_eLz2l5mdmO9Ycs)*nx*_uXEXd)fu3l!vOG{W;#Xv9LE0ui>uk3O1n|f P00000NkvXXu0mjfcKc=^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_sw_dowm.png b/app/src/main/res/drawable-xhdpi/ico_sw_dowm.png new file mode 100644 index 0000000000000000000000000000000000000000..ec144cc15395870f28c6490389c967a4139bca92 GIT binary patch literal 599 zcmV-d0;v6oP)Io9(E{tdu{=pOq*|iDF4%VeT9m7IoVb_}?h)IN6;Bz?=d z?=_X71Ke}{7}yz&d>|(!UGLY}%sg5*lfJKj{gQlEvQI7O0ACF}1-2*P6OwNKt-G0x z19yOB@%}ZiSJGlOZ4}mq4)8U=46rTqegfl??xrASHU{{!4)7abkEDgFz_sJi1+*4; z25e2hk4W-?^%*z_JOF%%{k#KqN%~R;xDn_8TL;VnBLU)D;4ttbhPDIz9@s7EQ(fT3 zpaXmZ;G1A`04)K(l0Tylzz#_t2LWyrI>0vpFM*9+VDph-cY5G6&>;5M5?g>5!1{Rq z*;k{axq)e$*dDzg%xo06AKPL~(%Yth8;?hmVEwcjk4GEe1-cEFOQzd$xj0>%{)Yo) l<+T-&;&gGkj{`#)kKb8(hc2&;n)?6%002ovPDHLkV1j~i7?}V7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_sw_dowm_br.png b/app/src/main/res/drawable-xhdpi/ico_sw_dowm_br.png new file mode 100644 index 0000000000000000000000000000000000000000..3db8982fb5831ea6b81ccdbc42a6cc61af1e1e7d GIT binary patch literal 738 zcmV<80v-K{P)D&7%cN^0AnPIPA?wks4#=cs(%usI|G(2}OuGQ0)5Lryn>Nk@U~gG1?+VA0R|ptm z;8rfBpL3&ESJG-cIS-)C5x#Dv^l>*PYt4k?$*Tm2!;6)-QhKW!y?UYV0T^8pCS0;i zeZq~=${97LO@Qd)(sjloE3Kb&qg59)`ujub&$&r34OPSmIG;`Fm))3EX4F`69E59C zd!Ae2_G6fyF1XRD4_YYp^=(q;|2_q9xXR#+mC|pxG3-carT|AP>WW>ATdU=8t>XAsK z-43*$r4Fp@L%ht(izta}*5;@ToG<3p*12j>jKsu$REJ*thi#A2Nx3cduervgsk6WNq8 zxp1&(_fb;#34oAu|5JgB2Y#p1vtEFGffgdsXz%u-QhWpOE(fH*%*RQg5*Xs8T>xgr zjMBmfvxf1_E3j|SLP+iE(#Te(80d9?@&N4RpAmlr+50Wi)Efcz6 zxdO}x1bA@PFlHJB_8nRXc4}H*xkRr)NGt;KcZKYMAEx=)58!oy7NQ;Tp4|-lF+c&f zc{rERKl%l{ZqR-LuBO${cY3|y*3y^I%}QP-Et9U1fUJkChpb1lIv|slNqbA+AD83A UE(G&!$^ZZW07*qoM6N<$f{nFfA^-pY literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_switch_off.png b/app/src/main/res/drawable-xhdpi/ico_switch_off.png new file mode 100644 index 0000000000000000000000000000000000000000..42271a942a0ef51fe89ac6a0dcf5eac63cb4d700 GIT binary patch literal 1901 zcmV-z2a@=SP)b%p6#jYwNPs{NL=Kgm*(4l=5{wWCDBvF;Pzc1Lw1`B`q)Jc<5tKvAA_Y>Qg%}i& zLlnxA;*cw#RSL*`njpoMotcDNBnL@=kdSHXjk_Tvo9u2fyO}`xPo}cn@4f!ExBI=< z-x~%4n=H%WjIq7|A^?N~umWfaAizL1Mu^G>a0`G8;39xj&iOv8)k@EXG*(k7vMj$K z2*Mc7c`ShEYbvjn$6sQMZQ`7NFGrj4|%1ogM>gv)LjAK}ZJBv%IoqswKV=FJ1pzfUxxqq?JE!-g*V*Fpz6 z_htkgC~9m39COvmPJDagvsb|t@BpN9koW5m!HbP5lv)_5-u z$`%A+h{a+#T$P?Gfz8Os7^G?1MgUDn2>tAT*|}R^slI5ma)%8bXvXc~t{@0+SS*%Z zmElk+u&Sy?anAp6fSO-WfR$_4SRfng-DRCo;qK=^s ztfD9{0!VYL)}%#?k(Wm)OY^qo0Rfo(;S|%YS_=CmNlJ47yAZ%Mg7IYPX{_I{$-Ib` zv24`HSVTt9nlM%SLXxCuI(Z=p-)j@26L#X$*l#j+g0L{hSS*KgRf|DYH3885nDpJ)t?8DPBNno0bIfZYe+ zRgy#5tFspjyQr+0X>N|DK!E}VleOOoSQUVU44ePu68w8B%VaiIZO+pzL-6rbJ+)z` zrV_ApucF`k&-`p23hzIXq%o7RPHk!8?~kN8ADPY00s^-5YIo|)Pt9haOMCqM{IGED zCocQ>xfJ5x0Q=`70m8PFU$OVVA@8X2l2nrh2rDS0 zP2`+^OY^P|X$|}K6Y72vX4Z80`}-S)h!KMHBn$~s6y+*_w)9+=(uN(vtVkF$+6XL+ zl<|Ms&<^Y(03XnE-AZ(iKx9N$BSA4j*26@%q9|ltDoLe_#H59bk(Xb8HB(KLA70In z0992FI@sBD;xaL20Q&YZ7n!`mWg-Dv@%lSi=WLm=)v4?6xc!!SYysP#kHk0PGTJ9p6qE?@NFlz40}<{;Lg&h({2 zY}x9ywRV`%VU;*G9`x5_Ethj1<*cI7eX4wZfzCd>;$yC?PL+?3LqNb|K$Ul_3R#w8 zs00##Ug1W;!pDdhSJzmD}A%o1w&nl!6SF6>UQW+5Llq2=mG>yP5{T&i_ zcJuZpwj3!(5QJEZ#j>ZW)#Vacd+<e0j6#mXjp=BwMG^I(Cv{9f40hJ=d(L;icjmr( z&OPT5R2+JfDM^;;Rw7Da3`qcn0Hg<4w2Ed_P(^hBs{(M62!)KX0!d=a+riXiBV=%dC717;P;tWtJNA+>-M|}U?Bj> zA0wfX?bVwwF)w{kay~H&kKw76%&YTO3seSk{2Zh-Zt6 zid?>|$0y6NX7ezQN6G|f~dP8qj%vYVM$NIGu*!0O+xLxuk zom8OF$TKQ!w&UK6cqLY6GL3^QZ2_S3rYs!)r`|pgPrq(Oyfrc?=F5uQc zi5)sLGUgvwE(2YsKCHkr#u|Gg>+2CPSc0>k`iici)Q!yh|3YPXJqYag>V8ql* zbo01^Se?=QHbDGHCDe%OBOzVMTL%%XJ(hGv3*T375(+(lv^xf2zkA#pO1%+ISr4SuZpWY_4Rol^r{Y+11zk4-$R z9K#rs(w!B>-(E(n&S=>S;FdrQsXc$j90TSr6FX^^y{rT|A69T@-RCH`DI6*ut2LX) zkcSSbO-i8pc~qjgBP=gbai@2=e?eJ5WksHY2rX1B*QPV zfA={odFU7iVsn(2T1Xpb8ATEfhacMI2zWmAo1@qJo%##cI(W))%C!fTe6A$P!%1sQ zm`h-5!v&}#yW{WCV);kIM1$2So);cJj=kSI!9a6KXEc8R&>YcL@We|NWISOM4OXXk zc>eaiS4%*I_jpjS2fzf;RC~btu;&~W&uW!6REUkYtOmm(^(awCQ+G;q zFJEvH+c&mJbPqC_k|kLxP=^lnwD60>b$Q8%iR-1F(jaK+@M=c!TBG?F5v#Mi#bx3v zCCK@poy$Z{tkBoryGMi9Y>7C$UVmT88}t-x`1$mnd$bU_Ki2SB`yJ(_ynW#Ef(`zU z$R$Qg*Ib3kv&1Sf+P1zDE1vOQVx&APk&EK8H;=^7YsDyvJ8|>^=1=vpD2@}$n>gy+ zjr&9`?zd-bZp@$dUm0g~WW>#Fn?5=!JRaup5U)Da`nlxb-C1GdU5o7wukA>BgXuPzBu=hy+X7z^ zubqABwZx#6dA8GzDorh) zjVl0JAbQK^y)*Q<{+6z_d>;Iz7T@Ju+49L4We<#!ma5wF+1lkV1rgZ*QiFa32*5z} zzzC#_i^ixM`@@>l2l0tf(8flf&!r~ii@Zs>vJqv)E)*4B#E}E%QIK1wdyysUdEwZwvZ=_92K;02{*jA&7RJf`7WiBWor~#8Q~d zl8DI4cylwMKN!SFsuCK&aGn4MBUVhHV=|)xjpW&_=BG>k1-dE$s(BH^2mk;807*qo IM6N<$g3DmS{{R30 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_unlinked.png b/app/src/main/res/drawable-xhdpi/ico_unlinked.png new file mode 100644 index 0000000000000000000000000000000000000000..3699acc0ad2ab3c4c79f2b829ba4aa76f98721d5 GIT binary patch literal 1774 zcmVJnb0EaSmgnuhr2rZLcX)(c1b|kH^QnUXJPZI2V9rOz0m8Qwz&_5M0)TNA z=feOX(Jw^<8X+G8z*&p)2{!|r)H#5I0ZJ!QLKZMh`w}1&%4k>!?)&~f;)%ptn(Mw9 z0f=PUrxLOm0jv@Lr8egW(gCW3d=mk*2!JM=^Jg;2>j0w=W95cn%=Cm9i2#&L`xJl} z_q-E{WOBF7c}x19YXD_RsiwJyd*1z%r%X}CjvI$_Lm@zDU>$ND2g2bn{OQ;+>+kLD zLLgKbOC)~M-?)nLOoY&{1wf_5P9BevXPWQbH)Tpm z#p93Tix)4#o?W|~6UUD$uIrM)kme5`o}4~ohCXxlZ0Ndl3975AT+6l}NjlEnbeRCg zWdfl~NzVVEVZ5Xd;7*;8$w-J#B|Pt!|FNIar9so&wqesI77PaA7jL{FTHb!!O(v6U zFkcWt;`7DDPWhvcsxlxuo16VZ2M?a_>Fq5>I>rk^`T5OTwr*8BJ363l?OGQQdNt`d zF9jT@Ba>1Nz#NS43+Vbwca0uBa>1fS!&J+x@?;$ZRk@$ky_?QUmh=Q+o+zLVr!_EI;KKT?mPX-^=8*3_(9 zN5&Nu!K$a8vM+aaEl0ybp(FF=&AWfbtXWX`^wV}Y9R5+vvg)(tXvj2QbZq+>(=-tw z1SyIFuA8zi^T@v{ACJcg!T4lPEcO5Z^!B~i@`AyAmTga?l%_kaAcP3U75=stH`2nw!t2_#EDN5muXq1;?p$NcvSee2pr+M+`p!FRYU=8knUix}`47*Y zh40taa-Z{wao2q>3rJ$>de3tW4MEAt)m2pqq!A)^G&jSU)2CtEmMv$xqtWr%BBfDU zQBqRUw64Bh&$d^7Kd^s4?A^2H(B)_}HG>Whg$~VMxNvIe^yxPu4nL@?OSZMOt+ZVC zm23jTb8}BGU$LTCruee*azH^%vl=&VR+EW@RCFa8kIUXSfG_Ea|JM`DF^r8xMMW#V zS6fSEI$m#G?(T-ll`9>~vZh&_ANj9OFh3Of^TSJ)eDUj3r@|8z6?QZdc{1U;JF-P8 zor9PVge3<#mtrmmk-9y|m5GBUKt46iKO#l>OhIAczd0xb5dfO1s^EDZ*p?+aIyyW? z>F$qvd%vB{r;Hp7P`bQe)TqrHo0?SF(>63TaL@CqlCJwx>EB>V8Dk{@#&+iAe0aX+LSdL+we`wB}f;n^NqPF+nhaE4!Y;|^asu*J{6F?z^9GQqb^(E!y zSVntwWu+a7M5^Pq{o{0*|9c;l&M?L%FhzOiTV-Y1-1+m7K QLI3~&07*qoM6N<$f>23s7ytkO literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_wman.png b/app/src/main/res/drawable-xhdpi/ico_wman.png new file mode 100644 index 0000000000000000000000000000000000000000..4df8a49eb73ecfcdb61eaab08b1a3deb3176070f GIT binary patch literal 3937 zcmV-n51#OeP)fvTlZqx)k!)6C5~HaYvs9vGw8~f} zE@h%sMk@wTTnL86jYuGT7KINe%=8SxS5c59iXZ&%rp_>fGk@O9yqWjjOux_EDhjIT zzJ2?i>3+BGy?t9y0I9LDvBNp%oHIxW(IA8fS(YV*5dDa#HxZphL|ugt9hkW*rYD5> zA2XjIqN7A~fQa@p^IpR+6f;Mex#{4+gF8l#9*s7EA`t{>l~TQg5R;gB0ufzIL=8mL z!DHD0UK0_m7ecII=G9Wl_dFiMb9UMSsFWJP%=3j1(}-vU7Lw<)&(DyFXbUqhHw)G znfWd$<P09$q{JAhbmN-2EXenmus%06R%2HeTaw@WD(m3u{&6~K5rKFYGJ`;(TW zKdP)O*L9X<{U96;HZ};vuuvbY zt*!k@U0vNL#dLJq))xRHk;uTBnwlldJjAIW?YW&0Vq0r#>)dcS{I=Kg^c=uwG&)NN z@i-B6_gdJ1^E<-KUk`;s&v`iyPXUa@VmC4KA5H^9rBnK>(Ff4?MS)WR0PSS)reGyl!qnC0#L*=L{8{{8#u!w)~C z!-o&k(W6J{lTS|O5q0j|nYwi8LfyM}r*qFem(D-`e5$RjEw6wsM-xJP%{0v?+Oo+4 zF!}An>cbT-?diaQ1GIbhZrZnRAGNf!IFk2_GtQviy?fJz7hXucdi8SDM}tP&P179G z_FI?*pi=6~MD(Ht0_PP0E9{Lo-k^8hdB>Hg7hG@w4Ie(7diLz;icgt3PnA;QV$CVC z0}!YGuarrkl7_*G+qiKfS(bPANrny`N<)Tdp9Q&GN|}L827u9Mv|b1i)%n~9;NE`Q zS$buM4ks`1o;cy`=5*h_eQDyvi6#B0%GAkX=1?dUil@fQ08lA)I}zd5ke2l3n{QH6 z6TEu%1jD3%|NhjcPao>qwJV)@=9!6xpMLr&9Xoc6-hKC7Qc5NMos0VQ>qiqN;3l`W z^cyK9a7s{H0P)k-?PhF3(0DvfYuB!|)hdhp@yE8! z1`QfSBSzp>x0bX^N;xnKz*sCcl9@N^C^D?er=Nb>Rx}tPmt1lQb?VfqDA57rh7B7M zVA|1?DN_+0(0vdb>> zWW-IIHql#ey_LmFW6N~2lrn);0>C|c_SChuw(iw2V7p?)3c_JMoeaaE1q&9SfR85t zg2}VbK6}b@lVaMjV@H}hSIeAbuBoZ%+rNMR=7a{6QeQ<04bQaU5hJ+5pxCxFY}hbr zXzXS z%a$#pBS(&8j5m1j;Do0}H^K#(P$=~M)CxouBJJ$v#>Ph4wF~uiJ}1*O6IQ1mgfk}2 zn&|{9_sT1;^kX=;JhwoL+9*lnYTU`(Gr-P3VAVs_%dfdgGcG#VW)gxKN{Q%~9085UPuafNRY1Z$gtHk=XFurBp+mHM`SQT5KxV!T06rpw_?90Eam(}NmtUs$-pef6S?+IO zw{G2N#*7(mr{YV0X8sH6maQP7DZY&0lBt~)ifF_5@#9@`w(ky?8eD4uu|gr{O02*} zI7fZah)bq$G_PNewA9ZDk%#&7=ey)=-#tj@K+FKa2duyt5!L&m5tmF6$9v`(Tt&0D_5>eWSX@lnD&KYf5j*WKNS36(g_iXIdkR|!=~JA z4+B8>j=Gh5WT)dbH#gI(ufCeq9I1hmCQWk6CT}}z({^z|1a%SI)s;|<9{^UgWUv$E z*m-2o&kMI&u6Q7FNoUQPwKihXm56jgq!s2O0EtX%d>?!C=#f~J$bA85NCbvs91iQ_$B*aaanVH=(a4e7 zB_`yOH(|tRdyKG?x=?DNn^oh*H`UGfCG_0`0JY48$u}8nr^qPFw~~rg238$bUyvwu zkk{6gmQR`Zer?&ZC6TD>hL8k|hᡀ+x0rmZvEi9&Ie3{iV{Qu1Y7r}IL_Hf|>& zEm6mO7bo*Zn}jo4=WvqKiJ%>f72FRzc<^B2Xzu~lAr>7}Kz)UqEgeZq)AGLx21tCgxXyRZbVc^byk3?B z@b^S?Ymtm9)*QesUcA_o@uy9jMrWOc=jQ`M*%v%@zG7{sRse|9d#4pB@^`L@ zU;zHsG|f{O1+LIf>c<7(5M{^TFlgY+#=l{lpo9o&r==4-F}SP=LXJ&(l_%7O35at$ zf1#h`Hu_H@nihmrm`g^xYEA)5mB=-<{H3;%00yGiUA`ZfU7lws6r!ipy#P<%K7+g&Y zDkb0F%__p1ujDdT;TM8B;dUnX&SbIItk*vC6+K@dgm|i*DI$>5Vdkqtp^$9>`a;hR zAQjr5njV2vWkrPkk7=6Yi+*+hq9z~yz;kon)wHUJ4gxzU9{v~`4u?17nn6Kelu{27 z(YFJuf?x~&u$1zKd{Zb0VDj;+?L<@;Y+VFS`ew_r2D^Uz3e!$LyNarF1pyD7n)DPH zTj#8BIQ&8(@f-tEeE_nMDn0#wZy$h!Xn2CPrKJTQ)4+OYJXNuO%(mCo)_%$JCs>nK zY4s6g|9}JM!^}K36bfaR56&^J<1IARUnw=4h*0~Z=)V5WJ@DM|?CLzzH0`Uqdj%l) zD5Y*8qB{bwGQB2ntCaH2Vnr%>6;+LzVpW~Dyo7QE*b7z0ziWJ}4^q4JqYPFNgCS zKnNF!L)GT3U?VrT-Qki*pZD-~=#duhp%H<1y7(D4ay_<*@diAY!Iw{TCJycs; zdy`Y&X0fvS24G5%NF*}DFpLL@s86xN1-yMTGcOE_vqo8F45c5Fh zw^C}p5CS)$+DqQ)PG-JcO1UUk_LyH7mL0&5&qWw8wsZ~Dm>n6n&ygfuei2AR~*1}fg+Jef5R~F3=m!v)$KX- zT|$Vzx3;!E5)Oy$3vHLWj9m273c&PvB=79w-M6X9$0^G#E38R8%lD!XVsYx(Zx_1u zrE9sBQqm-pQoWdYvJhe-5y6s0VwKkqR-PcD9YnN_nb!y*R!J!{U*0N7dVf0w0>HK^ zXliQe*r`*eL55*8Se6wQLYPFXPh>7fMm-{3sFON$mYZw2zr% vhG9f3%W67y?AVTmhKAhL(EY`sWbXe5v@rXWA$53000000NkvXXu0mjfXr6vx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ico_wman_active.png b/app/src/main/res/drawable-xhdpi/ico_wman_active.png new file mode 100644 index 0000000000000000000000000000000000000000..43d1ef8047702e5851eddaacf4f0c0d9850f6e7d GIT binary patch literal 4754 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/map_live_start.png b/app/src/main/res/drawable-xhdpi/map_live_start.png new file mode 100644 index 0000000000000000000000000000000000000000..fbca3164356fe1f7c28663162f44dd0f2f88820e GIT binary patch literal 588 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/bg_dialog.png b/app/src/main/res/drawable-xxhdpi/bg_dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..f7638566f530ad48588b5edb47fea24f17caba47 GIT binary patch literal 35190 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 Fuc8Kn78^_y^uFjdH0cBG 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 Hd}99tn|QBF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/bg_list_my_pets.png b/app/src/main/res/drawable-xxhdpi/bg_list_my_pets.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed575d88ff98f3c5ea12f2a3d66beaaea13260 GIT binary patch literal 26330 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

e{L!#W%nBBj}0La8%aJ34f{a5ifjOWg(5LX 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/bg_pay_amount.png b/app/src/main/res/drawable-xxhdpi/bg_pay_amount.png new file mode 100644 index 0000000000000000000000000000000000000000..612975081d449fcda1298ebd571ba6bb24920e51 GIT binary patch literal 6624 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_back.png b/app/src/main/res/drawable-xxhdpi/ico_back.png new file mode 100644 index 0000000000000000000000000000000000000000..9daaa0d626d2b650571d57a6a280580b5a758ae1 GIT binary patch literal 1590 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_cancel_detail.png b/app/src/main/res/drawable-xxhdpi/ico_cancel_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad3fc210e7843787eecdf698773ebd5d9421b4e GIT binary patch literal 931 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2V9xS%aSW-5dpm3IdOk;y_W8n` ziY0bdDqMp1>%06GE-&boW^K*q;t~=0!Zp{v^?{p;ipE7jCna~anNzn`mY0`3d$Vu$ z>pP$JZMIII|M%~?nR6|h{+9{~JiqLFfbpxw5k|`en^Ycg6|wGYI>oW0>C}%(KJ4t7 z&lN)NGRX8K?iHLkKUJ|Te(kE+4Sx%-%@_^$e?auX#*UiJ zJTal$nU*)KKCrIh{r3Z`4_0>k*)-$4&;`#2b{qBz-su1Ff40)6t4bN6ciCcC&M`$x zegDI>rsITg_f8)M*XX@#HJ3|9H+&JWP*;i)+Oeu_#(ReJhO@fge=)q-ykWNJg2M;8 zTiExD>r7w0WW}8916hY+++Cie9@=qEF|47F@w`ye$!*bR!?a~jt!yudaha!n#DsG} zfTtakwJ?)Z&UTmRtIPS0CT@3SH4O~t@Co&2KIoKNx$vak$voy<(Ptd`385}>s(aSl zQ=Hb|baStWmWR@kxZSBYR(+qh*F}o?41=p^>!;bXTvl)2yJ1)A4Xr!+o>QF_W-@h6 z2s%};{H{@M>ZYCywluyK%a$Z;-!Q@Zq-XtFL1v!r1Bzj_40le%+LdT#i8!>DaZfMT zW!gOHuR!$G<9%!^4&<#oZ&a~!Le=Aw45_ztpIV+-9eR7oVyzXkOq5@Kb2M5X=FOUt zvE4Jrbmh@klU-GLSLS^^t-kr{C5F_n?OOLv<~(iqWfb%FyXT}59u;q2Hs6;q(ryOpizzwx&5!W}*l5o`y{z^|tjSB(4J;ykweR#S zwDYSyJ@1FjTs7zVM*kegkIje8G*_&Ww=GvS4xO9)`B0#sXXc6*XD+K*YHZuThxyx< zGilpi`L4Y~k?f0_okI)rlHdpm2A9rJYeyo0;>-gKPe zJ!NTsT5Qj)Wf2*VY*<)+@7tE)`0`}^!mrO9G7K2wB1@*~mY&|4|I}*xecwr6?#P`o zl4HN(d>NR)jSlZ@ig8@Gz=#Qm>*h6MXV)`qXz7fopQ3RSnE4nyUHx3vIVCg!0L$R7 AiU0rr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_center.png b/app/src/main/res/drawable-xxhdpi/ico_center.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bdcb8122e85170c320e97bd373b247f7c46303 GIT binary patch literal 1235 zcmV;^1T6cBP)=|Ul5W{<;__1VmOtG)MAoq*{t@4bnhM}`byms^J`%veWn(hH3J2G?azV4 zmw5=b_eD}ur#FC#71&UySdD{OV-Hml$0C*n20ug`MGMOIy z709k7?e7QNGrD&_5q%7x5y1D^h2=NKW@l$gL6rsS_P6a6>^cYLIuH+A_06xu<8c+F z|GR>I-@{;DsnkUKB8k-H)oTKQK!aSGI|}TXenKMb=LM zb*;RV$8szm9W{(tP}d)Wu!ms75s)gkL>RpVfogDBXJ=<)Lw4z4vCHPA`_n`sF@Mu8 zE9Kwf;Il>c^Vno&v|Jo0D4ETwo`tNGhJvXns7nHAT8ESvQ)$n@v1rmfpaR56a8_Cq z)V;?+^p;{@c5`5SJe_cq_G(eELpu-PNdU71>!EOR`p;SmBe_V8Ag#=}6g5m$bZ@vS zwT{PyEzjkPBlrw8r(Z5^ss&3FV|{PZzxnvpHCUOcE*gY#aea^ zk!5T(h)RnkEku|3zu$Fo-s7C-zVBx_?>X-|*UUF9-+k`qzW>j?TW)X?T?hOc_;~>QL;cgt{xQx8)}27{7~TC|z&^mUfz5%t0UH!| zl=p*w0)GX52Yd!N!_2g*JC{xYb$4y$Er6E+djndXOCegNX9BBrOqiLDhEAjtK;3;q zU}xZYz%ybycQS#(PIWAN3HUg0fthI~w<@gz>h8Kw-U~bt*cfR284VH8d8^~#Lf~~~ z_M3+NE&6$DlXZ99$a@0si1V?{ady?0fPE`)j+troHkQVKy8Al7j=*bxr*?SJG@k5; z4z%shk6m?39283} zK;2!6_}hW!H@I{JmM(_x0GEV9eod)`6BgG!0T~D~7PgBc=sv}0to?y5t&iz!H8U9s zMN$l?yWcl-x)s2>MNeDX_*cLx;EQ2G-cSnSsAmSa(tTw_NL_ms@Q@l~{15O|;KgQk zWy$Z001Yrd9jl<^Iky0R08WiFN?W{had#a7F9r4w-+=Vv64CBiSpsS{pzf|Wt(EnZ zk`aY{eL8TqnaQCsc5!z(US0s~3p}`R02gSbo0)c2QnCPbcU=NnT`LQ=xzvx30&fPc zXmWEVXOYn$G!khdM*@2QQulI1+h4nKe>3|_>IX?cV<2w|V3O_QfpSC~54_LJwB090 z!YqC@@Y*hw73~M_S(0FS<$n+X1)Szwfi;TfcY!i2vrKRKTF&TrD9=*-51@wP_#w{pyXZMVb zua@F$W?#r?JMm52UDlP3xqD{}_Omj*2c6Wz0Npjtl)EQ7m45bm;6yX~cg6rFzKOf9 z7v`!QI_X}6i)j&{5d%6&TR6k%akgA{U4#*q5_xx5;BZY~P&E`eQG~$({V}RR zKou94Qy{fE<%QYB%oG=2cH-_21kQ`_cGdi}N>`YfbngWj1oXsM@>QM4@{!^$E2y?3 zc9P#hZ2dzboRe~>oMdM5YApsd;^ta$sZg)eRWRGvkz|1D=N8yZb8u-6<&_#v9G-nA^8}q{n;(*fudy>6(x4GErcX zfDT-~4?HX}F16WNX+I0dyZa8nr!w@f1IxbbCLZ&opBnWNIlR|!z13(784sGv$d5%#*$1!qP=H7@;`g@|P@9%F5<6IaP+iznA?j}{vrvF4B&`2XD0Y906iEuAu)+_ z73ZF{?cT#Aw!QKQ6gH`ng9WHm0x7Una+H}VP&c#U?(YPSNC0q(0F@I!S#wpgr2t-BtRk@L~9s)TCcy}TMq7}Sy9;8d3pDH9P3eqX`F%Kh;0Jb=ctbXQ+ z4x^W8aiT*2D)(J(D$cg!W}3;kH#%t&_PZ=ZrHfa|;#8af^$oz$sUsy4Oy|jBi-9`a z%oecg&%Tqcm7C7EQ%ON-C(EbfPThUe2(PP_sY-^YGsY@aBG>_m4tfcFxD7zX_@$%=70XtM5+9ysW|w!oP?n_of|T&V=@u~lewit*v|{lE{aQ&L%pI5%<% zzmzk&kC}X z0QE`Yg$wrCocSqnS7qKJMV)x5K|ml98dY8^=YFW97#);RQc95_W-t--O#?-SDgw93 zeDm@NtGe#g+7ubFN=1>T2bbiBip1qO6+~u*WlR#y zkSONF;grhf>Mh)MX@+{eHXy>%&3{@DVHMGyWp2e}vv73uh_I^ixbVt=T0ICS0>yinonps{gSywu1yCM^O zdW3dT?zdq8kB3aK57aj3F17tH3VI@G22!=IEv+;eL3b(sXYHmsGG4mNK2X~vWEJ_T zjscyw0{5qVgsfss=#l#?R3oR2Y;BRSD#=Zpq2gW=6Qjn|l#o?5ug8s*khKp~sZ^>F zRk_KuQwB?Emuj>+r5aT&`z*Dos)NYv)fSU0Z<Zq~~et zO@ru|k)Av`wCjVYg}$n^73Bj7*w$WJOK(V*j?QIWh=;Y!)z`^ngZoHKxJpu$`jVn8 zY6+`kH}bNpW>cT8_;MF!aVLQG9Rt0OtGpa|QARyf5|Nq>ru*Y6!zLXi($WZ?HRjL% zC{(d#TvaTcuFw&{4t}8O5ur!wQmZ?j-Uq6r$BGPAUjUOnd&#)dhU!kB=Fa=y&qjPg yO?d&mPpC<+t@?zTh`4&6P*Yr7dgPLSLhZk_ipCjM;CRyj0000ZiM4l?JU9S_xf~eM^D0Nlw@wM2rsi`B0kUGF*6hmgFiG;4Ns){~<=%XmqU8v{= zLKc8TUg-eMQvj%fKt3rVUsbUapsk8RTLn3{*b57b0H^`#D=f_fN>Cvmd`gNrQ;nu! zSGxg($z+PHbw(H! z#d$h`t|DNl0HOmWh(NYOK!X6*3Wzs_aC{f5C}l-OMRkGfBUo)|9T1d~Vm7H!7(yzY z4Z=_W-2o`U5=emC<>O-)1l9>fe5o{Ioy}(DV}*|%O%}}pA~7*5Sr?<;4x*6&Spbos zNeOyBs2TtT5Mr6LURh98m0#g`)zE#ZF+dECNK7ls((5ov022VDgiaJ8?a4;KQw}HI zt}08*2i7--wD+TQrWHUa$wu=4Qs@dmTn12|0NxC=BJ0D)Apo%rpm&8T-l-_HZq&jJ zCG3Fc-@kukX=TmbLWr?|ye8_jx`II(mlHrf5j}5Ail4tJ%yx~i0m5uH$J9CL3<%5v zVPKGi-M*R?*Z>mu#_F)nYPHsfWAI@CM6%I55IP!10;4*xp5W_x+K8}Rbz)IPX~7@9 zHsWi&Py<4roM9eCplJZI+tKyWSNZx{kFTpc1jLMrV(W4M4qqGcwqB?JK}KVCR|hrU z4H9>W5L*+y6^d5AC$@qLdP*-M=9iZ4*b@r-MJNEFOUkgEt_YeA5@%^e*zIW?LeSR& z>Ws<~>vsTH2@P5aIv@<`nU{lf^8mp&h@kfuG)aZGVYX~qA=HWXlEQa`Ih3F+kilT+ zBBJ7NBZyg@KnU0p3IUp;Ypz>ZUS3`uuvQOhC@6qPFqu;Is%{1m#sG*3#=wu^HXDS% z%MQgky}GEVJkW9oI3SEhW1NE`mICZVn`(56u?SS z)baMhLTey;3tc>Svu+eI5G&wI01PRA)K(GQC0sSiwf_H|_ z5-tf4ebP+MYpV+jZT<|wFF>TGrY1P`(X&7_Hq=~3ek6O=LM+ia8m9PjCG`ss z$r+Z(1U%SzwbTs6>IE>XqPT!DdZs2x^PA=HuflEM#s zF?0I@2ueyfpP>-FwvW)#4rSKihg_fvadl;h^&4-mqh15TXv|J)qUL2pf^QUF*YEI4 zp^XU&A!u!+h!|B`x}(gSA$hr=L-hvJj@b~H=uIb`--by7geUAp+4lo$J?2w*1&EaN ztZRfKUV!K{Nr!2Pz3Z0P#7#Hait}Ihw4%p=NH$uIBL(jR=;dkSo!@Cf0^5a(5uVcV zJOTt0Vrx~JM*_EW-YPV)$leS>CBotuMNIO9xa$!h3>lX50le8si1lV2H1#c8FR!u} z7ku8YS_?346%dJOmTa9)tOTg9@BMey)Sd*yR;QCLtST$m z;cjfL0wN{DGDQFncbcc&FDVg_n4(9woEVt8MIpr)iH3R=fBd%^+c(s~$-hMpiavti zaBv{F2OkIK6G6ZxdP(01SZ{L&s@Fry~qLqYEy&G7Z`NV-T01Lrkm= zQPGM7K}C5pzWl(3Hx?A3rs_aU4c9Yuk3v>Xv;>j4XEZE5qh;q=}^@3#Ze;=*vt#IJ?pQ<4Qkl8(20w6N# z$U3Sj@WN~>-db23QrQtO)#l<&9I`hZF~StHIa4@kHGqC09iaw0i;Plm{9h8#vtJC7 zQzLNF8Hwn1Tx>u`T3zYDtUL1XpD!x|+O7wUZ6=*K*JeF5Tiy|XNH&?TB%v(s06CpJ zkV)&G@GtuI8CmFeVm#s#bkOPBGTHdnUEY>@+&N-1_EviAko2viBWu+N65}e0tZyCs zr$c5b+0&|SAzTqx$82FGaq`nWG4SNz<~eI>Q1RG=omlfxNcD#U>ngA`T5*m)n5}&X zAd=F%cUQ>y6@Z?{DjHZhoce4w{`U9epo*Zn%87TD6yuF&ilBxs_idh2Z91o_v~=hG z$sPg-gV8b)3U~`SW_gkqUz3Kr9_dxJ$j=Q+=AixSuL>1c zRg@Mia}NlUc_joL)A1EkpUcKM{|sz4M81wz*&NuN+ko#rt3W|s14fK7VsAyWR4Bt* zNPJ>1vR-rqAW~B;CJ}*Lag0Z654)->Cd~_s>&DS6u;tep{QS*csWkFU<%H7`(Er4E zs7_$UExGvi)9~gmC7_;~kyBn?z!`QAkYo)e^9>O6Vp!3tfzDZnm^imP&c7_x@6qfj zZj$zeznqnboa5qT6`6gofy z(J=}x8Iy+dFYhWXiELUfEoemVL2>fG{Vi#bs6$Fxqy)i;>y0>fg#Wq)8={_n%!*Im-UBE5Ftky2f}BI_MMVV? z5C)UwJP3Ka@PEeIn4njq=#r$zDQ6|(xIZT#FDG%4RNZjmU%U8i zoXXE_z%x^Ki|Z^LiV8v0nNwC`!gj!kv=`eQqO_@WZkRUx-Xdh+9F0_a|QasJbU zoSdlSn#RY8Fy51z?fsjc{bF(IIf*#+>?HIb9N(ss%Gdc;+8y}!^CkH9vkK(zXn^XW zJKWd){H-Sh7FNVZO`^oCtYp0duL&Vq?xOxSuEqMMtSDS{hY6>gnTVv+2t@4D_Jc82 zwmiA1FsC8Z<)c^2u<)UL zG&P3LYvse7naeYTQZg;q2^C9yXh2g{6a|u%bnS#p3>{_w9~a>&uRUFam*;UN;&6?? zw|+^%7&2s7m`KZMf!b|}@1n!Gm!@FEm~_cm3}<0u(~?;QSiYnroWt<7??)&(BkMJS zxZ2ki!d;JzO5&*xYBFS)e*x$OPrla5H~f72z&|Ho{ERI0 z8MN;mcOM5=SL4K;mu`WrtO<`U?Tx-CxZ2}i`sQD1(0kwkhZZY|Yd*4LzH zM|p;&TF<^Qn7%j%-Fn4$<@HvbOc z5Db@v%S@wt9`7MR5va1_^)f7&o{upTGjZi@8M4{hy-o>|Z$Gu;lg)z>o1nw0WqZK7 z#{A`d<@NU9!ofDoe0pliZfOHq`DU5iDVPj%>$EJn!|<;0e zLBD{HEsc~~1_X~L^wt|MC6JmCi5W|>F<@|l-^awkUH|*VQY?BnAGgoU!auKd9Sv1> zhh#Ht`K=Z!H=QW|ZRrz*k}m(!>f_uRyV$e2Y;iG`K3>?OEHa2MyD=T(9<<=Icgpej zJuY%{Oq>oA=X96+ikr^gh;17J`s9U|l06jL?E(-iz^My+;`H+aPmTZJl~O$WP(E&+ znuW{u=?Y9@dGyXa{PcAdR_C20Zv?DNE_x&%^WN+uj{tXtO?~Xc`0qN`PQc}~bCYC@ z2NP^>8@@^Y8}A&qOtna`Oc}Es-+itb=9H@WBZGMgH{Nf?6=T!=L4K=sSASr`6Zh`I z@X=jy>vVo64$|bjaC*K}_?E01Aa5SLt=~I(8*&E3V%!u9Vq)EIs#|}n#pE&Dr4GSm z@ZY*%`l1|piy3p4>s?j`7{`c?x+MeC$K_(}$M&Gi&4)&7wXIYVaQ4M1m^iyT;=1_H zWppPXW=8R%bjyjx)9>|bIgS_%42rAoG~t@NOtR`9Ki6Q!&AGV$$sQQ|w?wz{X5h@5 zv=eJqxEA@0e1-D_vp zj7U7RI0wi5Ie0oRGn($WWHXwZ1fG1iugvwp#a`Bo_g*f=1(&D7lI>C=Ypb1@b9bK9 z0UmhDeQ+D=63@-d$9pf8N^mitSYdtlg%UhBvp}}P)=*ZC&m3mJwL>>x*S4?*>l_Ry ztELT8{L36ODKn^1RDABwowyTx{oKDut^MShn^ft=EGcNjoY(ubxkIMiXy;>`5mYy>q59aJ>jGJt6`x%4f&dat)(C`kyi=ULDmxikSG`ayN#^dSt z`{JiHRhV-9_FzxXoAy_;bL(}280}51V1LUb*n1xDj=zuW8q}`%m}qQJ!Q1?P{{koV zXpKXWx48}vT(=!FU&v|IWd89Rd+^#*gdiFxvKeEw*p0lV)dINt1L)v412k-sPxbpG0Q&D5*PS zc8f;zz8l5UQ+7)hH6JbPazDHv^Z((?D*X6W zB}%Q0(hgzn5sgP)?&WspV*dyGGpZ|{n7_OaBBK=vtcjzxv=?rri$bS0k}YRud**|F zFm!dlSe}A}uZYZX;9o7XsMrtE|HL?C_lxx^0*gcWt$7VHw!&zNl<}SJ3VTf_U%L&r zOwVdbC(ux*N>Avg%l3pbDTrqx+fTC98V&!vOH(lUnQXuP6}&_6`P|&7%6orwtj_N? zTazsJ#ZlhuuXy>ZLwy|_0XFTXT*;HrcyZD2wHBzuX5O~s4_GU~zHAg)x@KT|!h#$tdpKFCWEK}E1#wr{H!}bJU0R*nLBYNnN(aEy zvPp9Tlg`Ii$+Hs4${?Ga`6}8LMUR!qaev<^Z5M1iY0Wjx_KT@EY?lr)4VJ^w0c2*H zp(-4`71nfwchBw)&H@*%!c1yrJ8k~87G09{G8eTaCmLDVF-W&W9uX

hK>egB0k z3+*{0QZVJ2Y;e%f;e{1XW@oX3tFc~l5j=Sy=g^jfAwSEsxDdf^4%r^q`Lbyhnkf_JvPx`x6%7Q&6HaflbR1uahF814A zz{aa5miIxr+2uw*ysTYm$IM%IXext@yQE_XcUnSLDCfS}Cn)}lqXCM|)y#wBoKJj3 z^tbS?!p^H}Cz#wi$yi5u@cQleVRgupox7bH0S#ypIX0Us3HqU#Y{Qhel(*W;#~N|{ zJ?4-`Yjb)ZW=em(!XD6HEMJ@FFY5!&R^zTPd6#b{{DeaIi&$kZwzedzJp>TRM$0Ht zB@6MIZ`pUxT zyRnjYrSR&PM^9~>Xf*cFDUn}>;WX$ZV$sZed=tbhvV2_~ zKckzB$#8ddq=Tw#McAxw_l+Po)^7X)g2Hdm-g8hH5w7IT|95fT` zL|~k-7fq^J&M$Y}?z_pLV>(~iaTjfA`Su^st)uUi%gXB#3n*oM*h714I z6}La!O$G%YUYMGH)_~Yf5YsU-@)En4%l&5?jE@X>%ZL_jA^vhre{wq z@y#O?kFas%5?{{_FT9mL|5yQ*Ejo~ag^fd_Z_mJ0x0~8DCATF7Pyf!l!^?9E@%AGB zA4g-`#0#GfkOr>9%Y-Yo;D6tR0T6_T?L`IC+kAwL2ONrL8ZAAdWgJ9TH%cXwTINpL zi9JOJ()#f)ZQ`6B7;;f^P-*!GFWA;!Yccj88$HF)QNLr8Jm<66f9v3#kkc35bp9VL zmd=25F@)0OUR*#S z)$%;&ZI!Kje0+3C(n(JwJCR6XuOuNVMv<&(W=Ko_L!9gXb8IO8Ei#gzkKn&4lDx}c z+E2NUj?tm9-ih+kX89`bhM%iZUfd+JyX^N<1Yo)n2pprqiALBc#`;MhtfStI&Bv#n zfzUh#&zksk6Eh_!+)>;2PnJ27oZ@HKwgwqETV3Hq^S+&fff3ES1p^~mana@WDfP{b zoPfMZl57iiH-_>_W$)H0G++Dv7(9Jn(OtvG)UzntSMATW6F;E0`tW$Qr* z8Mlqk{F8?!;{3}~Wdu}gyh|5gy+Nl(%PoWb0IYzr(#c0dQu&?7T#@cQ-Zk4pb;Ylo2HFl3l70O*ZSzqrG@Mp8;rvB@>STVK$p%>Q#C|2#gDb zC$z0WcmCZg38;dwI8G6htX6BAi6}e*giFD+97hV?2hhu_;dFi+RtbiaVu@&X>O9viPv%CcajK=J=CTd-F4#0h0osJ>Y_B@MxRfuaUORV1}wWu3Q< zwnQBAzY7R;q`jn&F92R!;(P^!oMm!`Wy-#EM1e~_9dh|~s1EA|Fsq`tV3x15@(U2D zsi_H0ee^64jUyoRY*}At-2v+fzEKGAyw1@urM$en^~XBen7dzq;I^vfB}N9qXv`74553OBjW=x zxXw1(l)#rD=k@lYBCEI8%hp;BBp_rTMx!y#K~c*DiSy8@XtuecK7PZScu?|68WB65 zAoxxkw0`^*Ks&3?oZJVgF>0aRo*R^4j-W4;!Dtx?1&;&B>;#6-@ME@5p&;B-QB=Uz z;h>eE1A=cHsp*+#I7yjC0AEWxi*sK z6F}mwPCkWaOCn7CW##1IIY8%m0QAcYt3wgfhS#J#aPtn-8r8}Ra7K^26;UM zAhrt7dr-ylic%}*9SBP*nSLe+gAr*o79g1qAEB70M>-2me7Nu{KiGu3Ds zMks$j3q0ZwmgPupBT zD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_date.png b/app/src/main/res/drawable-xxhdpi/ico_date.png new file mode 100644 index 0000000000000000000000000000000000000000..142245a9759a0dd989fbf0f0126c6a3273f98d93 GIT binary patch literal 2224 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 VaxacsAZY*q002ovPDHLkV1ie^qfh_< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_fance_rotate.png b/app/src/main/res/drawable-xxhdpi/ico_fance_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..db9698d91f084fa5ea9c56e6a901e254d19cbff3 GIT binary patch literal 3806 zcmV<44k7W0P)g?lgeg7n^9-^Zulz31$`&wtild#!)1bs3sg zYyr4x{z3tCmn12Ia~=YqEdVzFP5>$a6lnf#GR9J6Sv~{cIDm^<-&Hi#a#<4%>lY7fU}%)0%bpdp8;f>d)>w^tfBd7tT0KErgP2*1Mmdk+=z#- zZw>;b7{Kq0v2SHrUIpMB0Q%fyF$WO#0Q><=VT_H}Yy+_{#sDW5YdE=C!_(Ui5k1`z z*3}gOcR9h!&mOMsHgI%Sp|X;rxS$e61(nFXUXIJ>i*fE`0nQw`iJa_m6z5l>xUdqu z_9GW?&OZRK2Eb(i<))xvDiC1+CNaiF1EB37#Ku-acn^0(_VqwSlsnpYafMHiBdn~9 zn@+9f$V@B2h0}#Nbtn(V_vRw`=uK4KlC_^Xn{&Pyz`Gg^X%rsDt?Z8}Br7Ycv9c^L z0N@8eMPI3`CBzKz!aw3e5fbhUHxFA_sTw;)?dMTfapdRTLTXAOK3skg`;xAssUkJ4hoK}ZE-Y_%-QuaYe>W?W-|h+>S97LYMiNfJYc?rw;CG6+K+ z^@W48P>g010wC#=tN1iA4QG$#LzaaRAymHOoG$`!*wDoo1H>Rg8$f$y@Zn?qF*P9^ z-U0R?Q0|1#!)IS9!`ll}uw&yD?IoP&oKFMrgCXlOboG51V;cYj)1dCHZSln14tQ)P z`9&>9Hm^)Y;?lFYdE=I{s7svlaRBz}TcsgDkS45EKp^Y?%(4g!c+guI$Ce~yJa=!; z#v8LwBQw2J8;r>SzHex)`he)g7$Ylu7Y)+7tsPcw?=1|Yu}5KZ0Y-+D?8VH74hSDa zBNsU5V*wnjZygN*(Uvi`9>5T~**m}i%Qp2yw?5=4w|pUg*^Dh~((p?BN#)X8k|a%5tJS3GwL}*X zVT`dP0D*KQ4jbc#r61g_Z_XC|{k-u<@zqBeil33rIj8MT0b7mK1%d*oC5*9| zJLW9udq6|KC#P%s2bZxd{*>a5U*nt)B%VVVLmLSC|60b_6ZB zT8=GmUcrwaUo+~d2E=*c@6QCFjh~$WE%jtE{KFjJ+^X^0_3-W-Oc}aQA$QU^=L3l0 zQZ(W*ayE!#B+v29&!getWoOi)>$~{O{(NkFF%1_^6oEi7Mu_SQ>FSJe^MZsHefUxu z{<$~=L&nvRVa5z6uFbt(fu|oih!gvX6Gk!ToZ^s81O$;Q%NS!b7y}zWt39SK?F5w> zn5C3M1$ga=v$*+tO*B|*;k5Of-K}A5!^AaYKXi$kr!^|dWMNOnJRgV=Gl?Q?oX{Mr z<|kwQtLKRW<(zXOfoBsCZ5U&p68%m@>%w)BxNn3{<7Uyi>*|G4yf`))+3969pVAw4 zbXB2!q%;0H${St!y1~hJ{3*UI5H@9wnDt2$Vu6T1|u#hg!7#Z)69s}KB zZL8Z|FUqUJre$f^wdFc)mEXRX%mGBk#bP`@XfLuai%>m>a~?xL3}KAzB*WP`${ibi z>1Q&}kaD;Xi$|YEdC4EKO<=eq=5B~UYad%d^VcWa*IvbEt1<+Iugj*G0|*Mp#{K0d zoI03C%b@M?04-@QV{9pXGJ1Llo?p?m@v5M?leWZ>?}afELjJ*m%@M*!&?ozMtiDzMqeaskRhX6#;2OECw zhwgn%Ctl_ZJAre*7K%wceQmMmlP+i%O!1uILe@R++AX13pRdXgUMR`fxj}gNDN3c7 zCX_51ch67CAcqMEqJG85NtcG8U7+caX2$tayqA!QlKd)+niYV^fvrqhb$O{;oF=3t z>~0s6#-p3bP!0|vwn0b+0YR@$925I*4u_L#Ca0 zBNP$Vp6d^wm8ZbObfJ^ajFB{L3(mROG`7yxC?bux0D#JR@b&q@@C(&{*6Ty*+|fc2 zXvGZo#Go z#QP(1fIHm1Y>Z9}Wv7)PA?~yYt>MPi?JOfpl;t(QlwxsnnMZv_q zbsVboq_fX5#$Kl{&E;a(1wvUhJ$x%K8%$gjj6TEk6F=ltE*X=I9E~>6I6Vfo!u(AU zCIeB&#hyh#3}%ddBZ97Icdon=rdQrZ4GaQnFV8g5DfyLBS2d1l=Z-OLcE+ z1G$QeYwA?X)m-o1#s;$zJDR*DXh0oQ9c8`dXp^^84B}Kx-u8lrSK}S4o$IskenKk7 z{3{4Sot%UZaPd^*$lKs9P9o6i97EO0rVG_^KK;lcg}g1|oKI26TN=HF&ZoCT$sJSZ z{DRy{Ts~WZ_T8OfYj1_?SIWemC;H78xhJ*_Mm-mRwt;qFW~$L5I)Cc@`*5p5(14T> z?ypVfqd5{hXZGb|dtxTil8aGNSS83Cg}EjIhd`t4vPe(faiIsla76vU{dEI{*?>jFV}zNOlQ zBLChJZ5I0OPHI(FdMTd0y-;L6fST-+rF5tsjSwGeipj{Y5Y7bUI^re=nH+;Ow^oQ^ zvbAXXE3aDa? zEth3^j;=O_hNvS-4pSN4{WOZVzXM+VPZYZLHjSEZF0G)#v00BE#?|zig43Ovf>WJd zojwk&RtYk-Bdz%2Pf~&$djL6E<|#o|US92@^gstZ`&wu8|69u}O5gJ(6{VlS)wB|2 z{Zye(@x*rxX`?=kQ0}eMreK37=XJ#B87-_$VO1*LS^69Ds%-)Zl?G8Ux>?#36vyjc z#@JhR8&{?+3`bl4JKMN&jT%=LrQpjAw>7RjrDhusLJNsPcyM)?WJaIWm2Azn%ib`&IxVdXAl6?+chPj1A6xJG>D-#1u%*t zskv>9?&h{tvMj&W)XijyQCl~mII2!Gll4qEaT7rwog`%KbX@J#`D#|+UXalS^7!;@l0GO(2iLNPL z5LI;4678abXFEG|j%tOlZmtMy?+h;=d$_i;uCXiBx>%4`iR+nVNIzeMb0-RL`fwg{ zvMNM7G}ThqX^Ae>v_!uRfUM*n<$I0Tcg7k^eMd1h$*;a2qYg(qb$v#?oReEymJfEDb=Qr5Vfr0)j9z URqZZN`v3p{07*qoM6N<$f*ji?p8x;= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_fance_scale1.png b/app/src/main/res/drawable-xxhdpi/ico_fance_scale1.png new file mode 100644 index 0000000000000000000000000000000000000000..68e6ec0cc32649b6f22c7f29c124d8e32f66fac8 GIT binary patch literal 3421 zcmV-j4WjaiP)#$QX?UR(4&MFL}X~9ql}89&LAM2fnWhqKpO(0Pqli z&O(T`073!y18{Uc3E(<_qf$zOvJ=2I013|4+fl`enxA7e(==_Yl(IK~S^#R4;^7OM zgP^1VxGIGBPS^E?0FDFT=cdIOKvV_L5WpxQ#31W7P>KlwczU_P)5i_90;-^8dtWqb zI zKXS5^ayft~0OtVQHiL#)AesRfCWLq%0Jnn@cMlDr5BMT1!XGWeeG%N+8}$OK!^Oq1 z>2h);E}c!s$wMjlWzP*9*l`_4_TGf$j&A$R2~x^c06ws;kW%5{m}YmU&|F+x2I{&# z6+i<3uDs;xrlCupI{54OAT$ZB0Uv)4xVV;fiu})$lPz)U`W>8(OTmBVpF+%rL}Xj? z0Lcb$LDRH1a&mH30?3C{NsuXxmbEoan;@ke3xKBrs#bSJ^DrNboDzce-D^4g=1Zce z?LAy6KW$CI;x~@r*nwNfNFxqPvV;)t>AF6bw#1Qf9R(s>2*FiAW9X`B0wL{uFknO= z`aD}7)oQ4PQEoy2Hhg*!tE122=>A*Kb!9||%J)*r831BSs*EE*^d#BiV!}0!ud=rnjVLBE6>}ia6(Es2EeA0=v7kfBZLqu0Nl?(eQSDP_&-AM zLL~j7$|I{5oJRDlqquqPj-k{UDdmd*b`+;&Nr2!=SZshm>;KA}mgxROfHIDiNoYK` ztVzJUiHC40KEoD_kpMOprE76ObQD6+3OD5-HS1Qvf;F9#VRZB;EHA)lNNF!3pWLN< z5UZS&QVs;LyD&Y90-~-EVi|xw{Bl5}YMAqJd$jFLPr337{f*ZK#NyJqbi?=DAf+5q zn0sCr5H6ag&9fRC7oVE$czr=z^nALW)BJ+6hLS5|%U72%bJPLDX5>v}YuM1En?J8dvvR3O~kE0;|u4oupN&!Wy^_V}NTTkmL^HZmtChbujw z*aM=O5Ml#>#yk=q`%44NTK-^hb5`o>lLzg^*B@Ol{ET=hCAT{Rwmc~a1OupxPzt%l6>Y^2_@fVSp#W)5UA3<2k@;pQp)aRxQrF?0-X(VjPxAe`Md-C>r^TA3ubt{?5z{nx;6m~gQ_F(VkRtiNfbNd z3i#FXK;)Y(5Ym>!cG=1G#4No0)NUNyNlqAPQcA`l9}@_YD|3Vp%*V!KuScRooT-x>exeVaGcaKn-s<%v$!KB6`YNe)#edrViP!$YQ1k zq?FGPh^9h_7}D=`8&pN~cM%8-Aq!u6NjRT@VLi7iHrfy}+P$8skAbf=RokGTczV0R z+s|Dw-(@WqPNiXJ&mBlOr$Y54DPN1% zRIKvMh(JXCtEDoc6(tPFUhMiKe%XD4DsX%Bql*6!Ld@bP&yQ__zrWkYw0^cg@a?zh z?2qm1uc-4|Xu#kJ%`jqeNQHtiJMw3&T6kJLtCVtz&@^q8l=3-#Fk@*L`VVRBR3HKx zR>SO%!?AwVd3?6`j7riFjOWHQ!H6l%?QRp(3Y1`gFFuUN^r8FJokECDgb-p6fN*}W zVp}(~i!e{T*scfy@xjKfD$})S#!;-Cr>u2_ZxbeqUVP|B1F~2GLF$)D8f-Yz2lq8L zA8FbHqEWCXGE%cKZ_*)rzBJyUZF1#8CStx%L}-`~nzi;6#Vra5&cl^a(rt3(LIwtP+op1$je|Y0WMfxwyO|ZKOSEzQ(ilc3 z5Ttq)#CtQJR0&+OLLi3s+>ZDYX^Qk+x~VG~2C*LGu9S3}TsWPMp*^7M7xNZSh%(mynGb>nNRF)lhI8u zV(Q(~B>s3RhWFY5f=jRS{dJvDyPkO<3T%y3u85NWSk{AYPV`2Dpz7wJW-3~j;G2xw zcN48U`k`Lq!pF3`O@;>|^37bQi}4EM7P{@E4i~QNtWF@aV$WEz9H$cpcGmIfsFL=# zNiarCZms|w-7f}LFJ)SdWk*wyv7uXm<8wD1st=`*}vkcqun6 z=-8t+=6({clF(+QfQvnWK=c+ue5-=44!&x8RAh4Zo^2u+3*K%dkwE6 zz}N}8`VxpBA;fl4_|6K$OQIAXEEwIo&f z(s{NMApXs|tt0tHUY&zdr_Y}oVEU3URf%Ute)#e-rViO>5Hp(?bP@=zGg5Vtr0NDw z493`*Ey_IEyJ%V*qTa~MuN3-RBx;PU(X^E}qSkjYX`MKWJ}(%7{oJ|yyX#P z-XInA*7j|`hUl5ckeQJUO$fNU3+3LEym8@Q4^92Qx4*mEIxH{b))@YJh^bmF)^Wc4 z)EX-oDYoz=Zb5;DtQhs|j=O%Zog{n;X zwFeMK2nr^FqlFN|ctItBzv*n+LKnA1%Ii9h=`sCw+9rXQ0$_?$?aklI0<3SMAP@}e zX4w{s{QI*GPNDD0>&@Gn=W=`oUcI+aWD0;xSJp$8T|_7Ofc6mU}Rv0 z#vr9xQL311@mVmyvPzbl zYr$!vJ!OhZx#lZDCPnt{SHF@H&mblEv2$Odrvi_#lc!>ez#Qht9$@)q{qDs2Lb zQ|3)PjEiT}jayiu&v@edqLyWGE5i70fi?wq#V0;Lu9CGWEIf@RvyS0Lu1%n@G>FCM zPH9sx9IqZii1!ONu8f%;innLeRcjEvF=D zi`vg*wAkDhWxu&?p|0z1m34EQpuBMY1}(-SJFZ3RYH=WNdbN_h~#F6+-GTrSO9FYYZmdraH$3jUBrn5Jnh zY<@_?7l4r}rz^3B@2EZ9W zcOy1`t7{M_)c}5DjD0W5ax8!|0O)g*MGYXV0C)hH$rzieeGG(Ri~%;bonT|%3C?a^ zF(AkR{RZ2?)7u6v?pCmK=!|aNEm2#`QC(4ss)|~aUcQ0+>}s6JtiXxGS5RDZ1J&iV zsIII9Z@T3Q&iN()aRBlG+%N?VQ-SCQU^-)LA^>_EgmmsA!S7xNXofpsK(GUR2HByP zS2tK#7?C2>7#BPn)favIy2IY73oI;+y+qUf)Yoy8m)0OBs}dirJ%@vd zmr+;S2uK}(i;^TQudlD)0-y;}Z9&EuEqh9mG>>yW2LQblVAahM{WbQOvB(!eqnr)C z^KDU7_Z+g6!+VPnzx*^#A1%kVYQjOtO~%+evMjG6Ut-9*h5`}H7$YknXJ{!&48DQ( z2!GKFW1hYn*4>3+beIqTiJ$$7Z3($Jm0k{67EXjv`GIr33_xmIl`#Z}(S$YtA7$~e zlRYqNi67iNtw5mM4x!B#UAT_-mS*AWEf;iE$mX2S2Jll`^lGd2!x>|n0o+52I`rs* z7hdzlq)3X3%tyAa&p|@;DO@S3QItB*IiCXHKxfKgAl3Fl}| zLe6u~&LXUte;fsQ*L1;{0pQ1$bZrfYA&fEd!rrt<57(|(zjLT?jE24nI|?vzq~tFm z$0dmvL@Q@G=aT^>-%5{`fN*7uZ3HlezU<~{jhIh@5D-d{viS?e8?S_?q9FgO5_=|c z&ZpffJiiqX7Lp{b(K;Io`yQRKaD4zqKh;aMxS+kEB+J;dqYx`*9#wosJ!33RmgOh_ z_4?Ou76=Oqi>b0KCs2?`Us&+=V1&=~LZ{B=QS^bJ1Zo9i zERq5y|N9*9)@LE;j1p2o2cmn(VsE4n@AID8%r!$ zI|xrq^}KDtQfnJ*>v0OYc5cc?Ow=(Y9KXale~@?%Wer^*=>K@e*b8(}GrR}h{bne- z*>-B{_00ObtCh8w{df}650nT!Ip>tEzNqjSxonoA(QJlqMl5~-me>&KE~Jv zS(eEv8iDX+jO_v7MWo7myM`fn)SYDw%1uh$Q;eC998}1iT+aC@Vz?BGm_)$_af}o> zzWv`2IJtB+_Zw`Kex;Xh;^hg+$T&otFseD{l!tsmKoGeS!x)QT3~cH=AIypNhowr) zl2O{W|K;*bXD9pbmN&=of-I0(u9C!6rC&HzKY|8!na4fk@8&dGc2#D7h zW6|`<#5sNN&vk=M2A&=V+RXfCQjwQkCDwCwx5k=nAs86q*rxT5{8ECs;VCG+)W9iF zNnp*kA@K0F5#X3AZ$@TfYiy2KhI77%Ns_dcbN&o{uNSv+eg$vL&cN}M zGGPh*0_^cxYybj>8^&cENW6rVb24$^T($5KLm%#m#c>){EaS@$^RV>!bg@^)*nb#f zECoO?eXx1|2!oZ?M~&(Z5l>K#IhICQBhVSd<+$h zVt0nZ#?G|RpNd6O9@wX-pGrUw^-Dz>B%U8*658iZRw8nI5-yyr7NMG(yEWEs9|Av3 z%RZqs6Wl=wQ)H$n`;iO_bHU1wg5cmR$|^<)Im$3EVjF~9Bp@oa#abM?GS+CM>Fp4| z{1oU?txuqa+JCJ8QAt1$ zZ6&CujJoj#o3FCclLLQ5&Z#N^LPrQaCf);V@kPd8jJg~-^udK=lfG{75JQ9yiSsk5BRdv1rDK-lI`P7I78;we{fJ z>@c|Z?PkonAcWKQm07W{~PpVQcn3&pFTp=*t{5Tkz`<)E-Kjd%r@4AFV)6!60QX?YXkz-x4 z>eCRD8FjtaXEFs;A9Bv0BOsRjTZ8e>nI2H3{QMhMMr4X!1`_Xqc32o2fcr-DFz5~@ z|MVN)cqs#UXR1U!W%Ptzcy)aM9D5r7+Ef(K3#c|yusWA9_7R)|ex>ES)ac=g%C zO)SHZ$At2Ls3(6f+fm=e$}K@43sXb%LhN}2L>Oc2JCSsSIEcqXt>SLlzG9JYC^bk* zy4LR)+G-|wCZk*=Ym{`++hI_MBi{KY6n2iH-ej^glXN{oK=fsd{X%(Bd!*sIj|n-q zSJw^3gy~)_Zf4`^Y^+;&0$c`yA9Tjz_&~V#p>|AlgwpWoqYnt60T8u+KLOE$k`4e5 zQT)E_eT}GbswMQ89NAxj)pL)**1j_q#RbCCr{zu2`9#e0ysImsHw6iPM2(D7+0)P4 z3$b|G5rvrfiIPqNg6xf`x=5nxo}2H3IV=2cd$E^uPFbN^_oH#0W~e%br? zrh&X20w)*KJ+tb&P+>vp<9vBSibCF2an5HdiKLQ zDte{w1ff#G?8gr27J)wiKqXGW8~oW8puNlbKv118TDMW;U!RAVMBkZ%H5KMv6O6cC zqsSrv*A@N#Y#q9VMTn2J&14i;h+u+h9pN*)RLem+%1T5tS$r-i!P3f2Z8I6oc{Gt* zg>I50Nim#rYQ?j(cj}CV?*xc6Sgo;x_69?=7w#--XfG@lqhNK6v9+=+FKBLzp`{p> zio?`~_b9DGnd7QY8|o8(1R;Mg@99+hn%CHHx=Y(|dbv6MTMOo!v>?+s(z+dgkQU_e zNhmHz=8B^4HTo4AU92dp#pQzQqTT3BMg@+imZ7-trs#{HUTVFO=t}KK^m_ov zOExA@#`q~ion>pUVj7Z<&>4~^x>~Jkkmsj{tP<^z{Caa6l5Y+iniC&EHC4t~Ab|cR z{%k@P=R5;IlJ;j43XQqzt=&bn*VJ84|A#a*k|g=-{E!CK^p)~Eg@QC$a!LC`8Yclz fw^xV!kjDQ2HGqaFG-1k500000NkvXXu0mjfm#jwz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_feelback.png b/app/src/main/res/drawable-xxhdpi/ico_feelback.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4f5aa1127fc3c7b8bd9a96cc26a4ec3789e198 GIT binary patch literal 5204 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_fence_round_active.png b/app/src/main/res/drawable-xxhdpi/ico_fence_round_active.png new file mode 100644 index 0000000000000000000000000000000000000000..0a05ebc428c4ce726c2ae39105f725370ae05564 GIT binary patch literal 5862 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_fence_time.png b/app/src/main/res/drawable-xxhdpi/ico_fence_time.png new file mode 100644 index 0000000000000000000000000000000000000000..d50ffbde77b9f13eabb3a3588e80ef4f240180c8 GIT binary patch literal 2221 zcmV;e2vYZnP)s)j#6@dsYn!C&`g9_)bX{Mpl=>imcM{Pg00iJ1GxrlwFA?nqaKJRp z6Z`h<8v>vvvXvOAE753lhOX;Z1Naz#4gi+82||)dfqUMXA_CUtM%5^1EgD) z^+_VS8$bj=Q$2$<-v1ZCaR8emk;u-juC7uoJ2e4`S2RuAL`0th5UOFI2p|uj;J-Hj zTm-XFaW*ExPbTzfDC|_nfX;+*Uu@X6cL31 zOlRiz0Ehu-s|Lr+!ljo0d@Y?$AFc-eCO|%zrvM13^MsjQX1>=nO#yQ{nM_J3-Xu$x zE^Qbb9BeTR0lw2Fn|jXNWe$csY8xpU`+nwy&!_~D#OME$z1-|czcRKqZCW9BJD z^j84;ip658r>95wrCFA>h=}g@Lm8M?%)Gt1x%rFT-Q7Zka_%UL<2WnjWfg%lN~s$& znT&7-?d|QChC-oj%)A)DG}(xmM*tipqNxDh0YHc?r|2~z>h?VE%K?Ec%esPyc2t29 zz&E?D`_oZCj^oT^W+9r8F_05Pv^teaz2JZ0Jm1*6tK2RIOZ4VLI zqhu!f12eBA$8qK|a{|B=|D}ZB6Rzw2P6!+hho1y+eT_}z@sFFDnl{Kkxm@lC0M?G9 z`-^NgySlHh&vP8-YG(eG&pBB##LOLJ+x8j&LgunC^TALkv|Q?r<2Z|yQag$0(zgiE zATwW^PN(D}bH`@aYObj~RxszM-L^kjv$yhJ9Ul_7(w>V}4I- zYwPBLfq_t|RN4kW98wk{+DVpWNvj|kwM+vcS2~@3pslTKN+=YPBPvyXJh_mNiJj*> z&s%-?@ZqzTWo`7yEvZ7JPdxNGfQ$VH=Y#{U>ptDl(Q$FHSiFy!ZwAm%&qD(P13Yco zvk@zu^5w z0JXQbUt*f(ivT`Q>yw$e+ceGV_V3?6=r~T4nY*NmtfBu;UDp=|wad0`Ni~vkT6}#a z96Ccp!I2*gnd3NnKP%MrKLr_ z`q~=np7lKMCLy)sIO~~NDn!uGWh7)0!_NkbnYn!IXU?4I_4oIGYXZkUSh~wJ%@v76 z;#@QueV?xDdjY(y3Y745OC%E6lFep~Q>RWzBK<;z&QAo8fDuq{u!{L$u~=L#DLxj9 zbrR7p>m$D$_1Gr+M0IKw47+9B1r={o89mm zywi=1jglth%a1bi?&0C#143Z2ef;?GCCvQoDlh{4N3QFx4`%-fk3j$)(sg}nFb2sc zM~@zDoIH7Q$$v&29Ub9(KCjK5Jv$qW%R=B%sdOs<*|aiD;*edXQt8H?o}LqdyDn%@ z1dx)i4241x$}_bFMVZBhhK5>9)07IZ34rwE)p7*DD%W-8@2J!qrTtT|q$+$tp87Kp z$%ynfB09m$=ZHuKL#atJO~~{j2~Uc0^_(x+dJi*ioX{v8K=r3sxonVrXuQh?8K=ub zp5GsjciABQ(36^`ZLXYF>v||q@X5GBDfLYvlIxhtG3i21zub@v0Jx{Asp;pzlscAy zdiO)+HU8DiHAE!o{z5LShKOjtQfe1~XVU5Pzw3R)gaG+Q&b!hhqD68;LPXMxP4-jB vuuQScEH@i6cggM9$w(w}cDzffN|65pzYe{QgROqE00000NkvXXu0mjf+Q>?q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_gou_off.png b/app/src/main/res/drawable-xxhdpi/ico_gou_off.png new file mode 100644 index 0000000000000000000000000000000000000000..89a172af98c236277a976e208d0eca205f467b57 GIT binary patch literal 2589 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_gou_on.png b/app/src/main/res/drawable-xxhdpi/ico_gou_on.png new file mode 100644 index 0000000000000000000000000000000000000000..992b0e7e12e565d6a949796b11f98cef816a88ed GIT binary patch literal 1838 zcmV+}2hsS6P)y?SwDa-^fZJR{ltgetZ|}=8u_xT z2C=7|M52i>1i`R~8Wlm%7|BLSj4l&_l^qQ}a7R&?nXY3_*F0dldZwznrbbPjkKOlm z{`J5AbMCoUNUZ_^NinHJAO*#T6)7kwD8a-cWlGAFlqtawNSP80r&Lo?rld>>hCs@c zU^peNDGEX^cLw$K=hNAFHjZ;TswV>VKo=s1aNVyF`2zS4#o_@04dzZftr7!8^Z9yQ zcMc+d2Brch1IGiSfjYneT%a2`0{jg8ANUy6mvEd7QYduA9nDQ2jR|&vE2P ztE^h}Z46^3Q%})_3meE}o(5+2Y>~LvZd+?JrP6)U($XIH;IT4Av)K&e#{Cg!MfJS6 z7hCyB<#Qm*!Gj-3YilX4`C_QBEt_zKLUGj-3RFC*c2Bq@qw~%;dC;Y zHNd%8*iFt%aQ9IvWu>L%!#JjmW$|SVsjJ(T$d;+*waDjmcV8Wc#?%ao=JS6*wHdfA zj;~bX80!&fltST~TE?jf6m4p9Xm4K%Jb|huVk2uJ7L}IK(C~~jHCZAU$!Y^7mzw~* zjL7szvkylnkq>d*xl%0dk2-v9pfolv0W2ShBQXo+!>XQuPn4j4Di1Lemb;e{9AlTQYYw3pqxr^uEq zc8&^d(Lu@O>~Oa}^o&tD7$6s10QcStr=EK32w!~#%a_9sKOFnJ>TOaiZiqBplul)V z-M_yTk=vv657ozU;L=OsuDjrrQ!2Z5bim4$(AG8(lyyv)kc}d^k(knRws{Ab9LmA4 zjg29fUFHEYcC3Hz@4ttqo`Nr|{Bn%h)}A4S!k3|^4co!mYc6*+B5Q#&eEZwiz33vi z`DQR-+_MKZZSsWCv>=Gt7#Cj*_uNw*kWvYD?0^?v1h*mrA3*g^DHgW{neON|(U_9U z&BJjDsQQ1tNt0m75>F6&&Aw=BE9~6q=fJV+&Sc>7%RNy&=_G%jy1L-qcVYc{_}S8v z0VdLc>*l3cT%8Ok`TYH;E(b>WPMFQYjW<^QWn#Ey4SeuHb;cM&uDHSjWXu?Ue~ckp zw!kZ|_ygkg>O^&!6pK$L14=IUH$)!kDIr$QxnKcYb(Q~GEQ~(?JnY(4$ruA<+BBFy zA5J)-Iw0@A535(h;lqRZ>!SLg6pN201>3){ik>rhM?H45g;f$OdV z(+590bjSl{`*yG>Gh>F=ry4`LyWx#DJi#6s5S!6Tmw%UH@$s-eMituo5vi^zwh9Ag z-aJnqj0Jx7(@$RHu>bGA8;(29znuZHZ5ymz3ns9^tP_!CQYa**DT7C!-bEWQvuDG# z*H+(37CB5ys%k(-VQhpOTFw2Fk2io)G()F~rzmp*M_%3>+)zQ*s#;tEWtv zVn@?(SD_}Vx84dj+)xROh1yqNh0U9zGsFXDAG>!?PQ0E{24?Z%CAe<*%9{am{q>&s zo^1E*z`=taAX~TA3dqP+-g>ss1RUpORKwS3EvXwn9xlAlI|qIGDYUmo71jRDqq@^> z7Dlc{+gr`|4u@4TuW%uw#@2@|VWXj8MU>)F@7$3x+M^dL5~97h{+7DB{gg_d z{jOhJhy7Y3**0KF)DWH9$7TL1t607*qoM6N<$g7Lt9y#N3J literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_gps_no.png b/app/src/main/res/drawable-xxhdpi/ico_gps_no.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9dd60fccf70aa9ba046e2925d7898a6f147353 GIT binary patch literal 2512 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 M07*qoM6N<$f}wM$zyJUM literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_history_track_active.png b/app/src/main/res/drawable-xxhdpi/ico_history_track_active.png new file mode 100644 index 0000000000000000000000000000000000000000..b3594d9ce847d3733070761492062281ab9d531d GIT binary patch literal 4515 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_lay_amexcard.png b/app/src/main/res/drawable-xxhdpi/ico_lay_amexcard.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdd6dcd95f1558936a52f8394c2e04b0be00c67 GIT binary patch literal 4690 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_lay_paypal.png b/app/src/main/res/drawable-xxhdpi/ico_lay_paypal.png new file mode 100644 index 0000000000000000000000000000000000000000..59bacd28713ea98fe34a9c407b2ed79298976791 GIT binary patch literal 11743 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 Ovrci(P^xP8BGjy46WFA_b;FSUKE`Jr|)*X zdiBYPq%31?o*mHEy02Mpg0k+)dt(PTY(Bbw(O-0LcHnjAJFl57Dn6P2^C21z1_uka z{no;}e^K-m_4|z5Z^q9(rCtgOTW_-knP~}$AdndtwbU8C_Lqz962LR)&88|Z(%Eu4 zg73}=F;>Sxa38zNX$HpB5r;)J^t5>9aO-g_c~R^$<75!prGzuU`8dI>_;9~@)+#g+ z60x@Kz2_+xamj?jPAS4n16#%g)C2nEKz$1H%y9_H^HJQmmTvtg`RAMr|D;y;v&EgC zz0&L=DH7*w*)*NX2w|-Q*8Z`4m<6Hxp{+`X1vg&4QU{Ba)@cb==NmzS!AOJ2XtLqG`%OW~PpTxow>OGoz}@!s3io*fR(rf#0V1 zC$9};xqSIbxgD`hhQX&8z>9?g`=&*2?KJFabW}2g190afU0pv>t;4N7@@inTIgq^f zM7*)9bsiDkCPEX^*YY98UG7$Py*0f=|F2^rVvpb7iqoSDOAR87CSU>sKpp-WAg#La zDzPjAPZ8Srb7T4N&;R0__~N{p&WvS$Vb={xP|I|xnrB*^IN>b{XFe31i5$bFf3DtpY*{rU$Bty0}_uOkIL_5CUb@1+Y61n4( zGEdNrCNS5j4Vq4^0kR9P6+xN-`8aV=oBEcUl$+pGoEQC9J=3tyvc>nFWK0y=eUBC& zSQu9}d3fuVKaOu@LGylS8xbANPrS^II(hWb0?NCL7#D~vsNQ34B9ZQm4*Y!OPwUn9 zAAI}jtA$BwW0Q9|O9Zei15SM6W=Ng#UAHd({B?0?oVn^$(-l#tc7ROeYkgQ+1Sm@f z?r!3z&6)%^+%~^Up21w$xRLjf;P8XQ-Ip_%&bGFLB`X_*z(QPqf8Qn&BC$C174=N- z3kl-aiD=&CczQhNEF>-Is)aPXMx^1OxfglO%b7Rl;wyUTD@2sDxhWV9YRGwqde)cp zi+p?7tC8BZ+y-?@7R^#NjtoSA++(=C}0tM9mmuyPtCg2#dls&%=tThZ`ytFhAVed1`rb4Qpw27AWwxT ztykxU)fY#0umN;_D4pZy?-{dZ?V0JMNbD|6|FdAPeD~3Zt6yj6BP4ci zZd^B=5 zoK9M__ojA$NhES%c#z{gv;2e6G&zYiz>y%;n>5wDs3Y|}BtthpG1NAiA&wP5UI9k@ z9BC%Fn$BqDxF%@okbs;5C5xZx8&5itbip2{2OJMvX#LZ5z1`aN@N&+J5#c^WV^+}6@NFHx+d%=(zm51zKA z{^i?=?L<<(=p8_VKxTu9sT|;Twx;{gKO-Yc|4S63=f>7Pcjdpmb?N$09Z8gTS&t?7cJSjJk^Dm9as$_g-iF&c+qK&cP_Gh!g9 z39MEYo(m+<((3P9Dtk)-l#a6@lwCx)v znV(r^`WrLtQRpT@1PIKgtlgh^H1Fam|HrwvKSTijZGFFqKI0X=`sh)$3DrMQ%C@DQ-;>@o7W{)bUuHL_G#eWaIMP$akBP!xTYWsaxb(^&^s&J$?O@NbtO6w0;|{MJS}I=1 zqAB{{eWF-GWXXJuO_=mB87(l02uFot-*L!*pt=`v?(S!P%}d*;{NH^IrN6Q%3lFtg zvHnb~ST0rMlm^Uw)d=+2MrcyoXUoiOUk>@$YFFv6?4LJcv4kiFA;FZb2@787(L|dM z9XVQ$hJl{d`RjMJ@%!}U@4xANfAw=*nV8tKk2AAOE<&7^Zsjn-F(whsJgr>auiKf; zU)a=T_?yW6*H2q4AzJn{L$TqCe*H}y(K81|UXUA)08pD?W;5qWKh$+y@~`L4ziUH zTQBFHO=Z7e9eqRO?bJ98xU2{=S9g*$?BMneD*j%Sed_dH9N2U8uHT67cI?qHg34m+ za>IxNv&m%c)Wm;t$KGwe9%5Cv{k9qg= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_lay_visa_card.png b/app/src/main/res/drawable-xxhdpi/ico_lay_visa_card.png new file mode 100644 index 0000000000000000000000000000000000000000..50483d32c3f376409d8694d01a623269f3f3a45d GIT binary patch literal 5186 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_link_pet.png b/app/src/main/res/drawable-xxhdpi/ico_link_pet.png new file mode 100644 index 0000000000000000000000000000000000000000..56569fae4c6d77dfbea84610c1d3ac2f338070f9 GIT binary patch literal 4703 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_list_next.png b/app/src/main/res/drawable-xxhdpi/ico_list_next.png new file mode 100644 index 0000000000000000000000000000000000000000..300debbcb492713434bc2addb701e45029e38fff GIT binary patch literal 1178 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

`E$bW`+ZQk6!sxznzEU~YChoGmINCMC^Gk3p% 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

$AlPiflR#+gIE$kvPJ&#dY>5nM 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 Tyv)+J00000NkvXXu0mjf3BWwI literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_loading_wechat.png b/app/src/main/res/drawable-xxhdpi/ico_loading_wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..a9338128f40ad57924e8dc02495309f7b02a6baa GIT binary patch literal 6503 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 N002ovPDHLkV1ky+P~HFl literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_loading_wechat2.png b/app/src/main/res/drawable-xxhdpi/ico_loading_wechat2.png new file mode 100644 index 0000000000000000000000000000000000000000..3d0453ba07ec1d5bdfa2e71d544b2dc88dd38e56 GIT binary patch literal 3904 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

K?^y|Se%a;%adC0K5NFKL z?mp})y?VTJE3?k)m}tkE(i*CLCMU9%gz0uFNx`_lw)sW!`WDAo28)*yavmT{0nQU(uDRV{REMen zVh$&nHZaqf|9cQ|X#N(&E)sEb*^5xmrB;okK1~Fz0@M#*ZYcO#G?6kL0TYfBWk-*> z$XsWY<1|63C8TZynES6sLK!qKB1a+Y10+dH?ePuh-EHZ#xs7++tB)HSPpPfR)|l?v z3n=)w5Qn4j)T+s@OFp529%qZ0HRnTl&sY5nHmDysolqMH_pZrq9Q%J%4wc#WH(U__ O0000_HItPqvISGfv~+?+ZdO^T5bRCk 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 P00000NkvXXu0mjf0U(^> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/pic_avatar_df.png b/app/src/main/res/drawable-xxhdpi/pic_avatar_df.png new file mode 100644 index 0000000000000000000000000000000000000000..e24dcb5b1c708ac478e9d7208456ca61df5154da GIT binary patch literal 10088 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%0Ag`f9v-VxPo7D;3Iv3C=e~dUMyC6`Ndi z__*hug;m9m@!Hwii3WtWcJkHlGsaXL*p3BI7o@W#K`^DSlNE0mK{d>KSo5&wE0rNb zhuCj!Q)DNTP;gg?pz$7f;Qp#wjN`S_h#>?{93vWm6%6Vq_u66u)CJ^cUB;8&PK_Ko zTYcPCG*oTUJhxJ@ja+*bjM1y~6b*Cy*)wNtZ`4WzP?7Qs&B`qM6nN_>h!B=(Z(vhwt63b{@l4(^;`Gd zcVDcEPqZ(ZGt@#6A~I&+$BZ#JNU@|UfVx_Anxw}i73{BU^Ay@uYL7nonlw?JGuGOr(tAki__zS2968i0zTHdmXmpT4Lc)xr zM~pE)sP>+c0w|8s?_qC9^6k+$+|eKZ_$RRlD3c~lQs*w|)p}R^Ad-B4T!4~IYH2Ai z64DOGlQ0rt$gj|Vw%Yqj1fZ@K?e3;Qe=}&0vc(g6!m}(#e)z*5#Y&q_nmj3yAagm_ znDt}g0(AWNahf&_i>=Tsngq;?hHN%wN2!GWEekUj7h9{R-yoPK?(z(a^-?M z1*B-wQZdpdKuhAI;Wl({DK%Mnv@U}j#Iem@_XN-(64f70sO! z-TvtSCvAfOXGHgr{gQr}0dTd@oZdy$6rcf3`W{JtC8?mb9KZyiyu1djO@O8cP#mE5 zyl0WU0JJ4-gLp+W7~3i7)A$)l#5&u%5 zi-+*>fe*aj#*@*S5$Q`l1TUS^pJ!_gPCl$I0QHv6aU62cQo>{BJGsqsT-MhHL$*F@||sb&hHen=dE0!X^uEn2iF${E4|V%RVvvMXnyRIx~P2dE2D z82QxM|GK1tnJ;YfYuB!|g>&VmM{O&?mI+M_>H?usfa0aoM2rq25xwilt^cFT>#Ud& zUj;VpTT=n33sQ3TpOW;4k{EyE3m!h;eDu-B%4&Z@UH8~=W1Dn4cLm|&ZdhL)VVMSN z?|a{St+yWGsWT1+vhi1w%B@!l*wg?TaGpLW>GN(wh=S`un=)x9+YE>R<#S?lH&dyE4hubc4XwHZdjNm5`aL2}^f!E$j8+avj$+1q8D}V;H zDLMSx-PkF$PXmL4Z=;+lG%8>vLq*7np6+=P;+JSk93Mc5#w;-*jsdMSS*2F!i;`BS z8E}ug*0}^|0H{RfaiAWgF{-4or4|BP_1N*_I)3b!|MSe*vzc?S*rvN)f4!Y)->YX& z|7Sb4W$@M+?LwpBCvk*|O>rx=R$2Iat^pbVDjq)#bswT8TN3tayZ462Pkj`T06Lk# zM?HAxkWHy3)y}-q2h2823bKE{e!e}42hQ)ym`aRSP6GaG?u^xgS@p~-S(kLKfM=?Wlg6} zc3b8J@ZhiZ=-%CK+q}q#l>x-yEzmuVZJhp_c;(MD0w{ww*l++1XjQ^d5TwcTGxvV3 zJLjo@gIWr({2g#&w_4lv;zeD&a6uO@UDBnC7Yjh^oeLncu$`{C#)1(Ic&)1m`8T#C zuOjiuQkMiblL-@a`DM;JvCOvi#tD`>VV3{iumBBd)ozmdxPkxox~2ea-12h&Y~PHl zW;{B>ed+Ul*celJm$fXTG2+_t@_-UuR>yHL1DNED%?h(0uriC37k^7@T>v5kVfq>| z%Mwt+WCxh58g2V7=b@(cAj-M6x*X#;4v_#RSdsr9?KYZ#@z3vwxek!T_?=n^<5-yA zLw)&MZia{Ln-|?W-paEFp2UK6cz}i%(QzDXR{%*8fENxHHT@odhq#$6nqp!$kc#CP z%n0mTv>?DE4oMmjM+OjjFY3twAWh`?H-9IP&g*oe+LCd>`u_o>CI;}0w>~cb0000< KMNUMnLSTYjo0baz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/pic_history_location.png b/app/src/main/res/drawable-xxhdpi/pic_history_location.png new file mode 100644 index 0000000000000000000000000000000000000000..2481c8521ae1b59dfee32be392889b432cf38ade GIT binary patch literal 6331 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%0D}v|vsOJ4JO>O$K){tDz!VIb z6fx1>o6U>@m$FO60O4y3O7aL~T_x$g;WGd5Ot6&z2)q(p)mqUSXaihGwgmu@Wouxl zl*#|ZZ=EF2lyk{ju@O^IK!mgfv;!ANg8XXoP=kc6KQKV6&CUqy0}RCo+kCcR!5@7M z$w4y%7!{SO07M8FbcYeMI8V|EnGDbHY!UUu2<0N(j^`u!~wv#iax=CRbMsX9P}2ke|9S@upzUw{v3IFo^4 z3NXR|3BZGG0+@n;7{(rp%3dEVau@&rVGx6GsMmwH>&ud!DMvhEsF%t1`>F;+1RPXk zalYtjlIHoxQ>S&a4tEkt@HqlXnCsKRWCIIh>)Fu(Roz=h7F7R*RH*` z;pn3$G_<4|(Zw4t%_ zyvF(S)pXiv8g=TaYM3<(mhVF5B=^s<-O$Fkbg6oN@eB1097}c6#HCAbtR)bH2VAC^ z%YBaXxpV8uC%0RF|B@8Rs+k%lO;Y3BxoVs<$GaM6Vj+7tW{j-4SsFD;HgcrY)Ff+a z8URngqtMp}QKwu_kJQs6ci@1uf4|(meR6yD$nDyt{w-V7w|e!!wQ806w{G=5gP7FS z>)dfumM`C&&p4{--kJu4lN!3)+kYVE(t1PE5Dx&TI06)-M@!Ak9xwt>WCBD027n;I zuy?Nq2Dfvk++YXFnBCse(Q$1xEpWc?QqzE7uw89!3r$+$hHy>uotRdbo-*m# zXI~t~XRGETH4lg#3l~o8?dyX(X;^M)kygUVxkuE{a79Z;N5#U<#TZM?1A=X1TWjkT z{bskD#2KWOkX;SZCnt1vK41eik2Nbb4+v&{*t;EX*dU{Ts_S|zd zf39UL0O8pZt*u{`Sw##w=iKKeEniMSam`C?0MWf*!A#fKNWv&<<|Q_O@U%pG`yFzQbHmCeCVgdMXD0>3v5;5+qIIT@^_;X> zjg6;ITDFYFnOI1y0I_BM{DT_Cj{QzH>i;6In3LIkJ$v_FdFb=cL*Ww(i4`DNk?!{P zi=1=+Ac^w4Qp%1-v&$xQbU>IA8;KntHl1|Rc(UCC$05)iK~TsV46U*BrZ5GlpvnzX*FyZgv_ zue?HSWUM5XfbeXIwl>-ZZy~f@|VF-IXQQH zf$OkhVrOS-trx%yH3zW=gy({`wqD}Q?u|0n3^h5y?@c=3%r0(;S(rN0`0D}?UG42N zoO9R`9R4yK`Jev2zVjxpSV1>dtfejh;TA6*(Y<^34Q6(|lb{~RM|z!eUuu~>`xg7* z4~xPUo6nb*``)?$1e3b8wYAmEU}u?@=OnN1mCl*k+4;YDey%2OuNy#MTy9&l=0Rr$ zzg5oCAl)-z)~qY)K|3%hbpwb%OEj1*&7-Mj?*Zppr!8Opo176;<2Tk7Ae>~~t*wvB z42GIqeCp~6;eV0vKv0_K9EM_s@v+e-lwf?oWUEVK!ZIIT#T~4~PrL*(? zxJM?VAgVh+c*f7;8U}CykTQ7EI zcW1CAwmav}pA_R1_h7)NTR?bZBW-OrIO$rGf>YGjI4P?u7-fMB&ZE?6+8 zxv}x1&>lMJ+1`eRo2E23ci5686=#&K6dL~@=xyt<@H%QR00000NkvXXu0mjfnTOVj literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/pic_map_location.png b/app/src/main/res/drawable-xxhdpi/pic_map_location.png new file mode 100644 index 0000000000000000000000000000000000000000..863cf03c3a900d3e2195091d37c701b7cfad398f GIT binary patch literal 7256 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 mjMd+C|96Fo!lkO3;Qs?8+fiT&*5i5r0000zy0` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/pic_wechatpay.png b/app/src/main/res/drawable-xxhdpi/pic_wechatpay.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce08b53e1d5eb09d828f795477ca61340026665 GIT binary patch literal 23126 zcmV)zK#{+RP)N+P&C{9oUMEV&f{dSQsbIa-gw^kVDKNhBAG~{F*N4O(qsgIWn$^y=$k#*1Nz4r ztm$G@2>owf!{MwL^FUDQ9XsOhG7^i6EZD7XMC2v%zi0(nf9_|hU`-{ zjew~rHz+JsR0dD2QDYjt4k#P|!w3)%0>Cj6BMBaDA+f-ue5p>X6W=LCIy@8$g&(w1 zm1cm;FgXBZV;II1x>LU&_&o!^XW&0I1OGTc?S8x4rn0EA-J_%j&F^L0>iZ`1RhbNZ zCdu${kwH&eU<4tc2@Iz|3m8TN!vHWi1{j6|1~?En2|6tW6iowx<3M1znxt@r)}T?@ zNJLak%le7cq&2sp)0WyLNV3HN@9{k2Ok`47n^juwn4A)%EGei$aJ3t6c_;G6M*w^z-S&2 z6b~@a1BD~-;Q>J-P-1{W0EBwSFo5GojAB@63J_Q^2)fXH9B}j-W&pq`pxFm-z$gM3 z0}TcP1q?7?P1xvdd3JYsLc!(6C7b^>qI$@23_}n7zJAZZ?-}?n&%iGMsDlanJ4U@c zG2wa2(`ss=-kKEfaRQJbi2;UY0LKV+PB1K2^B4_)A&>#U8Jq(n2IuB3j}6@T41)t} zX2KE9;4EmdKhecttO|(02}f-pK%*JZ8FVzR#AJ1f*Sp-t#cPRQWxwnH<(KojZ@*{Y ze|-ju44}>?pOrj$^Stp}^^0jY-d}B`;%S9ao(M>c4>XG(IM4_ykeY_kNX{`zNG1?M z(1bt*16E)%0t>JbQf_MOq_#aqA6SgM^tNMRyO z0z3u>Br72};@|>-2LlWO7EUx`|IT%S`&;e~F|0(yic(+Ao9Q`IJzt*7-Hz!YQws`|}7maU&@@q6sQXW+jw13v^%48xESaVyJQPJO=Me%5VYLaYTLAp(k_ zS+5(q@&Z#XNr(j~lLh>rnuc7%M8++oT^ezcv%e$LJq47G(Kd2ya;kzu&GDma41N2X z0Qyh8pWp5Lo`L*lpwIvn$HehYT|L%4F7?`kL_=y_QXmE-H8Hpjcnngeasw1=O!{KH z&ao%`(*X7N!RHp_kk=3y$~1%))CLWd6qI@D>EIF8u2H*_wXj;s-;3wh&OobHt?Y{x zvnjcM|B(kj(^4l7k76y|-TC9DPfz-pdj6N64G#}5{p{JZ)HQ3?X#WfIP$+;xl2iEY z@L`)1B4#l{rHurWU<{Bf1|ii6i6y2Azd+Ex4@TdcXcJIzv;~Bx4CpBx5ITNF>oPub z7B!i(3fbA%+rQcAMZRVkhQZsk@f@A-{KeQ>RjS@@P`~~qOf23rb?Vf#!ZbEAbV#q* zYuCmIczoho++DZAJo`_VefI2`G%D(tw_2?!iQ0Cwb4dG?nz}D6EbNO>^`GvPvAsqO z8$7qNw7Ao;bLTC?hmX2Y)ZLgmX;QoMr%w+i#UfBERVr^EpLL5CExPfocFYE-$hZww zuavK5?0R)#9Bn5A5%5500M;{S`fg2Tro4@@WTv7XXA#wxA9!+oRqFvnD!!qAweC~g zN>p6yR-&V-h#LLrYPM|IB7N}SZfluL`NY@P_nnWA&o_5F1OQ{lj%_NJXB89jgvjR^ zy>8t)vu$iWyLMlx)X1GJMS^4Rl9TV;xN-abPY)nh1-o{wwp_P%_tvKmA9dGgbRe;` zG`P2F)h6=r;TUt;K}6tTLk4ZwyJz1ZplH_dF=^7I`7`J8XJXjD|H0=shMqk;Rl0uV z+WxGp>{>WZfP=jwUDl<7)ul_96y}WiSCu)ib7%9RBZghk>eOIsX9u?S#ZJ$eHgizBybc#>9Y2 z0mJk_u#5p77m||4{buyonOe=UJLUYrsQP_PAtsJk>nfR0iEp{1a% zU9;IeEB0LB<>HlXUd_L@RPWxsTgTqGc0eQ&$x4+jy}w?)`s)`iT$q?&tM~5RvmP~a z4+z4|!A@B_t&LWlj%QgoRm0UA*)%?#?Yci9`gRtvzP%*cTaQ&a>v0>DjYG z$%H2_uV$pAl}941wSz;vPusSg7Oq(F+MGI&bUSch|6V7KAKxiN0heX}FxpU{gYEB6958Qs}=%Kz+ zYY}8;XM>|t>3hpotnS#cW5*9gH5bDM3>b6l@R8+0p$KGZrM!KYjzhNX*uCec0BZKN z(d$pVy%b1U8N__V{HA%p7@6CI$ta%7@LW`b`8VrfDONy$j?jTtZcuyKwF+O}ZuNwJ zvrneBTefI=^2wt|J_JDm#uI!PJa};LxpU`U&984mhYq#5edAh6(z_2lj7I?Abi?H2 z&$rAO$FgP1DsBo7f1aI{jlLt;7_q5FhYsByoAa!>WhPG;+kNk@9gz%0<4T2^sadn; zwk3at4|j8OGh1SfiHRW(9N4#Z_qH8D4i-|7sa1??l}dY;tqvdBs8J)CxqbPk%C&3P z&LuJ7d89levo4O~VDDH=UhQ87sGS=&I4xbW>~30ma&exR4c)~k!@7U}^_jXU_+X?}RqYO*& z{{Q95rQ#v>I?Gt+I94={15i5PDM=c~c^}+tYaCnEcKwKdbL8l~%$hN^|H>6Bw@NJ} zke-nR-MV&Kyl4NR$v!?l(odg0v8-2XYiq@&OPAPCo}okiZSLKOPyX=!10Um&K$Fn$ z{rhAVpnCS~NxXjj+T!!8R~Tt;PuHnaM|t4Dft=JehxhF98Zva)ITVy#wrm;gw7C;Y zb?oT>tt>b{G&KQ!zL6)Qj`y^cN+B~_uJ-BBcJ!VDM>iI>vYtJ?ZJ))zyOx=pTt&#| zftsRJ?c2BOvvJ$5qlK;OSC>Zs_4dW{NLglPT>>Y--oa6BSGttbxpU|KH3@2ve_&wL zk;5CsmLeg_Ai@)hv?tG=tX89j+pD6S4+K!h4;)@06!Af((a1Y=?HUrXy^sKfI)rwm zi-z;Q(W%jElolFW2?#-t@c?5CY%nk9t@{F2|7}zF_j<=#__?tlOk!xz>-50Kqh-LogCwX2u{V-GB)#Wjd=fAMYxu?pP=f{qRJi@u zy+tXh$+)exO?o+(G7C?izL>KhLkAE3^T7VdP(4jUySDA3gN6@l=kD%aWHF3au3T{% zH6-|D%7>3)6p};=_(?l=@AdqY@hXMKb2Q67Y7N$q1zF%E5YSup>-Q6|6>J_(Z z-P+~t+t-oujI6q7zb{#;jC{_rB~ISn-v0_foj7qqyky?IHLspN8z2@7u?(3EdiU$I zYt7nCeT!0hV%Ouq!J|(cIJiPA;6tWPE$`5^b4bMYU4@gNP({-&k1c&K_5PVONUw?s zNx*47P#6gqZ2%lNN#p+xKykdMzZvl{8VCvnEt9|yG|06ome5|?x?X&Br&>!(N*u5F zyEgfVVdZlc>%Rq1QBhGgGiOX*`}X;3KdDH9>1e%SU`SBMc?*}E`Qwi%4p+|Id~)md zU-l%A4}QISv{0 zqRz&!u70#ZZCJhXXw-?5?IltP^yuC*Jbd%!;YIn;E}uVl!nE0Q7CYJ4LRNMrxO;gX zs8zqwf}2+_F9Myx9s`1*5mC(;Wx%#=+8Wruqcl7O3h87h%AjUw+Vvnn$T4TMmj z@$VDZXzrp#KSle#;+{OZd)H22Apyr?j?Mpi z@Zg$Bg1R4jBl#nepadis@Gk(>#ivW{S8twP&iI^eX=`nrSh949&Sx%MeTbf$J9m2d zL;E7HefsdRgg_)>y7_hYT)A@n#iDxeH*VYzO&T`r^0OB&>WeJIKw%8EZque#^JmW& zC%t~POD9)205U0{IL@!Uz^ur_;u8WW?kCG~A#jjbO4#xWxq^-RM3O!VK1ca^*bpa- z0g4R+MbQK(B9tTUqIFHs7-;kqRIXn6T8FMZdxwREy^oBHC>|O*ekw4GGoR0A!#~+b zb`*tR(1TDS0;iHrSmLWh1|z-*V;Z#qs#dE4_Kvm~Mq}{y^-K8lDVen*lq^v~qE@Nu z$kj?KG!zj}VEFVoB^u+Cl$FHVxb<^&<^QRna4pj$poySz;^f(fNm5n4YR%;*PMp4J z&im@st%KjStJimtBuN@H2B=)4`nj%t9^FGj!;0LiICNnD(Z>%STp<#OAX{4qfHHv- z;yTU#YyR*fj}I^7*$_C1qpSgFLbzlm2w~aRYt)R`kP&lc;U6huROL)Rat!ymRXm0b zNmgssfC0%k@Jc3>la!2WW?yrCI~x$$ zSTw)$;K>(&x_Kk{)4TV4_zIwUcIjC=;rYYMpVQMUMSNjmP*8B^31ML@K!r`8?zwqw z_Zjh@o6# zDB}ftk4xdBQmdhA_3BqTc5m-LcI@;IJ9qA^Fme32gBU<9WQ${i+>IA%m(puNtJi}> zEaZaJjTtpC90R37fx@WRCxj#qgd!mj48xX3-w#QWC}R*HnjOU$*bj*SlFf0(eQo() zXbwy(8nuWDoDDb754xbMKGTo^fUVA*ERBECvaiS%3>%Bwl3kD(=n1rx(Bh!j#Yr&SOII7Tz-RzmBrf-x zS7;LFh}r$=>QwDbBfIZ=d(xEeO6-W+9(*kI^w2aq-L|5rqHIO$)m5D>oKwu`@(&l; zxpiyZNs}fX*K0K;`FsH=l`5DyYgU&r8qEpJNbFm^`VWWGht55D6nDqo(%uGm*23lw z9=s?Jpt^MFSv%1PP&h#1&b^VHTX=f10M(_v_vmYvuPhSsh5WMR%RUfGCF@I+Dy6Dh zw?4LI(?%vMGYbfU0}!O}Ycv{Y(73)lD(cLUf(9EG7ss1AZp`c_59241B!L?+0B>)v zzFT(g+1b5g$7(MVo)6I~)t1Oh$p)Ges09{UIEje+6)22gv#Oe6KRL0A0|W*qIB5s{ zg#jRFlpBl!3gr{S0Fa>qHv$v^6woxM^J!EXs93qmvv!@jtQ#|COxEVjn=4G6GUcE= zGqV=K=5#e(oLp!6621_WIgsEWgwr&>E{A~C(#isOd_KGJ(-aM#(-DIOg~y{dOqo8u z%^>7jK>tPK;uIW{GAxuzRTV3__K%Idb)cYkapq`L^FadxE)p0<;sg$SzTm~k;X}F& zpFES@{EGS-II z@7>BP%pEH_!*TBZ{JC^#*>#)NN4$Uk!QIkQ3M!>q+oPA?>J1w=Pt09TF8}1vql530 zN4M_SBNfl3R<-8Q(U)=n>cP#}0XG7{iKY+y{i#BD-}WUyOhd+`V_( zT_#uAA_>dNT4JbEquvP|2ptjtaHJG62wyP_nIJIsBQ$~)LP$1g8v2QhX-L4NIL#Bs z83cGdzCd23dX-hvriFc%5)vOD&!0Vc%DHpr&$YC(vV`RH&(Nb=w~gBm90)-p89QP` z9h%WwF-UDPkbqzv&<`*GkK*Ba^mh_5SJ;%dDB~@IbLnr5ztb2pqZpqA0KGOVH8bGi zg$tnqJ|EONt=7}q`_E!dj;Hi`J%LKn41-LF7)FvZEk)hU^Np{#x1!vo*D+Da%*Sdp z&lK)!(uI*|jZo+N4lGXKGNuYB%9WC*uDo8k+!isD>7K$VVDvPAmH{DHq?WTRbGy7{ z$zwfh_KdD&-SAC8T}x(?C6TxGwz`&lA>gex%|{11OADTm-M1)Q4Jw)jd#d=e9u<4| zhSUssR8W0|y?^UgO!1HbLpP>;O718U3PGXP=$&0FZgFeaaP-%4QZHXVa2!5pc>IIE z;_QW17BFeXw3b7LkG_K1^!N9-dHLvJa>~a~e8huF$f+;5`^~F_%NZFN zme!V*iDHqY^Iwl2Kb$vqTIoY44;{(M%&3RvQ?1hgjZs|E99A8{K+G4iDhiSYkjf%c zsiA(OhRM+vE;2v2fd@mxPsM^k5&#Gn1Jm$}ybIgJ#kRV`0 zU^!vZ#DI}grtC)LYE-IpL9JFd;k07Ym&Hkjd9|Zl@*@YyM$wX!^3cUX2a*-_1|dx& zuN0g67JyGuI7t{-q|eEC!kX=#fu8co15iuvt(?05>HayGh$2u5U6W4BwudB^?*LS8 z>4obM_dbhSfZ`;xyswKgCbuIQbjSh&T1*dejRMM(rLr41)w%ZKbNXn{%FVMrRs56@ zW=8l!3X@W7>6N8(u6?-NT`N@D(S#64MgRn|6A&iRo&j8A&^5JhIbo^$sx?NLzDU;5 z@WF%2-+g#*&zqO88j1u$Orem2jibZE;iE&lj2JQDZ{RAI%N=`k@QHtLE6!eGC585# zeJZZru#F8*KwPK9r}4^9Ngo6%rqkmoqantgNKcL;+ve z`R?=Q5BvA()%@o58)vmDrHByl4VE_6=|CVQ2uEuG!!g{T$jWxmX>~%RUk0VLEk@{sFHmgrSC@DlF^RH{t2b`rdcP3Ni}9=QyhOv z>-lYR@Z-&!H^M2;r#*Tue_DaZ7XpCJs74u!u;`Y*1jSZux`h;ZwnH?l)3Z+(+1~T@ z66Gq^5!|lM*HZvWy@5{&-nVh}{;Ne9k9qE8+|6b_|M}OSc3FljpL-d1HoeGxCg6*O zfFt%bE3)S`#-ev&&}*Tpu*%6v?PqkWhE>xQ)d$qcr^AG+*RK9yZ6PLA3K{VD!jC(4 z@9EUq+xre`BQkQi=+e0-c-e;g_MyuD_J-Bn%L#0ykaGXh;K5JIzpkbpQ_6zL2 z=WnLZ*FS^ahlTn?d(jXB_$~`s5h=1Qsy3 zO^)}iKKPM29}MbVQc{v==f|!7x8L3FlwwHsRx=s_Awu31bZU%=l8Pn}nMsZBg24fO z@FJa1vA}DwcN4oNMHcsUc;DgbBgceZRmiffot%o_4GIbg89QlGoM|e@j2O}2+Kuab z7>(wIQ^`_?0s{jtuU@D{8*WNvyD^{=bs%NKm@h_geDyvtipn83`6IWtycFO%4k!`L^+jf_(U%%R1 zES7+Whu5-*y}QR3^s0{?J63GkgbBw#eSF`*%E|)tdIMNkT4n|W_Vt@KYtH%H&!Zha z_R6KPPoBT%#83sD%W6_TSok#Z0P+g&d5r>j4cBO%Y^`llDpja3anp_+FA5sR&))a* z>*Dh0!Q)6pMpj+)Ioa9S$*cau02R=^`|_9z=f@z{J%a$spaZ^02!6c+1LiMY#sX9u zPxpa5oac;w=i#h~W3+`KI}^9QkP`#BpZ?ur2Sq5t-lUiD{fJW=6`tgq*w;>4v z^m@IncCFf{ae{cvN>*qWL{0;oJ(D1n!H8`+2r@o;^!jt@r$dASTc9yLdw2>*Auvf$ z##NmQpmOjO!$8LvKm;Ov(_+n|N zy7ujgjulr(8S6{K>JLL{I*?h?EV(W6S!AV)Z!gY`OTF2i5$VMOT*%T8DAt;ZwB#=! z%bm^l1)z|KC{xK`WR0OSLu!W3{n@dZo<}6f1@q?IzIErG#fT9j`p%g%=VtEl^bPP| zcIM=%F=9Rs(-XW;fqs6WG1o4xfAQ#qvH?)JmN!b(J+Jo)C;i|2fj$AiJa zA(LnQ@yDWq#^0lJ=K&WkT=>(*5|QfwD1!kcQfX$tzJ2{BeFabv5fQ?}k$YFg{`FTd zpCEI*XB=Ii=r%r93Sbzpv$lI(y=s-NdygMyy_mo9iaB$p!m#0?`&HT5b>u)kl5K0EmEzR2}Ry_c)ivfjOV4*i%Z+n>8WQ#~l`ifugZ zW1M~1l^JJK_@C+$xR6VWo5L0__*Jp-c?1I`@v^si*6G`$nT4xzW!$RiSJH0}qHxlZ z&#HQS07AD<&BC7|xyR(ZDF@SZ*Rjkr8QoSIpj!o@rft3a=YFx3}OANEh zD6mdrffy!+ynpA017N~|=iiGE96T03b*LfTHcM zUAo*wu27N$PP{&H=uqd-38TVa#V53|x3U45Ob(@7oo}rO5BF@=tQk77nZ1te+vhT2 z?3kA-jRt6-;LnX)8};bX?$Z5r$J!a%SeR1{Y>_)j&kvxJ`-ry{j0fi)RG*=7* zwzf9!t5&V%yXU}x0@KN~YSoI=YPGziq$DU^x-^t3RVv@t85^>{5iWm zXJpk!T`cBQTrReADDm>;%X~$}(qGkrvhkt6c@G|}Eo=@cMDf_PYUR;g2O@onSzB_X z28IEH!2mol0;n%GsDjq0IrqQj6Al^BZ{)E z`r-q~J7mrvjsub|)jAz()3PG%9y&{09yhY9x4BuFX1A+3Rx1?S^(J%E^3at7y%Mt$ z`h8NrYp5a&gn);@iDlRr7c58HV;68PK@9P4SX&!Q7UVpYI*LIDg)&P$S2Sy4*PzJM zy!>81BGCr=_uO{;XjC6d3khfq6!aY!*nQcuH3bs#@~f{y2QSyG&+^qug`AI*yrkj7 zhU}g+cHAzBNbE>rB&bwsC|$|rRq(LTHUkF^%t?RpFz!a>_TKHEB7TujB7~LUtDHM^ z^8K!7bU>dzJz`>Fc2fpDpNH6qh|x{atOV7&Z@*qMz5*z;dnYBmc6;6h(oJRAQ-CDm>I`jXj3rAQFr9G=}ZcQ?vo8-R!nvG#azN zvvq$tyvRUtwJl$|c3vmnPVdYC3R9WsV<-4*+Oqy2UqFg@h^bElI-Q#XD3Jt0h9C)w zGm`&`D|Enskw*?4WC2R1R?FL)6D&L_c0^Eg(xp{6!4q-BH&YIA^Sj6(BBYk4+Z6X4 zGr!e>)#yp|L2bLgzSOPs$8%ynU-7jNkOBcZhKkK)VmjdkmE=Bnj6tCd+;Qiemdk)f zrv_S0K_yY8ga+m6?X#CS9%x*-Wnv|$q%c>FGmRqp!!@tnx3-1GYwvn!NWDai;TVRa zd{(U6z-Y_=Lb2nr8*mq^@fjs3q$Y7kW6_|)DM-nd!{WMO-FjCID3GLR{*3;;Pu^x3~(D88|=WIT@xNZd@xqb z7vi)Y`R6bwUZ&*x7OmX7EL**rHPEAL;r!X58~ z2NrJCs=oN}{(}=I;ZdwT580MPmeS1Lfqw_6pP8p${cN*FjYfWapR@|)o%+th=|D@I*Zme3pPkMF|x*y-NhK6!8);!VVN~Zb2h;oX&v#PSW7Y&*8_Um z00zbY8#isM)4prh0wq4veC*k?$A0;Og_{%Kyy|3OA;M^67$?xdxj5+boEPs`1JsZK z14f=WcyJX0?`(})?o$vzp^St2OM~DWST}GvlHPw#KZ!`RYDh=m6IifBJ(`~ddvWn-T;(NpXtmm z|EyDm4u?Hzw>VrDt7ujdv)l_bfk_aYxqikjgUT9tAvt=$XC}qbQep)LWRqbT<_Ie} zcO$zmv8#*Q2~E4937~Qu6~fDo?0V?kY^A;`R#!Q&l_*+>H zkUj0h-n~oKZ;Kf1WM{`3V{ro0VSw{l3Cc2m8`Q6w$D*jWS z@DQ*V*AW6Fiy|P98wQ=OjiftPrbi$~>3}a3 z86|og45)6PVeO{%b=r6JH5;J(d-e>xdil~O3}^xBhEoZrcW$-oem)p^u#QM5GSUo& zd{=@(>+sp#yW)MvkAM7;xkLaJWdtac52`?bLPwO(ik`mmzWja=NuV!}FdD~AU#mIY zFj;2wkge1~NVSl;qiTkp-br5;xjRbJ~+$>ULDr^bbj0Yl(;>doOYSCg&=JWP-GNzs39!U!o4;3z;C z83t+Y+)wrxDsJ6yZc}4G1-t9z*xVeUj^1Ws(I1cQTIn+eUVo3Hb0(`V$bVwLyp z)yqHn!iDvGz@!?TR$s4C!|;BC22b+!_06F-gbp1#^+|kuO|eMCO)J`ojouM9aF&fF z`@%#_PpBbx8nu{)B&pg6MilqyjoxoVY)$F5wt z9Auyv+(K%Z*{@$8ze%(H$m7K`XVv{%W&ApJY?GapJ(i*<3`Z#v7)qa*^tPd1XRu>E z?KA_`s#brbGw9x8Kw#)p?Hp5qaqB=fxE!4oIbV#VbM$^V(acwc;W4-5eh~v z;0uMIH)uht!l1aY#Jk4j>OOEHi!CVOSoTG?Qr$lP=pwxS@p6lmx7N)|QayJwNDLyh z$>G2U1B%~5;R7a)E339~260m~5BG5!N1vZ8f^#Mj(44fpQctUrCm+_L))9@^sV<+(wXt$1_w@|6`rAs=tnqWRc;M~;P~ z@}oxwJ3WkhccQSDrKAA|L=E#K+S*131OybAfpf!#4LqSN-TMWYrOwscBbAn}1z{tp$m>6$6Yim%dRbXjnbARfr zshyWCTD3JhEzJXMU?|IF$dFF1)jT*Cm_pS*TO&8bdbyStA)fcP?51(6D^FpBk z>d3t#*1KQq-1?gLx+|MP)~HMWh&z|ddO(3(snT?J?lpRLgP9vmcA~FOMu~cNtk`6 z$Hc@4cW>RgVc&tszQru9L8Vqf1=os?f`$(1+&3sFk72r9+ zjOPKG8Z&b0lo~DA+S|Z|%Q211mv_Ax5wWp<#fmOh=S&N0_cGz-QngY|R&aHheEC+~ zGW0GF?b=mp!jy^EwHi$s)I{elUA)$9+WIxgl5J()?3sS+!^8Iy6kuw`fD*Ia_3`xT zqNUW$ckI}?TR`$aDz(ZC>>JQ)O4z(SUcBYYmy1rFI<@M?jq5=umg|cLm6JPIXN7T$ zxz7?pXB_4@VbFRszH6ga&TYA@3XgulS+BB=rof?i@prA8x9GBE$BuhH^8U`8IbOGq zum4Q}N$}A65DG=qjQI;H_3z*Rhci-|)^$f8Z~xd^x3)@!JON6FA{2_%5j%F&Z`QiC zSpmIE|M;WZ)S0t(mvXQZG6o8gWiop9%xOUrr_J2jueaa%<42EsN+lu`5n!}IaWsS6 zS06vW(PvJbTwp1Y2n_}b#8y@^&(^J*gm2npRv%1t6&|489I@VYd-t|P-s{fDK$nN> zQ^+^P+OKdLRFn$J8_FE+Sut>MpPGHXd4kBH#4}DZm8yDi%qgK=mBOoWU%-UHue?1` z_Q12_176EM_4sJ`P=zl<94x|k)Vi@`0cJH*L^!vIzsEp)+ZrHqG8_KU_DYee*(>I{kjC=s<+_}?hVsFF_LUDhHUV#2Jc~3cz z!T_m3tkVM7a*SE$5GZj*2QDy-3wSpMYH&AcNP?9zz z@x6KWWdDidCwf?0TSD6B492rQ}#BJ)@6BMR`btLN*=D;E>24WO2Xh1o_%MTNh7{><0X!V=F`Dxgl?x>uL2TGg&rE%VQg%nMK|xlchfgY&P> zTdlpferqDU>4wt9aw)vfLMR-~fc>bA5|oZGfJABYxmAhQUFSBNnQt=xuRq)$%~XjN zhPZ>EdvxO2SsD72N(5g*BHI>cCE`3NMVV3I3lHjxy-K53f~&aV^~Eig^(b#qKKW-r zDfhFzd-tw(EB59gjV!y8m`Ab=B64c^^5vfl8ZxBIfUf`w8Oh~xIU8?Yn2X2b(S7^& z&693+<;q2sRxDT%qf={~N;;Q|_V3cgZ){jtM!&#bgN_|OzFI02iS3FPyY1uErt=>w zSANQ`y+5W*aX5M5{QkIm58T^%d!6v_>*?p~J61h)?5MsQw`|#t)|;iJb!I?5Gy}vW zzjfoZB1-CHP$AosY@ArqU|{rNCEGgH7r+%19dd6)L>eOIkp z_rv7RuxZm)EnTsEgtdhQ7eIy)ZwB=1<3E4#aV+6en=JYPD*|L&s0(*R^Zcd{g5h z39ww*)TFRlxoZ&<&{!^Tp~G0DFJP-vLF zyLO#@;o`;VB7q2JC_P{#kr+I3Sodku!tR=}tf0^U756btyeMwz>X(LuL3|RW_C?Kb zF8IP;Y$ia&5Jss^v;fwWRQ^ZvKN>f1YWBmsQht3n_2E>V$ou;OKB+$RO4p~Az=b4B zHsh2UB(@V=AB-uzxJc=r50K#O7N(eM&WndO;tXvTG!Zpf711FA1ZD2QZvLVg%U6C?DC}V;6Yu3hYvT)gHvFG-zX3?AaMKc z-Fy2Mv$uuz?K||S;nwi-mhkXhDevEVYYaNNW}P~-&t1AQ?|UEh(7}UiR*ox@yT%n zgai+a-o1UNhn1BW1j2#=Dkd`0;*an(XYb#C&;+TRYORWLtyE=0y~a((uUN67z-$bK z1}K!IZc)sVc@Hx0junz3g8k@n!b}VIs#z6}p@AYPASoQOGt|(&bo;G~Jr)NS#fO{9 zq+0BZ-xGTJ-szwW=2ID=Siqx6qqv^CtH{e{N=a-?>A*r);W0PQ1h9N97Nj^ME3%2u zxE?a(3h*!KJ9$pag5%K&no-v7)Z1_Lv7^Tq*;`rg5q&Xy@%M?1HvXveDi=vNXWqGJrO%StgR%-_zr_ZhJ91TGqu~Z zYp1q1|GIUQp%?+dP@psD75xVeXtQAH%KT${a&@@S0EKKngRc#k@Ylz-#2=j`@(Yrlqok3Mra`ALk3K#Jvkt_!N{Ku5kL#6 zOP5ab&Yn3l*-k1&)Z&aq%a=4if96!33umHt(K-sg1yGe-%C%L>m8XD0$-g*md`@UB z8~@08^N{@<9VJDODnf2OmFvEbHE^{`1sNX@cg>TRm&iwE5ai>(?#S zDK&htt>xSC)26ix3JNOp2V(*#6c31OP<`^TL81Pjxwy1#n*hp{Gxrt!P`R|UG|a)l zLH{$x?A#51{P^6yhj)*M&)&Rpvb2=I$J9({*r5JFk2c-|!ot3P5CIbx$D4ELz`#xG zH>}5yMne#wRAg)1y*#GXsO7e@u(5XqO~{ZTgQ9nD-RWT?wEzJ!k`E~upf+q+XcZp5 zef_78$$nORAtsl}p{Yl!TO&q~Ygy27U4;fHG=PR=!e)!wcssW*60+gCb?X{TpE@;$rYWjb zs}@sw_vyR-e%$rZJGbpxN~v|=;^OioaPZ*2sd%-kSMic(D^Ain9S@N-Q78&a)-+K^ z*aJy15Q&7q5CkF=r8zn}2Hv{+;B0=cmSGrv_l`d2uEbnv>1gkux3#s+{P^L$BU+FR znl(LDzge@+=6aHH*FSOG$iVGeB6g4j$*Oq%{r>L7L*-F=mIZU?j^N|CT}~o$Hn=x$ zFej3Xxs)I1zvy3!y0l&j2i8)psfDuo=Y?dEo|O@|H#eSLj@T17{F-?8D( zhO-weIiXU?9E1cPR64z^Y176_4q6o^S42`T9r(4c<3 zO_QdNp4_&ruh{|dW`3&BrM=Jj*eh2&1$-WBgBmA)8VkTPdH2;r*^nX)7N zxP7xwBjmi5-1uF3Cy_i-fwNh~aFk7(;gdY# z*^_t|rB2Pq2{O&W(JAoO-Mje$6dFiSfd8m7QKwd71OWt_=N$u?LJ4CgPVk!+7WU0# z_urcY1W?-$K#?3k&mZ2muVQdWNR*h*bIr+f&u&e~MrzD=Z`_x-NJ=hrgv)-x z{Xa^Z!{8JUG?KJU{3i~eXa;9VyK;FJ)N9yy$GEAJgNrcjF4m-ey`fK^Jzr@fwdA3U zl}fc%88&;)$`NBmP0w$B0{r~?o;-berG=2RA#oD2WODFoKGU|M<~kPc&yJA5@T;0EO1*k|hg|ojiJ?os*RfB&Vl=lXKblox3ACHf-4Pn}Op$ z1W@ckJU49rwX_SqHWF*@MY4KP;nh4=G&iRHWH&Jcc50gOF5Q0k+~#xF7WDPTWyD$C zNW9^7Gx6qxhuLurcy=fcI3EZ-0N+Tg`x|W_CztV08kq{}obf&zyJ!3Wlrl90y9Uo2 z-e~v?Gaomr*!uPBTZDv!pgd4)C`<65z%dt2om;L~sG*FD^OL^$NKkIot9!|0vM8Ne z!`I=4r^gQ;=;+qeBM(uqlec$;=dYfhP%0FaNt{e`bSM^h>j5W0MTUj(6KJ}rYxU}{ ze0_b{DET3Qfz@wZzkVS*JKGT@x>qO^;99ln`^~#{Rd986)tWV!uL?~WH!^U`maRKb zFs+rP+hnT%=T(K4d7ce`ODM~?iVG37T8aWOIW!^V%>`1s+Y zu8#KhV9*&rrjS9^8a1XjZr*&k$*3G27G{yI)pp&qY13AkF_4I1uTZFHzK9<;YW(EZ z6DCafWhV}|_wYFX@csi&^sRDCa`V%zBqSubc(rQzQ1LknDpjs@dB(h13%uKRzVSVK z^A7{mhKHMiH{D&m0ka_iXHb&49|Nb{FN)p6FaVV{8|n%hU7yu)wrBZVr}XA7iw+CD z5EoVNVsh+=B+VNyIi|1`@dPX@7%eB9LV=WAoSeyP@jQNQw3w(6oz&_)yor_tjktv~+v-8tI{e!v=8a?cJ?gyK?xp^gjd>=*W z^?WTx$L~6Fu)Rl9k33lhs#SBTpi^s4=rroedJ59&)TtAA@=WyE$jC^Gz1y}0#ofO@ zqfbD<%!P{=|B32ev0{bw!EM{NynXw&n?NW)22n%Xjvc3LirBuiz)pXo0Ft00wrt%& zngLKFLqbkk5PVk@JZocTmngQD-Y^*SoEwMB$j7#l`|WcFpBSS&*;qs_?vmTSI5}J_ z65AxbPV_eDbhuohU|O~D+B#s!kkBHOpxD+n|DW`WzHAzAX}w|Ql(4ZY}}+_@WzeXe%N+v&iiTW;eI~; z!2?e;FRYQ=ObN3-gBF}|mpfzK#y4+Lx=Dd9)}NS02p$+X?(&%nOEn4= zlyoltwEy5iUB0FnbnEQxdG}V_N!q~hb(G zO!|azBLgQ+2|MG}f~92b000^VNklQ;W&tDEtN=cT4gaj@BbM5-^h%3XYn}Y{0 zdGqGgNWMUTi6!FnnzidS-2vzs7v_KD$PZH-3IkB1LV{0<34trJ`j>Zc-d3`5<&o*> z=|3}-P`Pqt;4@6|V+RgCR%B-J6)FYe(W!mJ-h)SmVHj3q5|pWvOO}K=9yt(o;OUdc zEl@6YgAV2Drd0LoH$1IUWRp*yKW&F&JU){BvgC3oR?_KBPrsh+=FVO8qOg3Y!cI(E zPxteW9^CUp2#)|NICw|WUJ!_N=< z3&eaN+2mV4f3YDWm;n@8IXLqxz3E>)s6*!pou40o1E74ObV$$2Y<2VFweW}ZQ(MFa zwqgiC{1GDxeboV@>iHi5D4kkQyV*4QV||;oGk^6$8q%-dxR~=7mTKfmDB)7>$$)%# zP#xO3`^4XWd`zd&lD3YHPnvnO=(uj();tmC2%zMd@)KH(s{QRl}SiWeH+s;j!VzbjelX9hk@$BTYZO@^jLw^N8 zq5jUDJH680U3)jArzSU(iY*AeUJrV$4j76Cu^1(`!$7UqY05df{&ncs@g5~gl=wLm zHgl3p5)@K{`7BY>JR`Z8)&H&7PXW}rr)yg6e{txbjLx>>F$9;lE|2h>;~M#H|GxH` zAvyrduF~MNBU$1vi9mdw#tjruO!Fkwrxq$g#V64r3p5Er0|N%q=pO$rLYn%LyU?$e zptv-@NNpu_THw)=HyvHO28^pS?w4lLM3apG>eBfOOVu(3lyENhbU^Unze!L71AN0S zo{gS`PWdfg(e?4>9b4L0tLBy`<6@I~^<2`@Q;+L)>Z%xqtIL;jetPfGqiSM4Pe2=J zuyZPL)6?C3QI*=YPX-4ELz@=Ojy`(y$VVg)vT<){*P<|7->qwx0c$pGGJB`ZyY1X&t0V)0Ckp*%mA(k_WM#cc_Xm)#E(2++|m zrrggz)1|z!5L)CkI{pO(eiDEa1j>A5!B7kB*CsRO8o7x+v zR+=^PS1xK(|8pcLnF5?DlzG~>|G=)pMvu;8gX-(=xBGO|Nq?PM4b5A%+84H9QQxoA zVFdT@U*p=fYo}Gp?2;r7pw&@8@=3@_ONWxB%bxAgv&*osg)3O8Yr=%li#D#^INsjM z64z<9tlEzbNkB(U(FF1AkJ+=k1%-wdo(DC0WMD)@#15QKf~EA^UOZ$ZH`$<&1XYv( zwP3-5dIz>|kIhU;UJ#XI9di5Hb6~p?o>$|Oo$N4As?;8P1RA?JiVcRzW6w0ic zT}XgpPfuNSW0l9&7u)ubmb4>@nbP5!KGLF4`b=Iv6FaA{L;RP^qg>jw0f=nAdQq#H zo-NCD_~p`*NrGZkyl((hLPCO|uWyexZ(qN0%91N!z`*`1!#8golY6$%Cgk6}`?$-O zFE0`Z_&}gT6KNXKt){C~sj|6WaPas+g9hass9?_9nev|jsBN*CDd{}5TEjGL;~vq{ zvrUnD@y3i9V{0&IYP@>(qW{~(#BQl6$(B-)ggdNKPk{>Q;ye^)$7fUhq5~{5WD1aq zgix<`?Qn?m0MS=T3XzgHX|q~sN#)F7Z0ST zrPdVi1%UJTnFIO-_Ll3Yd*@D{+>`p@qlZK&0v$tZo3?B^YhUD%0*{=^qvCx9Q2p}B z2ZhQXJhz@Xw`1nZvl`F~BuAaSE|M{zzon$gu^Q_ElO977n0iOi5N`n~ul)b%ud<9pRO{wYW z?yp|GZbNBx7D(+u88o$8ghd$e1bnTvolSzRo&EXp<;vc1tx)M^If>+>@7S?L=8)ke zD9($AXa?pm$<0}>-zpQ-uiuhW$BvChi5F#Rm8@g8E+JdC?cDdR^7$HV5OH(KqowDc zDdQ_!kkXt}y>o(Zf2N23hn_X%N+*oDl?((0TAd2239H>1S-F4fMy_9iE`Rl~asyOx z=h9Dm_X+4adeS6T#k+Oua_N9x{jX+aWR%4y15~b7HFepa>nggrx#bDoe-jfUoV0r7 zhKm!^^>lM>cQPC+SG*R7Xh zV+Wbr&iBeqo;=z4?6D(HGm_Kz8jX%==G8i)rKjf)15{R4md)7FL;JmcmC)+L`%m?= zQnPG$BEATv`y~khXthdEDU?v9MpbpO;!X={*Q&ESY~jM!3l}c5dL93;&0n|Tmb`oY zs;opJ1)fO2awt&hV8r9n>hv^0kV=6-kWsC2)r1nIN}iM2IYeR@mcDf9(x2i;wfAUs z{$U;)6q2C+p0KVc<{Z`G->qxxr3)7tiG?CaSF1k{4+-fzZ^@EVg#sv4c=7GUO%EpQ zk1_}uYd(&oC}R~xqvaLVcz;&v=z>l`<%U%xf+ zZDPxw-MUWQv~}AWQ@Q^A`&++%^JdG9o3Y)B+1Nt1LI!q@#qVz1vZb@TyL(Rh=FpIV ztGDmkJIq!pAq*4)3au`~-@jLA@!};9niKj`Xn-R5uIT*1+Kn4ruUf165`)ShCfRho z-xlqWtV^TwnoJi(p|CdYGB5_7gy(wb;E_4%Y$dK%X$l2UD9h=&bLXVb9z3uqU#?7( z)bzA=PoF;VN>59*Q7Gjg1i4oAmw8T1qaah-#`?Wda6YaEZ*vSpsMc=5kwBS32P zK>uD-?%jXj{~`H989qr^km$sr+zxFNmLpey6rE>B5VUjIavxM0ZFJ+t4HF+eesavA zWJx8C%qsv!$>n=Kp+;tprGJ@DfuL<``)@neP6U_k+fK` zV%oQF-|F&<7eqnSDevFA9XWLHRO+Ws)jsJyub1d~}7eh2b3iR0;a4+3%(fC$lXP3rG z7nzuC&TzkFBoFlW-*E2i*?s~ZU!c$^p=7C2ce?lRZ5tLA_Dwf+pZ@{Ov-ju(nUnUh#LhxJ>dmP0P zQaCUqjbU6~`7hTOB;rz`B044~0q2BBv-W5sx&I@XjashyTTp&0Z)Agdc+Zn1X5$!y&7Bu8C^)oG z-q{NmE|i=-XVxELk|)=yweM2W($qWw4;&mFKp+rPbM08i+gDX` z@q7RGE-tPs&l2a%ZpN&OG+_XhTn63BblKggy8AF6yMIo#GtK6=R6Kt_zs^^$T-l=2 zXzcU=>0LT?8nR{Ew!_~A364yiGvKJGD4Q)CH*JZzbfLYaM9gOogW>bD8q}@V{@}4= z`8olDgZsIhK6!4hR;8(LA(23aTm}v5xh0;xaKYIefZDos+YYo)2_8Rl*8I7C0|o^B zEzp_^bqPLcLGWA=FIQ_YfKICebao?`qa2-v!p)HB#2wRo2k9ksL%Zvc^cO&`EojaY@t_`0cxyqF*Z%xijx^HJ!_H$vg5Nz49NP7Fmi?UAtue~deisDG))!ox` zzzm0ggCK_t5M^8yFFa5Jcw`ez#7z`f5EX;EXr8(l;}tQHXfTM+7ZDE-5>XE0lBlTB z7<4rfZ$OPKD+vmY21c$qdS<$(_f^k8SmhXC@W|`_!{@`I>Z@P1Uw>8geZOB{`|5g7!K8m7~wO9l##g+gcpH&1gJ1j9W{4uRAOQxlzz1po=tvSn z5d?$vm(bp-S~+-se&o&_scB0)dSBX&pbQMY2u0I!tH`5Ej+Sa}_zSs06c$)APaD7a zYC0(9^t;tXfI;B}(WA!l2n1+ICFvuO9y|DU&dkmhytmvli)crt1i`7oX49%#T?Rx@ptq4*8*AA50#U(LvDwsY}a9pFQ=h zciMDN%NE8QhY=J>Q-EtBP{HD2C^*Tyf<`e+_;(7@&%>V?E3}v;HNL1&XUBS3$JVyYZ`|ktXGfQV>k<;$jS9N5HcX&UP{3=bsqwjb?ONo8pDv7eRQ1q{B1v0{ zq;SkYybn;w%MMWRq`m=!g@$fO{pza@i3FQ%fSKea#W$H+JT8|5K8#xxv3Pl0mmC!A zD>^D-Z(erZ0*5}f&roc)h+7yVzea-4yL-6(a`xPb04uBh9Tq{Gl-Zb3o+0_>R!)jc zSrv>~@~~#1%Vus#!(@#mDP2YXrD|`u24GZ!jbB|tqXC`*uL56N-zDn<)^{lH-J4U1 zj*5!=_vs(DLI>q6al0EackayC<;$5Iq}bS4Z$N2>f4OVV;qGR4ulwku*Ru{COqEqX zd~M34N!vCjB_&9u(oX3;R8X;zlP(&;m1K)$0k>3>^e1Nopb($g8b6@jH? zU3AQX*{jxWXeWYNblif&@gfmDka&6K`;Hj4QK{^>ssjEi-p*p^fDXJqE&x5AV(nU%Se9$weC+9f9@4BMHq`?|bVj==M_;K{)UVwZfdpuJ+@ty{K4Bqt|j zdU|>lJ2~|$au)adR#{tHHeveohVbz4`p&ks=CJwcKH$N#OePcQbUMpgnM|xuH26)N zF#i0)r7KJ>Fb)n3DlWTIIs~OCz~wReKXQZVcSLCv`THa0&nzJ9Zo< zu(U*IN>5W1MU@oa1b(AN*Vf2oIRm^0KS)kaZZHKilN}W7?6IOk99OjNM5*kq6tzOR zP-_ft-tx7g*6r%#UU+-sH68p)8xB_~K&uJO2+^o-_Wd<;E`lH?6+*u7dAuS9Z2tJ; zki6{dM3{GjayfN#qM{cqT(aaD(*5JdkGsYFbNOBo-(mp#AbNRv9XXVHc$GP(nV9&g zm(dG@hx^}2WO zmfac%4{j{^7GTQs>6u|+VP@N&_H-^LIjGiy6jT-TKXNg^Jt6~T3~#J?EC5Z zyPg{Mynes6-7t+nN$G${WvLtN;JqW*=Z$S)u3_EMpnqQWzl!5P-l=27#Uf}sDG=zh zva;HYK;Uh1NJxm46@p+u1b~OfP&Fj)Gsm2v0?Xsa|FKp+Qlm|cjbP}63Cj5Rc)}cg zvwfHkfi62JICSpqT;UzXotee=u5Nn3x$nZ^@ff`^sNQSp)7-LK2ADcXyY1i=q#+3o z(Zg~c07z5|G^$46h)XJGxK5ArbM`A3>16sgr^hC-9k2+n2t0#8kNm^_l9U;lW&5*L zIN&jg#9a{ke4Y*p-rO)Z3C&E5jB*XUZZ_~(!;CRCp>7;z?RjOM&%D)>ByV3~-xU@C z7J(O!K#v^Mj`GhO3d=8^tRx-|=c3$hDZ!W*0)rQ7aY)8gCPq)e$fD0UMk7;;TBiai z1$0h4*IPdLki=yt3Q__lSyVd<16> zmra$&?41azb+3OoD|qmYQ8Xi!4Pz#P(gLlT0Is;>Lw^tdgPu0h^ic267TS>R%CNJq z7>fXlfO!$O4j7bu?<-SSOm<1K#v^Mn)7S=U1=yjCnsfI7Bmh>=1k|= z$51&0bBid3_XdRtTjpe?Yw>ml2W8mCL9QbTXti2^>quZ_DXzE0Z0-sKqVzWgOuHQ+ z3BBCiq(-wK&vwEhz#`Bo0zGn2UzVhf&Hgp}dj)6`3iLRm^!xu06t<)RL8t*rqQHi0 z-JsFw1WKKn3oK}W;TXVSvYzpbh{^Lb7Wpw}My+!IS|2PigBaw5V0jG&vsY<~84Fg| zlavmSN-Z2u<7DSjKitOmM=ePtIoLW?#Y$rzb&3kxfJJ~s;H5yIM-J-i^4;+}Z=`M@ z_*|yinnxNO2ds>SVo{KJ5^chi-eT`Ef0v2*jcucGOmME2x?jaH+y zL-~4Z3a2p&gSFQNP7LNxCdx9@$+gtCGBEO5B+12?VN0VJ)fcP}2N8@E(4q;!NNBH5CINVAbRP+gM?v&^2;VH7(%i z@%}Wev(qEAh(-aQ#83eRg}R}zHATyD3Meryrw&laeL!P10zOyoZ0DxvkGfuWv2wXK z(0gF5C-9`$Eu86V$+lz>co`AsQ3SQN41SwOsIrqfK2};6j-9G6kZOH=eCR?@NCzT;Obo|9ECMV7e+~q??Vx^D{OY*)=+avk>|@H7Ab002ovPDHLkV1fc9lbt$ zf9t>2vp&lkYhK)Y+TLfMb0bxiW$>^mu~AS^@Z@A+>L@7a^iO}lXOI7xb9(jx1%)0( z4)#{V(`c{Fqt#L>na@Dw?}FQiTjD1`q$G$5Dq*K(He9iD@iqdJ-%wf{Qr zyB=c(=F=xVkAC`#XLaNQ+>!Rfc6tkhv>?tfP5g(zGa;TKpG94a$Zfd5G9B)|9Bvk}pHbEsf7=A}U(W1w0np8=LML42R1F z>}~!1)({A?sdDbAd%N7LKgq7c3m&^6?{!>qm9E}>33OYe4+@Oa{)f_!)$#Ans9|Dw z)^&7gbk;ug22)sUXQb=j+`P#2`?Jbtnf4#yWtu~k+(W4Wj@$wFTmljojcl3!Gu!Or zS)$!88h;BsMnoCcQ#^Fedu@UdDVg}Z0(XemVLX97JAdc>=ZKxslngrmfQqL5ewJ`u#QnzB#nGuy7($HpQFk}ni*`aOrtW;pva=&r3r}ljQ zE?ZYve5bJMe9lnVwv@9XtNvGpV>&5&yBIkxt&Xu-e)8OZM&T}@{Qxl6@M*7a@yhWs z>89Okc1UU3t@s32>JS>dMNHjf7#nqbZ$dCM}hSS!#uScL|Q!zegvXEpi z4HJpp%!u-N!3?ks288?+VxnoFFuSi0$c3*^3p*f2_-biuml!km8ZSgM_ZpD!+KO=ZSSUY2=8Z-eo_T#3%Xq(r6YQg&2wcnmM{5p=^TIKRh|U&PgZ zWh`$;>phC=0$)oSov)Rv>r5(H#+>7q(B%HED!`}2RMY-ww@MOsVceBtPD3ss`j|jP zb)XjSD@kd{IGX*?Mj5V_qb0x4Z5*bh_{WD#%l(?ae2)i02-h~woG4h%)V!Kpk6)42 zX=#2m$D={&M8<&qAI>~%?U7IVLi_&a-rf_=l)bAWIWo zKvQJm`%Xg3$FZDRk-EbYPZ}S`?Os@jyOP108(2li0in0x;rYj+qA||RIk#Sv9c@^e zEUr^MJnXefL}2GK<}ct-)90W);y;0JoLxV;qtXy^$$$1gtH20&(Z;1EACJ-5@14_f zv1s_{BC(O%)y?qqQva%!tKSy3!vb8HwzOU_f=o)uY(79veweIHcNO*kY(NojCG7=R zXF~BSeRQbFpE&jT>-IKrZewTVZPmwJB|HW~13}*8|`y}F8UzvBx$S?Y8vGM$sar1{SO{+JVgaoqr zxiIW7FeQ__xsC)kE^7SjD?2}s^{N-~@|bDr0v_DiBs)`P=&x*;=Ih_(fh=Ghmxa)y zmq2D@KIXvap5OUp&-@Ru?Gz!*gNq)amP5BcWqiWE=2f03ul&9veH&8vA2TUB)x~Ba^vA1`WLb+}f#oMp93J@P=!P+J2Dylk&zZ z+&2YA!1xQUNTd|vCO~h}itr~einRf6cb&w97sSZ;;Q!?N~cuIGH{H851(g}V& zh$?rLob|1XG?rt4P_l~0i*BSx7bAp)U*|cqx_U$kBa5A{w+oN$TzRt>v&h-G5`pj$ zrt8J*K5;E=J>1LQdO2MvwqA>mAUfg6J_U;okD!wVe#-CArj^Z60qwixSojpz!kq89 z*$|v29pa3?XG@C7xn!1h(>7}BDia2#5W>jM-^wu*d?{Zt_?w3USsMW>U?w05EkqHxLo3$GY5QGuvLUSkfR7mMq9+ zgN>jsQ55EemVn5~mk-yXdr?c=%@CKMtMEMCt55uF(Mv_-w4@1h@9g-|kxnBf+&_KZ zh#$hw5kZfxI}DPBTKdy9K7Tx&Fu|!1b>pI2+0`+DvB}Gu+b#q#S($uF*BLMt9Z8uN zWE1l2QlXET9bn5~s@+pU+CxZK?zaY}4-Pi{{73c|083W3wnzoEd7d7Be;R4Att^;k_@l&P# z?cr=|g6up!f;N8Kr%V54c=ZEuG8DuA?Y8qH!b%&CZM_$dapbqTYi2$JxTOTb0ItG8PrW zBvgPQ*}hjBb2dDK{ImN!`=qZU>*5l0APagY^zUZ+syC(uL@N}{l7Y?@i z$WD@T=#;xF+|faB!S`a9i~9k&;s;L^drdG#%)r`m7zSw7tP)WkSH*VKGlt06_Q5os zFI_N6yxQ{$qMwB1s<5G&4(+KYlIxIpXwmgy>#XQTT~Sc)?E-odvhGC~na<<#0R#J; zx5TZf|7f)LR;;A5kv5`!DQu`BM=O^M1@oirMON zT{!x?Kj;hS1a@Zr_iG(IOF!4s5oU)Ai?^#8x?RcyA@xT^)Tk6HM4!6weF8zF0h}1I>2`b9VYw_2wq0@+8IHmw#QPmTBEFO2?!0gLmF)5G%ZK zOF-F7?@oQE*j*6RuPO{;SpBW9SP?6hUW+{6eg5q@iwYrr?EFx>O)Gr2Y0?#Jtn$n2 z`^>~6Aaf(1@Md`T@4q}m5bH+JL5y&=xxd@hw{!)uJ5S{C1(yJU7~y`RL{c5s32wfS zxy)P?q!4h*$A|v*!ZTr<8R>6_Zfzaf{e3~WY_+SBOm-ki75cjkGos;5im=h}Xcde> zQ+)myjHRsT`6E{Y#0p-Q9+o_||D2CbytBV_p3&9XWO=;Zw^V;bp>nx1-?xADPl#RH z-&9@+0#AF&3yO`WywLDy_{~e8h)3YoxOi#jdZlgbaDOw8K0NhuF)0os(v7|-8Reu3 zW-`6Y2~db6!klBXHhpLPQiELv_xJY*#Uxc+*N*peVEU?<^6Y;5uiUzFTXk5WhGU6_ z|8M{yGwGlZG*oA^&x9nQNz48(2Gl!rgNghoc8FYMlMFyQe8W>M%UhEEjq9gt?X}BQ zcO%(tlL)#D%GV0Dc~2fM^nCPq`gmeF4IG{75Bgn+roh9FhU-Wku--&B!<>eP&j`=fwC4Cbjrw zDgt~dXrNuxihRjx5KQuB4q=oJHc7_=-le?^M>jDB2h>TftOkt*s$!EJQl`9T7$9bpn`zNnMQrH_^}EjF?b{ z9ui3F`jX>qggNw`(7b!bVAp`Aj-P_=8QZ$ANmGO4Uqa3dy7%FR5VpIsig?~zw)z=k zeFg@-OU-k!!u(-jlTn$Jw)GkD43A6HO}pm5{D;)I&tmPintn`9Jw@l8=;L8e4}1Ov zKOS}`=%BGfWYTvxL0sT4U`Xt-{MaQxU{eX7Z1^B(6(z}4-DDO{3ak(t@;GB`a4C~e zhRYgUtEY`zx0s214eJopFYQQM>dNB+{Xm}Tj^_TBl{G8KKL~f4r{F;FMelMT>Ij!Gv z=B7jA#ub$tgH7^N|D|aANS%1fTPi7*M5;_h#ul81{yf_EiV7L;L2cK5R?q~XVTe1= zk--=hi!KbNmR(V1+JK=y0JybTsIdAge#$VRkzU9{#buy2+DB~3!r4fw;6TEY473mNW#kOasF|)@@{l*zkJwp|71`@`@#SsOrAj)heF?T z-HguYc-$($?0)5@!+#_rnanXQy?Ao`$-;(D7Ixcjvh+Z9dY?l*9t>|X=zMqU5yXe$ zgSUs_WT5ds4@FGG$)-9@1#VdC#3*gg?wMTj<4FQq>xLa74X*rIi(e+tv>$+86=}-I zZ+zJN6BETV=;I48P>{BFXgr<}CDw+Dyvnh#0!E~;jPgq;%0)6O9c4v_YDebkWX+?z z+6tL0B^P3J7e-55(p(4+!MdXJ6*!-Tef(F!H0pP9H)MPi&E?>|-2UKka1tu6Gx|=G zz5OZcD4*)A^|Up79T9Z45mcey^4s8QZ7O3lDQ|fi3-;cq#3t;y5+HEKZWR6WbhlabQ?AUd9_00H zGuZXDtfBwjGXA=V`R7o_t~)=^=inE-hl~R%&g;L!#Ao;!)0g|YRS6)U5~#f^>!pk| zhZ+aMZO%Bph8AL(6Uc_;*M*q<%=@<|WVxXb+u=GRr*btNEIzwi|4HhT{=cdD$wB)k zSTlNpHSaU++6FI^anZ3#6ZbWDuGgu)CmRUAhxYGHcUq_xq}>sa0x%fUOb`<#KnqM* z_@Y>Zt|pI_K15X`Ok#3Ak%^B88lD%XDJilwMG~*K`tB{Qr=Zee#*bI><6Xy8cu}**}RXA2W@XYnBmkV`o zpI9OzVrP~3ms;e&dVpX{tLVhbB6fqm-5+dmcr=N2Uq+wfZRbtNmxNbj_p)03n|}?Q~W_1nLR~g zQ_=LEIC%CNNGdHN_@NSQSt8<{1UdHE=_S|qFcYtOxn1>}nw(Y!4TTdGys=TkMC7Xu zE^Xx)sBDz%mj$YXz_=q?;T`vS7(M;U+kp@p(u6KQBA2!bWm5s9hMy_4?I-%1Y1}J_ zIl9D=3_bn(rtXs#srv3TcaA>TFeBE=hjhH>uh)Nw|B{_(ZS%P9K?GcMS8{rv1XX6V zxUG1+;908odFliU+aEiN^lQHf4m(=%RLtuyXq6q;lZaZf+jOBrC4JoTj}v=;bAv3= z#$K01VKVRme&p-rNPNoCQ-@Y9>T$Sa>eQO+!6A>lCZZ?5?$j<>B>B1ovtbPzZ~f~_6U40~D5o}@po*;Y0- z&0U_|7QXITQunj@=F|LQ+KuUewBlZB5>boV_ckkTj~Ly%!9+(ruaj4fUmI^eJ}mOT zp`JQja(E1`lc(Ss^iX?U(3OGQF9CBjMvwYl9DBaf~gYuS$G%;jI8wIQ~qsAM5lc(5%wim)o9GI*qxUCg+KT&(+%G&R<$)f7{$&TU=>v5DPC&ChJ+L|pw?r@;Z0TZ z*kA<%{B4s`O(U?-9;l})m~1G8iZO1RZmyb4v0!p5EMLih6VmUX1Q!$VGRi{|M^{>k1}iROQV@E(;Uio5QWG_8v%B$wWoqC% z@j-UY6;akdvU~5&cYy$UTms-O8wk(#lct>0L;U=+5HVlu10_&DyN7uA7_+eOLV6MOl1YnD-J;~59Wu>&$)kUvXkbKXQol66N>3t0g`dR~=x!x9(K+2F`|~|o zpN4zbl;d!B-`;h2`TZ!)OC$f&doHTsZvlQj7EgMVBG=O$+OA7=g;!~}4qDHO5ec#F zf3lD&Et$fOXCFH6_2tK3hCwVQ;?!pfknIk5m-6OlSRoyive^u2&JhXM5pkdmJ%6QQ zhkfrkR_ES-apApU0X|AVY7y!l!kDtVieU*aDjooPWfm-8<6;v^&yk2fpQge{Uwmyk zv@tOE=NGF}Bi8hR82RhfS6i6w4>4$1TlQG%FTUR<0V99vG9>jS;hcgONYvH|#0&PF=; z=}f%LTZpaqixAVCB}KesfPJIcMTb{A_&68lNLCx5U~O z@AB1`*)1{&YPf?4;qYarlCbD$8Y|=_D2OBHLb&9EwW@KfPrS%d?luNxvoh;^IMZE5 z&&zZzKX(Y;H}D0V^gT42Y?d#H3?6>|_b6X%FF!VEg_2x+R5Ih}cRbBg_shn^7>?fQ zSGSmC7|gOZK>?Df?f-64`7jGS10w6p6SFCDiBLUJ=M~I@(Jdp>WW~tCP?AvmIRC_V z`VIUL?0yv9DEMGZGTibZkYm0fKca(g1{fje-ZWJTO3oiB$K6?~zFe&Lqb!7|D&c!T zB9i1#n$Y{y{Ucgf@%1x=-$uw^t{UST5AOR{B!2lhm?{gc`a1kv!l-+CMTo;1n4E<2 z4Nk^-g+h|4$xKuKu~b`Z(;nwyVf%27r=9WY+U`sCv!@bG>8AeL`B9X0Utng9u`MA?gWn(YQh^sMnyt5eMuvHQm-P1%8}iSZ(8-9+6qjHNk<#j2KL- zKZx3nCzwQ^wfaY9De^Ms!*oFPos{t^Zz|^vRHtJZ7m`$5qVoeyeiDTplSou0(G1mk zfep3^d(t_Cj@jfM94(jdu(pUpnOOLV_TIVl^y5TtuXH!bn=>etkab&#e-DB7^q1@g31tlSW}LI7%-eB7ZW4h;;6ujv1AGi*uZyL zIm|e+R}*sT# zA8AL*DQ~=WGCq0x3-N_vhTU#YTU}k=CX|GhDL!uf4gaJq#5ya)G7k{4sef7#YKXo; z$RZ{wJA}jrpvYne>ru4&K%-44x&%^GD(j=d>eaN^rq6yU;TsxK*@Gu@#Xy9A9j+r8(@GMeIV9M6lAb6M@o~%3Ui1N>__qYy3?-tF2f;w>f7-d zJllQD`jZ#3f-2cV(bfvtsd4(`zH03ZCB~JYgWT|s{KgNxO^EVJ!Rh&P{b=+*kunFn z!Xdm7H=64cD4ZekC9#PS^Qm_RO``mRMX$5!J_L$4?m3dnk=n=wluIa9IYe?7H#kd~ z0aqF0QNM&7Gg~HLNz1*`I#055qS6d8%8FLFjQh!3eq@cojZPLJEbc9=03LlbVr&tn*{lE$1=$bq1Q|3qQ{qmp@#y8 zo*O}k^UM{BVHN_R)ju6UuEzK5q;RCz$D83B)gt7zNA770Jrp>y03;J>?Lw5g0db>h;tDy@q#Lw!>YSGDY;R7eEFt4iHo5g z=QdHdYlv%uy+KM7_Q7~$!B?trEpz1dUxpQ}+pNhztF7hz+>iQ4wzu=d#Ebuu!4oJB zf(|?`4s6;_ie2F|m7ZBmyIN2c(sfi+aIl?!D`MC8meCY-{eOXeTc;0M!~th~(5?f&BJWL6+S;21fvUosg#HxP@17 zrHD21o~V0!;!eHnBw1VU_h8}>b*b~n&c=fB!}03S)a^0&2SJM6^#P1q3@xTf4&OZKkH@9N6^m@>$}}T?FYl6g}y1Bm*_BU zgcH-Fl)ul8accwId+93x@?i$p05i$Wz%g)MTOm2B-1!nq9FetTXUOR~Xs*pg==|(! zLIM<~T2F7hEff)UL-8j*V(1O523$w7sYQqs=fEU!dZH}WN(>F|BF<$xepAz_R{r!}yM1GY+*o*N)wW*4ry_jn zWj|R)apmpsB?Ilr(b#ShuT3qza(0_75OZX0qpfEfquc^U!ljOe$F@EPyUjI27oJ`1 zl;gZXs@$Z4wUt-v&E2W@^C#W3)XvM%P%6KX*zYv;xw`f1Ot_oi6KEApPZ6p5jnE9s z45Ohq1e~6RmdBK+-%~1Cg|a7u)D@fC_oK49`A^E8 zw>55yjiNX)q%FYy3ShxF$+JHP;D|8H5ZS=6E2^6?V$3hmNrT^_0I;uQ5UK8%zMpoL zBpJyFp`<`xdXzCM>MZ@7org8B*tzHJNsP4=D?M$C*0Y$VaMR!@Zg5L<|{8*mX zDyX6kvTI+Rd{hBhqwQjj|-0uwcy6g#wIF}1)?Y1AKHsbLmjPox9Ml@dzORA-ehk=zzRse(ky zo|Mlr6Pbsp<;3SZb;b3-xRJT@t0C^_Ga0mHrAjXruMhsN5DG&CI5d zmTe=*@}aT@Gomgbq1=U<-GoR}65F+A1CfNG;`SkpX!=v+!TXrdj+7Uh%==}tzN)G& zX{&)7*A_0357YyHv`(UWgTrO6vIuhbqjrMKlh*S93G$lN(7*(0B5meNj}5gOkyhlc zim1_&Yr3K*$&8d@ zH*xLV8dyKz5fx$Q2>$qRT2vlER3+KF85*G;n<~m`u>@)Xl|kbchk5%2H;Mfl-g%PR zt_16#L=NM z*a>~H(A8~x-CY|e)bn4K(-?ZJ|6OrFqsb=c(!9~9|L*t%v};KH7TaFYu?5%NSBN!7 zu|D4;<3_~@Otjxn%B0E_+PKXKOs>kLo|Q`GK#dzpaoEo!E)Vrcf}z-WU+vjSGY0I> z|6WipY5Ipyb)VUJbF#izQ-i_+s>5qx`Bk_9wr`J@ZN|OTpx!M-;Kz<}sO4xy=DCS$ zLJliEYyZE&Sh+cJhK+$R9b+xODil4mL4a><{uRK^Dk)0ii;4fAeo0jT{pr9Ls%E|C zm-79MM*zt|#$zGM)!$KfRm*;9Y?`n;)!UrS_USh)Sn`t7A8+T@0$TQs#ny(sGCA+| zB050&$V|+zC)z97QntW7NV}Cfao3G`Ki9fjdCuG6n%gN__~*Q9j3j(mRBuF<^EeLb zezIW%rlm}qa*-7YTBX-Q`-_D_mXv%PM;)1C-D$vpnK2vOD}#ohG$kB>u+Z~G$)%uZ z5K?V}HRqb{Q&$$~v4N*em@&t3FzP%y#y?ODiP_vNHrD>wsu6S6W$YRv4^ofyPb}2u z(@s}(b?}LQ@-;-Vapv!`>38 z`B{eJN;L~nB1njh^|_D>!sh;sF&+dx@EqV8&;*7ge_Hld5tMf%#zzrv2q0&3DX{Sc04Kph6BhVcc`i_Na zm#{;REJ6lN^)*BSttT-zcml*O#|gZ!?7Y7oL}#6W)1fM}2nnWMSDO385FYv1?qqVH zF>HMOSwoDLFoW#Qh_0l~4pGKa4q`x)1gsx8zT*1+D6=Gr+nz4W!^?|AH z*P=e%+bJ8AU1NhAxqSO-`VLMvIo145xg~9#+a7VL_(HSA zrT0;DJI~xq$GIP!gKsXi)X9omH`<5lK~dHOD^+Aaf$lfD*f6_7%DYPuTuENu@tmtbV`IrTki711OCd$w7)`FhqPvEuU=$G* zXx=txJ7=KR`Dblh{yhvL?Omkld+?6?TXrox0xZ+uU&KsUJ9|rDy={!SmwX#nhKAy& z5a<_RfO-chV@s&!uztT2UdJv1=HBx@1v9yhe2ePsFvxJ3lM%?RY6l-DB{XFH(_Ou4 zqt5Dds!X_gbys`nLi^J&Ya*oP7a>c~Wnd+-$v2L(p?y~|P)}doow!a>n(@HP0ru+B zd1pd8{~NDoNpvb4>Z`pyqrOY(-K4uw$U^bw;aZf~mZJl`xEELC?Cc4s74NOrW0|XK zZ#2;I387QkpPFjn*^XlSCHqF6)74Kck}cQF(^z~fs4%eZ&zQ(^m(1g~n)vle6QW~8 zWZ?FER@b?Jj+3N_VInG!FH{!yyX+B@Gn0CtyK)%zDry_ho6n^;VNXacK0+x{P!U3q zUzeb@?K?0!@D38EUJO?^PL`F9sgvCw%Xaz_2m~G}E=*_+OgB{HvJWU@V$+P@2-AK#Dy<4m zvX`Rl4)J0f$u{3~sS?PNWWr2^Z{)te`;?7{$89;zacWyI4h<`@@DQE)s6917E2XJN z2F#{@{sdS5_U}f>0zOO&3~8f89WT4n}RP~HjZ4o51onQLKIacZAl3=SkP3p&$r?vY=F7+ zopgQ8If~|_gg=d@zeCtiV}K#j6YTUMCgu^b4eKuv$+7_E1Y#9I!Q-wt9(o~%mcH%!|4k_3u5#v2nLb%h`2^Q$s4q^W=W_L)wm;T{ zHi{pb3sb$N84F)iLF9taK`M3i_Hk@gP1>`(flU+XG@ISYYbEqu%7MQ?tXUnss}dNm z&B5mA8)g}ylY|z2IX29|?VWW%0Y8?g0u-cr_||355xeC0C+0XWm^Lz+?`ttT1UD*K zMj~L`7t7d)o;KRo)JS4!AxO2#iH*KGs~2E_+ONGT37%PC!@OH3>8`H2J2ud8Df`m? z)c_-^PxLZ%mP9UGx_L`SK5^--sH^!4m3)!(c!?k5cTzQS*TEnGEf431INi)NQKN^f z-G+dfc;;clx~*`=du#_do#~Sz-2GL2Q0eg6sZ?R~wWH8}lc}yDpc9MyT|_wfiTYbg z;Ll`QNenxJ#M&m>5*yaEjJ(G(If2ji2LVSC7VsY2xRAvuQ&YNq&v8NGJ;96mVu3$LLO(hZ) zp-1>06>PB;V83m^M`YA5Q{5X%OhPFwGZ7nARpR7V6dU?g?hKVR$yX)j6$3+jRkelB zh4962tlh_T+8+&7Wopul-{;Pyq0)_qG7TFGGy-2uMtshE;Hjg=S#TuODJxJ4gIB>+ zQfOTDT?I3cIvtnzO+o1EX=Ve3L_A!O0y86tf8Ltf*o?-JU-r7fXsrf z1EDFrU1r)0uc&Ek-T#F|Igc}n-U*%5paLT>hbM4xcTJ6#IC+%XXPE&Z#pJ+eYxlJA z+^WLle~3s3jp>RTlem?Eq2rt$%Tp=IA3N}M&7DV|iw%Rj8%x`2gB8`7; z>%u3`?hM|NVUlD(SD&*bAva2qCV}WPb;va^wSy@Z03z?>$*&U$y1H8kHFjDO-X-SW zy(w~ucYs9n{+^1hlx)W)#%Qm;cRPcKgm=DyHy(A)p-*pNIu~%z^WEC|K;9cv%Spof zL3L~&8hT?I-VHs-`dREQ58O9=HIRz5fkg-6UDztzf*3%_bj}a>p%FQQYglp+6$^&E zVwhgLlA=a<^*RXA_wn7*#n&Ik?F&c(zw5{5)sJ^+tbFo2;>j@OeKK`z3zY%4damc6 z9~N)dscL)l-B~OoP^Uf6Z6+ zFT{(b`pczeb}1GpJvV1*s*fap*of9f!W*@76ZmC6WjOmq5QY3(?JdMUm8v z2L6nEgubcnl3OS@*aM>b->1L zz7At%8|czkK>XNIsCM%p@E{9m#Q6H5hI@qM9A~vce~e>gjjxl$@1HdBX@AVURGg+k zo!Q)4h?xBL#xpO5-bmRRlR)VjaxbKr1pZLeUB`_$trSJG_y@Y07wR*GHzaDKc zoRn?1PygTY{nfVilG&o~pf#ew_*Y|M5rZsPjUtfMkCUt;hYU1Tz%>hmgsZ)^k@$fo zK?s!NJa&Q>KQN=VNruFm3bmFQh=rACBqd>*mJG#z0eMMe-Yqea{)$zFkb9OP9C0_s zfj!(Xv~QFF#(2(Pv(yR*X=Yb@J34kMNg_&jSD{Aa5%iyNZ%@d3qX=O z5uRL2X%&aC3-Y4?!=@1K4=YmDS-fxOvx%|L&|BA=qiBZy623G&BxoGew7(B$l5iu4 zd2@z-t--Rj zjob>)PBye5MKQUG1M15PCPrYs4=nJLids5s@>w7~GvDmlJTopK^NLvp7cWClA5+Js zYyyneB_CzCgy~hnLK_v|_-?fPEo{vHwyTo;*60DOBeEhW3B7&?Vy(L9o%VYiz5Ays z^0N^2qw1B3&$6Pr`8?mDBJgrD1Iw-AgOj!sI(OJKy2OJY`Yl7C>;1pO(ujKoOiTPt z0;XBb_h=38a$ucCj+21BA@8&II^(@Pt9y6WvdMKkl=ilMI{!wv#CKxajBd)TMs%B& zsRVl(Iv&R-El=Z<1JUU{0@^Lj*wS{lAferLV)$2qzG_44&k|$oes_~vaS5PtwaES; zU)GL1Zw$_$x@DZ7Fo1lnC14&u*Jc7lW_-`Rq7N|Pu1RG4AeATawuoFgnenaZDJe-B z15qfZE~7}kF@Wxp!NnYNG&duGJ@Xr}ze-wQgpc>we8h)0hUsh>iSJmQ@<@^>`ZZB&+y{D@=JmOO)3><=E?X;gZ0t}&@x#LdUwV?}j5x5q$R-h3W;+eLlgXCc}7 zb0LcIceanRr*FFG)q8)51VKk+!9oz7=dsL`h;w6N24(Q5%Z<;QCpm0;-UoiZ9CXm$ zf-gYl3ulItE!Eo@DD2`BA3)HoPy-PzyugS=Acha`!cZ|SJq~t=v=eWqt+-rw07X4e z&fvj;)`gDP-_Ns;-F%1`=ag}=XFvW{DF$ml={ERG-hFB!k&%4<#cDvPTeLRc3Q~sC zndp|^6b)qeCt+;H<>$RO%82#P1dPbyCVxduyXR>Wj5FZU*AvVn^q&XDYFjBwrKCOW;Xv`U=h zX9k*ZVx9vtI_a1XB}m1U0{y)JaycZU(E@+ zrL-uZdo59<%-SKrz(`&9FX1J@y4093Oxz3hZjkCvfAAL9g{mAxh5`8asHBhsrG+Tg zN}`0fJBNmBQZx-(2tqZbx>(V^Ia!K!BTN9vMefUEla~vOS0YaJ4qsbe>2fS3##OiO1|blx(OQ<9mD88CMPsgJ7@}&Ai;~-B`$PdedMr{ZWyJU=wmuwBCBj6=!+;~pIFVyYzIbVX-`bG$4d;{-XIkgu6fp` zbL@wS=~UVubt}{EvG13^=%mK0ZTHW7&x&+jg1Bc8bt-n*GN3mvHjK!60fafD4HT3+?tM!WSBUkA7v?qUlTZmyi#U3EA|*#W@$+W-TUSGmV56(E(9;wTf71 z>7AX}(d@9ccsjza(>vyegmE>{>~Q2|BmlfFSpI}v-UzWTm#0$L_KMKf_!i|x7j1PG zQcN3?6j!+el8eCWq(PEC=z&0^Rylpic}ZaA8mT zVvZ`VE8>2Ce6PRQ_Tz}7Dq?Sy-Pdphu4TPZNBj4lp~Zx;^1BvB*RCKDI42#|Qkf9V zJ4rSggGh7e&|8%y9!NAV-}`H_?`0B1FUvRJ{;3AJXtSAJ|hZ7!*~iAq6sjNYJjVxyK42KrnfW zGZC&ni|!T!pHytNetq?W@l@)AfI%rF=dXXFcI&FC7>vqY3$pf zis#Wcsi9CJ{To_THPhSQ3liCn+w$u ze|x4ZEguqoLmkAAx!L4Yx;PwNlTa#yegX0tj3U)-35`M3G#s#J*mA*HZKM6E-@@cV(i~qdvVkg& z2-nH%+Z$eQ(6FZ@Pi@09SvISRQ>$UA{5CBRoKwg_nl!BsXQrU1VRd)6o%DC21*9V&x!4cEcx?64TQP+s?_ z-1!FRrz=bo?UqumKmL=cL`e-q@?A!V9J4k)qj;h`v_=S0q=*uT6NOsGh%zi_G_K12 zjI!X;mn9P|fINI~P>QJErj#?+-sE!}2~B%gZE^>iY$}R-Oy`G|MysHv)(PipjHL@D zUu7Yu6jEGWrU>6f5NkWyq>lYS#Rk@&Uf-D3>v)9u*in7a&ekBAw*Low>=;8C-mvNV z1>$r;O(~bA2ddZ>hl^Ai_e+zmWdS_-$8|G{Cq9_$^JB)cIWyq?A-z`RUd44`qxQ29 zz8M!aK)NZ86^#dD*{FqCMrmgW@tL(M&J0dnd#Z`|;PtO+Ho(Y!_D6aN9 z7arcczb(+2l|?^1rdVy5;6W7(afENN)9YeG0uskp7?h$n_f=<^Y06F<|0?uol@K1H zR`Ax&!;4&)HJ#To)j%NnH5OD#wLb;@dB5VddpljU--=w3Ql1zv@(LR~mV_g6up8|~ z)MF=Bw3qycjPeeO%10YZ=NJ)1JVDW}_$r}4jkrrrv7aL7s#E!xobp*d{HwzGU7Q3Q z+vFRYw6nn$`-f_OvTJn)11xK73Y`+s*Q+1hpQfVse?~JKzj>#5t()%R;c=?~mYJ8^q>r6Y#2LUczHFeyKC@En zG@LVQV}w*yCfIa(#8jdze=^4=2?u}GH6Qm|B6W3txne;KyYbJwhBzzU?;NuE5DH;b zcOMw3Wb36t4l6NMr&_))n3Th!#983 zzLS+!D8I{!`aqNdByur1GX$Qal+N`qJsCNRVo|lJJyKvI7ATh3(Ye_Vy#>*IK8{?A zI)UuRRIm}0RR+#a``00LQ64H>i#g@VbysDYOEeAOQJigxdlxj{%k`eiNsFn`>^QlC zz+KUVxf#Tfu{42;g_cCFjOR^DQXq7gCYy6UAfT!^X#3_^1-M@GJ2#2)}7{S{9Be} zU(Vo5d5gRk)a+goNgu64g64i0HvUN*OWz5UTfLkVzWns*{cx%*mOM&R5DJWesD-S( zf>F)Mi}IWhy$EuFGN9hd&qnNvhk3n0?aIm>q>qc`;zeU7#}FU#*6aNu)&U2;JrRoU zA(xAYVb=h>qlZJi}$t_m|e=aP5BWl6lmyX<2_jV;rBC!0zcWat+bf zr4r@GDdkaHfPkaWeKO*lYJPg6U986$@clsQZNkJ|wNnhi4K@QK+9>!ylBz@lpw$4= zdGXm3Fvq4rD970!>H>~*TIM{x{@EYzxBbRk@dz~OCyMs@Q5G{LktqbfPjjWASvB3bT^80r_vn*_~L!<{R-!t zefHk#zt(RljeCpw$xXgNc!s)dLviILGPE}S9ACZ!z!ef2chiHCsl!!Ev<4Ibp1{Ww zUd6y}k8DTfQM@9;=FWH0%mr8rzqGL>=GK+m8%Q$~&(LQjEu0K~Aw*@1Y^?iHnOJ_) z5~MA-6fi_udSDp{@8~%*pNJhwIlHCJUqN^+`D)>NRnJ@JF*g!gLbgK2vXJf(mXBk3 zdi)yjjpOvCXgaaASo^yTT@ww;wB0wj9vyW<&0pn@bN`w({;extOZ0yjlvGsyv!(Q& z1eT=v{f{#PRUfpNap~Ml;8nC~3SH5`u_p`#g}%^EP>p90&oQ>AMIHeY!tij8c>1B# zMM)=IDOEoA@HF=wmEgE!V#2FwxXb3BN$3--MxoSxm*f~W!|HMClee%SmLy>8cMS`JY1SpNL{^`m3OZm+wLahvstE#W3kt&_ zM4{nq{zxoYY2A6X+w8qKeo7FTJw@EJPKwTtEA@_*Lk|E@#rx6>mbZliMRU0bnZ zqne-*LNDren|&I868Dq#TBya$`l=09KE|~ls_jBeumf5tV_`I&mRbqz&Qa)weO{wf zNO%=vNZnXe8;z~%p@5~J@kgpX*F-}bAp}2ajhCaKvfE(X zkv^YDuz!+Qw=Pst2yOyhA{v&i&pV{t5Csgpk~u&N{R;lcfrT_wIL>JT*C21;5B-o6{#-2zuV9p?QL{gZ6UNlj>#T=&M&d7d*VD^`R(3;u~ZpCf=w z^m8($4*lv0YAuJG`K%!ocddgn++{Z_Md5YsYMdj+$qOf}i_+n4|Fwo|DY5?ngow*Q zT2_B)=`)s|si}XpQd4*;e&O9~#^Q+fr}I(SQsFO&J)A^v(Wz7^u^+PY>L%HJ-7THG z+ks5wx)#R6@exK!D|vhgg1dq`kG-_6Zprl+;hP!UImh5Gg@O!QB@uLux@J_nZHOUW z@AT})M&8GtzTRWb$lR{sU*<{wJc@Szr!iGcSSid=zg?UY->P;F8nU{opI6rft_Ts# zyk~v`R7_a;jLUz2p2is)fJEVz9(8gFaPrj>@3XlOhPsk&aA00KLZ3hOydaG3=f+!| zgd<51(Yz&t=2|Lf)QP(5vd%PsC@*H;4l?zGc0R71SzlSa8>2^NQ|(TC&o&k#OmMsV z!*d3+sVnPM;o?Ocay$R9WuEUpd}Y7tqb;uy1WnDs0j1L0HHqm=HnP*B_X0mTvF)jC zW>m93=@V4Q1B&hJeYadCsD0F^sPX4bk}=FvY_po}pgTal0g(~beK6z2W ztNX0?hN#-w3z+ZGNw@sK&xp(S(hx=FtHGC7Do64o?A@9^gq#Kgw00_LCtoGh-Cb}x zsUDq7$<1(a#`bYQiGT!=FZ+q!5C?wX(CC>lewh$P5LWc+uBz$+EtU7%M;XgEJ$hU% zfD`Yd(TAiI_&uXvFd>lITYK`=-QC1?>ecwhb|!rz8Q<&vEA7AOH(i(1uoP~--zel%j_^o8eyui2Gb_U z#EL7B@LQvf)mUAyWZ;w_A_k~=7<+F1xfAINjy}s$RB71rr?EO;Xb;o>bjZ)e}n)qL;Tq31F zy(P13H#J>z>^`b-#VG*E?oHVaurTpC>vuIMK z6v?Q&1lC$KHXaEe+>&1C1-LXIZA+B(El6Vm>DzAB;h&;_MgDZMDG2uRA1x>`0j98b z!^ANLxSTk&5-OoD@NHdHq9~bnu}MBxsf1(wSM~Jq9ZDw%ZUlNz;iKDKJ(tSTY1N(+tiqgHaGgNKDrczI0R z@};H)kB@Z*md)t8M~D}-qg(bHm=2E%2$*DPNe&oZ_fLLm!~XY0;d`AFnofA~`E_JH zXb-!}#9sx$wrSWkj9Br`FssX4Ur%x8@H4!ODH{X1DDwdgHmMm#un-WGoRJ*MF#d{i z!(R?4CN1>~3$3E#3R;Qg9=l|zoW=p1FmZ;l&OGjSwJ}norXZvxu15WVK-#h8Z=P+x zU2f-NIi`8(O72%woUsb2=dvS5<$ZuvM1|(rTwXIHKg8}BX!B>ckA3Q=TuM3<^3n|z zb{8E}Eqb&FYV!zahDg!Ya)6#*X}sD*}cnR0UPci z*W0t<&h~9s_s5K{$dIM?dB2=ZoM?GPeyz_@Pzfk_a2?0z7>Ma-aD+q?+B}cs{YiGM zT+<5r7`NdzY=Qoi?n(ALfF*7`nS4#b`9x=I{_?(S>8AASTyNypgoR%r7&>h8zw(T~ zpEg+rUl5)Ca=vYD{Qb%N9*>D0)c#RXR>P)iahkD;Bmv;!Q>?DYMN$KMvu#9HnwADr z2!nLUiO49%ynE-*M!zy7stchkk~2F*22=vtXM~BASh?#~J0x*GB#CS}IvFo$ zY|?Nr%y^o&jVmymMC4)0@4qq~`3G*Q9Hq4hgbHaFzB0p85tB@l!467^(t2%sh%I+Z z*Up&v-ewEK5;ay^qKjXJwSvLy8LwJ|lv`M9UDRDR9`QaNeH>-|S6w=V(*xe;{j$Mk z*7NBfl>ulmzSP>xD4*_$i@n=MjTR zni|Ig*a8$*@zZAfaLLT$6=V=z$r`Utf6;UNMSsg=KjB6w{|~y6b)p!8qI)7M7>uZSjaN%wk(McvHggmE%Xe(W%4R7R>Vs!Z zaiy&?;ax7}g7sOhwhKt_Nb0;mvlOb651=pic2pNvNBez(n3GB~4vy3x59j|USz|!- zZyvkHMrq1zv2^$xC6N4*%wuw)rXT)KCDcs6uQf6U2V#d&UXZR{v%uOOrz8kp#&JJB z7UrAUz0o>~W_X)QH7EQy>&cvHuk692KC8CBuM%cFg=iN>3g8#b{sFDeqLlmuoVg2zOJx*XqV{dpm zbIK*cIY@{w1ffeaQ+y%e-+OyLd^U^14T8x>5MU$N@2?-# zscD(?$=CH=-#>lHT5q#D)EKwHFSLxx_ucP%FH{?a*^!eK8$eNL>}|AAJbmV9%%bpD ze=P|oIQ90?d1TILdoxvWLPH6>LExI8kdjD;fR8v1kl;arr)-Fv)4sCJ@ttS6za z!di5;_tw@o@WPsm{yNi{LHh0Q@F7uA6`3hnp_B))>B->p{k05&rup)qkN&%&qau=b zKeqy0csYCOlL92YArEe!yoH1fTHJdJdtXI{Ncy;^xq23?X(7J_+26lvy)ioZFejT(?k4xPBV%4mnz}^k&*iB|t#D7QkESZ<}hB^~I z*=q6S)~=YFV4mW@^xNxrA;%baMXg_r0X;7j{dpU(0_IF2T@X?Hc*>vYNmUYv%9)o* z6H--&w}N)x!C}U&2v1c>zdb3Fs*#pbqoX)0Aj0pxI?cDqUr4xm^O^E#?hH6KqT*8B z6U;`@S=C6j(kJ@?DT(8%qo?FI>ln$4W~D+gS45}iGpY5oovF7A){0-qkUi48q^tZv z_#`Aw>w|HI*ngu5Uke3hpLxml`ir70_hhnW#`=WV=Ox~y$RVSbbAEZLIAIU&$Wbhsff<2J#D~p*I7z96~Bz$@VE00kXyQ z5T2GWr3pwWIelsj4z@m|5EQgtFjUQfML8$q)?gCf$$~uzq8M0ACV!7}{X`O*mOz>? zqR^|{v(4pmP|@Yz<71WEHJ)Ukb3#AN2_n1a9FfK8Bd*S~~bqqUef!g|hcO)F4P6 z5d)}k4L@v!l-K#Vu5$T6S%aA;m`n5|g`D=KP5gMmQxFA=tjMxIzdy{4q^|U3Q2|if`Gr*N*FSH+`m1QVGsVKoPTlqae-HofYS4SsdU}eljg0e`tRhYayRBe zxZpd>rl{-<#gHA4Nty~iFlNw7Fx=q20mx!$-aZt>a=X=@g1Z{(MwFLxIY7R@zJJ~Z zV^aEf-#}&18}>(taEqRtvyl(doL83$R1uLNvNKy?LVOvP^h2wpLbGTt*z{qcLLZ!g z%DJG(=x3sBPEfQc>7=TOwDliGKk+`O#KnkuulOMue%eU4Dm53pTGa z#hf~@7#@9w51M6f-%;&>ZLa*y9j0-S(?8SQKyS}-=wBG>VCgCcY;5>wfY-&}%_Ngq zdhcufB+Z0oUMP$?u*Bk!FBDevYlO42yU}y7H{Tq6O-Q{4zL0oG!J zlg}&qlSV|=QATgQ;}R82brWo_L~6W*_pNoJynOqAO4{K8yh&t*$U^0N<#HlaL$i>i zSea;93-sR;4;VK4BSyG|2>BGq=+VyfT}828g&63uwE~X1a3J46wbz?-Nt_DspQu#2 zRUqXuQ&)U)CF{!uL$_usP$V;hkJk9#N%1+6`Z|)J-_Lcdb`CQ-bN9LJgJOo}FX}|s za=u$_cI}nETOIU1e0t{aGKAt2CwRX%^T0O~gwI?ZE+@5=Pd&9`(E5wuR=Ps-+yEr@ z>%u)@?)Pdz@CLkK%(8KZSjxEOVNB-waPxu2r_G6X<1T)mZdu3(8vZ=u-d3?*z>yJa zv(2%4e~;w`&dv`F!SvR=ad=_@r7UM7_!Z=Tud1tP{ta!Q6Pdz^!pn=b2hCaPDS_8m zt}Rcs1&WxkQfHzUoTZs`;28~RAwmU4i4xYY`K~)_gnPpppb55Cuk7rlEsqh&f7tE{ zH^Ll&5oKmCIGWE@6=#SHf$2im(iUojSS$<>b3!xIPJ{9M6#BCW4rAtpM;pA=q6RpH z7e;ZLiOghklvouhwtI5OD4S!!#mbTj`7KHOI=PALdzJh?%IteP7Q%@nMV5(<@MpOxK8 z@8a4pMX{>Z_9jXeeYdcg3#iF^Gp}ys4mBqF_KVO_#N)r01J$OMTnHSx#`0OS>U$@i z7&-?Zni26n>$6**x@Z5*(^Q&&y>nyKd-#_^>FACBzp3v4&qj3ni#Pf8J0d|x9LH#O z5SpF>N}byGA(WpW-o=?)lGW52W<2hzae3~H7$c8Wv&n?e8?8L&3P~Rqp+4eSb>0bK z^cB}i0ABEhYtr|yPipqMv23#zSf`}Kvm(f$Q7TwsHq*$MmrUWC$qeABt_TH;V7MxA ze;1faOl}JQ>Fq?8ge*(q`yQXHEfzIExGK*(YyF2)VPoMvH8O{O z&~%U@DMsK|2ewq3Joa&C3RkVPWI`($WL--CKTf~Jd_4g^(;;ElpT~a&XE`aDC!M|h z*GI8g0$z4sa~bQI0m-gR@I9sKkIU;O57xxo*tf*}#+j5{Nal}MMyILUG%f{5(OQW= zRw>(hIX6@-pA!vkw|~0jxMs2C#F}?`^~p>drXR%GaG3nxOY=ifK-o(dBt!1+$<7mN zw(+(ES(Q-jc{m-TE3ZjUKRI%sL_ zzVkTnyKk~}VL$FO9ADZi^-vYar(4C@7C77MwvV zN`nH zGPVe`7aws@8jmHszL3^R{$8ndJ=Aty{@30HIL!(#s*_(f32CjK8u^Z1w4gP8Se47G zp35H34!mI(fxqp!!5StVxf(R5!uBTt%NdX*g3QGA{;_5hk-b`-4dj~T{`7~>m zr|FBCZI?mn=!d!E_Q>bAUnIWNtdBfccWZ>R-(?3JjVg~cjx~1Q?!EWfS0&+ULda4v zW7pdu0IBA z5OCtrzWA_3jT{Fv;|7l&EHan5!QD}vb$)0BG6ZKOV|pDy$Rpw)KFG|_F2v_Q|M|cz zaaB=x7;0elQ;%0CG~!c}|I z*^27k=VKPH-i*b#Q*x~PyeZ3aV?Jab)wh^28Ey`1Y6_b@C}dy^zERipTf3z`ZR;&S zJ>22j6H+g1PD3Azouf8cj!Wk$rz0b#BPW6)l0Mhk2hhafaMFe^)ElZ=_KQDM4vB^_Lp- z37)3wBhFBC;9tRFP(vJU-2Zt2CL8Hl3iZYO{=Qa;e?v+a9(j3k;TVJWJNg`^h!Q*w zG(bTrz{Y^X^zd6 zAzf;8AC)}ml>2py6pXk`hwi(PIrg+dPyipJnw>k}Co@3v9hwlL7CC*EZjz}y@^71i zlyA-I>-rJfuj!Lo)fX^aS2X=kI2~ZnWHtqT^P_TeQ<|H!&H0sFfJ?PobYALJWe}nl?x#rsVmc9wnEh-8wUj@x-~Pz%2z=H_htfWp;C7HRb82J@-jvYe>?>Q zzd?6#@zWw<5*HT}njR5~tV`DY^V?@I%Pn5<=$*znQ7lpKh$ZEwDKTTYfub$FTDA9Q za{I4OuvtRKab=&CxtxgLzOWk}FQ2>+B6EP9a<|w>ArqFd{c}Z8Sf=We_)jmW8C$&= z>a`7?PU^8U21mN9FrB-vZBV%76{~7-k>#j($ogb?QR6BHud$Jv`kwSvtr|HZw#1S? zZKQ?%b)#dI&Rx~I9v6Pd*&;yu$ww{V?r>C@%1bXF(<26Q?guV>>0mb}-dnW-08Q2= z6z9%tkCSJnV*H+CEW~*@e1zsLr?vOwa`~LYdD{th(H*1vzYFQyT~-acd3Ec)B!N$;01OgmI4)6B0AS-k0 zNnWJv9EQStBLyzU{cs$V8}_=oKG1$5>*}LpXE1==@8MOCAZ({jy* ztSIn-j$BvG4hw15`n)0<6L$4Ktj^J-3I)JOIO<=~=z~aM6)rHci1x*-3{+RmJSfs7L zEi9b|+W=tHsIt2wqK9|uGl%;l*sBWc?nzNL4j>ADE6#?K6a2V3v5)&W2})E)*;QUh z6oweQeJ`dR*!#?F7RcD@?%ja=GG^akcot^kordf40M<`cCm&93cc(QRZr#~m56D%_ zqEPLM1oW`zr1fi;*P6~P+>!`chwN+tjE3#c@2Aqf;*f0t0s! zmnCU38|y#6;eNft$z2A9+B7~964+!ok`qOh4}287ADG@;puvy;`|8-?y=cdCB>k#Y zLOUQZg$<7==eW-QXLks$7m-Z&E35_;5^;sACLc#dS2iXEmy%zMMM0>=7Cw)!e;428 zSKv_pikNmi*W6sEM>Ufj#zVQ5zOcX3L#P0%G~${~*~l|WkCxf1k_{DEQL&){>B_J- zZs;=$(8F})tD``Hjgtcx`6DvomGO8s(2v8!oK~E$ibajEVnNAp-Bhi;K7M_+y+8*g z7ESLc{}^)W)uxTz04}na$1kHx(vrSGWv{L)y}bkCRq|P`IIIqTCMx2b5^frFijN$} z*gY59#*HBwx^AB;^pkqxan;w==aMDVqh=<|6NlYX-s;(pW{6~1Vj&scdcN{AY(3HQ z8I}c$$75yE`W}&))AaRQL;2Bn^8 zZfng&n8{sX`o~V2oz-5XtM^LH*UOCX8w`7RHbv8d9BL#m^GAP-%hzUUAF{FQm526^ zi9_0LK~v&9WiZ`;gnA%>4J-jdPmNDXVItVg9X0}jxLD0p+d72NxNRR9CK{Vi!QyJR zOJt5sdtTJX*{h}<2LST<6T^1;J7sSXD`&gU{?L!#xLkPf!M2AS zvJ)ud9$RAbh}A4s%8Ai%psSB(w`G1{;MZ(RUft&e=&km}hXxzvKv&l`^}c@}xQ-1c z|9+Fl$Lr;`YsB>=okTt7_4K7wQTJzQFGJJ_q1iwoC5S6c(MplatPR49B^yJ>=?YK> zct8Rg`IoFA^4?&(mK?KKe(7d*`>>#qjuwUO!yluVXPVpo&(}O9F1!H_dl_os70Y+a z78sum70jAKWTOf+e? z=6T7O=C`FiAHbM%f)LDy+B2<zsQVcwL=k?Q@D2~23~;7Gj1(~Q4g>*X zffD_}uQ}ixSdah))Dse!s%J4QrFYQKzz}5l75UQ7wCxzBkna_khNt)V z*_M`0nub=lv{kU<<3*{ha-sXzS(K83(S4@QfK~A4oC@kq6Gc2w<~C!WeAHJ5G{I?c#@|CcpLkLvD?-C z;cjfPnWs`JrDPDY4NVUj@X6kqFjE^r1tK^8a1m2dVZRHbe+h^xd4~=GQ!CbFCB*_} zh>KMlR0pI9%c#HESO@?5MxTU~=c@Rv$i|(4yqXuwMGaxYiu1A`sysB*9_TAZcWq$q zjPMW}oxocv<}X+BIQC@r$wkNw8@~XD<>QR^;~c4i;n|>F$O_$En9Uc5d*EI87!|9I z6{^*EEn$VR{i|+r`Rb@?L$1*dzSij5L*nZa`FaK)%e)WeE3&(u+zT26$CVlXtt;QC zDsY+QFq9=${zYwEn&A^pdq;4_S<1f%)3ZerZl$R(sk3u|i07i^^F|WQmra8MlPU*d zaLE#5FK?W4vjS00z7hO!-7i;7ex^eC_C?)?%f@E+?+aSDckZ_MKfZnRSzvDL0T}mC zh2TeUy7lIA*(daRyt?g0S>w!shd`7A6>2~_eUt(K&Y<3f_^rXft!fY)DZgrNoq4 zY_tx|jSf*DvYSl}4WSAUIaYF-(4aLLTB72=a6OSgGj{KlL~SrYvq@5!um83(2ME22 zdsKPQLH?We;)!O$IrGzl`VbzOko9vnXE(CE&I;dqW-tP5+UIY#_X%8NsV56z(380K z=9}$~Q3nl;J(L{CkCF{DEg4fCX=g!r8kjqI=GFqK@?-XcXjbB^trHN*WYIS`&)1`$GCxTZfyj9K`e5a`5WLu;Y}1Ze&dsEI^A z&Lp5rA%Hny8{_{exaQ_V&=2{H_0N2NsRP@yQLtW1Pt0+!^4I9<+A~8qH7xUiOFVvC zOCRE9nSWAV>njQ};F8Y!%sqGdx@>LLq^MXed9SN_@=5jPdY#{fbe7zGx@yUmP3Ly} zMZk-H_KuIU<*<^b+ImKZQRy4et#3>otWnR8%g5+RE<{zgh~FK{5_l6S9`HMFSDkxj zM`1DU4yP0aebIF*>K}qaNo)GjIFsalX9P_6w>vK5N0NWb@Mh&E5qElrv!iY-BEe%i zH+djf3u9yblpE$^QpJFwb_exkHZ$vYrJz^byE*mQB%f9SFL{cILk8JV%Dv>xEXT<* zg0pNNaHk(>D}t(!I^F4PpkkhlpqX7Pujsu0Y|s!zXah*TT4NOFOxvnydYaBu0#ZL) z!RaV?P}2HVhG6}`0_VV7K$$Bc^i9*vhq3&l?$~IJS&>_jvdTwdEq$|}h~KYi5-E53 zll?N+VK7(au35aXmfyyfp5fYKJeX(m#7`IC{S2=S!;wrqRbr$}8(PIoBuciH&3Fh0 zl42fh6$AR$XS}AboBXTZ)uajb(WM=H=-hXt9xUI%?>6s;os?MS92R-2_cfWCa``i+ zi(^XfyI?d-muIRaG|y8;f&2Yh|6pLE-_;{89zxK!B&SPX!bb)MrPzbIt;oG$f4sGW{LWcl?1=Z?+a;WMs*JEYsO)5^IN zshFamykI0bU#yjTyjchW>}9DpuyNrNk~;YKz(x=N=%v6mc1&;xeKH4W*KQyffc?j- z&%6izxRK%4PE!mF{hahv4TbdU7Fl70py0TTV4xS+5p zALAq3u;-P$snTi&riYELi$ylFt22?G1#iXtf6ga9+5Y!uw@RDDe{;F`U%3AmrM$hz zT@gDI$VCfFUB@_7gxtk@v0MC_YWj7veu?7TTbO;0j)=D6L(dyh`5g zS!9m1T}@9@l=W;@GXpyj?02?FR~|WS^&>s2)m$XRuwh1zUS$`Cf(dtJyYbt#^dPo6 zuYqEPI6}|WoS4I%K_Z*CI?rEq6pBh6sQ-k$j>iHKW;1MK|{lUci|p(xK{X1d|tW^RXMNf$^pZK*pN9@l-Vg`KL>;!TO=?1xIH2Syn&&UFIA+B?mFb>qstVPv)n3l3aqn zgBStpD@U&}Kt~^*m{$s)=Y248V5~1!aDgsf&rSmQX>XOzgsqzRngc%pywl$zJ-*Tl zJFi+e>2(zq$|{@&qVC3`r3f{sZX(DJ7UU}3%9s4s+=5~TmFXi2rSdTidZ2I(Qq+^& zarg*DlI#!Xu)RSYXjG4i5DUmj6rcX#liv+syg!en6DUV@`}51l7craG!psB+~S9wv*?{!YJ+ z*8i9|Y0)~QH*(|KV7v|wm_MPSKMF{7`Q_sC8-L-9m@rLZ(( z2y_ehn@@+S1gS&InaXnHFA@d~$WTZQ%5dCOul zv9r719OpLkmYgr9bz3tV^n=`pE&VKq;dM)1ti~s1#`kqLt-@y3~;Gi5XJ1m-4z2l_!`<*v9u@+_&te#}sWVpAA zO^0K5E-{+PaR;7%%P~Bty5FM5(j71;9ZR)CBtlKPRo6Vr9n2-TX5D%@qXTN3@BS#2UgLwCuY zM*LM2Y(oRKL(;FB%jShC`uv-aN*U3zcDjAlZCPc#)O~z~@erN<$?r683xYPU6rNYE zSH0~|ww8JJzpYBrJr6_4T^su)pYi#TR>@|xQ)nFrRTSp9 z_l1pG93DZ!SLp4pOjAv>>@HcGP zwe9o>CcNJUS1AkD(jjcAOa=1`pen3eoMWZz9R{Q!&01iB1R@XN>6%_D&rSi{*7Rev zKfq@9VGMOxesv8RnD(wiQ62ukiuo7|NyG#@%O4WIm(K&kOyPTGc|5vJn8wR6&Y&H^ z0G;_#Jp)*-yCN&$ge@jmao+xU%@}w&$%{9Y5;a3VYN&v6o|;`vw1a*P5ukBL7s{-E z=DZzsX0nk7kh9K0v5+XT$uZEA3NGwF z^f8aB4STBUNlU@mCVW{GR0x$bj}BiRfU2QCc|%9{ADhyHWX?wf8f&-F%&Jc*CgJeF8NxXE=CeNVn?p48=AL^EA~Ud5Zf=T{KkQ= zoNdd2*{|LM0)$sM7c%g3|s`nT>cmr3y`}D*8*)v z+)*82FkX1yR@7V6AJJ*F4Li^Yryw}YzcN%U%EIFxh@3YnKSe${LrlM);70Ht?k-u@ zlsj}b7NX#K0$^XLgn|7gbv+bnkl%|Dh!bTFJSn!E_!~ToWSG6K{)iOB+}DpG&c|jH zO!kj9`V{D1O3lrjJ5nl(jBa@G1ZF;nz^^D7)awp}nfMmp>A&rj)RA(yuG1VH8P?eU zDR%PjwG>u+fAhV(-SXd(BY19maQ$J|@ILZGkhV5N34RJl*%;;BP{uK>C7j5gs>12C z%VX6lyxo1>bI)ugyyNV+x+_U=Z2x5^IqtB*fE8zjXsWwaYn`^Jl~d>DVu>WF+h<9T zXJsUgu#}V5%3m(rmGnk>oCcFnn}(4w4W{+6c=B<5!6uLIuQKzK+h;}ER~c*IF!$fu z>kc>q9Ai!18M=z}8$imGR5}AN9}FV#I8$F8Xcu!Ac0S?79}xY*|CZNL7ab*SzC6)wf6E{G;{3);{-vQO5bu|4 z+|UhcF-|2D-_E(MlshGk6Va_hAt!Z5s#P3ck83rmD+)Xyp?X5@9Y8id@;i?yxGp`J^b z96#Ao2}^YUZDF0N0?G5fezQJ8&~eQkIHk+^g9iuXAOO#Q>$7Ukn9fXF5H!@mj6+ZM zpB(w#7)yFr@Qy-89*Z#rpCujC9J~ALGY}z3WzV@Lmu}(Mob#*kvafau2Nw9ZH(6G8 zgx!5v@5e}23f%3PQKM8*FA6pdD9fCVO&*l&=Bn$~-f- zI662)VProB6FjpMdNhNOxCt`4z2)1d_uNfZu5!s52uR3o3pBr4$h&6yFYp`TRuXMC z4|P^s<>YtWRa&O^kWuxF7n_kpCI>BUi|++w?z?*|`CK&5z8N0WJez!|dif);iWl;C zh9e?6XmTM~yJ<{aA;J;u!q)x+i%qxl16E}ljZ)fU6F4)~{;8)icY#u~PK`hP1`B$k z2uE)achz?aD}=kHf4ZEXx^&aqi@f}KL8O>}D0`SYJ>87tj?Zs-n{Qh`>_)rZ6YH54 zPaX-g|60YOCfIz6mDc$UG$n*KD+;>GsM=1X#L`(=o1eaq4AKf5gj5_oNf}(}yD|#* zJ#N!~*@;O})uo7mk+8^Mosmt}aQ$Wdueji<>B2(iQrkbfw zg@Y7XGP{N)ojrZzA);@hW-SkhZ4x=lSgU%S@-qbyPni|$Thq)(Be8;tXK}S}f z3r{UOnQHElR-dG9@rH{pIy+Wgq`+;A+8@(XU`#rhk%g&<#&zjb*?C`nrWp z;g!c5nT%JfqQIvEnmox46xMlXkq1kiZ*ramJtql;T~jZh@8y^`?3iiSvng#dZmk3y zHBPh<(3h8hWggd2m7gTv6>93dEgKHK9r9Jou4qr%lF743u2t=a+%@OAdu=^r*9{@< zR5-pKX}GX^>)OB`(wDcc$r(R>{GS)VDd(^=2;yg?;!>&lsTgvDOV4~wv8xrhNxJgD z7AqaKhZ=Kz!ts|c$_L=J@u~j}Xm=bT2Li+OzKz2J%t1158mU;RvtFT-8)~%%iF0iJ z2B8snxvyzdrPYuc$}5&R^ozUkn@m5yO+hKwMYPoxV+!STpQC zyx1;G)u$7<)SvF;fPJcdB`^O6KdR$0bH!YtXPX!0rvc##^GSrH6ZOum8fO$*OjPyt z_I;8wEtOf<9P^vYoq8{@b_&JF$^A>3o$VBK4|?qH>xwbS-kffIJM=`sJI{2*4lVB4 zQzNrBydmHUjZnhW?_A^ucnr=@8q^K(Dj4XsHe=#ahV+Y<+W_9h(Vjl>lkEd)-`l)> zT^yBhhQ%f9{WAbpm|6)oi=m=tI|O^U)EnE-_jvwC*C`yQuT(-Y+TTBKVm8Vs=UI{T zf!>;%Fmx(VQG_)8DQKL)NM}O)xg9YUQd#L(ttdF>7RJIHXzH}R{u59vWy=K>%iw(+ zY^6HxSsqF26AdS)QlGY!0!Arb3&SLB^5C7%aZh*57%DZ_((5k$Lp{o~?HpS?&=mG| zHl)+pJBFWH_O04aG_&1TcWcfwOT%X*NYb5ya4=9R0+_cAK;Rw0Pz;%h*8mZKkSYS8$TF)`xrm`V0P0-f z0sJ|i5|GPCioGQQdWoRW+y+Lx*fOlO`5ZpKf(%(w7GGkvAF#z_ayk4+QdwB266O*> zh!62ICh(J79wY!Ptc<8NevGg%F}E^Q?+ZcQ89Pi9#36*w%^NWs&OWP@z~I%*?sueVsvVoU9%uw)>h_IjS@*kpcQyb0oFAH>U$m)xqZX8m1mtACFeAv4 z01$>#C9(4rt4wiwRZ_tf9Hy28lu%P=Naq`!n@b`7L!zVPkRa!0T{ ze=WDa=91XFYzfYQB<%QXadJVza7dU|Bn9M4 zv8xBkk9yt#+!%7=lc{YXA*{zM8X??@5(-pc`umtqF^|KS>naHK*!wI2NXd$`2cByz zGXOPo-&mrFiiRD7o`mE#97KQnF>jxj_-?{ynGi460DgX#qqqIt$rm2A&!$T@ z{i!rnwPRD$1C4-8&3+NB>beKEF&{tUC+6x8EhJ%ADlk&W2E2^$Wk$kV5|EYwuDQ+p z;*3X?7Xpx!ul5{-^021hCCxU0d?Y}&@*1oQ{U`adrfs>li2cKSgnmWvTti}z2>k!- zy?OMtOI03tepl{g@NyBjAm9Wt1evZ}R8$}ciXh^!vX%qg5@K501y1cOF{TrfR@07& zQ?pEDDYipQVhoBXL9jI_Q4kPl1&Js^Xqh5{44Qj-owsV&ex7IVUGIB--yOg2eE)pE z^A1(JcI~Qqp4xlYo9V;K&T=|bHheaF4**Fxtt`~t7TNJn@8fT@d3#|&6A5wH;z3De zDaz9}lZ_|&9GRV>%rx37?+ZR8IwD(;siPe0)pPy2z2_@^oRi?*77qwMlRY2qQ@9DY ze}F`72H2aE8F?3Ug3YrsV=jjSD<>rC*@*cZF$}5M_hP2hFTMOE1T7D7@^UyC-OADS zF2>yx>uq-*+a!53=`McYZ~LqP~!9G4WC|5l?4Y>LNM8 zV>CH3m&5!_7ur4q>8-t-ufhP`L+x6BEg(F2WR!T>iCO&}_)58kT@Afbu910hnk?0E z#CS@YKWFX3kTsWmX#?0qmK&sPwsvpH`DisoeHcN0$QR!GJx~6zPy3j&+nv2JPFANY zH%ASe2*}N`R}z`_`~97E&wKhG?SA)1?q~xs4ZCV1I);lJlM|vKumZRlxU~91!t4hpxazX75{H zRJtL6TIeJN_aNi!er8X{JdZ#+c)eu%vhEc_w3ET8> zIhaHcDTDd8fz`#(+#A#j!S)W1NViuaWtyl?>qed%qPx^XZb(RGAgtj|XecKiR$bJMY#;Te3?`fNAA) zt17Rq30s5X&H#~1yE;a~Pk@=R(=Sy_|_;SW%|6VFdJPr^H^1f(PwD1zC}B=2JY@1|E4 z8-UmVdFGkGegM$E=zfxz-jOGTWkK22bp~>KalKL1PH_VEx;>-E!@+)Q zOeUj)xe3VcW7|zykIgkgpl#A{p{5chFiGwQ5Dz`c%YSP~6O>(eXqZ4CSkA}_=R4>r zP^M!JhiYXSu^4SFP6W%3#l??VD(L}xPfq?i+^zFJyuF%7Vsdgg+w7YkbE1*88wp#p zJs+o>lT;lp;BBX)kSRCI$=IiS^EGezjPLk_d!3z~y)T=#PS|K*}EsRUSZbcq4z3H>6 z<8XgMXlCUPy|=}SkZLMJe-7Wvp38tfqTre5A`mJh1Ibi;6p?|lP{z^UFuf?*AYJw6 zLfy&qbPNGO@EM3hpHjvcNeD>tt&Au(?*zvXEFn1bJqqZ5`dW9CE#`%Aj6LUtNCNb* zcO(@ae$(3Iwx9qFa~C}P%4NsAiPT#$NhDt+nw@fmAxh#EU^%_bSmsiEpO1%m0pZAV zI^7lOUb3V}Hf(h_Iin?B(@a>=Q zhQ~hRntPv}on4pAT&GJn6AhdQ$jzi9Dlzsid*&;4zx-tnY4>F}IS>W`TUiW0t=h%T zzJYdocC*K1QXYY?;<*|5$betA^PT}%1*-Z?N+33PJJ?3uAV3lEjb^EfycqxGZ9W`xoDRy{J_??@U(`|>*Sqi9p<*{7{uGwe*RyPx}< z$J?Zz?&8uyRGj$K7XhjT!E*pa)yYvXp#+cxrnDBWV=}LS-vIEEoqc;IE3-PaYt%a_ zF9mD}V9#;7RsgpJsmOpj>SEUB87VUzReGIWN7=K#5y@5kAIkRyZP>Wlb7|iz$>sod zhTW^)vS-kaP+wL^M*6W_lvnG+0hs9m0A;F=aKA6i6=Bi(>^GK^d1bT>)f@@stcGCC zJRnJ!Q*3HMKpfS=DNs#dF9UbG*}LMv%Rr-$ixKAGyThYw%AsJ-^a7OnIKiD>R;`3H z4HB)VFF}}4?~Bai5EIS4l?Zf=1>Z6`t{0oo!l?Q&# zM?ImM!cNz3S`C~C$W5#NviAL(U-HAdAOEDM?RM93Qh5rDB{VDB4W<=ccJ~RGYyia- z`A{IHa+F~|Xoi&+W$hWcui!F(!6Q5h%k0MhB%HRimWx4U9Db}E_nXO!;8^Y8JfuR2 zLRMx6Q3KIcq%mtBp}-aISZ1GA_gKBmP#Ns)6o4ZMD@nk_8&ZvxFwgYC`;lFD=p0ilqNEXPBVm6P@lKrhLs{-}p_EYA**lRQ+%bopY`dQ5vkF<_WNO|C_ckB^OgsVIP8j6* z7z_C*A-|%N5-Fz&(aAt^+KvI_tq(oKNxd6Oe?T9S%y8Y4q4~&K((m+}Ah{<+ZL-;2 z^f>78xlT$g^eW2bWjEVtWhWjR`Yy_tjLL6~AZORS5e|!Td!^iqGJ$=WG{T_>*6-%| zutRdNeLm)RoM_HR7B)AgyYS7Mv)$QcyWN-n)@T37Js*CTr-v!!bm1n~z=?p|%exU;5f1KF$Nq|jnSrMr2UH9=t2^fbrS3d>zd_ygfX{LhY7qYABW^n&J*cTp2O(} z$9T|PGEpXgS)W4Bi2r>g0nwdNuon~=!({wAlLrTKS>kyIdcz}QV90HY!ekP=T>x>v zj=rhNi3W_`s%oi$>sOiL~)vK|`MO=-_6PW7+~;Y0^H2D{6AP zjXg}R@7M5HVag4&5KFh+Lz}O-^77r+zVvgy{w{y(s_#i=vD2lSPy;6dauX^)t9t*g zKY8lz*^hYE?l1qW&-h2|_TqxL%yt5rXs1}pt-^k)-DE9)Eu1PW)}~d@x*JE*+~HX3dkn}rL-*p@zhVg0Cltz z0l(QC>eo<>{h#H$3|&G9lLBrf5uyFP5WS9wI3p-17s`QhYd>k5#>64hcSazzj*I~5 zGi7};W8F{$WK#}^$zp&=z`gK?b$rsVTn^QV|3GKwTsWS!h>A0(#qltgz>UPqSk3 zA@3&1>p}11tLjeJLkODbVvx0XiWQPO`y0s}wqXz$B!55}9KiEQQhwwwe*iEN8`m`x zUCl9)Jd2eC_D1a7^I?Mm!^E(@R3|W&8p$-m+y2*MmYKXjLVKUPd{{Q}cGX>PxBtrj z^29H>^F6QnF`30qKW{<}oCwHGsC=z@|K7KK>h32$`B!)EcT zM6iOuPr)Ywvn{*vn?6do@#LxuM5Z1FY5U9zu_(PDKiPLdu&i0#6|u1Tv=51FBxE2X zWLrEJYaS2;%oV9nnP&u|)MY|05a?F6r2T`xGkZvh!HgU^a2?~XBoRu|6T+fEm&R4` zeA>6*nNUJy?auxm%}GxB3KLAfpfYYIJW}Af35b_d0r)sAYYqs9=Qtn%uY%YTPGv|A z8sPDq5%Sc8a4!a0!NXI8nz2WLcadB5cyd(Sr8eRbzx^?cWofPNa%Y5#b7Aax1?voy zGf#(jNJMv42o_(5Z$PAZAeq;r&D~i!80HhmEMqNOBIPYVbJc{pn7~t>Z zh}zlfCEL>v7e?9e_+HP|sPjL}?!2#S5~B7n3r}-G(b|9b=bjY)-i>>+FqE#3HzY1g z8D3rtztX%O)1eS*m?zDa4R*{BpW-Q)u8sKyC`HCw1=M z|E~M*e*Uvwx%-n}zr5X^gk3EIY{k2w1Y-=!#G{fD90@O31O6&g1>93_L~k$3Sjkj9 zBVdE|cZ|1Xj?TTB)?>fo=j)Q%7`9@EL?Bc@doe58d1nR6(#vqdzt(; z8JDtVV`hUlgb-}yeNgh#1*pQc7O~`=KoAnyvu9FUfXRjtc)O9-wGz%nI<;a{AFbd# z1PdoXO#0?sPo5?tptgC^KnB*=NQHwL3MU$Kg@OL2-^0^b7KZw`s`&U;4QcWBdt0*b zG4k-RM`N^Mgn@NWNf%&{1Nl9gOJP&k9uBAB@G03j2Qq|Up2OE-o&yns9*))YBZmMa z-|A5Lvpj|Nj1x=**P0NmBr1k6Wu(B!L|b3Sa7mB*g)l1Y>rC4g=y~gU95e zgs;yt$Tz~4c|5$o(0g@!*j084*`YOuK4CJCZDd{R_|i~ByH6)zNk~~1N=D;;f42MR zM}O#F|F6$^>_cvS)vf=4=aSHFd2wb zf-sY_3indN5&-#%KDLBKm4snJs#LD3ZJGR;XC&yl_m^Hz>xI5GIc%&Tff(Zl+7;}y zKZJUlksx0IBT-qz5<-r4LNZRgB$bRb9~1;e$MlSVP+L|A&M^c;=Sp}NfjB;P!2~4D z|G*l+BcWj&U_%4YB>jw_z7ZEIA9GbOyaqfJ@ca^@gLW(5E-^0$hL40D{Vc3Y%2}#} z@eo6@m?UW(1U$xzW?My6i$A zoSek4Ez|AjN2{~jM3c|;P!pd9uw%YTdsk1!^0sio{Xw4i{f{iky#xAg7ih;Zbj(8m zIWGh3ePh^F>r2nQaAMntb@bTz*wT~5(2LnTJ-!~$7{%}`BI*+EmwdGJ@c6a=(?`Gi zDgXDQ4j(E!eJx$*^c(s2iGbY53J+`e;X{MJ@hyM0d&#%oJtRw4fQdjuK}Irws~~0o zr-~RT@Hz*O9jlkTi`Nm%O@VGv|7xy?v@Zp}838!vq%3*AYE!trB3ssvs#5|z=WT1B z>=S?%Li#p&Qlz}#0jO*V-ZNRYdSX)BNy;N)+XsPqcmUvyF{^!%+7Sa-8t>C_+n+4k zAotOZuo4{OVY1P%xFbCvS$RXOd?`5>0UjCoHef1n1N<>gO!hXop;LjjrO$OfzyJtWZ___4-Iufu$BS5 z%rmm;(Sf0peUNYyNH0jw=+oqzXmJlu) zD+w4^Vv>z992Z!BIvyQt#(`hlvoh0h(ccNrYz*Vd-ovqhLTcNxc@myEmj{Hr8v@v= zzJh@C`VH{8I0jKOAZ3+hr*r|1h?NKq-fY}cBF6hMe&?uc&HhkjHTtezK7ROkoTZK}AwRQltW?ekXg66$z10qRQig%Q00Ji-jHSLK0RCD6dY1E|@*vR}NM_Q` zpu;2N?UTLR%nF%99pbz8_pr5ssI1i|;AzM;BMu=sdXkqE>QBZ@_6&MgtWTyg^@m^) zrE!_nf&Do89m@e(^}db^oC8RwP+scIfhkDeo0Wt0K@r;KRRTiE*+bDZ<;60Tcpy-6 zoegk1DF7;55PisgOKA$wgo&4vo!{fa*yPEkj9xe2gaF@<^0R))_*u=eeNKy5X@6%-k1~8#)Olp_VaA_)xY`pe|_&q z-nC;eo#0NtZ)gpi2*?es;iCNg+h6xJyPtaK_wGLM?mjAK1mno>fGF6@z~fpHJ1*uK znW#J>Ta(Of!pJ~*<$Xv$WSDso`hphPEzizCb=8h@<%6sc2dwLuJdVnnq-BiBd4<$v zBt&%-o^kMy=H+DX_r=(UMq&H2y0SKfat&Fokay~9U*ML%O#Vz3yN1u#{Z@cad z;CfQFdWa%vq8thMO1RnDw)~IYZv{DU0)+DV(Y74EW;Vbc5B>lkjH@vw4sEsT{GAhv zi10r1oFW{j)d^VS`C4A!ejRoKo<#Hl4b#)ZANIT5VTK7u##R0v?8#B*Di z)k~vbw+uDQ>ML|*ZCVROT1%M6_N;|>kzUuxO9NjWIr!h{wd&b^eU)s?JP?Kc);t_& z_Z6Yaz<*V)l^1}#0(+3RB1xGi0ZGRIh^kkdR1!jg_N#qdl9qKbHdlSI{ z;zezg$r3?j@Kzz1jeoZ*oYXu@mz~O44oC$q5ZH_+fZkX&$uXWtU;t#fIyBMSc8(he zWkQzZdnCGJ?+AKT&||~o!SrZhRHiE>0GjuJ;aUjhu^ekFhPy<<&`ID@p%X$3EsF13 z;&KC`Oe{7eo=zBhBkrR~F{x-eZdlguQ`101jnrk33!onTwp&}NkJxoYk0IVy7FUVck z47ROm=b8?(FstmHP`(2mJhf;V#;D;|3dXZKbWEb|an;jtXJcMZExDJTF0RAtN|nLK)}sfTZ3As{lenfT*;)(KEtbVL;e`n1iz{@!ZRF0KJqa zeb;{Gr(xOi_KbtUR`+;!?2xF*m>11AD)1vCik#y8|y;| zo~>}Mz`rwMrSn|%uGXzyAS?&Um=X|-6(>0g4@mD5FCOF68}J@rMapaHlq6p4WBN`; zE35sBo&|3c5ED5KYpD-T@*zE79>I{y1x7h3TnualcYm$T6w)Gu#sDDaxoF!!e-<`G zA!acTB@fflV{fysk$Ycc;5`j}gZZ)ixE<(dgejHpCGGF;yM7VaBZ%jm1`jjR5GJ)d ze{b!mUj4R7(8=UmAFaQgaC4|sv$dx8_BYD{L>+9{_33kA^%eH$ZSYV?41*d|a1myQ z_T?TD+?X+<0plO^;vsMldRctS#lz&VeP_EzKJC8m{K6mpxQ{$LJA1cIm#5!1j0R2w zedXkDg@6zmoxK|v+zU`Dhmz&|4yR@Yj7$CmJ}Ezhia zczp66_B_)E%CEYfy=NmS5C9=w_S_nwL7N|c7pF+2;5*6RK){c{K8(MFpr8zEB-;q--Q06uaH*t|TCGT&#-^L}L&lwBZPxJfw(^@Et@z zK)Vx!_SXo-=|Z@=)C*uS@l8?F_W(FA&nBLY)SD4@{=G8;5z_pXQK#*0Pr&+Ut9q$8 z{{X!g8m=|^7TcPIL=|2g&cWzkTu%r~(_fM&(&v!Fe`zQg$fX3yz`nO(8HD4QU@J4U z5z17ux7FP=k$5z38xwrmR`eVk-izc>PM-pDJ3K2epEO;dC&u%U zP;S)U;dKt-!ui0%zA&`T+v?-pZQidP>iqm4__)`6%2(d+fjZTle%~+}I1!K=Mz5jN z{TqMnr*{ADu}^L*jH+G8hVIgqU=S8i1zrY<#(+PPWTXUQr9PYFvv8~}VO&N!G7>;~ zOTeeKKY*@m*L|b6L+eBU2n$;4Y~HOI2B1mnrF<(gVgIh?cNCt6%9F50HZqw*`#}e) zk4=4I8msi6I$rsmc`TGD1cIUCP}^i4N9=1H>T=!MZI6uc(J!oeDiV1d#m0{#>a3&n z4He6w7FedrI_8gLqJ;O(6@r!JfDFX9Ap{FUvlN&Qad9`h^(U+4aNkeYGGOSQ5dryT z+v3&n-CozzAQAw?nmT8vSaE)YJ>S+1-`&N$ishEJpMJ-ak*r%CF!QcIm#H#oBDw=d z2kbc*M1XD}(7ZLX4;xy)4dRmKfq>_WPO-{7Gp^4n!FrI3LhqWF(SW<#nCFQ2+-BF@ z6M-Rpkx(ERa3W%!r`BisQN!4$*#17J0a4czsE|CN_e6SPkqiCHHh zW130xX-sA$C}S}ua%XlsrY20xR}T=(ZQkbH?kj)wQ-1DaKK<^WpUiltOV_goP6Xt7 zR%lk-{x4qt^xaQg^Fwsv6@pn>7&t%1t1kox2}WIraKW0@OpS2zQZi3fq+ zn~)=HpUG_3vNmqm+hnb#;$GuXhk9n1j5GrdJG8%EG9cDw&jQ z`ARyU0L8jobPn@s^Yk#8Y;v*(qiR2cch*5u1<0R}2m;XPAxel4?%p$rF+CahhETVp zeW=rvu+TettT7*%i=Hyf(J&H`Cx!ztr!X&@2qLLi3%lYEDk2GSTk~TtBDy>RY?^ciU>cEdHdV=ROdV4H##+@&qZ$Mn4!dHS3@vXHA!&<( z|10dPA{v!WhHXIk85q|#20JRqgnA+IJ*_(f_gVN>(6@s7%Cl0*2=Ai|>RBOqdr#o= zD!0LWq1z2$m3#E{g+alfgiSfz&bS^arFa@?d251hjw-TghG@0+{v~ z=SGZI<@j7qa_3}PTPx7B(LgkOuunpJ`t3g5q1Qu!drYL~P$LGjCHV?K9mB4?&Wt!H zxp08rbQ^OS*h6!unmr8Y4Zy!Oi8=|nLXZk=8bBTTO+hacGW`ZdTXweQjUdV5kgE>V zCD%hkpg51BSx~E+^CwKdX2(iG{5>n9{eMi@mG_T^;$`0$X?>pM`$W6wG65O2k&edz zV_uez3m?F%{Z^TBO4K!B%t9lof=B;RD0-71=r76E%>B@~ZCb$yKN1VF+fY&#QuWP~69?sLdJBPz2xhyBP- ze$`F|`B?T;hCX(*J_61P?qw{7J`-8{~Wo_&a z%?JpVtAEo3=RYBU6XHtNnMgHCZZo^9w z2@LB)yaP=TA~6aIZ7yAQ=B>**I3De%Q^fp)DE73pm-BF$iX=oL;bmwDnI@vUGcp6- zR89c4NN+s!1a>4gbJe|Ok?@y(OoA?P(hpq%QONK7Pz_>nw3Mwdwf zlPLhl>GRIjvAN-_yyzlAHdE`f&ot?ccOs%I2*NX;D1mt>AV_wMqW#9EjyWjkV zd)s1Xi%MJj6v#kVRQD91*@BdUqYXJ9x-*>uqzQ=`&Ccp7JR4J>4@3)fka-`rgj!XE zW|?ptgp7W%onsBT%E}2kN3d6vy@g;=A7=y(fpkI)0i=|9DOpHa3GgQ#s?1*0bFiAP z0%KuTo-Gn(XklBZXpE74_xngvvT;Zx(G0vG9k_6%W3%vFRAh!0!h*aYahQg63Aw>K zWx?g6i+h{b2uiYOXR{yz@kmk%0@A^`1AQ#nh=&jm0EH|X5Dg=?eFr-*uQ|B! z{#f1ta5m~gz&30V;_pqhVCNdrG~^O*2_{xA^@aOx|9-E|-Dom<&V+hxVtAD42J$TE zNMcRcZUn0eZPKLb0JK3iZ|^$UX?>ILx~ty!1BZ>sWMMt7n=F@xy&ilb*IW+k0|fse z%#M!Pwdu{n0~PqAtcR!5kSACp+BZCWZuD@w-rwD(%~rBp4h*~UvSRK>)4$mTdWQ6* zF}7tJUwB{u9zPsIuKayU!WYjZg{5`lz&Yxm+b8|w2fp!1|N8^(d3JVoT{gd+u3eZ0 zP6Xt_^jE&Uf5Y>Be)pUweD3mqCY{d+#xiyikQo4?Pa3vpxiE$2VeJTBn}}@0&q8b} z(gTwj$z_us0yS-uk^+>6^q2wfwLFsKowR)uB0=)3giocwTVzmORPSWK+;mlW6A*mQ zo~`=4>c=%N&M?A>rzIsCg*{hxKUO6eFLn(*MQTGSXje}`0{*l2aGX|cLc%i$u7pli z*TY;;cued$Bn@K>_YTSKWuaO)qbXU_*$&EF^MK^{b$1^t@Y8Wvbhs|zT&>B8XGA;& zKjiI5;yXZ)z(a!&|Qyk=mu0Wgy_?9$@L;d-S5)JZ)~g!V|#*`8x)6rOfvbCT%*#$R%B*P*p^ z%r4BENF>;Eg`~x79Z%3gd3_zRxq!d04)05NoRci}{CvePJ?c3R{>;07woZSi-xscd z69Kt!9flJ2@BG8B+x_%|zk7Gx2l_0SgglKEZMJKB1Lk%hKtX_ta%CiA^>nPsuDpWD zG_NA_xNO+zR{(h4vIF2>0z!5Oi9548$$f4}v72HIRJG&&32_499WP0pKpX6Ol$=c%gxR` zuf^wfJdeC4VNj*^u@R0!aS~(fH3bTxEO!NnU z5VR{sPpivCSOiK{Q6J}^goLO-h{>e3}|Zk{kOEG$(Zfh8mP2! z&_YV^c{)+b$_R2gp|Ox86VpYJ-FFC8v3}IBDkK-9*<`#!&j=HR6dAEn zFP)wc)_N855IEu8y$MFLS~r3hDmxV{yXmoJ^a;Hhuk{ozmCegFVk@N~Dd0_;Kzlzb=<8mn|hCZH??u^IU6 zixq|_^byPP^$MD`-0J?Ay$aHU^(zn?WgeN>zBHg9Hmb)N`9OKr$On2R0FVruuy$gb zhB>W}u*~a0xelh=3D`exKL@!*x2gWrJCTtz?IZZD{fD+z$+Kn5p}rfk^nXewf|sVt z7l65rZz~e|LhBiQq2X0kS>R#O`p5W6Cbdj&W8Nqx!C84I_YFZnD7>oadw^&Xx9^${ z(2ll)1cyUKT>MTzMktnp5(GM2x5wa*U49KM3WTJ$q3hJjW8fb>15pM(RSDzRvwRW^ zwF;+or5*@OW>><&-_t;kNc4`(z7?Y1rNEpP1I4Hd$z_>*8GPwi{Pu%|WeE{td2Cb}#yphtjD~2$BeFfa*h7MnNPn{{C1p zvGzOyq}d@oNJzq%oC%4e(0uywKdOx0&$c_cj>FLw|G02&dxwH?k)r9$Np9l zmE}*Y<%(?ikYQGj%AJywB=oClZ&e2@>}_0#?J5CVd*1Y?HaH~(*cU2;^qHH z$e9OYk#7RJv0e0R@(uy31hA%|W0_tuqPF5eu(Bz9XN5qZK4)bXXG)Jb5_AMj?^Hv%W-tE5irH}c( zdp_)rU#rvQ>G$y(I1!NJbr#;(zx&Uhu>1EP``q1o-rPrR;lTjLP9SHMVBk)564Fuu zzwCOIM4q0IRgs|tuxDU9+ubJ+mV^n-$Oi%?C2@4GP4bJ5u{;fVvi=|dR(LytE?0=t zX#2+JGLU}^p~ynB*1SkszS?Ky*;*qq%LqwGHugsVqA3BDWFgKZ}i|#@JINCT#DkuJsVuvWaxGn2$ej@o`MNpA zRJ%HK`B^#ns>{QoCInjcK@6GDgX>x8X!BlV{jU2T&Dxs6wQw>x+m*-iXyX^O&GqLzTU}3n3sn zS0YGK!Xu<45|Ef^PP_k08^)wTCsld121uA#45DG+UgjX@RXz>|=#>z{{5v4*Ify{0 zDGI?6?zWD5A>_&v)}8pcy*g<2vEKlrhsM~hd%x&;Gjf6#wKpV_clkS5_pXrK2P6v= zHl!dN0i~4<`8k2K@QGk)C>XRykKyI;Ce4|c<&&5lnYYRTc^=xudwx)^Tb0TK>B))mjh>4YzjIlss>{%Q) zYBR1Qo8H`p9p@N{vifbKw_S(w7ky(+32sPeeu}rp#^5ziy4(A{>N%fy`beR!2}k}u z5s)Jl7S`b3`{#eOd&xKX#|CMEM}puBNh>3{halZ5!kvCu9EU7xr&9&Mv=JoE04NfT z3~&d+fo;wbq%)w6WG(^t8QBSWDH%!2+AsBE+cQsq5<7ez^<5FRWfm>ktoqDk(K@#D z0rh7=Y&1*?Z504X@GfPxndv0R33jo}?v>X{p3^a;#6KHfwsI{+3BV7bOK5w2q#O2H4n#T0s^5KULAlNiXxK` zqVa+elcw{Kd<~lm2;gyEUi$!{cN5AGcii3Nq9+7%7i{O;RqpmVt__cZ1Lan}5~3oh z8tfm#o7NJ@GqSSClq9h)m(vrPnsyZk(r&Z$eV=Cx>{-9mVO99O4kZn41K#E?OLkPQ zU4s*)EF1~-fL@x`KNuDU#CQ;h4t6)4q=kL2Ctso7p`WKZXL92<)A}RJx5#rae9h7$ zZ(Co%xXW@YDC|ndO6!yAi|Wy)T3yxAyBMWua&h@`TrjMAZlk%3M*2SQpFiOBPyD9) z-6xqjPnR}o;6y++Dk^(y|K=C{#O^tt@{~}zpQ3hF%By{l6 z(Uk}KAM5p)c|)+BN>FfOnt4rz4H1HGZ*P51Cqa;9jev}41i}9zlNaJ;sCOg@&4L(o z1AwiGxZ}Dgu6GTS66-JHWEi4lJGhj00{Y`RxK7=DAFbky&vkhmv@ZD5RlAe2ph^cMNNP=#V4iB#KI z>X6NmgMPl@g^&2j2R!ELr|8sp`n^p9CjzofPvNQkd*1RnyMOnf|FC=S+xn;hRfg~g z1v1&Ld>f489|83vL#dX*BA^YgHPjL7BA}BI1&jlqcrg?hR^e2coEea8Ie1JsW8KnT!y-*%f@c>~yVFw?F@f}?~4>!uxklaa{N z%zL5Ujo!uqgydLL@`T7eB0!ud?{WWj-Rf~Z?F1-GoMz7kdjneUcsN>JHWQo#bbaL>Tt0o)@17f_Jk# z)vepw(xJRjLAfG*eA#?+xOe5%SM2`js~-Egcf8xJe?h0m)9-Z+oCwIej=~fB{r*n7 z=RN67yEpz)%lkmETY_%@Gq4DH;YbMjf?5GQeBYi?kAXd-z>i3VFWemZl93m9whFh& zybLpM0fN6x;Z&$=2Ny$!GomxRM9Iluv$``G&-?rqFO7kr05}Wsfc=#+#@_${AOJ~3 zK~!%fB3zsFT~?3UCj$4h4T-&`fH@&5WqXBa1YithWyB%#5)DHUkiX^$$%xAunX$Uk z=L%vo^p5@23nBy!8v%M9>s^Y`c_s0HV7yELlAZ z$CC0OHr>ncU2P{ZPzL}Ve22o10GJE_HLgjLeAuOJEgIgIF5^5b$^pH1PnA5Lga4sN zA~Tv_(DeZ1#gC`WLxIc#w8eW8y(N-kGJtcD^d5k$6M}=}F`*nomJD>p9Faw*BOilz z@EJ%maBYOh36|+NdRE#x);u7+jAXZ-L(Z%(+_PnNGk|t-3~-%ro_ioXT*-89vReH; zA0nKR)$QDD1;^~liCUZx?l#wo;&IKnI8Ar0uW@6*|K6HxPRIE6b#zRvbeI9;jr9J0 z$P+*G{a^D-pK$m-$U9_)JpEkJz=?pI!$kJ4{=rx8Ui=jgpwO!n^w|LFm1JaK)GxcZ z!}{TR`F`ezrC84#n(4`K(-PP zj3d;aI*Zb9)%$qf)Z?s?~>w4K5laCJs`p}-hv$@N*^U>-$pXBT|*H|_MZ zF8Jery-e8AW^%y9A_8?FJ((A#&r2FohB+?o34+9K(k+K{p?%~ZAVg0LpFXz!Ef5de zGjix*MiQ<^Ix`vBw%fS#jQ~F-%li$7u=Ndxp}|H%e;7X^i5@XbY;V_%=s5|&>ztpI zhhotwX(Rbw$Cu>DjQNJ!`IH}g@M}KpEAI6`nwn2PRyA-UAge0k2lj7!*>~=K{@QP{ zg|PhI2Lh+%;l#r+R*(en^#MKr0PbYM;#7uh(XMV*eg^2l!*DD}tq98&Vq^L#L3l#2 zD)KWUK_y_Gkgv6Rw#clZVoC-EI#91p;;or_WV)Tr`a`NCgrQ12z~sHNcD20%e9HciB5(szQ%N zyLKqUK&^u!CJt_c1g=J%7$yYILa5JDm*|OsmxFye<%ik@N8v(wC7B5CS{))w2kPkA z$P(2Vm@?sVqA^d}9{LU*gy_*AQXsh|2&6sC4334B)3(gRgXE%>Vc}FLck9E^UxT!` z-SG)t>^(P6Xr#>)8MG+dp~t?;rM?yLY{z>#ZUV0Cse-N06p}Q@Df>mMVN_01?>T%*qL% zDA~qy#lY<`EeDO22x2c|9SD_?)ed3g%M}mVm4kJEC*tg%S|*axjSJs)T^xH!(zh1hBX{ zL-`%Y{1a|wz0sw2=pwAN`fnJh4pTR*t>v!f!kx;!sNaFFf zMiMJxLgb>)f3CYmNIm?j1M$#DnWsfVxo{UALZ`aU^jjd|Y5_A`1`7JDK&EhLbM$vo6b>ognn_0Yyy6^iBIZf#7YeG0M;GpjTA}JCt|z zJ#V-F$1nZckG$&6m%mu2%G2*$11AEq(K7b?{S~|4`1^0&z4lpGwO0hBoF}|W%h2!? zv+l~9p+LC=#*+}Mv5-!HK9QFTAS5Xuo)L@$tY=_S!>CYSflMH&N&r2Q2-RoMcLC~G z$=>8Ww5!SSwj(L5!a69k6)gPXi2P$hE##qrL`OT5}zg*nHf8w?8v>Ic-bGV9*1gNz8{gD{?VH z--c%e`h0jCT2DFYLYdvuqv2OxFO#jYdmjjq?}*zooNR5L5BGrhE_>5Yb;_3NfOqgO z>i|A0LysJm{1E7a0nA00SU2Wcd7t=XP=$q|F3B^5#JbC}_8~(4h6s-(lO!Vf|A43Pbc+}tf$aj6|vmShxv$L}gxaLlORT?-Ekd3ynfBjGY z#_mN=eq@{N67R%V$$Ze*BIYxs0*4HI7w==e0dTF5g4LbljiEj>4++VHyQu>5VS!CO z3kZD2$^vBsQl|H2x|n$Z60(z#mq8j6@?!V4kRAl__B@6J>9xg(Hs~@VXfwi4k=BX~ zr{09Zjc+z4Y} zC3Gq!XfpAw5s+-2Tq7W4L#=?CfFK~~&vu(&9wVnynLP|(ZT%#tTtR;w{v-lIUu}1S zlYKuVzlO@eq$rsM6D;TDvg}NePjY8xC_C_N<|2 zLsuA@)%rdjL(JX|3}@fAX&D*HP?ef{-~WJ%qx0~7>H|K-Nwy+ zll&PZ5SY8-`h*Yv;h_!iQAX6g{mmccuaG4B=u=;pQ@?4giPJGdm*e5hOEpNAb z`cFUfH$Umg_jpt`WuC6F22KQIgGKEB;MLR@IRKQWFCqwVN^2^i!va{%-W0q9^0LP^#MFU=LA%hAY>pp0rUa* zuO!BsoLSgb0I9vKs_odH8EGJ0CIm=Bz)(l4o`=l7GBUUEz=FyqgTA2us86?E@6T0) zK*@`G2CDI^a%RLRyN2(X4h-=QkCqY!okRMIVO+s=nzxi_$#ab0IUfyW9Ai!<#qfTV zfHWB}l)|4o=o7(210CMfcE7#f-WoX_w42U0=pGFxDVoGi0D08W zW$pH@BmqN>6a-ouNf$s)n5Z~F_RyO|PefQuH(65i3Q*gW^I`Q1_{BK>Kn$1+p(n{b z6c|P(V4F^q>b68W>mU?Ba^-Ewzku#>|HF2M$E4MV$J3(BYO~>_uB>k<-@@9{+Mu~0 zUVh7^h&dOrKWy0Zm)KEndLovO9S<4Qd=VeRqyIuUlXl3P6TAd zB=-Bi`mo(EKK2c}xBm96+M}7bpchhpgipODp!Ui;k%f#@V15xx$cM>lv&+nTfzK|_ zZv?m5cR2J~*1p-b>GPnsAfwzvUCnmw*X{)nsH8ALAAl zI3-Jn%(c$!ed|0W6x!a5aI9QAHvt*wTRk8X0s`-}W&&^l+w<-~^1*ZX;TiPG&}lov z*fo5rgR21+&Bkn(9|(=@+Jf#$ULXTYTc*F!qu{3+`FmY107)GB<=z7abWAeZbr1a_ zawH)&O19#M_FPX4gy$zrp&qIuTCLwPyz6kSPO|1cTR&xLeoU?JgeOP)f?e3h{D$WP zz6-+PXn1Te0`Zs#KJ2>NikHn{aR|c6t~8_#JT^!|#@GU)$vH~u)$&6aA~E66wANQ` zP&At}65=-OBqTfDc>B@2ts2ZfGJ?o95j{I&0wA)dp;*mc8>z8&-TUEp{F`UI=o9aA z+uNS~36^sDn>BDEAS)KJ|NZZN-R^h4{yytpJC|Kd+U-n$GXZ29g|Z7hMrXfXk(IS@ znauM7gA#WKH--5S7@d&l>p;PHmydc+R0s>>0In4$Ff}t&7BY}V<#K26+ zfdYnT@!V~I#lU#mAw?3yVJRLD&T-}LonW9d$`}11*l(Z)Lu4G__)c#Y&c%t|dJ0vn zJ3A5U&{hDKvg@m)#AIzc#`iQCyy<~=?Nv8<0=at;njWy85l+^}?cu-pJcdK{GKQUa zoik!GbeVj!BZO^1$eM>4SzF`xRxD&H_qb>xIEPMAUs+fh%$-?MxsB&6+)Te^5_kVO z&nC-l!H+m<_!HV>MxL^7eNgC=c(^!crjs`c*RpF}|3DbV5QJ}i_));@f^=XZ;Z!5MYV;3!CcGarB0!;E}z4ea0l z?uYDt>Du4hz3a7?wV5s3W$$lP_Y{0qAzEeVRu%5Gaw<|9@*)6o0E>Qo>Y4CGdjMb! z`N~Mj8fjV!e=7BEZCN273cv!vn&f0;;bj`$G<1N#RrPr!LCU-eS-4q7OmIjm5gNvQ zBzZ&~R>az_r^Ken841%*Mg+m`O0p*2L)AeRPDNlD>qR@y%I)_9*w!+Rcn-(NSnPz% z;Po+X`!nQel{q{kLHIsRc<^H@0fFbXc|eXJAmO-L?;Ecc0h=V28_4atb6y9eX&KKQ z5E*z~#vcQ;q5e!JjB7XB!%!vIFhJn#-5`nDOJ(u&tBfoWh#f+D+`ocv1bz<6nOOAd zJ^u#g5%b7cI8_Y6YOSKO5bHB!^_FcL#xEvnK@qNK_CY zw-c5w8~rj!jC^gKJrPEZfwYY9tN3BO=t1f7q4!C0L9*~TPCmyra<~-tzw12nKIjQr zL~dbBsAtQ+;n7H;5vOJ)ctV+t2JA1`G#CUnCn22Fo+XlJ9-Afuk~KU9%)O6J`c!Tv z`MgnZc=k~CUG90?{dc_LlOF!TcevtrWOhFN%(D?sdfD&ym+fBqjc?w)`nx`qLa%HU ztHMb#kQ9KTFQjd@ULgjysErj%h)|G8NDC}XOIv2U+b9o`mftrZ|&Nlj=Iyr(1}jAxi{XW>=k`Rear+0%E? zZ|dJmU}3m_m$SUg9-&3H+J~gV+LN75B%Xxa_iuUOvvdk12kpBY^TM-@w zRtVCEJR5e$`yg%2ns{O|J!Kw)Ko%~*V}L*~?Tf-Yfo;mdzqAiCPe=*4HxLZ1Gi^tr zm#Gb8#1=rhk{oQ~8cD6fz|h9k4wv6+HVe<74$yY9z8C`m>@nDTQGY6@Jev^=^4@g; zvO3qU(Oe+y$5|;I*Fr2(IYG9xJi7>eGwOmDR<0fI0l`ogOaym%yh__m#$86&6_J9( zd*Ld^-F~f;cgx#5l22iwR~;=;_=P-+AU_5Du(LggO_K8w-_;YC+*7wa3q-&+&-6Ma ziw}L-F0l{`yiZ5)LjOSsRT>T^z>o7wszl~y2Wz29*7t)%g}M|dWBck5DGpmg&xy~g z2*?e5Yxom;i+cE8p9}FjFQZSo4JZj{b+x)PPeT^=rt*z(LLMa04~1$uQTH4U%sJwt zi(UVfM=R#BV7aZYmkF%55yyJe|F8=n{DZ)C!$F-eIdSibdO=KQE}P2~Jzq92DT(oS ztiS%@3qI~=9`vbqelkwMr@t8yob+)R1n+&@r|zEffamYt_vd}IWuQsIGZY}{cR~=X zP{;(7y+&Sici2|d?0Od3R1&8NK;9G%1YR6_K5I)xt^x?&=+zjA!Y0XzSj=|o#S>z{ z7XP1p*<9O`d5kJDLqKs0>9cl-Ev|w38Iee3=%6kG{{h_2h++cv5kQCWg3lLWhg<3& zGZ@HL68IzsWabGW`#|82eIoOMBVQ(82<9u#MdoGEF;C@#OjbV4H8Q>1Gc#f_dtd5a zB_QG%Flijbiyk%CLr;_H{SipY0N`wc?qLBBN$`d^pg;hM1jfT&IuS6Gyp#necdd9r zFcDXQ_9)W4IWTtcgKHi_#CZ-3@S7f-7(jSg$TMN@f&*A4B{2kNQvc9{k+~wdJ?t=J z*p-r$4E#zcTdy}HNDqR-$?ohOiS-%arT(|F^f+Q@v+w#Fq2*kV%;S(JaJLboUW5Y~ zaiYxRNJ*K?4rCin#6mJhHb@|!i2;KCVVkfn=`q3j!9WgUYI9g14nX*0Kd`5cyc5F) zY_{Q0tR_qQmxpmd7?{ofK|UK_76NK(D1Xc3_IJHv_kFK<#HU?(_2n;+nfQ|ask8ni zt&HVs=P!Qh+jg)2iQ6|tAb>4)`~xt8h0g|}0)i4aN=Vk)j`146MENW4!!pxkL}-N! zj8$0xbOyu`tfMYS4;#EGl~*MzXQ~?|EZApNdoobFA)G6CH)bSaBN;K>&q&?Ot5Vt3 zG36qO$jHoQ!Z0JiI+hqz^7u?P3Xt@SnN7xY@MJ(aVVp`x*5Q6erc^hmSCfN)KiU>f z!77V*JSvhh#%3=|pTqkz0)nEfJhw_f`h2RztP&8|6&*PZHaDX>2Jv7LF`8Q4CvOJ4 z3wa!kSn#fC+#zLP*6QUQW8J0pGMb{pE-my^`fk|$jbMm9F&slb0BP!ZL9iA*5qUTh z)*nN})T1=OYal6d;?Qc&2a_5Du?*zdqlI;AxRalR#l(wu*fBvr3B&51qooUn{HC8s zLaZ->=K}^zIH9Y5=Oeb$!;O%Hm@H;iF@y?ov`FUIABQqDL4BDH0rS|HF=B)Ll3g2P zptqU7_0cY3Utx|3dY;DLn2QCTvG`%ZKK?KqG9$!`06r(T_F`BU+@pD`>E+RX@5A2p zv}Zlw^p$j2S55>3l(B!)bAMs?Yft>_X6bQ9&L1s6On7fY5_#p>$h;;Bvg zERJ304c;4+Eh8MN=cU`hn-T!J_FcD=?78yY;++8IXJiZQ6aGf|*T{u>7I2)|yPsZ+7BV;bn;kUP2*zq1kh$Kbsfuf0zf?j@%uOLLJvD0ijc#TK{u% zARlC)=!|$2$>ip(fOoxo2+M(fR?o+xIpC?i0+^W5h1%oE`q zt4F;0^Bfw4Z6m;!hG4OG1$X?-yj%xsiO_OlRbNk8x0pvEr(U7{$Sa|zZt;mm7&hi0 zx#=yOf(0^-+!P^5?Y&4|kbog@)l;lYU*X#!9q^i5MCkhbiXTA46SG>MGD$YQF0T@q z@n<;{t?2~qo|ES}oC{A$TO%Q)YuGqN&ji{QlXdGW*SX)y?+ zovMX0d+1mj|4mP0ff=^+&Ch-4f4ugISAPypx0mwYCj!!YfB(L>KW_IQ@B6E}_rIfG zfn7-j5?P27ELN1bKCBCOIg_&cB+wq0`wF%Q^kWy!Ksu1BDr{>85-Sk8$twYEQsR?& zDvmw%DJ23(A`4QKo?fOWW5K%$Sc3;biBWGi$```UL^sq2Nq=Ufq6+oOYzpm*Jbcn_ zy@z&;?aA6kb$|}E?nOQT-)PtNY(_MycgPMO8{ld&b_%IXigf@M(23(A12<@HHGq)sL@2?6QPBXMvsId@}#A0Pn(By>A#Ak2Y? z-{+nDR)-{L_ucL$vlAgDD40y$s_UmKjXr6=Sr!4ZR9DRTptjNuuz6TSHxg2^h_aSE z-sgrUCwqDh*QninKJ)7d34xvSv12a@+hI78JJdLML84@&Sm4o zKJ4k=)^PjtHu^fp-U|c&hKGE7X5Z>yQr_l&97~5Q*>S^Ezp+SRm=5)z_% zQNXN(Aqy)*Qm`N(Iq@n0dfX&{F&X*@yc07|3xE#Rn-H%tM*AO`=VYu!S_%vc|zFhLZCVY^h$ypXblo%V6a!HAzU1Gq+W~;^q|ih zNb6n}>jNP;Lw9n&^~o$x#PklpxYu0~k{He<-V@Y6A-Ni=rhjy#yqK$#f zvtZ-e=YoucuxHJPN$)=xyJ;xa&=-eH>8V&YHud;mzusiUIY!^9#=6ZQ2faM{DR=wJ zFaL=LTzz(S_5qzUFSXw%0&*~@H~sQ|*uCg8J|}oC6tGZujW2q(a1G-rzZp`Hml>$* zleZh@ikD*$q{K5qpm4IYpMg2`T##-igh_#C>fI4wuAx-Zx{`L74iI>g9y1SA_up3{i<*jzDk(oG$wA>yODx zAxV9XMg6g!Fy{hKEYoE2=)tjFYOhyzs)-yWUIh>%VCHI1SH4) z_Ie%IM^94a5n-JgcwZ(~`DkMwlOefY2`-b6!&`I0)9PwZXE;g#03ZNKL_t(G;A779 z)W-^ivN_qav6|)dFfnQJGx@RldV3Q)^zf-Dr?w44vC`wAZ62U}5{578UKAsab?u`I2W-oMAQPX=JF!e__$~l?zo$76*$Gn$ z__C9LItfHCkc1&&oet=$6RlWBL;&CebPV7O5GURp@Th34eid4U`pdubVfAsnn%AK+ zGJ(+Cl1OUNlS0I=8@K{@^lqp}qzYMz<+?`=Z77~d)gcd%DuW7x{Dp6d#5T@68|uAT zY6PNzUK`Y{9%pR*X=505;d6xtr)1wr!JG`#J9@4n!7#$+^S70gdEs1tFwcyQgjU9( z?yK&4>)pS2^}`=~`@3BJLY&zywZ9RaTxxAUgkD{?``xd2>+W?wbf-2jGO*UwLPzVW z+6r=!?QY{DNWiG7dnF+}gb6`As@-)PCBajGI!J)}nm2=Vs6+r4|LXK8t1}4$(spj~ zlB{_`)<}Wgx4z2=+KeEjM6?Lq!a76WZq!dDABFZPc}e;Q+nbSxnKw&8e-?t3$y2>| z?Da956(NsXNk>|aFGidl4P&?>5TV{lI2X;xN!go8ip^nb$?ou+t_C+I0ZBa`p!1$QewLkD6!Hqd`?C7MJ>79HbSFvV+4ngD z;4RVzBGIeiI@zKNjMeg2IJ>ArTN z_l1u3UCMTy9`yD2r+xT4zx0RidkDq4WIs@NX%mqD@7I5P_ku_NU0X!jNazb)wOfme z9D*Vkyi}e&Z{@0&W7Mh1&u-MAJoFL-c?G1Fa;Twp z*7$oJ;?3v{x-id2On9~&4U-2w6^rcSTPh61>qK(bSr%fYiQ&D95hKs<=ux>bq|3>S z$JrAYPrhtUA64x0fayN$z7vT;pbGjBV&R}QJHbmr+XP@XeW2ZW86n4n2xqgj2DUlG z%*sTt?1|6@ur(~rZIn;DGWnH+bo=iz)!)`&8_bRnMp8on-}C~%vv6v@7ISaqh5Exi|>0}|@rLOAR6tb1c zuS6!%m4<66C`Q>Uz#IU6;UyuUHX%(J_@9!F%4_2j)GAr4JR#I~N}yKAPGvV4u{*}2 zl9C^2>$ENXIg|}`yWEDbrYZ;HJlDsxEug<5MU`Be%CUzgL`4>{QEb>aI3jF{+5+no z5{HV!40)3GDngRIBiD{5AZboW5`u-~f=CJg0~kNFg9&4RLp_|3G^7XTieP?8Rv#vJ z_c_?r&Y)UzEHc3EIUtenV8}=Vq75`JA{*FNPfr)d!Cp-w8gK>Aivgop zfqmuq&}4B;sII;xVuZ#(b$(>86Em|9@|c8t7$D$yYE=KopOT70OXGJ|AV)$yOJjVx z#|}3JG*rt-gN@12W|*%q{3<(|y2&^uXqX?^)0ulqFvL-EV`R=e)P3g&pfB#_* z``|lX@p~{MUowAQx&-9+|Ir(FullwRZ#^wwr3wupP^U*`Rs?1eQ%@id!JU9k1Si#}l=?IKeB7 zCm4rH5)j~La{=C0VuN~+g=ma5DqrV=z9yw}f!wp@E0ZDAEyO3gpOG1Pt|TC1As5gO zUI|}qIr-dn^c{#dogmO`Dr><4{FfIyFhf#k?5zv>m9MI)>JS?{hGrav3qK$U%A23loh9Xpi@NL?FHH`3MQ!A@LtQB5sdJ z#$yhO5pu0R1K)5hgvyz%O}>c&cFkc_P1Zbj$LBgH8TNd;r{luPt~`V2*@)p^8QEv~ ztWulSDmCF zRSAodfv&^lzl11Z9c!Kvw3FbaDLgPU@0H!tda<3W?xF zmbR+itgPbN(H@Xh0wN(hqh86ySmu=m5Rse=dHPQ5@Epjzet1)XgFZ{1hp}b=kpLST zKx2f^_*{daBs=|T5H47A*z>`O?*mwMQ=#AF*=Wl19or%oLcaE{9*sp;!&VG@0`UXy zQ0@(JIS_z3*}*>da${NZyb32O(IbKSM6jtLX8aL9&zVqwntch|o%Lr6ZoAxVfdMO35N|AAymyqY##M7;xhP0FL8{zmj!JTayHn9MOd0H~y zlmR{k^&n66eT=c-0*En>gaLSJO9HxK(Hc5W+cbGMBQ6#BK$)}9tt=F24d74jBN&~K zuvFejA5>&S`(##bN;uFCHG~e@GV@wYNfhcs>cX+s&|d@OdRi@sjzt{Ck$Q>0`5_M?{|}ffPL>P3~gH81J8ps zAcO{)E}?v?AH%=!86`mG`G9`QatSm?BqJyoX5s`V*`3F*u&$UiTq;dY?!zC(Q_PXD zDT0ZKf$pYb^aP2Qh7#5zp&(#6z<##_YtKl~c6pV!XwHX|kY#Xt=v=plteshz4cPm* zYrpl|Cr)HcFID&%lOZP!@k4z{7@g>YZKNW7J~wiX4wKqkAJ%RSag0RNi4`Wc^WQf9 zs_-k!@#0Mb_FS~#g@;6Nu2<$68&jE#gL_?j<^TAe-?;W8&OZ3;ztMDek^i{#2*~T7 z`SRWGe%Up)0MRKnnWq33f1A)#&w~%J-h`b-gamI7q~>?zT!h)LmL&?Nl~;40y|zC0lWBCGtEm3$J^lgTynh*X4X*8ds6 z$8rYB)BZs_Pi&$h4l^>7+C{G?$RXF$b|l^hwDBx_3c#9&AF2%5Zyop9Zy_&XyuvCI z<_RSTGG!wnAw5c&xR5D{Q9?qxaL^OhLMZ3l9uP;^X~B7HD!B`aB5$9PUWAxdbp4cQ!#&Km{U7|%*u0I>Fz&Cr~CmGqe{ze!Iv z2PUf^$hGF(@P*f3;&(XzBhB^buiB!`P4Q&d7;fdel))R)3*j>JvIvZTZF-9Y^iMn= z%R7DkxAzB#*HEV+qwFq==OZN%B|*uENRjAH$K$qfIQN!lcu&4Fk00RUa3D;MhtRQ* zd*Ndp3D7~pawmO5?udVbcB^lOsCUrI_Gy^HyYR#>sLN*754!xa-T(Fahdt%$kGSnmCbR8DdFhfNAp8CP zirq_|{Epq9{>%rro~-gY`aM`6mdDqC5rUkxcdKJ`@x1_IgdkBHX7`{y7}BFM>h5<& zwCq|44Fb}G&(I*Nycje25)hB=o)LtseHqX`uP3DRn1F4S`YOmt<`v7ru*fzFZ&Ru# z(X~CJ<00$cEuJ}*KY(oCA$Ee4$kc(E&$uh^p+08sVte(SPzK5+^9AV*Ndt_-th}_2 zB1|hKO23j;<5ME?F_4DN+VPNQ;=*q&YLN|L-eEc~I{Tds;^Lo7Gh$NHZ{IlB9%2 zfp`P*23AeKy`RK$6T`4(o{wgzOkTk5sqA?e7WO%Ub(4KjcSv0KK2;A$^pNlY3SM3o zq6Z#D=ns6S*^}F)=b(uFLO#d{k?Qk4hD_^2g7M&hl22LuT`Rd_C$5uYS+h{q+6sbar-j*d@Q{|6Mu+@Wj+0KN$rCZHU_Q3aHg7?pqu!4B-ikAWp1SHC|(w{aYF;5*Vj>nDW5>I!Wsh=h7a!aOn|Ftq%LEOxJw z1K%~73-Ul=s90`RMsaPk2L#@q5|D5-uDxhrjDh{=PS7_20vPiQyqXOS6GDLBZ8#*M z8`uF-6hkj^f?;(xc@c=_NBAm#hLbT_^6;YE>j7bp2?;sKqNjnWZLtk{I9cmh zBW|$SpvM7&jl@&2d_8eHYk$#41z~(}9tnqH=@{2CTiY0dAL{wG=Re@zeC*@y^aV8i zU!*@S2?DZz|GOWu`%m|O`SQ(=zNk=GhOb^8npF}6AQo1Zy`P1d;4?@rFid53Y+>w<-KQ=cZ@4$?(0D7-)MfFLj* za%hMZ=U`x7gU!)iWpeaxziErQi@ZWi5L}O@`SG+^4keBcvd}=ilNJr{syrdh1~Ket zseYPRZgmx;ppR$M6M9Dsj4f4w%@2kgrnJBt0N~N>!)aOxvd@^pI*0*BL@4P2g11%n$U0K%SlMH zCvQh?+eR9c+;N-DHphIEk#rhsOfHnDw660FGu({0(}!QN|G_`F=3}qC^471^Y5ZdQ zeQ6MoKm4vg+Wr1F+`G+)1<1EWc?MAQeJu+n^_<`+NUgjoxZ7F0gR&6#0052hSo^dM z>J7-qQ1;9W;9^~+2W5qPXvohPtUhSR=}CGodp8By6=@LJR>8hJA4m=K^JcOkvZda) zNs@bI&!t{7&&Djgt4;U=`0BXXN;oQy2a=Pc2?kDU5^5RbG$1YS*i5e^NPm;9BPho) zY=y~mOJhihK=!PZql9MM#(wJ;l|az%WEq$~AIn_#fD{B|pyPQC$Pgzb9v#$-`HsV_ z95moJKkOYm#U}TJ7+ApM_W>X>i0i=b%c4MCun<&LaJnlGZB50;-3 z+xc4@@n~BEy-Xf7bSj=SrMUewnYTS5|I!x+7-oS@#< zNhEoc3j%ni&kKjX{^IYt*X#ezH{9bsHl<&z|6lY3WdEKwe97*4AN`}d{dJspPN3b5 zq+6OKsTY6-JsK3=03;wIGywzxm|OmoBFgP#Z$HQ*XlnXsxBTb8Ou_JOw~jtl0?WvZU&vp5)sG z8hRAk+Sf7i0*TkaLw_)2thK)a)(#+J?m_(OcGn5W;`#v(4**66=1vxdNeT$BPs74? zMADIkoMm|&k&G0iQF0}k4#k#=#QyS7fNn&iF8~8&-ldf2bx&HJjPGM_7J|o~9}f+4 zJ2CzCIhW*SBE;{oXTpY~^>s{0w=vf$Ai}#`a7;xW%5WN3m$Oe!hh^}Y|Ml80z1ux+ z`>$-ix)}ezs0qk^zrWS)zkI=e-~HLYX^H2h$AXR268=KsxrQ>?jGpdJqe00|GQOvB zWgv5QEsOi#;>E~FPzJgQ2(2VM_l1~sy^$c`j`vIs0&IE`lTE}MNE3lLAvbH@m!nBX zr30~%HT`8IAk*8be1%7*0_$6B(qzXn)OKt(UnAh?J(-5tP4cpEbAa@!p-M0X1~MS` zNY_=!6Ypqo-dN&oA@DELaW=nfB^me}%@KVW({glmQ&K{G8OsO+MBk?`n0F9}`jq<) z;*kvacp1PQc18^V3^VIM2W7)@D284}5P&lF8+k`n8?v+xKp+J*DpVAN`)ENT#?ATo; zB^sUt-Utd2>NW~_6-eZ2&que{0eBVgYo3HXZ?b1(D~3*~&OE;(hEy%00MTQDjA2pM zW|N`Y0wu*~vUnTEuqRR$b?!M+c#2jV-}W&<%#X-UHPf6V99O~P1UQSs`MAF-0)eMu z4f};PhQb)plhP+69IO5}FwRFOP%suM!uYS)r{_K4}Z$tzI!4pqI<`R$Tb;wW!sSFskKGeug9}!c z8?r_qvim5;+I^^B$w#}TOUs5FkWoK|MK%4oIFb)C`O-P=j9byUH-vXY7ck*3(CJz3 z!0AA5?B-gVG0&qH62dv~^sAmn0lUIR7C1D-?Fb2rd26nN_ZR(Bon43F=utlXN@L`M z97bsRT&5n6p|UhAM}e`+)cQ9g3avyYEDUz}!+#pul!0roCj!=)_rzr691TudpCzCp zxaFJ?@=BFqOiD(q?FZm$xhFY+Xr#k(bn<@Ikfy^cTf?xb6S35D(#rIH#5y#8#rhiG z(Hxa1WAtT&e^IpU*ZXzWs#{{K7tv8E{vSs~~*_ z+ShVI0^uxlXr!bf7E=PSLbTS}hy7fUAGB4|hn8zIul5nXYxk%zeYIpKFD>w z5fBKo^6L8Z4RSYd)j)-dVSgJ@!`($E6iOfv^k8`e#>ZH}91;$(dvV?LYs3CBL-kNFBEP&`mJ5E7#^K_sTSqSS0RugGYIqK9q#G2gU1Y&$<3G zBGv|w61FT{%-e1K=KaS+(aE6OqkibHI@yZD9rc7Rla+N~{oHj6G8;eQezQKDXKb;Hy6NZ{6lLXRjMm z;6?Pu#Y;f`_=jG#d-<0?u#L)W=hb@u2x0*fLbJ`p<8cgd%80`h45IfXle-`VBR1XiEr<&g1#R@#gmeHvXian- zGDycbZ%#~afTsf;d_UxXU&- zA0Fbx$M@3a2h4r=JdXcE$%lJS|Dk)m`bl4Yw+HDQdoldJC<(~^uio?pyXW8QXLi@Y z7thnh84XZXQQgzL0}b2CPThgB(%o4BK5EnO2%e@0-WpOWw_BtA}Nn50F|$9{L+ z?y^9@@Pm5J!4yNMb!aIN1t$$W$>0A2mi;jTo_xsCsFaKZOvHO!ByF>7PgoR%KkuKWH=qQNDn)hQh z3?wO+c2TPxasX3nfYiXB{g0p$@2#EqM0zOX3bIu4Z+IW;n}uJ^0Qb$=6OxgSiWF?| z998|g)+Z^k(EhOrSVE?>&Onj@pwkYKlwT2r^c|38`Lj3_A>C|{cS|n{jxYE-=oma2 z2+p-VNQxTT?f+oYVXPtvSqbeFvY@03S0o}0D}>@0LXwe@UN3na;JNLDqv^aY*c}{+ zep;~xRN6DHT5qR@lC)y9Y$;dW0vA9TVOcv?c9 zhszktw@M+ooW5@Ec_SLfZr+{NhZr7peDb+b48zhFqqbgEh9uiJ)SF#jAzb0*G!2h6+JdxYO#V|z9#!h?B#+r{g zCqt8vtH~G3OV0?b=|--Q)R8=6AUW~j(5fachj--!wb_f?nvEa!TC}Tp5?1EbU=qTF z217J)gTcM0eQtxf^PvC7|NXoC#aI99dmX-zemKtcqWO365s-KO&iCzp{p0^PTWnyq zZ-51icJ!j=Y@{GT$jW%R2*V2Afo@pKdjv=2yHOpYEt}k1pP7XW zW@V&u!=#JlRUufj@GmMK#v0inkO!L&rrr%91|i%^$VBDgu)3^o)}F&m>b%33H^>iHN%p!J_OLx{#S0lk3<7vJZC5Gtid$_|nO%LNgh z%SO2bKzd~cUY4I-_~kz&4CFOACM3&^BF3R-AzNLCLynlQKm-Gx3tkFrpMmSlg97(> z*IP+PmKFQDgT2KIZO^|=6tKzP3=fXd>-d)n6Oy($bVfZV-$K1{AiMhBO zJrjlO1DZ%sY!2s8tTu-2Iha#uJfRFeKK10Rc85KiI6s)p+2n$AEi{rCI$ zE5F8TxaI$KQ4x^+et*^OHy`o#-8)`bgzH17QaF`uz@k263;5N#)f@WzIYpLNv1S zRF;weXj#yfQHFSNkT7KAWGRB7OA8D5_%lqV-D3_=rc$RHi9W37G;Q}XvRkA}TxJN$)#YICiJjG>1xCZ{7H_rnF6e&)&kv+scz z8FIZcX|9P7l7K#bN4Q!=5X{@BiRk#g+pP74O$+#;Mkhi(8S;H82Xexi&U{|f4;5T4J-aoQ(qb z1OQNkfDDV6-0zcR6BTz*g|N&3-!!zPmoo*7`pgPQCcRd2N*Qa(=?dsGVv~|EtmlY2 zw~`J5=1@NNTSWr4giV<)v+}mQU&)8%&O8NMyi10@%s$nNqBe{&sh$Ut)4r0>E*v{p zKj~>QK9w|#^#aD&%!7gV6sXVcg}K2)UPhBj;GdC|WDd)8W7m)*U_C?cuuSQ*VGfcd z?S>*Clnc>80kn~;)vzSjk1gPBp|?fbb&BC6lm|q%4#8BW&`z!VCX$q54lpWUmoTr;|7w-+4fmSX8(tF4S8X08D0mN2b`$2KEoUf zC2?kRrnfP-z+{BBf@Hy-b+4$CwWUXj1a^F$64GVOJ3RMKo^#({eE4VG@v~%xzQz8$ zXb8xD|E~M({?mj0VE5iXJxjmk0Y+-Z(0WbCh;?PPgPh$@JuL_-;O}yWyUT(`M?gZu zctG|tlxfQ|0ar&!)L61u4n&uV9%5z9#n@soX+(3PMMA z*FeRv$wmJ{Tq`?3xhs#wc{~|PPJ+B>S2%_eauMoJ>^vrKr{Zf zdq#ZfGKgTI=O)V~NpeIei5A8Jg3%zWf%&dyD}#Ze1H0fc5n{3wBcR!@X^5DH8M$s6 z*tG9q_;V4Yci?G+K@$4IX;R5INtU`KF~9QggtkFQQEO+N6Jk2`91G6TnCFKe`Diw! z9uNfRNNkm~=ki7JjbSL3695UfB5z?GiWQHE zj`t2c4_EXUU=Fu3dlj$eZnwM3M_jT0(N{g>{o z{#jU+wKddn1aMF5Pe8ZIqyV4#4BCU`ZwY;>h{T1Ejtb;gZ5VwcL}g3J*sM&o+YH!m z^)_Xmj4kqo@sSXYtsz)tSu%bzGL(7sDxyGR1;?#;9p-ZRKsL&&&+x9kgT}7cJ_j<1vE5_c4VROK4l;DvID|^bpLiXZ zNL)5RJBBN@zEtu9dfM-H?K>awl(44jt@$o4>j;sWcuBk;9Sc+^S5<_`lomfiXgDPg zxte*6$WyoJ$mBNejJ!F~>f_S-b@Xo%rq}OfUIZ`KCm$qL8orql1h6ek8XwQneV-@% z6hD{Q=LX%F!12Yz#oqaH7rZ-!6LA@P&2ZT$wJqTBpV7` zXS?fI&x`=9J%|0aH8hFjf;Of)l>0Lvu6BauAwk*<<`c4()lquQBxgpSv$8Td*E}Qm z?pi3M34FZw}gLeo|KDU5X)Om8Zms*)jpsvBa@{3~6-x$Vf?h*ES`9qz4ZhdeWK< zNLJMYWHv?~Lm}|_J3a^VF}uCpeJ%(gk>VB6V|j6&yY+1^+dcaY5B`ih-1YM3>C}Bo z`+ac`kk@?kf7`wOJMY$%FM!2*qyj2yfFvybYu*v4A3=x$z7(`&vdd07$*bOvf*4WT zt&SB>0}SjyZgf|A=0(Zm%?JX5TmqwoM`i7p-HZg>7@m;Q15owVgoI@Mw#5^K;~*o{ zTZp8NrHrs3@J(gy<1w{AAO%XcvvE8S=xmH6<3D?Ec`V7#(z#&j6_L6~=PMo#1oUD4 zF{Kt{BCChyxDAQwVNR1}3+3~b&mYqJ@cOw42zeWtZoL}#J55w~T{)=m{^8wCc(w!h zP#1)3wB}a{=q@LD1wdy;h>#q_4-yJ6?PHDK!DDB&UI<$n0H;5L#79DbBAM{s+j>!xCTqS2S0OU|D1E$=L44gZmvvy{l57WaaZvfou z$Mca90+T26G#upN{FB5x6v&9}w(Exw_mGPs{o4CuYsi)M6%!KEf2)HDtdb)!M3^Wn;nq8#u$mjYMIKqVKITwIffJ4IkDVi@y!wTf*?tOc?!lVJwN6XFZc7m z`R;G|lJESmyUWadi~D(tCm{QGzwT>xFS_sdHp7wTR3HP1K?Z&ZFagl8#a}^<5)FJG z0S3vaz%vV{5<-yyb8TYL>gA)hu(jS?9W@7`#T;*NK#-IY{V?wde{< zt|bIyApGoDUbAces(BOH7i?Fn+bn+I(4Nn)wYM`OW8?%$3<7ozqtXx|J^c#54+3o| zayc+;On08c4r{l?5$B$HDZryLz&M4)2sj-;E_x(zcRBZz#C!$y;5d2Eur19K!TKY( zrrmA>d3qvOIHuM?tYK0Fvx}^YM-0Dk&K?jXNcL{~AHQ(|U&}_%&ms@*=x5|9%O_DX z2=Dc_SKk9^`gd}vxipdRNNz(&hUesU>tEN45EAihnXV2h%Z~ZAF*&9NAlS`zYSNH? z@f>W!=8O2TK+gHA64Gs&*zE1{pydffxR=ELuMoA1BHu?`UU z7EM5wj}HFc=l$jG&HwgxtxW*1G)8$X_k+lRfUU85A^3p5XCNviIJ0*X(t#j-fPo1( zugJ!h-FebO0#1*)pLsQ`pQd0{NYK*$f_!ZCgy8!(gePPRv8i;2wp*2R-Y_gBMVTJa zrWVsr678wKV62tpXV1vE%4~U!3}nP)OlTXt8cK-LcV#Y75<+7-Arz~g6Vwe50wptR z=-hy{{{s@yTJ$r48M$AqvXE8kiYI^Rb!Q4o+Vo)H5MppU87qoV^NDU)mMmXjH5 zL-c%XAr%Y~m-4}`XPytvJyFj|LIm`LF7jMJC{jvDkR&vljQ~3FJd8Rufjov=l_5tV z5!_{E&&PTgP#%^9p={vI@FZiDJ$iT!+E~D8NStniV)S8}6Oz4WfSwi+pVe&dp|jc zbGRQ6P(TE#prKX`UaF>wsVy`Z@Q;j&cHl6zW~4Q>)wE4bjele$CdQ1a9S&=3j7qgp z%*YrODy`He6=_gW6oUovKeQ(?W8JDq5_Q(hF#|a^q$8>W z022o9+btpl1x&6~lnclN4v-_jHw`F36cVVM_Z2xww&UIPYdX$_-$9^^stS{`BZPs| z>hfBF{Jk_1h*ZQ2`b1J&=sKsfvgKi=X6CW1!>W7-?(Gqqz57;g2J7v6P^Q&0-8k+@ zfwzrKB0EY+8WZ-;j=I6bXD)=p1T_C40ZD!10HNS_S7|}f5hVFkN`x;b)wo$X*mq+u z;yj`~$J57Dj}-6W1z#V>i>_12eF@yOLJ6s{9kqNtfv_UkJFF;J(CbxTe@oNw1Ln^MECIQ?y1M)Hn&33f7;9>1OQebT& zR1yi+cF0NxP^>Ho@M2n|T+E5d>wo|U?{&MDIwTN{ zdch@8+8O`>3&7+aKvt$Zvo>wgv#>RQ=d9zVgsGfXV1So#jOw_(Jp)T>C#AJ ztaJHV^#dHEtlo+7yGK0ue&>#*RM8`2*QfAqzQD0VbBnDuiZGa=SR0N{U3ak=ZS~(ad_CfjI3Hb6|M}H5%6S&-}Lqs9DbP$-|b8~`)JAkYJ&G;OW4H(!m#sTf$l|_=5 z9a3VpU%3NW*>+uq7I`TpgzH>LhfNj->#$NtxP81oai3}O+9QrkY*vIyk)YHsVv_7# z;@}x>mzJQ~ba^Ahgyw;cq#2mzajOW7%?XJ};C!NDG;<9Y;tk*)Hl+$d0GA_FEfVl|ureyB-Ma9Er%{ed z9o2y@uz;lBmW{!?+=vU4@d%Xb#-;m z>D8b0p40n&{z1dg7Z3|y*%*XFI!q+w?keQj0WB*V=ZWQQ0pu)C0tx^^@%q-28&c6- zznQLfa^E z!lZ=90@rcX=L`6z{=9YhMx`r&S!@KX-XF8SKK;t>sd zyUE_{K1KPKRcCQukrS!d9B|o!d=C?li@t&$fZLS==(k%{08m?TTEZ}&4-+)s@Yu#b zxN?9RVDB!KkNLa-YCip{BOEDBCnDg|>SU|EUHD=7 z@g5SIxE}e}XA*d{_B;?Aj&;B)`9R_}!F364ALE}129g!G z@tlA0StC$29wRFrOc-)q6qy^1%kFI2q2cSJU2{LpO2wEn(_s|z`FzsVXjerneB8jsc-R&5o@;|hKgyZQgUY8p^Ni1Y z=%0M|Yo77gYuB#5uPgz#`Gp520eRQUf9&+y=e=O`6e0q#`cz_qM8JOAqRVNq3SbK! zr-AQ#hijA$&J)Q8-eVwWd3)VfJNnqEca#pS^AQ)JLd0m7{wOKgBNC}CL>&?+1Y7Lo zFUg)DbxZr7pJ(8_L!3JIDs-nhN{04Sikne3pR^XPeQG?Ue#)e3_Dg=I%_~pNOJcG; zx^geXyy15tB&&M|ln(^;M_jEW;1|S1k{%#b+jxPMCY3{}G&|3id5TssPCsRxmlPxc zp)|}zm5t;1LmA_45b|v5 z3}*QwEvuslp5FPUL4ZRf9g4gNRRdhtDyW5aOtBff3k;+L>Q%l#4!|(f7IrlfYRM9? zYFDM~*3-NEWMJPYALNb|ptn0JHWNGhz+v>MRh`Fp*z#xt;79*momv&-QjvlH*7dt1 z*?lOvVZo-t2+$u5n$rN#PRdPjYeRJpVqA>OjOjtUd5wHC(ZLuP9*d~H=8jntJTm{MTA671#?&_F_ww%*|DMj|qx4ismFa7N2J?cwnroQd}e83TqtE=}v z>GY~kd+X`mH+|HwE-cuR3=sHW!h(dtnhT$i>I!r~1$@eGIF^BT&JW((+YK)+OEcXB zUiJvdf>5Y*80@tr=Z}~j+(N&u2-b&Tz#+L!e<+}%nMAavxQss3QbzIUCg?ZMMML#DwC~zf)2T0h#u~q_bK=@gbsag@71fMOUl&8^M2e zv2tU2V7oecH>ni>M%FPPleo;jD~X6am1<2y7;Iqt$c95<4O6aJ`Pu+w9(+!xO)>ak zml#%O5H$Ne4#Gy4u{mEwy8I!)(V0v|DW?sQB9he>j8_N}IRGo~_N)8jx$cYLSY{?L z?A~V2w($Y(g)34!U95M@89I0(gK59rT@SH@1@yGNCfOP^C@aj(qW7G4LN*GLH}Wx_E;&&s}! zyZ?)^qRL$Wzj(iZ`-XTdi3Ge;(u4Xs&Lx78#yQ&&h=U>~Tk?Xi;Jl|)6($tP_6J<7 z_6P|qbBA59wrsQg@#9-rEdgM!+@hF(l&_%2T2Tm)iah}rr_HoXbl@GOo_LV61B*;d z#%1*L&T%A_aNv%4fW}NjC>F(m{vaGdRQlslM|!5PRM3v9L=D&;Hbz3E6q93dAfwFs z+YgO9Q6W;OBAnAZf3L&Roi?#{1ybXn-U&k3q;rEp0Bvdp5)?iL7|9UYapc|EFoSe- z>0v;gzd+k@he(`I`k80XldnBRh2jsoP599D$| z%MzzsVc8p(#njg0`7YR<>u>W3_I0UrrhxXWjKv&-gb>GhB`;_Xd;gnW@|0Kp`!Brb z*)Sd7_CFs`1mx=K51w)QsZV~x>4Wb$Z(EabyIo8K4DdTG)Qe{rbSalFyjEPd5HKtV zL;~BfVCIj53E*pBLV+>{&r;dpz~6(%-5$+10YfbRbr2y`0On*pI)SoFlm1F=P;F4s zKNzoZln`CiZpwaE|L)*|rq6J``1hX5Q`$i(5f=~+>`P4GQ~wcd-QI_1Q(Z9)7-y-S z=^2~@N`6ENN?wb!YzC9>?6_F%5)C3sycF5WS?YZqgap#Qn1J}Uc~(G}fDAx0fXw#O z{|);lmnW##ji@1M$A4s;h*M8ah!E@&j!_T%P$0WzxJ@Vq#G4XMJj&0a;-OFM$z%bZ zY1IoI2+xX1?UuUluT@LJ;1A#2uh6km@D1Z zNs;WvT1>up`W42pVIFxyqC1xNbb8Da?!5Zn-tebB`R+$vdm~Txx9i^zECTZO7r*-S z`mg+)VN9WZ%n9dW^~2MG9a!nkrFLZjU~~X~E0=nA0S+aohI9&8hH`Ly5Ktn3x(Lvt z%?}WXuKadA0rZ((SI)iI4Fpj~fIp|V<+~tvsr?$4E$oxhUC#Q}K@zDH4w){r%hCI* z=gJs5Sl*5}Ab58rY=U+k$E?z9RlClhbgPGS!J=`l!1#)^TuL(dc|~Hd4|^NfvO&{y zM;`FH{q7VKT#@iSe!i4N5EMx35CNI1D?ckq$IL&97~ksfq8U*2asWx8yds_h!)BV} zcfl?goNMb3DjgUc8atpsn7oXne5Cpz$eth#NXho-98U>k7Z;W$*cV-|6p1M(XI0l2 z-<5`b5j)kxG8OD2D9vC!2#W@#c)yYpRt2(ZGr;;v`H0}^u;U~3)KO_v%3^jY>lKoe4%mj>v}_9E;PvGm$ZzFNmbk zT79nHUw`q(|IBm0@}AGd>HT*8{eU4LL;d)~H=I8F?rRy$PXI=X&tQ`msvk^hI1RP) zTYxs^OX^1g89Vnbc~+4MF6&XUApyLo({h)bcE6b{tpGZfGufX=PXcj*z_|S`QCg0u zCZcW%WFygXGRt6kmDUdMKT7cSo-3gLI!H06u>$=##@e#Y{-(wsj*IR-0)ADNLLh*U zY+0+Z31h&4>Eb;}GH^bc6BfIBmHZbSYDk(Nu1Dcm5um)h6#|0f#y*ZW+c4cK z*8(K9!~{;EVPyn?Fuq?D4N7B_DcpC4iOt;uK2%7`%}OarDv9m>PP6S23Mfn7?VsS! z?~ig1GGJ}YLFci1+LDC%t^#fYl+JvO2*KYeU-R`Zq$dOLXs1dhf_!k$cGNXo#?a-e zmeEN9xmzg$#B~oPL4#nlxdHbT2|Jgr3nF*YLAJJXGH}NaGe#Yw&&qb3ZDwVtgur4L zgd3iSkwN=(#HC)(aXxMnQa|vzI<*VOd5&=j;(~cA*DT(Y2;#*@^>PeIR%fEDnKWeA zG3&cA`(d1iip?77#vE*c_h}P;4*7c?cjwhh-u%hWyz7zI-jHYJ+w-pn4gq=l55D^J zD_;@n2QR)b>4vEVkl@9b)q(;5#11S2Xa=CAEY}gcVGAMtdua@X*9DrHRR#lrr~(|> zN#E)yz-j__H>egUfXeBo@*8-V|Cajil=r9-qSOg)FYjjy($U#)uii)6CxP=F(zGHe zT{^0dr?JCi4%&pzNFnL7}4Uit&%yCNP)1d0mK5R#G}L^~j@BJ8D2Q5DvDxoOF z>06mli~*8^)^)p&G-EC=r&j^UN0%}itG>xWs?BIGYx9^4Ip`nbg2G1V%9uT6oY-M| z!f(qd#@|Tm8-MW0Kl7Zgcwnd?4+sKsb@jogpI-U#zjpf2yKC%6x5J6*2P+$}5JYzo zE?w+4#pHznc)E|fqkFsA0$8ukeBbk8kIrDK4&1NN$&eZX-& zMZaDVkJMk_-Afe@R1ey@1j`1$4MDStQ4|Rx2227`9q~26J7Wo9U&t= zS3&}nIrz=v1Z2DtyN`1LhyGEB!7NK;4}@g)m83Szw5o!EDgnlH)VK}&4oCnIh(Vd- z*viCUAk3HDJ5nr(A_tO)=&zO!0A$T76oz!1X$}C6cjLXRqy(@EH?%PZ3?OB4ApG9> zRICKnES^AtMgz||2tSbtp%BH6d{$1PZafGk{X?pm{7(h;{?dzBNMusxCwI#IktOL3cWpXsivUE#JN?eWs!G4s9 z3c7}I9~*^IL^Jncn^$6k#%vg*0&N-j%n2zS5Wyb-tgci($@t7wPVm|ahBP=T@87*-j0>kr@+mn}=`5qGn z{2K`kzRu5d_bAI10jV(`7(^^i#ez1+1vjb-1cX%!pRd5}sH7MD*2qO7Jq9L;+>HFQ zn^tlKn)xI$1SfN`g5i0>M-P!u$PXAAa7IuDzm;z~?x?Cb0;`u&8@xLdpZ(DR5Ey2# zI{JFpVio9Y&juKdw8wkiP6U!GaiDzXyqW@_0VEIQBgcd!VnFv=`!#VRslWKiQqYHr zDp6Gub^I)YYdp4i*s6Zryg$Y^6tmg~YHY?xpNUisn#cCjr)TwjC!H1sb6h19(FaH0 zvw3fHlI*^eNv-PZmKC~Uv3e0?6iES&1tJY4zN(&Vg~ZvWRSZ(cF%(D0D{^u=ed7;( z+^e7aqI*7%SA^T`@7tb$TwQ(e6HY(<)Hj_z^v?a0ugtnix!C3-T*$@m?tTHcV{$8T zCcI0GAVdLso7KB}UY^AXM+_iVJK_m=&H9^yz`%D-USlmi5W8T{^Rug+_9LK}iNUfg zP^S*aU#ga%9a2BoAv|W+_I>I@M{KOxNRh82s)z*ndt`T(nF+fpmm=yd8Mbu6CW;j7 zZW;jKK0+#FJ$7P15|}4|uSkk|-c~pt_qZ(Vkd2N!Fv(cuu_70$Oe+FIE7~Cf5(qq> zC_g=>daJ)#A(VNc$o+k)0Qa0xUCkuYGuMv?h4unXCAU3WX zfuf+mGRMQ@IsypY(#gulxtY}NKj*_POMGN4k`7cdbkKJVPT#uAoXgc|TK*O8^h{Qg zkVK7o#hhhC(aY%sZ#+{^tD4`T08$e%6=u^Qk4AvPo{bA$B9m3+z(Da-haD9L`+WZm zls?WQHUYAll1L66*=uu8IWpKMrA$0E(`20n=(AYeHH zmaXI4dq^5O7b&n46B|WzVA0ktS7wU^;NC`w0 z(5nJMA0K1_;wv(c3M3e$LPW99ooMuf0fsVB34k1ZC10EG0syczD4G;@&I_3#VuI-y z*b@ZEi3F)89@7GS)Irj2j7R5s6@U+S&uyKHo!)VUm5!utSp5<)S&@xF4p#(X%nD-ouVEb&xytD5o&dv1lvA?-a)@M?BL@Mzfj-eXo z5rcO8ivG$UeT?yeq@nij@!UvFyL6%V4v^t#V=D)oK|T92%wt!l(>MLl6aU3?Ui9dR zooD~N&HlNq3CN~?{D1$}n+|>VV-D=J(Bh71TD*^vifGW{hPCB~yOl%^kSwjhsC9@v z<>DxSJaUQ^mi>rgQJ!Cb>p4iXIz)gx0WlnN)P3{~{#{(r@3J&ulYgLtM984Qax*J2H;29j*V_d|=~V zrBet2Y!EQm?-Z3(4;#$5(SSBkLw9*(rIz(28lrZ7Agn+4@Mt4)boS0YCzRbDXq*a@snB%}`Y&2%T*bX)53x_A@eJ;0*u9 zQ=h_K9Q;1hZ{5X4Ug?_>4s1t%Yd^GDzGK1QcLt5KI^;mSrY%3@2hT@Yr=7Vy=if+_ z_Eez_bc=L`t$|P^*D&l~ypwM>J-=YTt=|vjB#4-`b^ahm@&Rdi@K(U|8z{^#c|Gw={#D1dbZF3#pC> z@=}0uESgDG@ZPZi@GI~o?-6J>I~CxyA`KVpro&>N6_W;NN`iBMz+gR6TOA-XOfwWAHNMF>|`|80uroP>Q^$SiDJ3=PV9?H(v&(Q9dq|0M#w@<=&DWpl-* z_$%g0wP3Z6$Huu;SslWIBSIMrl4bLf^-m-otSF8C8RRC-QFHyoO_uC>HTxXQLG}~p zu=DS~`I0BT@{4ZcucP0#1mx=K-j6xG`cr=U^nte=i~Z<8k1fc)uo8htpgtzu@i^}| zBPdy=b3uH_YKNA=m;(j?s*04{$a7e41oB6e6)y`Bnw5LjGTo-0UBI@No!*lQ)Ima4 z$dC04dLQe!Qc$dnN0cWApa;lITTW44MKGj|a6B|+*vl9D=iakEp|Wi;eoGxLVdE6Q z_lkHhp-5xB+l-hK$WbMv)Enj#tEVCg0HDJ)N|2Q_PG{MeByp@mMmYK8@fFQE^61-Q2-vtr>z1HkT6Jpq3M2<(bwU;y(=LEJNwL~aZuSiPZduT>Ed zTjA-?I&TT!5xF^EnPTOZa!*n0fq@@4Wh_zxs(!xc2aC z@3M4mr+;r>0`i`h|Jdo5pZ9`ctebrD)z(XhKv+KBIt!qK&mw@H3qo=`K_J3zAbbzY zwYTHkp3KF>X#TB8NvboD1_X*&j#Zfw;6eb|0QIdrB2P}|NV%CPqQWtKeB%HDD%+8A z+cW;}0Yczyt)5-HkG5we2g|WiYS^xOeMu4BQjR$e(|Bx%g6#9+S|RNNRZjqrX`2+xIqfmZlHZ9KjLk?Xwj>mp zQ6?l1I(9>R6cAMg`8^S>qyz{JAhuOw_Gt#%e9zu5N({U|z)+0K?Qgdg#!;Ai%Cy03 zR0m~1c2EUTJJL)NtlT;*&{60nKD}s1-PFykDgwuB)PvPvC;N$lJr-fxfjR&hr(=g2a1>WwAas ze*XTCKlx>!_r(vNSh}CP?~gmTB>}m*x_bEO7e3>Cr$2b@gKQxR<0#@F2!*X?4qzJ6 zA%T1>K9c;D9esKpI#4b@fUpEA7?7&`fk@cI0E=W%YxY2AQXUSbT@;~7B6iDhB>fcu z+95H?-V4Al)t2UYYajfV2|-uyM1Z(&P(4>l2$PIufWGBJeQZTkO5H?1RwPl?yOeb& zEla~uXE!!fI<(p*XH|saFDSpL!ZFpupNE(Un|~4PEw3SYpcARafg-bwgaXTI`4%^zVYMg^2iJy+ zmy=A9#(1BIorAH_?}yzwKyD;Ke-nj?jw@MLSCf1kbM?yU4D4Wa*Tjy}bvus!q666h z2!jo{?n-gN{%m01`dsRJbYd0TKieAHX7+Q470F*=55S)DxB6mR#(bpm%j#Tp70fX* z?6S2|M}ib#y@!1=VM4NXzR!wD8i%A9j^}Mn8V%|7gt6rWehws?uQFk^bYe2(qj>o} zZ1+^RnfEh3{jNXx{$G6BJ=d;XySJIP@3+ghCjoiiPyeISFMj@4*+StnUm_E;q1<${ zDjlFm(!U}xbd48$wM)CFe#}M6>#>(6r?=ci$ND$HydC&lx!YKokAU3-N){gvL=d|K zvJ4#i!2+S|q)ay3uzal*N>>eq-q{Dmi6^*#F~~}afxPPG75ysh(7OTvWrMht z6eHmPgMhYDR1`636qKwIC;~IuA`_o_>}Qa~o=_ZnMw1Ct6f(F}aUivPt@7by>wIi3 z0%Z8zDnFCh0MHMz1Im#&-nXg`7+aF_9^c)FYXJ^921AgnT?Hf*zvR+1G0(_Xk)_qK z!c{ri$krTVOct{$GRJ;#$pT^ptsE%MY76FN;}D65lk-$(pS;t-R)y$7-yZp(3XiCL>!p*nW@)mJr$5gL)(ZJl5^KBV@(Owdbmp(Kf`G%>{r-iLVPZO{@BG+Fe?!=iI(xLAsR$#8+iS zI*d%%>dWK;U4gJ~WPoQiQtnU*G$b-Jfk#6ehPlRkmI#iM3UI%%XOXl(-$c^DJHnQJ zE;|6n*>0$KSe*ulgP{F6esG6Bo+ZKrLF<@KyJMZe=4guy!WzON%2ZSUQAbn;s$voC zKRz;uA2F;S)x$oJ<0aT890;xfe}KmUa3jrioJ!ew2L*z6%C|a$?Nl8+??MESI1#Y{ zLSgN0Do(Fn)tDjmA-{8a_@Th0(m4r<0|AU!WOumQuOfbEjM***B#m{q-57|gZ-w|+ zpJP@L4-S53;^D)c$QEwA=o7OVwQ`aWboU&!2luzx?w|dfhkf`ve&XXEcJ11=KNhq5 z{dVd0BOv$w(%(J({HK3|8FKqK0rqJtj^RL{Vdh+^7PFyJK6tH-vGByHT&tK70-ZAN zoxp9b%OSEcI%Be52hiefdovZy#V)ecYlXOY<=%Q-4Wy; zC1q&mM1FRF{Q23HI%Rzu`mzh4^13+;BdT~!F7ri3V zxQZbmAvZQpA9ml(MrJ>>Vc2x67b;%Dx@jg#%5AHDQ{?=vKB_l}l)HJkt609b^^xX# z9qFX1p@-Xo6gI)4!taiV_-_4Ne0afUg0b~Bkp}{hvYQ+WTZzF?AV=-o zr+gWNL77;6kURGCc~(kxce2F}^d5M${5uuF?RJC!*#rdTSnb>^1!XR(4$cn~6smiA zZ-<~HfH!tRz2D-!1nwJxv9+0azx0m-1Z9Gu7(+Yd>iUu-ZPe$B4Hkq!*@W|6JtN1W z8iTV8Xb0;bhPV*Wvl8Nyj@nePn>+VZJ~juX{Gj|kN0Hjwz84E!I(iq=!MZrwq?HDr z=Q7x%-7_Vrm_ri*nXBg7MN55?BkVJZU_`@q_Mtt1fFxH3pLa1XCC3ohSXq4~y~cn5 zmcK8>H#@gkDRRT={P}xB>V>1`J z^(;=7Y6;Id=7W`wM83{|eDtTPEP$I0#j&KFcu_8{M{+6h{DMpwvFT34(l&~|FYC~L zxUquZbG}*8sxDbwfc)8dL)jT)G7|($2kHw1XS_4VbFxj21Bp1NoZsjpeGCXH5;i=u zf`e^8W|vTBEbTEf;8+S(2FqTbiFe38j&1N8A=Kw>uAB32%HNMqo@Ik)F!s;uI{W=| z|C2}D`#1mb6CXiS_Wk&I7=)|1h6x3XPfPj&?97n+d7T8#^y{U zCD`xkrN#(c<2t2&*SxzT9unv;HYF0!Hxg~Lgm}+ZGM>*$xhV|>|JSRAl(}=}bA()U zWx(aD`3^^VWT}wE_Y2&u0Bn^Ah*UiQOwss~r)d!>!kxv@R9eA6mj^Qo#yu1z!~p`i zWEtq1{le;(-MKOlO6r6lBI;dJ91?-DGKqj%bRW|3909xxK<_^XwiL&>YDH!A90QtL zJ!ZQnf>OSwK7efo)0o>`xVHM{fNQC#tq~7H6 zRTru1GL}>r8DkOgDrWy^he@VOyo&V+;odeI0?9`78v^}Jx=U3F=G7o2(Vn#q-GL0_ zo$87;){;003pQB_35|)8RUlRtM{XEz6Z3v3m#C)122I|KfXNx=6rRt{{qjfO^wh6^ z%F`eG9XKc7pTBP}0`lu$_dBPzeaB<1VZtyf7GpGCFg^ePsD3C_1K%qEbEcaXFu0}^ z7gQ&<-mbt$v%9_A>4!RYq~xelu?K9ezPq53faVbwr9@x^Npf2+6o5TN1KX>0@mhgo zDp#lMU|AXTyX{my)<4C)y*5N*cSx;R)DzqJ5}Ou+!hKT_{R8Fj#iJvQLQ!E7vqwBq z-@x&W$PDCd001BWNklTAU;A9knmN8yQ61l^6oyVQz}S)WHE{!(q!euFq+NU? zO+f%MP{($y_6h|;o!G_1fK?PCXmdQ&xCSaC;GInDqI}kWhK+-$jO&eyTxr)#q;h+W z!uA34cAr!Y1M7kyMVTA-r%siFc?07)SYw<-+(nHW73+ux%&SJsajg)sATRu{ z?|IK({huEHI6cYV_g8Nl0&?}icRv60b5DHf>GTmI7GtuD|GJ$;xL$x&LkgslvLX*q zmJ)-3HC4rq4ScbfqnCyYdqj_BF4#ep$%e6x^U{XtNNyS}fPstHvNhv2= z=Ncek{D=P%aY*)EJYUqbov)dz=eb;%cLKZzzLdVI+a9SoqQF^M6@kURv8%L9`%7}S z7-KxXxc{bh#c>SoT8GjQ^AUn`HCOq4m|N5}EMrQO%4?HhvMZ1iTZB5Lq@>-XkL%H` zARwZSacKe-?^h5r;pHNbldi{(C6XE2MNR|<3B$~fkJqi=_82xx02@I*D<~!SJO}Mo zf}#S)w+4qiD+t}1J`tc{6a>;n6bgZ9g3jZ8c8$^QI|EeJd{fzy@?wB{+LTm|6hNNR zuHbbQ#H~)Jim!&_VFqI(AS)SJ!Kp#f`Ah0aJ)^XS9di5!wo!G9!sqAjImU;rby_+O zW457#Z;Syli??B+Gbe9YxR&NI1E?tOO6=8Z8*BK;sO(9Uiz`*J;wt?_;r3lbX^ z>uUG9T%7@J_IOPjsa@$|-E}0O^!tOhB+5`e7gV0;j!5<>T z#k~0rND2DJ`8&k%P%s9tvObf^Lk1Lyv=|TrCBoC7oks`vvya-}5sY4AJp!;Zp;9hj z>iv2xTszS1tNQnQ3`q)>Cvrq?TI`}#U7ad1!aAzwnY3UY0p#=%w~^kM3xj9`kj7`Q z-8b;)U>u&GbF?X4vdln~&W~>(S{$Y8ZLw59=J)|s30;8-NX7tpAPNSwnE;{-m?mOl z?4U9<>J$LLKtI1b@Rd}un_3W0JPZNfLn2UZh3-f(PnH-E$0$lsiF$bXVJy}!vYXva z736&LeIyl3gz^biqfuA|!G4Y&JRF41&mobp{+iRrjfcD$#jzm&&38WTU%l{a?|CM! zK=;@0+k${xU47swr=NYwZ=C+<-RG@bTgiN(*nTA7o)?;Zg`^7@WpIkbL)>F>VgO}M zRv8R+!~{*gAOV=B0;XsW2EHv&hx&1v{EkW=pIL!rMSPAB6y>UQSe2NzM1|uBA;4#j z5CC-VI;?UmVmEeyx==Sd6{e647$=Hkao(N6;{9C2;v|5(swbC)#&Fv|=5w-cl%|2( z)CX*8#d(GL3f3X@`zGED=OYKy&Ai2FdvVC!st^^P*t?uBlLT8sGZBEG{FY?o9r6KCS$WWL1_;(V5ZZ(P>~2&D%3L3< z{?dKQo|%1xRg3y@z#wa>ycBbh)safJ_ToZDpHMdI;#RWCp~KVOX6qo~u|;By3)1r!fhXPhL`91(e%ZCPa<6YM>YyW{GA|IMd9?I91j_M156 z-XFhj4+8Sum%Z%tE6@M)!vF-(5mfl1D?t40ByPmC*fJRaw~IMRmAqT^0L#cEMG>8b zh{&D)owTv6N7Ry1HwIo^`LDyZX)8Jg=ZmzhJY4pU*f^-#2}1X_S9#h*gLQApW+2`A zp`}{@?bvC{eTJ@Ke_RnlmFE#VBB9t*H8y(-vYW4;C64u z2NRFZ4QfS9Qk(D0LrgksUMc_|NQnaf-DZo=bL<`ly?3`N=NPHSNElKB9#c3ccq}*Q)xB9_acU1*tV)XMtIEjm1tNyDupY%MinAQLFl0f z^)WHwUX}@oDHW+NAW@&{PAD4eUNvlW{;xYkK)YH+Kdx?1k>-j#$2d^r+S0cV|1nV& zZenu|&-M=7it#!&-J{zlD_*9S*qrD#E*l}+kgQ2?Qj6V8*oP8n(8V*wJPfo5PebLdP6GD zdG9Gb48oO);@}AYxVP6F3#>|Tz0r0nf`aKHKremv5`u!`mD*^#g+z5eTR`!uU(JD6 z`fih!8pjC!2~`Ld z_!v+FQUH*|&a0JgNhGGBFixSk7|rn?0BYsFg-4L;UHotjng9t%6DuW1ay;1I!RsL5 zQNQdql*v>k9IUn^!lF){nq^cw^tcnBNZI-L-xkzof?{P&X^~yFoqa*VWd4b~=3ReQ z4kBQl;u}EiId>COKvccFzma=cKIO~$b&%GunW;O}_f6?jZfn%DuW} zedb+%{NkT`(j%^2yY@kv>F?7&?|%aFhp+ke)9XI#>qf0{(WIhDMPt5`K=Hw#Qe1%f zeO5mljA0oYK!)|$16mC7E`5G)=i30Wm8p;it`7mjBfy;r!4ZPuAbi>o^EsO5HgG$o zrXe>B{w4X^dDm@8&#`K8h-mDPH>+bB8|QbrzK7TM06dZ#K?q8oYOEd1!^+ETTiT-` zCooBmVl9+LCaXBku}z-xJp_Qat8L+`3>P0dc?|wi=hR!Z504q=19g@mV7-24*2$s22isPdmAm0eFKo zqPz!$#XU3VR4fB8TRsVdDwn4K;PyPnx!7*+W+qZb+Tin&H-Y=~!M@QCG!WOS2LtsQ zuMhzBoOXXI)mlBt_RER_-^23vu_Hko1|i4?0pyP$X1icq2*wO>8&pCtZ4Z56*iW|! zst(a7P*Lf~Sd_OCqA@O%DzYhiKm?<`X4}ANSEyRxDOfcgV^p@bJCUSm2drn;uAwv- zNzQ!?zt(=vU4Q94$N`SiI<71apHOM+O|oTEs9~jaK*f014@Us9h2t%LLx0$wt$Eu_ z??ig0`MYO|`z~TSlP9R<9g>)B4 zsP`EZ$Kn(UjRGYA#t?)kg~J!Q<{cT+VddBXpUWM1kw!~O7WFw2TY(^15e}O~I>M2F z+;zBw9VRlWo^)-iOG8Yyeo4T;fZ&@*G>(wYBLwA0KapVmLejBUUb(T*DL-s$_{qp&+ zNhBMf!^YRRr`)k(K8_d=P&kC@5kB2Hy_AQ6zuAWqd6@0&&u=%y303}F20rrJ96+dW zXVs6dg*+W_ifiolm0YiUXF0p0E!B{@Mr44hl@6t5C~%xW7Vhw?-F_xMTVMJp;aflZ z$EKFd_OLbt_n*A0y#V^=o(5@nxo7$b;LhjL_b&Wh=o|i=l{cTDHS(Y@q8kvEYRIUo ziq}A3ZvCKw@=O@F;w5{H0_%FA8a2~FoBMYzrrQ$qzmg{8i}#|vxJ_+L)d2EDbPQ_% zVeaBi%=W_uBmH^+0LDcz0f;uWw8oSfDg=)Qe9p#LT&o8{aC)52P;};hC8lg#Kj-u3 zUi652|JDyZ{(k*1;r&WLu0HUVuRgu@ssGRnYBnpbSaQd6H0rP>RAcq*oJc(%2S0*{ z6c-oBFYWrz>)zr_U>1N4%TvlCKp56_`8?T$!Df250ek$+97Nt$2CCQ=ttw&mYk+)e zn-1`cG#uQa-4Bw5OB4{RzpA&Fy&;F2E$N=w$;(guOFeI8Sdxb$YR17n*%2AbpZ`rn z4aP+oOFQ{@qy+n*v>V%yz`dFqFdfWy@7b6{<{Y$8Hf(MvB*Vt(OiU>pikPIj$E=wS z>hSp}7NR=O@;&i4r?Z(D6{yHRz&~B{WO=y}ZdThI2VfrBJcIpc>wJBJ5_}Kp(8qvS zo+ zxA!Q9XUmRaMOYO%*R?xsD!}Rll^z&wN<-L9$EH-bujr$rUil-5^Lc330mf_lbc6)k z?p&{`PK?CxnBe#Vd3KlLaWd?#`f^p>N*o3CRU~ZDM^(RLq62de*d>oqpY(~qWOt}! zSDPp2JW<`OM!qrM2n7;U5LBLQMjqof?Dx{QeB57p(o-M&y|9Yhr$6ss0`j(R{*BXH zzwxQI!xJ?pLf|)W!4}UrIGi2C7oHWth|Z*m41lEsk`MT@7lNefwL>&`cO4ei1ZuJF zQlV%--;tB2_~fUO*8)&>1O;um0h$GAP-RRY`~cxN;;!ZOqBchYk;>VS3T&g6XdJXz z0opt7S>CCy3U@0>9$+l2RGlM)LXO2|9AX{Ya>1Csl%TB0M6wswpXQKmW22CP9a520 z*#o2{jrRZoV@d>j7NS5?yWPjp%)Pj~eis!R%Ii0(BK^3YW4H!-3_=yYEWLuzJ>=X#l24=~>4^1YrSk2QeX8 zMHm~N>75CtJJp4EzZD>7P>qBL2@JXndAhT|VoZxX^~s+Ddn*7f(hFia#~D6D?p9Gh zh-*ls0ZGn^XvXHUJ`TCI1FBnWtK4P)9s37Va9zmo>TBBX| zh({(MIhHNEV&=Iz%_np0e$6*O`Yr$2H$M7lbvD0muH0_~GurEXeyr7FlB`{c(0!f6L;-iR$5Jt&e#-W| zgs3PYvDep(pyGJLchJT>4%0i($0b<+Vo>Tt9DkTP$eeMyn=IbINnqiP5f8cVa- zEiXoCc}e}4NY1S!AmIBv%Cq;qkFccyZUh6{@8T{MYC!;O$P0)8f&d2eo;Ip8NGiqy z6R*@=%9@^mvjEMT35v^vdJc&Wg614AVzyB(SiZB4dD2dO?7olI=~Ryl(EAgDOf?A7 zv~uGDg~Guu5DZg#T+s-(m;tnuThn+y;w^C3oS%<0kmMyrf)pBze#x~o%1 zl15*(*b^_mwTBZ3RkuvYaIBb$gz268UOiejyR(^XM_LHtLy_tg3T*EnL8A;dKc9p6 z=lD$IDEi-)KHNM1RK%C-7SDD4PRAW(yWu2!L?!#?Wtlka%SC*A$XYj3pF@5_JhKLYaJm;U(a*Iw|vVI@HV zcu`EdePSnd>$B>*xW>B%d|>wMPQbsK=j!*&uLp5 zBeIR?nNqi%Aa(@xrB0A`suNw8Y4E#T7u-aMMZ~9rWD}hJfi#u5gNTA6EN)AcKjc$L z1}zKaJ}WUJtvv+<7xM8&N#K}I87yrUM5}M^VhhXA{pYD1#)A_a^ zd;I_Tgie$LUv}{r=M*yz)+4h~`R?)sW8ZA?^CjDy-Cxts_8H zm*9iaOYb(IQGqbd0|AvUu%lCsKW(5bhz6ErSCN1^? zhrd@!$ntp@Bc%*S2?tJd+*jERN<3Q#Li3D`W1sBdIZgxXY|kH2J=A-)Xmmsd2?XZ> zi)75fv#*4*Vsv+m+j4({lF>Qb(C%b#G ztAyD{1f4r6(uxQMdvDo7Utxv8+9Lpb4*2cjGaUGtN-%BMoqpAmk&e(P;v{xufoK>Q zi@MC`381B8cfDQW*^y5EPRnLP2eScSJ5ppyOtI4}OWJ`Ks?caB=o3xAcvXhth~Dg0 zHTxmOOL$#v9AR0YzV=)WE}vvEeVN@RgHYoRm^BS&-jvYbvk|8zjxOkecw+%;i1>AUHfC2`EU83_YVR2z_0#| z)9ar3w?^&Mk(zT=IihIT0($gWR8lH+Gv~n<6U_ycS1+lONdYR@y1q4-(OjwW+LZuQ+Lg@ehynuP)_`^UKI9Oxh&-XVI&a&es!?&`LwGF)+s$Btb#yP5-?nfkU%7$ z2ZYE-Q-2&Vw5^keaF=4zmD_HDY)KFTd?Wa`^*VjQ-BpPS*!SM;fO|O-coFA=u2V)x zYCQwzsS~9lcs|JE`3(*duOBCjIRj6%!gur6%Y#%@G9`!!tg}I8MhEd@a*bdVqB`s1 zlS;gUgduDdvul)D#CO2_jPp`W)B5>LH+dO>JLMer|KwMn^i7}m%sc;fn&a<-Kkgp_ z^49<19jABvohOt9m{kgIJR%5cq3u+S1e}!801Ld#e-9kR;7V#n0c;2)j+|6P&%v({eVA@KJF-2zyss%aQvzyn26dWWt zE#b2EruwV0?y6r6`Pj`{^yR&GB%oiAAG47hACNzj{GuqL%O#UqF?P70NwD5*hVUkY z%}X7@NqJ#eXk$f{0quzkfVz(3bVV}My|lQ%{CbNC2&*IskW-nWDCQbt51bcfBp+k3 zkF}m+Fp!jh%@H7?yA!4pN7|B`RZ%Z8;NV!4PWebX=}25u(0cl+x&WLowvZ4Z$ieFz zv|fYGd*6Ci0Th_c;6Iaw&Bg@YHlmS&$LlWi8GNhLv1$-E?D9($13><4@Br+U0A!NF zCurr^0q<9{uOV1P0FG&zJ;JWxR@8rIM8}4(f`B$X=TlD+V|S}DXPw`}6SCsn{-mnC zk2a2a#))2;B!z02+SBc5u2Hc`WBs`&Q*&;ZX{_Q)M*YSdgDMV>rTAMbqt@P`g3wXA zkiJqu@EBd|4@fW~FdjBrVBYrjPD(E-vOu=xIQ*)=e$PAqtG|2C#N=rrzNLTM=LF>H z!@vJor`LVV&z=6{`~gPJ9(MnvqCvpIjLy$)JxGw2BhN8VG4rzupNN$>pKFG#IC!%ECtw99;6<3d7};CI$X@=lDH zi3SCbk7u$399@CqMh5@3{_6}~R zK}L}bsOLBZ1Wu@AxWePW9LWrpQz->HfLALDQMQZ7h$|EsxNX1+03zCAyDoO>Yras| z#%(K+#rDhQnxymr@J6m?KND_byc>>gO8J=H*~dV2iFyu#X0|!E0Pgl@8%E#4IF7Ar zkvmwZ6!4A#>6v+Uo2u?!p01J4(q6eW+sF z;(=o}|7JT|c}(51DTYt|iszu7X%j?{r%CpF?wq(L&kJLW-g(#Q^nbtW<3Hz7kGl4= zX&t%6f86&3Qn-@C!!0fNMHSJ6F^~Bx62WQ)fXXx{CA;C60H;EfELe@tZ~67^+0>AF*&p87m0@0)h$y*sCfR z*7opabpyeZ?2LC1#N&xf<9&3Oa8*UA9J4F|AiJY&KtQ}Uc-`F`t5KKhlzlgu3AK(P$cgBcYr2gzt20c5)D%-Np>8YM^TN8F`=6(5F7deI!rzPS{4DGWq84 z`2YYQ07*naR3!;lA!u2-(DvRt#VUZb#}xso(nL%Lq(@sQf;7fkCM5V=#Abw&lH)Ii z!E<{Ldj^qLF(7X9?FYtyz#2jQi2H}t4asz=uMg^3FPl@Q5vvL^${qd3CaN6Afo0)C z1IE4ao+2JhK*p15;{o4~-y`8zGm`t)>2!Mfr#|>ke)N|<_TksAT|2uc-6#Luw*=(< zul<(O>!0=CkD4|9))GX_=glO$u_7XEsjBdW6_f1;m&DVcJERQ70=| z=h;zOI-tt=Er}741{Lg$V7CM1W;X?_uZOJczSEGMLOv0sE8>aiEQmrEe7>h_AVErf zD|S-%<9tLL$#$@@BW%O{d-Z-H9UWm;_QLUgfROv-e>0xNxnnQJW9L4TgHHKa5tkLg zNI;*aX7wKSYbFWZz14HD=%&@@RuT}ZbNmV9BJCWCZ-vYq%qYGf6$mIyt(ez*Ay4&J ze%r$;Ri#0NBX-{zNJKmd?>dufl>imz`5*%pl~3=2#e^pZzR!9gh@XY8u2nTIgLkTf zY-B)b_6Tsyq$|Lury+?(CJ=MnZC)2>dyC9ydE`ns9O! zU|`I~i4l+)Bq>;z_#L)*$!kC6?|t&K?)ru_|KGwt?pp%#w!iky(>uQPV@7>&_YQs| zQRqlY0ZNcw0adWm*yhVXM}d|-;1BFFxhp|hOJYL6?Fbn3`YcYf!e>(bfqZr41=oVZ zfH=9L?ZrbJBs#lsDotJHWRzU$_Q(O-orBo--gn?9+A|T&hAfpf5{ky2qGD-uWm%~} zD+OgqaArR*M1{suDcc3_skB!LhMYfe%H#eg6qbQF$rVYYafDdx5f;nKCw%MIxB}q3 z3D;R^NsC7F4(FH32MJs^0pYj~1n*MCqai0;8s}KF*r<`8@xPN*2$P7NGov)~)0tlny*jdT3KH~x{ zz{HBENCE^TLlK!RV*#4+`cXHOi(In~svit29e|SkmSq&cSRGNT(&)fBmZPXC7XWd$ zGZ2ogYUjU&s<9$as!ZPIdu3|!-$wKSmn*J^^{MW}u1?j$e%HQheRii#Epbrq(Kxu2 zblk}EM+rwEX=?0>YsscWJS@%BcbaEnk{Z8`5R^2(H1DJ_J)g0>WFGKLQkUmTOfK+m z^*rW93sZH$0>E#82KS;FgfMPyRM{=Y*`s;!Sc@e41wkO(IwbNvbBoim;_7tz{~HAv?Kyt zfP`C;+F>3*5KbTxyXFkmhmAmSDdiy-s98VtJqlDkxUQ^bcwbElNVGqzTA9$ysRI;{ zkv`W031cQY9T~`AI^I`gL8~Q3AY* zq$^2to-c}twZj;!I*1&}_Lw&^S&5D3avg!ch%d4_p`tpj&GHZd^r;t!J-c06JuDrY z&YkGMrX2Qxk@g5i|L4E+asSRE9&zpUG`-)FKkqvN@_R3P+3C&C|MOPSs13M1NH?k3 zdHe*Mj&RlBAoN0*8gjEz43ulu>?mQ!Ca%NkwUu=NB31Cb zQbble|Edlb?e;_Y97G9wVHx(62nE_(B}L@Vq+l*!ZudPE0rPjz2qgNbim^%u)9Cu! z5f#gc7ml?_>a4#h(y-eGlpf~8V+hliw&AkD-%COx-YY;|Y+iI~h4+htsz@5IRA!vh ze032q9Id+1C>yL~Fv& z==L-g<&kJv^qs`y)38!3$Fxme)CGYlWFVg5cLNvzpi|%Ez`O}?TfNX#NP)hhEO?q& zhw8?K?lS@IrX8K+h&T-``1-S}b41jMI}GC48(u`3pWTrPV)f;g!Yvu~$%7o?AO_Bm)=t0iXRQMP={uYvbW zD!A>?1xl+?W9%k%!W6{?5nkn!#yhp;*$${aAQ(rxVj4^^I1VJ94fm@qth&OY>=FMaIGzwiYQ`Qn(zZ{4r^j)1)JIUhXz z!7J`6DhBO{MO784hy^COaH%v3=x*NK4KSbYF?gDdm+G@p794~^ITZNEbdd-!z`Rt& z*m^9SpoQsOlGaw{9dclG=yvWM04h?3V6fS>cUv~@Nmy5Jw}k>w?6OxbYs0Rr3%9A2 zn!)9eYTKe7Nd=l^yrgaM{UxE{u|xz;^$+h8VjL=kEj>@~NW!7U_beBVT{+*V=Wv`J zBpV%R!Ljd%o5%x`21ODSvFKC^ndh8c5%rgR?*{_nt1P)l`C?$CAlk$U1~0NkB%qE# zHsT~J1C-$g#&IKN2M!|b$wUG?a|b=2s-8#($?pnG0IbTH_Ja4&!94WX7gmQLP)f~yW6MVTlnKXAs|;De#=*% ze)*~YaMYtC7D{;fZ;Cv z_J}C+#Q>D;3WQ??o^7YS5Vg)V3hImff?c$(TlFA&Znn9kECT3r(0Q5w*iJh{A%T7C zlY8$pHba#o5o(p*B8?SUQ=lJh%4A9XjcFVj3ouqCxNqtw2?tJfKsbup0%I-J8LqP; zfq(Cj5Cs3IrtsXD#ssbaL|pt9P30;dUkPbNv1eCgh8Llf{kL~Qn zHu~duPPt#rENrNlGsmyk6ovM}JaC>#^AW6jIDh#E5mD`+`8x-%pH4sV zmXG~QPkQPd-^kFCZ-K11k~MnECYf4 zv;ZprdWm}$l{KjuKzLTW#Yk#cdDwd14qz>$XhAL#AUu%nx!epQx4-v5vGx=tBjjO4HdgOn zLQ>STC2bn-6ZmNbRS=UjXA$`C$OaONPT9cuYeh-kNlS9$aIl}c~c!iacIhF3e0T4;+ACN4M?Zz`#1*7 zJ*7VmuCa(7zgC9drf3Tq>5Cm=dzgH)G2l4AA1 zbj0sgky#LymBJ#)V3*dO{r2kE5Eca0Nb*{8r|dtkNuaOFwMe7%*~R-u`a6$jQ&G~G zp>fY;kR)aC&e7+S?Nxekt$S7xi+rghrw$||&2PWbuq zKIb5zQA9=^DmjRHjC&K6U0cnS*5g)FwFeyJ`c^B6}IHu>J9_ZaGkj}sozWTdQZ~WZ zrP#Gv#(5Y3!1v}v8rESTjAdYOzX1FktHI=9&;4W->#-H-fZLUmHv#V5wge7UaCidQ zdmwq*OO+o9o!NaC@Cq=m%6LR&*d=4a-Rh`9!}e@luNFjy3842^5r}?>NLk;d_!0@= z&*eJWw$|@O+)5g=GtD&a7X9`}pT_aJr;1=%_R_X8cJl!$6va+zjyMNI=Kjty+$@SD+UDjzp9&6 z`cB8JxBlkG03zcN4q6`-Xs^#ci9j%p(-b?#?CNBMjR8p)BjNQxf)K!MyKQ9>V3fg9 z0+48it2KknwMQ8FNGAU%%hM3gKu#Y=bhE=3G}lY6$ZS z+0Od!oMe3Srfg6otFfZ z(|f+_F{8|=fDjp>g~y+t1HA&O4iqpb+KVmO+tHonw(@uX9tCFjz9KfPIP8LYP->LQ z(1LlW7pnqR#v^$br9~(MDad#a7!#;Z;0%K3mAh2}oD9Nu$PbeYNvfK%Be~f6D?GPr z|E9i7Sd3^a>u7BXX(AZEC=DF1!rksD!AawOMV^~+c7#lD9UUAuV|(xUz58hlLZGwb(Gm!wA%Da0^9PsZ_K3gHhio@v~ARsoU5AbaXECSDA*U^`OT{WaC zAD$JcE#;cKd}S~gMXkZ;qaL9|)DI29PO*sZaP`OCg(674?#`=w!=i;0s8h72x%0CJ zU8)+_s|?<>LV>&SR#tXbsp&8Q$lrmGpfM>fvt3dQ1==bUm{BIB7Lmds304rQx+|_u ztjff!xJm&z!g9IYpbbsU>0G4()CS?mF%{9zD*#5|92*2mWyvREg^jI^a-7MSAA1!f zyVI={lJuREL`+bjFcQGTSAQfB2?hfCVgE7yxJ+?E9FN5uAU_7`c%}_12alTwu#b5^ zY|8U8^k13}3^)5n5s8?n5qH$W9yT+s4{5aMIAtlo54UYKD$as5upV*N}%tkVlm5tKz1uH0rZu6!ob!DoOI0+ zV5Yu8>FQvn^TSF}5H(g)Gs#66iOiL5&k88l5t-ODJ#}gt>v!^D&_m2}%PN z9C>WF-S<8e3k@z-2cBASpm;K6MM!hY5z=gs_`i!I@GFFu>kafymeFvS^kRPVxNsNqD#`4#}vUC*H_l-sNwq;1wA2?A8F)9Lh}2c1r@{+%a0>tT<+_KPs{-_)PC zmVo^J%YW?jub=mV<xQ*DK!c zPrkxu(xOfFaG)HMdv*7kiIw1QA{*!`mf{v1$OIAD%9P&6-Si1!$3xS!T8UuyFIGjY z?tO4Lx+)Yh`%ZdrbY#+8F@#a8}3$h zS6`O_cJrZ)75HbOVfk489WfkzaMYROGra6YAsT%Wm7Pdq3~VD45onJ2_~1{^D)nYH z*3=jo&j*Q8u_HL{uns;=i}4hS2F>}nVIas=lqdJAQSsOaip`NRmj1!ZAM?^Lc;4M# z0#o)){dsE%$XmYb-qY{>$iqg76*(aFL%L`+Zd-*YKpttw5P{`<##b-}9uKCYg0m5X zC=lC`6SZ?&(jr2n2nz!;Boc00a$~Z#*;5)6pjP$SOGgoeHVy;<`vrujQzlKI- zfCqAviG#V=EQk*P-b^0yZu$T=W>0np>)mYzSqL!1MM+_jWT6}vfcIgIRLT!ND^CzKRVQS1|AnoqB) zL?fTbbvF4R4P!PKZKny;AZ&Ior(kB2D0sW237S@CF zJESm>TbQ*2r^{*W5(ELvlZ}=AF1%)Bq3i2i{S&~3axT-EWmE4SeXkqaK0gZ8sLU+@ z^b6^0<|!r=YA!3!P+F2C5b0oYA>WzcK`JL)ej*P@I65Mu)*5_o-oHrkK=41?FeizN z=KKw9olc+v+vCD)>6L2^=7(+cF}$%hIXIp`Vx+4GLk>g@AV41=Y?Kd9w*WCy6TBRq z3ziO~l>y9*2oPj z#fwC}G0y>>d8dAKegx_HI9;$8#QOAKRG+){3CxG;gh$;D+bNP~F)pJIBRN3w742Qq zh`NsY^&~3Bsga9J7>CXFgVJqGS$;N1^v45}y>WxUUFAp(BUOM2xoVHxuF=j$lrWx! z$4)-U3Q3oCbF_BC&gANiR5a=-U0hz?Oi6jnzHC#w+Y>evEWKB~`>}uSqaT0g|7FkK z%ztkk0eRn#{$7=&V4ZMr*UG`pbOKwg8@QY%UcemT4aGlIxyJT`1DvI^j(fCGi zf?SNmiYuA*l|tltrOSZ4mAi9CGxsG_B-o{?J4p)TRIHzb3R1t*!KBWZWg^Og5b*KA zitO7o$7N;rKRaL$ z-?X2%j)1)RKlsq;-k*GMRyk;qW@6wg4gM5fxzPuKz8)K3rK~N zJ8-RH!oq-90bjgkc2SDXCA;)$cbrw_O-q#p2Pmok_~uY5`Z1Ttw_gSUT#k@KP=zH=Npotln_Z~ zW?BwZ)%-){+x`T_7V9C?0fhsBzkDwi5?>|w9n0TWL|RYO^StEXGq$)%vXVbOxFjI1 z41~Q#HuQz!_M13jemM|A!^770M*T0o+c|Mkf$GKTX+6( zH{a4rWWm*k*nv*OPJ(`jo58?t83#c`%K8Ar%%Cew=YAGsirlhhe^|S78Tqr=0}8yR zHrsRUayyDPuZmCZHyqP2RG1*y-EqQ$SXk$;UmnkGI?~H|js8blXvSocR37h> zTi?V!80{Qt6ssCzlBxMX{lx|Zk^?;DE7ehvAIE#>sv6{Ulx5g7=MifKUUz%Wx%6|s z=&lcc|4%;pE?xp|#^1MufLwj(w_bF5!;^n-6mTzw16-Kwd8?Un-9pk*$O5JXRZ~Ek z^HRIM3dBeN4)w&{+O5TR$i()lP&g3uB|FaaE(N9ts8d}p0Hz8+d-xS^8c>o9pERa5*`usS5C}qP4 zLZ_6Z)q|FS`;36(1+k3*Sr8LE`gWLV?0T29(ly%|A8nP%N$i@Nz5N8L*%oFV2aD-? z-a&K%(YR3&-sROGWyOS3(=44{_J0TU$|oB zxD-{ts^ED0fGZZ0u52&uYGv&-Y?oD%APqt66Yv&96psK_{m06f?Va5QTjc`CfYl%K z81*%cO9sWi6H)KT$&0|neQ<$+7hyzF#>!k4YC#*R zNz0e=M3=5kwJ3I?vKfH1x}}(nCf@=&J5pfnD!}(vUTlv&08M!y7 z7|yc=?FaHvHoru1LR)wrRekV6qH#!_5bajRpCBMO4%8+9jy1WNq52Dq+m4L*WWZwy z#`eu39)%##e1?GE=apGNMId~P!<2@$PU#Vufkg)wpfCq+7|pAk9;e}t)#ZfaLV_Sz zj{SE)@C&{{C;|wv>ai6I7F1RfMzN!QPD~lTPb`op>e|W`lHc7Z8kY2N;Qf_Mxx9Zj|lV&NhST0r2&^$uYyfMd=8A``Eb^0@U8$hUn~lz;gi zJde+%IRawLx@Y+LE!k#%D{0tdHSMR!iq#+IHC!O@og<3K>Um37kdpS)D__~NJJu+6 zUIzxq1V9hA8}~*5@IAY3gkn5l#A5zV*XBYz)3f(VU^|o}7UxV3+%+nFXi$TN4D|D{ zxEer&3r%*xs-$U{O$DE4aBb!dn^oYl2j=_0=M4NXn7mgpaOZffY*c`cF&?9Doa@EM z-=_Dh&F4CvNk;xioZE^BhuaR^x~l70Er&|)k`uC!@MZG1CN|bLBL5&9=)Qy`t+$zx zivZ(whd;*NC}#!D0gP>|X5|9&$9RvSHjQ^!u{vK(?EtQ0(eHEF=47G?D$F-bI&%5c z7|UNyH!P{i6sRda|HWA7<2v$YQE9U|7JSN1r)$;q#NUUF9Ggp@@u_$G$&dZgWA46o z?b`XHemCvEn@>PK{OezHdc!AtmlZrps#J{8ks=tTAtfB}JQtJko_dGD4m{VnL@jqp z5ANJ5^}))jc6YJ-yCBr+pxjs{S(5oL2*t|9hEOYZnee^`q=NJJc0FQ~rk+eVu;1?Xl`dcCLpX*|g=+1DV-5S@rD}>u=ZNyb`k>IoT)y>9Md{v3s{HD`O=#xER|yGr+AGDin{co+35_)fId$MSE)Wwxs(B;j)9?>Q+!KpQGa4yZN&z6yjNeS35FJ49@t-+)V3C>TKi zoIqp0l$p4VI&`j9WD5uJ@huRYUJwl=HHm1TjY}Cueb9Yw`!FM^RXR{Te_&Mi)gVFT zgM37gG7%evMpAC&oD*D9AA(>6$uq(l=~!Fq*b(cDig>Wn7-hgYNRU2IW^y@#xOe5V z>#umzWB<#iKK(%x+v9?9{l9NM0eSEDzV`ICum01cNDZOrcK?wg57T8^d-`jPmne}9H;BV*7V}^sH}tH!uZT&R;{s62j|L*4NORY$$9+ja7|{D#HUY!7 z`oSKRxe?6kMn15C+a$jTc&4gr>CDPk$=ENYADP{K@ z|DiunSnG@N5~EKr(NJ*{oPUlB8THo6(-?JlQWvWOKCax=F#0*#H^xzQy-I1&#(@zh ze1ENi;3hy!z&6g<7MO0op)u@$F*!C9#)b*375Jf1QbEqo|LyO6)GvPNSKs|CpQ3NV zkDE$BuCA^=>h$ZM{h`wbUUNspNYLWEt+7NP5-@>9SOOMuc{sAe>G=s4Ed*9+AtwND z`Lt>603&v(+Ij}PvkOG0ZCDX%V?b1y4qjWifNkZxlt75GCsn0M?+DnJ~O(G%FMt&`TwAHC~37TWo z4+jAMeB5zAL`Z-L7-&RbiSY}`)=+MX4e68=1NnZWEfJAnZ*c7+LYDJ2J7sd`eJKUF zLmz2KUf3v~CKYy!{Ei*-TfhFT?G|N|!b1U#bMO*GespRb?0$3?Vr>Z z+i>WKMY^;xwrOsmaiEkAJOUZtwckN-vKy9{sfh{k6UJa{;sy`S&p2P5^ZmC! z}YRgRfn?_7Pk{ZshmPB_JRE&96MY@hLyhx<=t5Sr$52#0x+{u#N-n*RsmQ9m|O3Ke9%P+36|HVBNgSMgd6xi4;kTu$+~l_iyX@m~Afe8=XPGJbZ52NDRh52rWK@c6HD z;lgLiyox(qRHpJCJ!>mVnYZ|M^TZAScG)&CZ&U*LFU&08V03Gq1YO$d0*~q!}CT?3?#^Mp3`2HZxI8s zA`z@4F!)Ub3kaIp1;134P(T~Wk0L@0bW`0f0QHs*mcc>jOb0>!b*Vd0o>e{tpc5JN z{?HJD&W@aCQtMdtHx{=9r2#yO4wZ!a|uaQT~jZOo;AMSeIY zQF&0mdHl|W#pgf!I}rz*-#RsSPV1@OHr3PnTNP})!h3c-m5GQ$Av6mD!Yd7@i$EWq zt*S^vKy0D+cY$22)DR*$tXw#TnC(7_9RP9Mk41T{d^E0GSauQ1A(e`x4otu@fxy~5 z3d-t0Y+hT$Zu|sa?Xyx3tj{4i(ym2E;x>rbG(-*KATmi912DTtVQ~MrzbPcx zN9J6(5heeQ#~u>VOr?%58mm)CCA2)h(Sw#){tTyEw;S zK56cmwo<3Xr4#I&q{SqPN?;ntP3+)(JmTm6!e4yI z#Q3}@T>kgXB_O}?><^#*%}?E#V?RbG8ogGyUv1YF5rOv%9B-EhaI64B%8x+eT!==& z5QtK~SU%3%%LVUSdP^`V>c-@x=*ZKSKaHaY`Gu|UakwD zQSMtEdAJc$f%Rhr;Zh>TN>1s6LVaPA9)r@ zk)V5~I3#iq{ZM}O9CrFVpGNg?^PvkB*t8NEaFLnMF`01yjpV2Q1es>^8j0aCKhe=6e!Ff9)Nho+VY5Q^?z^$6g)tMBD7yA(icE;Ui+ z$OG!(?`PHH{6tnzRxtxB)x#8|h@YrsN9EvVkdlFm_$%v*+~m{08oQvYSs{DX9S(QQ zIo`%x&7v$dSiBGv8#AbYVS5vC#b9$(YOGw<%?dw02;+`Oc~UPXhUgWIQNXB6Jp$Sf zsPKH^9UNyi=`oQ`#M$O#I;|?|Y!B4ABE~L~28#8WujBFNd_ozfGsaJ*2%q`+cmB~2 zzw(|3r)B2`{EafYm}K<~vCRL4t9FG|YDC(m>^qU+m>eeYk-9#_h_>4ds_$f6>o5 zjT?FYQlhd;OwcYcFYT!vhQ9GRMF95hC)u~IcyDVd-ktshuEp9jSXBZ$gw3`kKq zh7BXBOips~Ca55A@6Q;R0i`Mtg887423%;}y$Z<=rg56nQ$mVkX)}k4+FU7 z-V-iVGK~bP^e%r-Mk0?4e#lkI$P1_m$z~m(ox8HDuSYu(bAqFH)9Vg(u3uRH#5QtOW$yf|BZ0?zYxgU+ z2dN;K=lBivIryQ#LNI`sc^{ecJrfoz7n30zuRL~b-n8_#-_swZ-4Zcee9F& zc!^jQF1~d02*~gM$SY58`?Aj;CBPjw_>BZaK10OCS0*M2GYHc*<1z{4gb*$#Js&+?y50nz|V4!`}UCP^Rksdx{wn7reztuB` z>Uo4r;R#dld`l`1rrFs6+YW7P*VTKwBzdQ8(SD_W@AV59mq=7tDO{3k+B9IobBVf< z$gRzd&A3LwAziO_=BCbFtDB?Je8pv>zmXIa;BWH<%>CY1<~4o?@2h*fjFdcq@T6>c zIobQ}$LKGfJgF72CL&ldA`)|TS|D9H!Abx~H5%SQA|0i=v}%bU zNNI;2%X$G3!8ELHg<#CI{rW0>74Ja=MSkbx+m5>ZqMA{4A>wB!NjG*|@G`?yBz zk(F(nh($$QTgQ9MMLewm2>iq5Bk4{JiF!J~fORA-xU<;h8j=m)wag%P1pGF^=eX#@ z`%#`=$tbR2t|W+~e*q*Vl4S49awGx*fbV==5tqCpUEMSiFgKSg1n#p>s8gL-;mK)@ zH6^JCRtHa?0IcQZwlG(l3UpodLA#+nP|XoR%bBok1H;{K+{Umozke!}fpVrGq z$I_Z(D1E~t6Q*I?X`92r@smPsA|wr{CA558FeyJgp1e%BK@ud?=N%Y3!*&r&xDrpw2`YGP&V6l2WEQcmJ9H@Ximt_!W=3TdWEfU%Dv-o;qrG)Hm7NGhh=88^LQ6%SxiXzF;V$QMIngKs=pg3^nskb30n6CZa zih*PZNJ7c~;5}P9R`28Taw7x;B#TU14yqw4@O;_^ir#$DB3M7)Q3dQz|F05kqX=N zr(mH{kkqWAGNB5h6p_(aa)7#hd@=9zYddG+!f9>q2-hoYOYhI5tYjBD*i2}^e<)N9 z0pBvMF&~PY{!3I`j7WBiQ(Y)$V10@v} zMEBbA+(cqwd0-t12!?W93gVPI*%9}wq8L~i2#g|GyHxSGWVgO^1H*Ev-T7_g-2^bN zh)8i)GZ1(nzhd77!C)ex^6j3nes##!O&h0ia4x4PYpX7)G{v<<`ezyV$vWlL&FH_JH=#sjYvh>%xOqRQBY_OWum~FGlED|#X~F; zM+pe7eg?8(b}s}ZJx}o=6BKMy0`zHoCE__ElQ=2I(hE@PX_2a6Zx<4?a-Cw;guxGz znIkS(sKCsA*~M1a&UXen9T`FLl8;?wpkseqz?mkl2SNIw68!O#_S*T8#wCXBy} z`1Gpd<%_(B?FOOAbzYN_QJ4VJaU#~ZrrpQJNaK$NnwuIErt$2UW9_T)qqt!Uj77oc zye<<{*x!m+TmOmiFzT+qF=BnC_U$MOv=tHioX2R$G^fqFF}cC9%Htl>$ln=>i93_2 zIpcvRQOtc@p3~_c{rIC^_GiEN&KJN`eqBFr4gvY?zx>|Q`@ZMV!*UG)!Ns(I@X?{H z1J?j-I{nIRNaRET98@hN0D`WG@L8Uu2iHseaw*ZYnd+th!pj;lGPjC)L%<}O7r6tS@UE+rjIN_^VK z%^p|_O8PsB$To-5T5^b_1NWrDL5fiT`V8K%E(It}Vlj58W9J_O!>iITZ4U3^Go~e<&`UeXJj3;&}=Kih>me(Z6+U?8#^4-7p&ENB|$Iwb~@t-$LK(4Od|K!sfAN$tRN8Vr6 zkFuyEk)VZJDJMu~5CkB==)ejt@CuMf6#)s<0b;SW20eGZB&BsBp#XBvbLQ(ipg=MV zgqQLWuyufGZLt&M(dBg%zU8CwSl_#VmNzL|)^fw76t^O#g50XIOH)TrmNe5q_O zui<+~o;OgvM@qIVSS{iC6xRZp<`u#4u}y2pLGod5?Vf~n!7;pB))T~-X>8#w-|m>t zrVj?jORkvYj}J27kGjY1p9c9}G$T4ituSDd$pZ$v*B!{b>mGT~Zv3p*un!)m%YpG7 z+0e?!$gjSWL11;c3Lrh|T9tsDU#|C5W5C^r?P6aE-vjJ^GL{3!Y@dDABgz>HMOIQW zP~TH4tPkvcNO0s4K)1S6jkd;}_K|l!c`ATx2I32K#rhC@5D?=v5RB_U@k&ap-&+6N zCuC#X4I*LVZ76eA@ALf}_&#n1v95hL(&XpnI44zRJa1$r+K&4x6BH|_JnhTpARe3i zh4reQF!}QSp9lrcS(@D7ToqqJhZq{%V1PLjUByzHo=&H`9&$SU!h0U`@eh6Iwcnx@ zvi*s;2(_Yw%lIy6V4s3Xdb}LNU zQ5PyoAp%|=1lprsl?3!;BuGrW8vu5ckJBrsRylwi?b4Bu*olWa&+!xQtlxJqKI`9~ z3>9Tp<%zGF=c9COM?Ktka#@}DLAg`C02oJFsC+Qk?$ne4i1El^1Kc^?tgdxL3*DIv zh$@#a?~9X^40o*2u6=;|BuL&58rz#{2qe+cMnwS?DeMwarje%r^0+KgkPyzQjDXFvL z`5*g*M}GUKe#V`D6<3~1f8RI(dGFtU^Xc9H-6xEU#VIkcP>i3rU+Z^*+^ zkx+H+fODh1tkS>HyuEJ%!Cn0a_7@BZN}sFZu(q+-6!#&bNa|D*(>wjc^gSo9J3PfPGIpsRyK5*`mBxu&TBP{ril>t`` zCsUA4SylRF!+D0k&d)9g2mpTv<(3YSJSQO2cRrrar&n!Ngm)c0dY$S{;4n+54*x%U z?*jboc9n(wzVACHISILNkx)=!P*Twp7)8f=nW<7#6ro0ib~>OHt&Re~tN?rr za>kSTS(yMHsei7uS(!-oR#uuu0FV&1ei`xwU~lPkfVz_j{MvXczlzt0vbL4M-_RKA zZM2!@+wyiUuvm!Lj$A&DftuSC&thw7^p*FM&rv#DK(Yx32nN=xueGE8VIrktI@);7 z^g-obHHc0iIj(<=OvDcn+Prrqk2+law)%hf%bvg*Xz>65AOJ~3K~(dve%qHm=VR0M zaN@y35sc({Zo9lSgB!&qcw##HuB<9vWne`cy2OI~qDvW~z=>Ib$Mz*=nrL-K>!ym zI0*FBmAo@Rq(GMgi$Jw7AbN6vlW&MCw1`EzUx^cv>`0rev69Ob-mLGv_Bs;NP7GLA1 z_e5+vA7jr5~Zd9)VwiL)nwF{B52}cWug_KD;gktIKKjUAY(;=l zOaNMVMA=vaSe9K`dAKvt0*^01qxa??tHctKWn>r?3zaG%L_ ztYo`6>ru+3#uer{_Q|Qau`y4M1-#LgTL}iPr$o%ey56ybAjq$*ker6wIS{ZQ5h#PD ztBAysoIo2_Wy$xXX9KDywO-~g2nXuUM@&HQMC~}y4m;GwHN3V_!?^h^R}cuVh>fsD zj6FM8GI)dbll7LKh|G`)o=eL|2YJ2H0SXBSwJyn^ipfg=R;GhWcMVNa+Nr2MagF8s z-s~V!%b3BUcHuJDo>YHuVamjd%Wpv2u7hPOiH%8izfr){fU|*j1f?+sVoov!xrP2! zWsR5;AZfK+ZDzC^rTQFYpgrP3TD!fh9k;gLM}sIZDe0uI7#~HTuFnGK?rVjKi-BQX z2D(|f0tmNsCDMaL$odWDIskrO&)&Xk4n;a}%^qZ~3moJQgx%}5Hu}GF_p3UPyp_rF zwaF3R#kySEwsnuzVg9X22kP(Z@BiynFZ}$E{;3cC*PzBv{PA!EjLkpzNpbFN5+n=%K`T3Jj=Kn7(Yfv`<-YDt-qAVsPmy|p{k zDXti^@jEnxxze{F0^?AU{68#4f#zj@la*t*t7_tbRu+x}8LFRLPXE|9e9%Am)t~#UpGUjK_MZ<&Kz`&`zVq_7 zZ+#+KJb3d1a67~j1VsW0C~FrqD6oHw;tc2$Ai|BlDsP-{?t(MhFezX;xW7;cPjM>5xs}4YR zEg@D{WhK6ubP#cox>k^pAV)z~csn^mK&bqDOO~Hd$GDFUq(*-kPMJJs;t{~Tk%|rq zZO(|>tB&RwC<2hraUht6Z@_Wj0Kh%~9N%*c;21E{{@;-xFfd`#;p9i>+qta@0oeFW zr@N6T&EqLzdGQKeed==(|yXPKmOF$ee3g{!&}7e-!~JGySq32%*!i3?4MpP@7svy;9yHZ zKyafgo+psxa`sSY3shd2PBQ@n?8jgnTK zv!K`dp&$#^7bY8$7i|AFD2MuN%yujhvltY1p~8OImg{W4EyzwqT>54c=Vo!s)Ryc; ze@a3@gy7omk_4tGh_CHH7mh@YlerK0Wmq z1_ELRq=u!S39L?@?WU&Yl9I1Hl`;{)Ze^1Ng{(cRuZVjYZETH59Jo@%Phg$awz7R7 z+i;ue{Tczf&%e6P)>f`_$P4Ypn3ov8;o~uD+suV5)~_v74&2e5%dZUPF-Jh`vIFRa zcC#hvDi2#|eC)goye7CFH=nE5ll=_T`O0FpB8dJ7){i!R9(=Cz=QSOzGVMLIZL(Ia zf0Uj;i$x+dAou8VMU=38#f^Sgx5@L*-}J#h>w`Yz-v8ZI+NpnTCm?VC&OdYckze>5 zTWyL^pw$5h1f(BCqbdVVB7>U|rLU|Te447{RHOmhv~*uWSr(v-feWA3B9K30{g6Pi z_kZX&ATzRW5PU&f0*Sc=gcq`)+?7=UElmk*lZ;4q#u&1^3;C7B!$|2-KlBmHcC5}t zEXWpNxS@|F&@aj{86LHTBXQt*Z?e zte{(-pdPI57^+7 zi^6!vB*qDWZNNs1D$B>{2LZ?vp+PV%;z0(0N7=!JXnsP=E?KN`t`bpY1^XOgA}9)3mLWm49ZIxyb)!-;LM zQ1t#`IU6v}1TPXbdvD)Jal9JZm&j|>4f4AoK;BJXuuS+o5fFBf6qeJpZa^>Rceo}^ zxkooFclUE;URg$*#I$n%@^?M&Pyd`>@YrvGZD9N7?F8hFfB4mxAOHOy-D-jjxFREI z!^e#t$%-H|11zg_BK;{+Q2-7GQ^x=!_{4S#peHR4mS;g!M%_Rd?Aekyh&oEpOKI7H zfWSKdL;~RkDiu*d(4GJ%pRV5kyp@cSL?8*GD}Pb`Kw@^~*-Z!i&4ghPm!1YKT}K;> zKF7JDh{e=$v^yV*`O3s#*HXdr8;RT@QZYViO{zL)#6#*QXy4G!NXAK5p}tFfzDR2u z#mW)_8%p@-AQA}QOUMe1`d_GcNv3+9P-gK=r5Qz)gn8c`n@;*Ket{u>{{SbjZeT*=?YYpbQb71(~1*^%SzBR&b zQCOc_Sojp(Wy%27-r4Cme;quur@QfBp7GoI5Ch={sI06lE`OG}2WLY+B)}Vjy&0@~ zUyX6?`vKO)E?NlIS2t@pxng&yCd;q@KtJr>Tos8yBwUSTHA~p_KeRMB;b|}D-v;sg zejRWoLUO!CU*fG-;p86D`Zr5lexG}6c@Si1v>ix^u!^%TwXzAj0 zVdH?$Ifxv|ZdzAuD3Wz&c4Jmc-^N*`vpxuQEi5Bn{1s39@aO-YCw@v7=hQzp5slCe(}36Pd~)c?e@IX}wmY0Gje`Ead*EN3ht zvQD9&j`g8=dlx97K75Gf5S~r2B>Cr=U5UeXN;Mh_)kyz zk&Ibed>q_@(5)$fSanN?0KNz^{r4;u1iyfemXEf-*D)JTlAEj!$hA9^$DHIo_c?@p z=mg8Y{@%uGR+o_@1-4^<_}a4P%KG8&V!dM?j&>X2ieHp(=~~}Jq89aE+0W>{1iHb> z!}8JkVRMq#KwLkrY@^=6xJ6CM+R}kBB^@wIhRZ;hK-m_7`t?74$^G~JpWpZV$M4;{ zca6t5_1|p-=VZmLw zxQ4fbZtHs6XKuR%3tbHsMB)SyiJLh9++jU2w-E<<1|%dInOQ~pnqqe^2Y&H{HjgEK~`BV z#LHAxAt!7U?7&2Qw09DOYyahX|a9;x-C z>fd7gW<>3fA1yn*jFRlAI%dz{T>#kCJQex@Y_(`( zJbzWmT3fL>3F^|ubqWFxwJA>dXq09M8zBUQ}G zaf;o?XaHNb{`B_CxCZZ^892YDvXAc#*?N5#)a>mNE;mU&O@yppG0J9m z24mh1IbqI%e5$VN>uh1r)-#S{X>%yA742SS2L)h7rMylcJdLu9gnl0Sg=C%(inx}u z6+;mnQ>&5ic%4~Cv>cIqMFKUfpTYHt35f4E*S`4rzxLd3{nXER{4;Pz+WCDO0eS7` zzwz?qpZL&L0d2NpcY){18iDx|0LO9})Qfl03ZsBD)ankiQ^Oim{vFe44F^p zKwQ%$Nuhi*QevA~A`F6ba2nIcD{IE;J?3rfyBb*;}|dDqKG&6sdW>qL8i0ihe5r6ugTE;&Ey+$PS!W3!L@4Ylx6hb@l0-l z93Z>vLU3mj#N_jS`?KEga(8$4p_hO4A#c3A@6BuL#{jq{iaHq- z&y-aqY>)+6P(+5w&%?N3t-wwdUx9!h0dom-Cm>M~6t)(O`lz26v~F7k&Hz*fksB6; zL|l4(44`K&M^n=92#7);YrQ;a83DpJb4z3LGupZ<>%)vmkr&AWlbXul+R*9#-bBBJazT!dL#IloE&#KjmYRz*g2pca)WFJ?jqQ?cJ%oIK#=1E@FRLb zra@X(9}t`qm+Yn$368gkWJPjk1X*3ti$Hn&uB{~oid((e!h(Q21(J8Y-3W#Wm}5b_ zADPTp8(lsQw2$(!dtB@z-FK~jqidMEDLMgY&ty<{xIm!Q+2lNwZi;C_f)T%y()!5T zR1=m&@OvkQ@i6x-L0VjoC`*XT(G_TKlV0Pflh_)f2uSS1NP31&5(geG3#^H*h9e;{ z-F&&c@Ix+_?|b75KIGoLdvErq>tE*y$kRXgyD$IxcRW9g?3{Uyz}otLcdV9#V`DBO z;VsD{>VT?0D2*a4OrDf}!ZjQELj|K(a*^%{76;OYL;up+oe>Wt0O~iBom2<8W>prE zqj@oKk(fX$nF&hjSKnmvH$D_8na6#2b&$?571V9uyos2}2w#J1ZD~dE?OJ33L5oNT z$n>!fWN270JUG4t^1V-;T!58jfZN{neNH10K|o)-RMod(t*s_>5=}tO0_GWz9?c4_ zD|E|~0UdPl3NAz5=0K_l@MD_?z?=a5C|3rZ?5dROjzq?Q`Cg#+1lU4fIVgu)u&_Ua zOPd49*55U88Ue?H=yiEUe>sUW_b%P8+U<(_i^rtJx!~CPV$N6PT3^Sx(B{9lQ^}Yw zOE4mbYstp{P@?ghH7H}a#yDFGO7}ao4A|NY$Er2$D0%L4TL#2jx+gG9(yNO9ITDWx8rC#q+UNH%O7q z*R6S@);PDJr(qd_3tbg}zPWaXm9Ua$^4#RYf0aJNXJuN{SLUYHfj$$0v(}KKXd)HI z4np%d=qlPY?7hm9lIHDXdJQjtd)rUEx@ftuX0-Su@qt1F>%m2Utsbrav!&t& zS1c7c-sMAprDggAh5{z6-V@>*^Fyd!( zBLe%Cr6`gzBSY#IC3)4T(6Oh;cy0>1Q{PWKrfvTf;K_H~{12$mXux9`P%b5ZGBufEK zDmN^4{U}|OR=4p?Kv5M-Vtv76q#_MxPN=K22qec?2rCE^fIzIEtv8*nuK@K1Ahz}m zmnb4Q$`wjlJ0^9NC-^J*ZN8sLM|mo8pa46b>|?(uYY4horLjX9)bAVKtNE4=22KzP zB({nqu$4ou0|NhL9@JZ~$)L{Yo89)o%-9Rm;Y&pvAT5%IL=;52pl{=bH&iE*mC+ut zhX`V_6@)$|9j%Y$ZC3|qXh7M;ik6G^oS&U=!GiJNVD#$abF)Bl~21(QF3plsRDaSbm2?0pO*_qJCcb@s(@Yg6#O zpIoEsbwnbl0=C`KVQYPUjjjTrgBTFO7;|A*K@5mn!peQhEd&hy$DHX!$asxF%IqdA zF&`!tm)7Ss0n~9Ky}yTSGs{q0rWRP6p_QmTyuYDl?h3gfPjp5cM^_rJuyTh;f+{d5%>OcRS z7l_@Wd~}L{+}%C-qRXp4;2<0t1H$&SQEksm47BJ&)q&)}I)^SWeLNu^!MY56QId{=aIi%Li9=;A!R><6+q)G3 z={wof0@C}u0Wv`@%md6ed>Eq;5ITsqdyM&ecjX#@1j=P%ftz+kIDC^vO9}=-^M?ns zC1L=N*_Y3Ip9Fy1=i_j%5x(!bE7Yy0aH>bYfOevPkkcWRR-0W%CnhXC{1 z&8e*izH*h@VRImUDPaT%N?q=nrrOBmS!O$Ys z0@@?VXq}(0J+^*}M$>gF>nvk?hD^9R@MAV{`W24QIH zlE>5g#pY)u#;%{VwS?nUJVqxUF8KU!Lb3Z56Oxw3*G+Z!5cL+WX(v#ovQ-_42nB;c zBpXOlkPtolIhV_;Uil!tajG=crdt7t znY95nW(GNB?8vQgBMV{xn`8O0KTA`Qh(w@zosYr_qTIHQNe1njS~je&QKnnLI+ZoR z^sKy|XMlQ92EPj~JjG33Mh>yW%8_Sjj1cS~E zV2^_0Em$L<_O#UlH_XZf3kc63IJ4WZItb`(AArzg3m_p{F%XnF;8)-z6NU&3v4t4M_b_eh-D#CK31`<=%L z=LwPwzd36?FSI+9p2M-vY+m`lKJJ-xgmpmcTLsBCFz)(Sts|Se)@S%H29l$m;BqR$ z<7Ejqv|&Nc?vG6-$K|N6Of@6vK)0_khJ6nF-S2+w05s)Xp@w+c? z_?(~D3L_$6^a`JEyC(=zf&?d7KsGEWCPx6(3OrC*(z0Rs2>2-QR)U*rUImDe;8ZD55h?{XupH(M*;`AFzepjbt9P?`Hr2AOJ~3K~&2CWRuHddN{2vFUvOC4j}QG*WA6D zC85a>>t<_=m2GZDL>j1kcQxbkTfR|OutXqWpSOkEk1j)Y@_eKLxdu4w#3s7D+1P3; z6!xQ)Z*d>(UH+h<^(lf@j(3Ueh(O=!40YQY8SO%1=HxEkY}K?$CPLod_TKwwPC6qWRsp+1_sU0UD3+$#=FP>$B2{?W>zuVFtJ?e6k@%{M&p z4}R_EKHfP3Z4lzma|GlKzu_&HC;!|FBKc^O+W%t^F?kOgL!EzCwr$jtIu&_2I`#&z zGj+qNWZ{!{>kq2`RyQr>TJ*5ij?q86fb|2MPFX(KqH#>HZt>w0er)gb^dHF4DHpa| z2@%ef%{~sq2=X&Q7=%x`2v&8exqBvUG4~VE1b|+S2kMo{S`Hw7XU&@?IzdpB3sy-^ zls*#{j%3Mze2SPLaR`KALO8e%MKt;*H1zXWS9v$_o2R^>H7Th+MA$cBsK1pOH|O>` zKTGaYuz{mBVC07@f)nsS7p9^d--xUD4F~_W$sg?jm!ov$Cy*8S5x~XQ(ivW=u$x#S z4bX4u-IxPC9R`6nf|gz6X2i_j`8Y%{+~=GmE#k(i&6~=6uA#ib5;WRmc*)bm7>?Q! zQqMoPyjhy|?=^nM<}K(70@voch3nH?*|5BPdsnt9R3B(Gd9ME|A{6WPwTAVh{=&H! z+wA(;4kIvV-`+Zj@iw4^13jI>yz2#E{_CU9`t^^$^{c=Bi5KSGK|k3hAa{3nAAI@O zFMQMGeQzxYhi?vTpP-F4kqxmCOSdineWTYFK%#WNLK&}R6r>@XT`o!`w*za;K+qv8B zqCS*){N5lCNP<-CM@1B|J*qGJ#&nF4vK&cy)g0aJmlJuJ)R>G2kkfp?aV*y3X)9tc zXY^IIW;dUgx=N7;(;V2<5{V%QQXf$~k}id0m@0rOd%yjLh7>tYrC#IdpcA!fZ-+a{MsY%3;7XTlhrX%RK-+of> z?n<>Q(8NO1>owwVyA?#aa0xPSG}v6l+IZrZ+y|(}F&v=2-_S+GM-vRRBw1{T&jak^ z2;}1_cC$FysWx4eEXa-?Pb3XK4|%Rct4Ng9%WaKsL<`&{B^dvd$n zPDCe>K9f(cH(#F>`SCSwgwpcxzsZUc^i9)I%Jr*tAn6jRA6#kIWCF$$%MAxFFb?$m zgPwo6{EN3dZ~J>7`vm0Oul)SWYhL`dt(matO6!LpAegT&+E7+_kABQdKxV{cgA{N* zXZ}v7-UtvXfTvEFp%143($cARiJ)yPOOXTwvq#ZDJeVvzluH+oyCp#00QZt0%>vyg z?xHNc88t_Vr(y5(ddf=4D9@nqinq6XU#M-$>Ch>(RFo7!62w;DwEFqQ9GqPBv> zHq1!F^eSBm0Hr`$zqC8Sg5Z2@S!wGvTVZ^zvt` zYZv}I+(0L3Tl#i|xgXkOVkOI85D>INfAO!Du}?tW{w?2jdHqX& zNh_<^Xs2--RX#;#7;t0WjdwFwsU5%(EFcq7gFp`ZMfv*k2{_9ktu9n|MHmvuxBi-d zUn#o)?g!{Y5=f+_>Z^2GKLfDvZZ}`DD4YT9XGp=BwAk;9d_@i_8$czK(7(=ph&oa=cZu6QFGw6q_%a)Oh zWUcDy4B+cBxsBQ?!lc2-8k3AB&)O=Y$)4`->-f*eKwD$6P7i9gwNh9NM_)EQ(&TCn z(Sl>Yb3BJ~zv{XR%O>ETtQ`<1m34-$1J`NRJ&p840+NcwYMxEgJS)Sx6Gduj)j3ch-nlH(^YR_>kF} zRb<1;#CAw)&O*mwInugOkO)khh=A$11t}T*5;u%+KxACtRu?Sf61a)s% z*~$TzrS_;3g0c3i4-OhHV&dWPBrXfNU>PXrb@1kSY`91`1Oc#3nF&d@e30d!72XIL z#eOt*v&zlGL3}1Nt>@HpWlb6222R&UdjK%SXSK^!ux#{pWn#e=nf;IBjo^N8&(Xw1 zxh3tA2q2<`8=PuSb!-S)0@OT;7MN_^!+000KUgAQo@+vZ1Z0D>4?-LDQMP{Ma@88m>)EV+ z+ESaXCrBtvrbwz3$-#Q@)TkXm#I`BDX=?qq{Eo+7|7BnG#EWpdsD5t|kh{CP`NapUOty4P{p8&YXyjlRi~PL6FK5Ue%s6 zU~UGE+X+;RG1*9O?L(IscIjf$qE6`5$@|UjN;ZZHct0wFP?RJ4a7MaBIaOT90IO}6Ymi~n|l?LprIp*bw69TNX`}Ekosp)&%+Xq$^|RPSLr-c zy+BZgHb!0CA1cxj`kaXi{5`RBG{l>?lw}NvohpZ{n=V-8*U!Q7fpzy^TD=paw*F^9>?tk+T-zjB2<L#vg?(vt7wIYeNDutuX*fa z`&|>^45mZhigCsD>g`!uRd}6`F(V6$PNzXXlNRMpX)4zHA`%c)Uwr2KNkumB`EcjE zTrNNPV;|i8qgOrg*u8uA-j{cY_+*cOJpH;)yS(N_f3syR2navtlefz1F*Y*Z_@OR5 z-5))>0ty8IQPzdfF34v9W<^ex?jsYDQMzjhA`|*S1aPmcAc_!-wl9du$U6hqHfEh9 z46p-jK~f_v7&vZ4J|+a}??V)m1IJVm7>v`Q_9=_NtS>%b@38M_9B_{#Kr_eh~Vgl_%62QcxJm6WmXi@n= z&kJ&5>w}5J>hCJwupGn!GAY@0!LrTw=%AxD2GVh(Y|k5jMQe+1j^aBYBKBi|Nn0x_ zpu7vgY1Iu?wpTWv>wGg7lb9ecKQP_hr)(S* zm>+Q$eQX<$?_(@t297Q|c`|fQ25J&TZhAzN zy#4-__u#)CMqXlXsBAQFgK-La4G;sozIEY}ZQR6GZ^Lz6TB@{$z0u0bNh^Ap== z?=X%A^-^3n(Zxv-h-+SDjmc%2H3SYwpiQRsE9;9aulUkATUJ6|Bv2Ut)}Q~t>z@0| zKkP;KUJ9cu;3JcpRFKF#u(hElWQ1bKE+QUbVh#o-I=u5 zmk(3UjC66_%w}444^!mQ`YixrCR4qQYza|$w&&HXkJbEK%~|mtNzS3!c)nO3{d;w!;_M;;u;}R`IcR+!zWssa3fF?T$pUd08*X;#@;akD5okmJjqS9n zWVHpv%Vgk!?l=rA6q%4Q4PB5%0#@!OtM>>xV|&>J#t6eK4#L{Rppr=urW<3?$64Km zm99}OV?nq*ZE_pAP;z1Y2CUHnU{(kOy4*KDu4{KGD<@lhq9ta?Y-2q7Cz2(%k{D4W zH$nm6tNyV0W`xOORC26GbnlA&oaceh!`N;kW)aMXwSe;?5k=3B)^aT;Ppntr7+Jtn2v|jg?zRAKwhjqtL;e3DrGGHF{`{m#H#Gn1Szwp6tO8W*q z*driMe$Dq^-t>h(qvb6~$CNk}`J~$xZTtgRV;L1VfHW)*6NNJF0m=xVj_XI@Dc*&? znve`8BZ;u>l93gFI|IP2J-a}(NSER~#LZpi+ErO^lnc@^<9ojh09O2cG{wjugZDFJ zrs`icK4;3szP>fzZW(9CwWqJh0h1n_^QBd=YU9ot0{N9*P;yS!u+S-rSR{+cOc$XJ zIuVeL?MXz1^ykj|G4Dy^hkl#5U|IfSt%+^qECG>(qqPf*8p+t|vEhQ{d1qD;+Vn^J zqU+J|xa(#nFil=TCknYTeR#1Mh&6oOnM6A{$%_cLNYXaZ$!WC&36hyL({ zy^U+1m)+Xa{_ZgqlW%q?%RnX$8Q5b!mgU+??hpPr;H=(iesDWmI$yWz*brrXS(9fc zN|E%}bKdlTp7%{|AK%trbZElXJX=2#!eRZ>7Ms`Yx+0U8>YZu!FizuPYaixS<=8yH zvR?Kz&-#Ji^o5VV#GY0E?h%kT{OWgH-uYLavvvJ$MNrZSr8iEO%OnF`5EiGCT-Oc= zVIpvdC&1Dy)~0N!}{WndghNp&xtN*)!Qc zLWgX-cu}1L1@Gz>kv~`vP_kMkL@=lGCAmY$Yl9tPnVWK+)x z6^mo@C0Or9J^HF$DVw+%E0Dqt_JjDCSedK@pI?`L)uiY$b;RLsc1UT?yqAi03kt zEPSf3@{DJjq~O-{$%Q2mTm^hl@$eLEJ3Xz zRF8^8*;-kVwr4UOmaTpl?*}QnCI76Rop+E1<=8od2$oIxC$z3O6WEhd{IlezkguJSlQelNAK`5F8C{Qh;|#a=I>! zz%>&GBR=M;b8UOHK4gM|0MkL5rE@F8>PzVk*lR0D>azgQu|4^gFGVgwoo3+!QZTGR zM`pN2I1z(Rgj0|`&66#{qX}LlG)cklk8FTA|=R3}%J!%fYGdYg^J+JF6LNQyPsF%o{Qt6PL!xBYIR#p*f^8mhuj^%Vr zN>JYdh>kiN$U`DEU8jb;J^j$1MH<*O5&;4KWZOex6+l2j+DH_R%?@;SIFXyU2_%a~ zFGzhmWSkTeNg70?1Hl2tin1a|5M*I#`5?c0bh{aK#xw>D7@)Z9@z$nm8=Oe2zaiq~ z7UTy&n4NCh)v+VCgaWIx%r(KNNsnD?>!8?Vb$2dzTjKbNnX6U=%1(}(EC__P^~niD zoB8%P5+y#}=YVpSLB|yASw*bBoz!{0@PWFn|B{8ETM^>iQC1nWWYq3cnOwAf!m)1s z6Z_iJ_?WBtA4yCE+O2I4%#p}4xvB_Lt5eA)2nd6ISTAF4l-5%|tjJc1pbrBf!ggk| zpz;k;=}OnXH6wLn{*K7C+<$m{knrC0gM@1W^3Iq4^~)PR^H+Sn2^AxL?!j&cuOg6y|T;|=@`}x?+*k1O$4!-jzfbSl$nW0w4UURm~PLSSW8^4 zYyt6dHE%0XWR5Hp}e(xXWQxMuaaX6Y^6PJpAW0a+a(r_nezW6RPEBf@O=U>ht*q6*s=WI9KwXI@!r}5_eX4FG8(g=03gz-_TTleX>iNc(KkIM& zvd?_%)73s<&(;LwEnoU0mnUELQTZfI5fFIB1mviZ@>FCafq3E0Rh>vq$w8MP)Vly8 z2E1l@5~#PfQrRiq!sMxdq_tZRjBERm6fEOU&H!R1|C#(}fI8OI^X*tDl53c-P>ep} za>d^Pl=ID20L&4Pvz%;EN)`-3z}SkR$OQs;2J<`b6u}$oahJsG%!y*&&qxZ&kq!$A z5@F-Iy^c4?2G>1+_bM;yHD2#0NQxvAO2-0e2;_iNxs}HRVux^`?tat+WNHy{*BKr6 z;eD;hNZ1V7Jqrj#*ocYfs7+V~p?7yF`+#5#EIN2JtN>s^#)b4b9j@<{E>+Q5puo~R z_9LG(`MkDocpNEycn30W&?9@cZl{dB*>-OJ3 zOu3DuyOiu)=JoI2{w0sU=J&qr@t@eU%YW7c3ISh`?|KthW8Sr89NC{TCy{J~mcWr}pHdo8IVEJstS zGUC1xT(InW79q(a_znn_yZjD_Sq;Wm)nE4IvNR!S4I1xyx$1i#97rDW1q(%GA<3ZM z${64l$QGZnkFHtvX{kw!T3|*U={hK^PV(HIKo?@!GqU%a>kDZtcRgtq6(tzw3{)gu~kx z=OpVDQ@Q@l7}8lHcEkFwDYuv&%U8dZOY6`0#QX34j_-Z;V{wOwe@zL<-QAP_$>lZA z|Gp+naT-@WPa8azp~@vg1Tn6=L^8U^xFmimC|VIg>CGK$Rt;)Hiy)SXnZEzfLN9d;xObI zprita9B0zoN!P>9PUKr%*_wee==_DtQy()X4Us%u0eNejI!Rv@F4M-X|E!oh!)D4`8q5y9{mt+Ovv8i&o{*HHa3G1b(ha zXO_dqIL_(GeD3`n35C0t`Iq+O~I@4hYkp%5d)pcG$C<0+4@@8s1 z)e9sI+p2#5@RLt`!t zm>_gXL|WfFVd#H%;uAN_4j?-rv3z@kq$U(4Q5c*3-131j463XI77ZNEPI`q)i6%4f zZIoo~pupHNP}srMj5th#!H&B z@6;F6qZ}*gc5~hCRT&U8H z{ysy5K%TLd6_Kmb-THi$?}qmX@`v?laa&zUDmL^+-=Kz-;TD2|x@UO+v$BBPNIGVO z1NAi$5NkW{9zmDF%QG%lv>D4+H$zGaxdGK#cq*FUTFrGJxCr z!A}dFaNq`vC*cFMg?8>(KHS%Sl)YgAkpw~n%sL=$f*tt)_}Vi~7TQ=;0o@4Ra_ofz z#I^er*Rj6V7Ue#`et+P<`AT00o~=)8Y}^XseUO9EYjS{=7>}n|l8L_VqGiN@x~&KM z+lkkXwV@hIi}i?o=kvnyMG_O+r!6xD84%xJ(esT+o~=Is&c4>r3KLz2lKfhJ6T03ZNKL_t)S4gx~pevk*&hp?cqOBcGjMIGcM$n_Ph^@(-n zn##xq5)egD_?c}R{QS@TrN_VhGe7IG|D3lF`+H76-uk7lxjgx@kBsEQHw4@?LYlDI z@g|S?6{%qh2BfbDh;oOrO$`4HKvBuDdm3wb1p$&W3ZNt1ys$jTqsp9GGDtpUDVe(V zRQYcOy=U@0Oj^$SOqTUb)`k6lvJHytB_cX0v&xUpZ~Z;MHxXDS^b+LH$igO(NQB!r zc6Vc{%3A3QA`a4$A@m)Slga`TEYKU)kVJY4mCuBuvY6lwlJfY=smoPQhMUx|P=KE1 z4+lCK0n%ZhB;@lp8UWq3fQ*3Y-u?*a3vhrRCzK?i%^3+~7AKutKbN87F94WI3rMyW zXaESVR4Z!r!27B|VKL=w+_b!$LK<*;=yCy#nuR+$c=+FutwYk9(Z>$cvQ=i}12DU?jOU>YvF) z(3=hhstx7l?|>Y;S^ZJMW5erxiv%TZvf16Ly@#?zOh_tYSVsD$nl@WSNTLf@h~wCF ztH3-4!t+M2ttg7H%!0_H6(R$$8E~wuAb~*i0rOL6xb`@GFwenD4Y1c>-1>_9F2+W5 z5(X#Q=*AWUsnPwUu!0Z)TN4E9Yh7L#GXQ{@l=Tl2+WZD0z*Y(SdrAgUU3yM5IpCyU z${4LADj0rtl`@Xw?(ZB!5=qjv949XM3gJN*7o;V+L~3^^1L@x1nKaA~C9K@aJ#!Xg z5(&uYKl$O*xjR=lrdYuKIv!Qf6w3f$Ip7a+Am51a(DO6kG=fpbN*$^ zSP+eHDhFxOi9G>*|09T#ee4 zm;|98^NDqWIwl1ut6N3Dl0u*u+dn4=D{=sRHR1+1fZV=V?zc4=I1a!RWJJQyfUpD4 z>%bsz9z;X{|MTtiYk*r`i1iRIN44ca#o3%sjG2m&il7Gbes^b zb2TsVhAOrgwY)gSJ~vccQd?v#jk0dEe$a#i$r0a9mGwgJ_vLqmP+lM+sQU!jh@`{! zE)@W8{rj4yp8au8JaO+;dAG>ERU^&adtdoGF0Xs>SKV|2mTi!`ZU_n3cM#SUxGD1X zCvW;~;MxGM$V>G#@?HiKjuPlYeU(c`0A!Y)WK(eqslAX##YeD(1N$B2udE=+4Xf9u zEDt7|w1i+A3xcHxRU(2=evvb*MSI zYU3);>b+X4Ra+-(4#EDlt)*pRw`{JfaIJcOSU^x845C^P3VaWnT_Pv8sjLV`_1<;} zK}^a3^pWQf65WgA-v%I{-Nz&K95+WK5xp+k&}|bO#Vjl!!4)gTlFVX1@YE7M;z#mG zBGH9YUkpd^fgnYdV{MJ6t4^$r=gDO%p0>_T;Jq*LgnJI|^2vSc5Dq}zJDsmdN(IcV zt_C3E#}%=^kQ`V)wY=``<$tfOF=yJ-WH<5?Po*U=Mj#6T)T2*(<=21s)Sufq0A)yP zaWGjH@3Y(ou|NA-S1xBjZmiw$!+mf7PzK4*WNUMbNi4QitrZTo#{406W2~Xr#-M8o z5**i%%Q@s(xN|82;#c50>8oTxRh)H8lm`#4qE4Z7;lKtDZ`$vF_{wMh&KJM<-XF8N z@n1ZC3-9lqdd0U~-t=j|sy(DrIyfEjOoA8;vVdhwVmuTP2|!vAkOk>rQj!SF1PD#@ z&PWfGDXleUz?VonbHN!vWCglyOlBl!6a1=^aU*ldx+AW_wK+C(1!Gc#e{Z`n@y808 za4p_r-wrE9@5h;S0EsGEH^$mpja6ZFVHs3CJRd?EY&{9G5%R%Ysq(Am{0s>K%396m zWQE{=+(8oze*4IFwj$Mhj0V<1M zbNUG}ajS%9TE~QV@GrYy*>?)u>Vag$09ykAwoe5M2v{51h71H~MMO-0v2~#LVQb;a zMFMV-f=$|q#2$bN0qtmcNWtUt@>T@Kz$pfh9{>?uZWb;o*tRpEx{Xf;;z$~ltJE+F8t2RN%0auka8Ur(Q@!y%~S4goDZoUT5tH?EfIyq0p<#}U;Vac_HPxt z;kTy|aY}k&=3ceZIW++>jU4(x5(l)t`F1hLn~)d#fPY{6<1fA9S%39YKkfcYd210n zl_$A-`&Yj5^42fu zXP~27ul0rvn==EP-d7yQVf&}r_y>44*Rc)&+4nl`yFJk0{`kF`;wo{Q8BbWoo527Hf853FAidOe8Ti4oZ(8R5dE3rHd?rHuX1bIyk zE7zzbPbjMs@Pd?#c^&jYUY}}BS7gARpSi-<)8UnX>jK&fV^2kDmOi8fq^*}zujcTVBJhf#m>P*r5_1mDYH|21E%)jI0v~J1baWk_c%`ai|Q-#RKNF_k=FiJ7oYA2P^sLS5@BfT*4n{e zJztZC=!P}OGP#O{FKv&t5Zl0nXUH@m4Ng?OPimQsn8i7!0K6)rA~r*9^&dR{y??#0 zch+8&M!A4tTJ3&?ZT5Z$`TD%VXDVjH+dDQIdDB(S8{5xy|H_x%f9Ie7D~~_dOZ8uJ zce%T}d)DRkANH=x`+i&ppa%d^Y`g=62>>7o!VXZ_NmGD@Dh>iRyKp)>WTf(D77YV> z+&*cwnUIkkE6CE4(EBP`Dy$E8Po-DsPLQ9`*Q!h|=RdT+XXCQ!i`_Aujn!@$nC?;h zUX`KVPo5#cex#&A=oM9drB8;=CGs%HA6P90xM%fjB#;P7sFSQ8$8OLoPp({xcbJ!V zk23@$MjNsMk$>7aMM(gC2CB;Cj2adNk;|B$AKV9zx*1$RR z{SMi1`Gr-dC<{r@HGd{W;LbEGHa^Zy4y^ww>j1yU@$o?DnakK9tPnHOhz^i+>N^g8 zkEGxnp>$G-@>XSZYZ~-B6RnaU-~1XJkXkz-wLq zZF2g)am+C~T!^|dyL`39+~%Aj8$l1lK2SY>;fGu<|MHE`diK40_ukFhh$bLUzwXm6 zZ+y|;Y>A80HuW5V_l$sqa^YlkNVhm~r3A((|1q0kZ)m|p0xBh*| zy^z=9A3D%j-x$^V%F1TTNpLX|eLleP#@cgd9)w*-|rrHOJMcGHGt6 zSP}7lx&~2i!MNxD~z^?D4>{uxr5{i zWLrC!Y{Ve!9z)S}XL}ck3lpFfA;NxF)|%9x6Jivvk~K?GJ^Dl%d193Zd=DsSz9 zvW7ffUj@upZQ(J%coKgXZ;lG{wjdm7jsQ5G&7VBCYhs;1I*k*SRa-*hTEGEsc|KfGe`sFWr(Y;sTe$ll#Ke}A* zp8ls_aryC|^~J3NPY@7HI{*`wp~|YrhHW+?KU);40MZrUSXw5O>)%x%s1y&IiIRJSI=*GFY++ZM`9Gfe5H3D^0_(;38VoCL()H+u^?mqk+ma`1<h(Z^?8FPcw#*MKkf)egaE zmIEKN_ID!&Xf5Hk)_*I2y*{z80XFx8$DSZTv;4|E3}bV~jZY;R@c0%SPbFV`X7dNh zMD4;4%w)*w7yc z)+_RIizS4K(E!szzhavLX(EDBSwoK9!qhpb_|QH~H%ZUCMqm)}<&toWZ*_QmUR;dX z7|j?Y#oIDAz+uHxH@1)~mH~iXa7|)zJ|`<}4$e0E@Dak&1)?S!w%L0fo;Cp91VFTV zNCnnf`L~e_cO)l24$uc!EU(|?zI4FLq-Q;TnJ61c%X7V_6;_(ojwpwL z_v*$qb|s2^AJ;LKt>lujs_&7QegVQU^0MVYq_K5kdGx<~1cZs!Om|^DcuKTOHf99m zfBUA#|L%YB+4nz%w-QZ2-u{PQeRApv0vg=_-{hhzIz*X?#W zRh_ASMOjt*rE8h8YKUh8oH5z#f1iE7NcAL^k%%qDshKy+|@QkIi3&b>S)DEz)}hP6wTASk#?Fk!LscqbX+ z~kr0gEJuRQeYjAI1 z`nFrMGTrCqfv|jjlW_f&UgYE(% zc72{LI`M!b=GA4YG^=N`_jnlfC4cb2zxm=Xd+^b`ZD<1Wmd||Wk z^*74DO8ZQ_emu{`)~h<;@O8DoiRe?~aOb`aS^-??}j@xRv=5WGUSwaKe+pg7#F zOkde;P`#?LsS688AP&b4X<}n6f%m7M+#y-$AW~Wx+B@ESomBK&mwMd{_?H$Gc`7Qv zp(GM}E>I@>>{}h4ruSd4DtPLg#8-ZX=1lWob-J}vhgZXfdT!1UuF;^NYW^Z!1q#ftD0qcz)@~+GK-dx9jpru2(XdwYfn|xRN zi5Qq@yC;#8&0YcvIvuq%lFSGhhP*QZLm;gpKT~Uj0ADJ-5eJqFEeeSgb@@gb140B? z69}btu{=QrsAE+>yPYLsCgiocWIGE&VQG`q1g;Lg_9vG)^7S!!nD^M{1B@!70Aqsn zZO6>u{5eAwck_w)8P?m3{OsgaX-+=F{tX~s>6Tr6vq(21Dh8tEzo^GhH{KWzauiVn zs`pKDYyzB)$wn%t=TxL*yviiTEfXEAgk30J!|NhOfZv{5yoL8!AP)uttbB0Y;_rgQ z@-msg&2~x{c0NW3C*oGFla+p2I{e)0I1+u5I(NIWdJrTAz-^#G29tZgs8jvX76Qoe zxw#}^St1_8#;$OkYQWoW%xVXl2vFq-JD);_zY$WxI? zHsd$e))OCtq4o+Al-;rF7?L)yv1}$~Twm0gFy{Sk)WG;ZX zw02Zwi82EC$9$XhRc>6z%q0S_4Y*fztM|9$In&+`bonz`Z+JJg*sbP16OyxYmvz9Z zzMb?pq#2~9=MBVWrqh((G?J;@#5VM<5db6zicFlbfXK8eMx=Pw)xEk2D?XcF!`n8o zqjO;o^i%z@>5==CxjfjuRekl`zUqyeWw55ecQ=kSMVy7&Y{S*S81Ox@qA+-qaxt*% zf(_ZG0p+bnR#pX1lgZdDFP3d5$15vH1wcJMWD`t7yXHU|Enh1)qn&t#Xh~~V*^UL! zzvI#8uy8*bC;B)pf*7S7B+I_>3n7ZuAg0Zqw;r64=WDq(Ui(jOc3Bu({hNmeRSMu1bc zZvoINOGrgZDvQmid#64~!9Wj?em@{VOVHvm$_`b5N3{VSwXl@ZHk%i;w$xhUc^AqSvasa=i&S_bMW($$=OTGI6h3YT@OMQ>RGv`;$9FXOMipiW2vshw;RX3*(0C^zqn=^) zz!SJgU@F2fFeCsyR4wZGiV)x-(!5ty3*#^a0SDUH!eQvXMJ!j!L1H$PPS`xZ64Kf-vazw z|6-XAGIuN))<0tm13Ae-^e7_|CePmr@HiBovxXXQ>V-DbIYainZ0zl8Q)Zm8*iM44- z9u~wW5G^MhE=LU(=O@oG_5cINja0Dvluerm__b?PPOD_sRv&CztINRMdCN!!y9gRv zdG@7nJNehvk~R~WOoX8HKIYl_V7GQ5f${R1j5VR%As0N>JFyu^=5W05cj=ZiAyd`7 zYinGOVXnXa7-CEt=dr3gyIpC^M$0?V9prl0CWMXSRiErzK%^dlx=}^%5RlO)q}ml3 zQO~U1fAOzB_-nuX)9-&~+%fR4YXxurnjg5l;|qU!dt4BZWM$}Sc_UpB5a|YG;Ct+N z{YODOlqF<T~pwrs30=}4TQP-F!J0SO& zEbEr~SN)*g-;!t2pEGOEj`axhV|w))Pv+6mU?eQe8)_%dsax_e3B)pO%_bR9w{*)B z=L>z<)3X&~du>;1{^au^qirM`gamc2BP6gf($*oq`O!B} z+(!c8=$ogAyg3UH-vu);t$d>u2&e!^DhE&S z33$xPEx}o7necc8b+T)qC)AnZD4dkdNl8r-TA%O5iVQF$VnsZ#Sy?Xf%}FM&TTa?U z#J>md10rdlzPa;RyL9};Dt3nZ%z-L@%OeLe8+q_DZi{76L;wT7|E}SQp5(*Ne)1sL6(2zfLY}?!~&H&lf~wri-#} z%cMr7Sv~Xj;EHH-pzHQ)yT9^lAN;^?`GWf|!F>Z6#_{~_ZNK?Vm#6;p2j6@H7H&4d zj9(B4+;l5KVrdkyPy{5E+3Q}#ha}Jrn|;TzA zOeIp%E7%X4BD$5Oe7{d;Q( zSk9b%8`HfGSD*A_wWIpO?HxHkN~s{ z!0%{55nyy0fSv=8BLK$oZUgm-SjcCi{hbUB@a_x1EEs70hy(%135{(6##=$?Gj}ug zgP0Bg03ZNKL_t&s!+evKCR0qD;uqeJJS4LsBg$<|&ArO1qRQl0CAIce&(z05S0v;5 ze&s$D`y>;P{X>tYpJhAPSPkQVdE#$DtTrqo*D`*?Z@&Mgul`dHJ`{J4OhDfJv)^-h z&p&yvcE74NM<_Cp1F>Pt8?`F3g5s{yFfgBhh2V-cE0^A>t9MHh19_PUt*jM;cnOlj zfNciS86c)xp%ge%1V;eVRSeeS6N9oUr8c%bdAz&Xn|nalscHJ#^angtWMh|r^zsq`LAF5G@K)dcXl1lM%w*%}tO&$Iy6R*uZ>D*( z2BOgW)dByW8U5X=3T(LmcBz`vXP@&N%E9ElPX$n)5fw!? zRwM=EQf4|J>nmSl*I!GbgL*QwE9zQX@2mQfeg@_L37>R%?|1z_k3WW6P9Pw6cXvPG z^2P_Rzg*t8;eO>CLMxDiuQ@o|s;xG2EU)?~VUf48f~+har8R=vbAptdKEZw1Q)cV8 z-EwYCH_NvI%4gqWn}`5yS#zL1mA-m5<}uV6tSN{d|KL%p5goJZw^rZv9~?;A3g7R_g-r{Jra=jyyjP5-ttj@*%YX6 zE0|3EF5U;19IkSch#c7k8LFLxY)J9G}bLkSm{Fu2NpoV!P2#B)eq`oWa2yRj!v$R6( z5T~6qHa8Uj-^ss9^DyN@-e4u5I%n_3+JZdWWufe=-?zMHy-?|$YK@)HD@Y2g{rvAt zF9jV12RKMrLVlDDEG5TU>iU+6$sn)&J&^;~`Re`T*?7f-r3gZ|9Z_09Iw&z=fIu8g z1DQD(-2=`o9RMTglGQ5V4ced0Tn;pG$mK;#$?WvAk%iXaMtn?10TBwMNV~Xf-;714 zp6!IXmN$XKKG((xDZ7_ELaWFO^sd0Gkrf-8`QL6GiRpbVA^8cX_XUabplqLS*D|u@ zppPd8RF5*RUx)X3J!IIhHtqD!Uf=kf#QJygRs<6B+Hd7L7Sn;77`m+qi{a20%38Jg zb#t|5Z+TX_PW8fOy5ZXX+la>8Z3_D*=~uG$sP}$A6LqOd`^q1E?6W@dBkz5)srIm2 z+&%rhFT1?;lfIrbt(lg}zEM@1y0m13o*COT?m6=9vsq~sP0NXkPN5cR$T zPTN5E-||c7l5n*CXcmWl3O)*S5Nwae=B!+?1}WKd#R?=wfN+y50)pD*3OCyW!1sO{ zn={2~WS|kjZ7i?w;qLmnIuW)qG-+sUQ8xglKv};BVZN$tf1X{UcJt55&H?2a{D*q1 zzc<0Sm49^^JLKqn$wa~aMv$f~4E!t;9PB5EgBWvf?gsVf$p!#;NpQOLPqKjD)ee5vVlA|QX`|G2#MSM+PL3IdW`4`5SG zAe^gFWmcQED}`VIIf^XuNb3ccvjPbK(5<|g#bnDp1Oq=@|X_z-%j(vlx(Y?QO5CZK4ibN11^P(ED`aSGY&@!iL4-a6zuW zV(uVf-`y&FB#y4|T%W$;DgN!QQzNJz$j+2F^nQ`2-PUKr!V=wQgOW|k?Hz9Jg4b;adf%T4ZVf&ls2uj9E|8cm>L z{;aRi0-=eCCJ3B1TaV}YP%dtxsrzHSfDZoVzkWYl#TyC8Q-AWGUEcm%KcQv5fq;a3 zkUzL%RAo}31zF`Z>td5k{ z#)V`}R++^OSpzgwgaGU5bxlF}isXp*1_Tp1G?{KFvmzK%a&SvM+&@H!(wK_5Wmc51 z?%)brcB4~Plw=JehaGJtGY`dcg@Oh%4f#I_D`h40u^APxPz-2&1I^6H}nBodRj3CE4Fwtz@N z0{x9wrdpZy+VZM2dGjR~rrxjw6of0)%ynwWL?p>U@!T50`A7V~@xm=4v)h680A`N! zz`FO!&?nh3ug?Q>9h=poPR1KR!qfgX504XU3Yc#F<$dhLz<^_mF$ut~|E*lDT0M0; zQ$ImGPispAteJfEH3fAf;C&PMLSm&s^R*s~w^4m>bDc?)$*2f~jh8Mj_NB}}anYL1 z%Uzd7wMI*Vkk+yHC0lH6bG_08g3CgkUlEwB<6v&_ArI^!V=Q~W|M5S0|NH*i-+KQO zZQF z6_Gf4p8&eGNddnSNL&9+NQLqWHid5)zX&w0ATBKKKXELX1a~Zxng#P8cKd@D>o? z@QA?hW)Bt%wYkQPI1-)!TDL79=(``kNx}8YQ`n;(ix234+1w%+M3cKj1g5>uH&2#p zP=?^&!0_7AvL+vHxiQi=h?3100`=H0M-mZWj)2&}D-#9&YPR}F;Vl4O=izobc#hzD z<(lPIi?gz=2tu3Z*;NZ;UfSHn*c5TfFG$;Z9#pPW>*sSK5eZ`IvvFZV(_u_>X3rE! zr~tjq)3o*{Zc~*kN`GnliFb6*_40?!ouVt#fVfVg9!eLO}`{M6H>xfkd@_P34+c7u7^#(n}3!L z-YIa-ZJxPCUDNKkV>MLd|3jcZ%g=67v%q#`-QjxE-w#1{rq&W_?^2FOnSN3hT2a`d zf->4Wb~g*wNr*kcbyU@%o^w68rV~l*?ZP~kUOgM_!Tu<8NlLrWgVmu4l9iHJ2tA1; zAQ2vvgM~G#0CP`&3d6W zu>J_Lp~xBo;dr&~iZEpYP|g3^!V}A2B2~@nFuxXGO*b8>$jsJ!FAo8lf~!c9(oL1F zL2KKYd|X}=2yV**`LwPiD__^yRxak@-=FeJF7JBzw>|cRsrg7i-u$Aw%llrp;eJIM zTp|td{$UBo%-W#{1rvs;wS-PHRa#k|AS{w75peIDbnAQr*Zud3*eFX%IDLmQOUupX zM+8l_+39|01C=`i_BRKx-va!xpQ*n~tI{p??Btn{xD~0x_XA{;wFT#H)yD(0s=lDU z3Te3?#r%E7EFS7`pd!mkuGzDlceXzHT5*!AJlsHCSsk7f`m`b^&y)qEZ$!2^*v1t8 zt}G?C33ZEr=P7Q%8k-)LKC^)MRuwinBn)BWL^r5Ld~h=iw`UE4!5eFIr3(3xFpbUI zKNje>SheWZc`p3q==0!i^%H2GE(ap8auRPz-duM za#XpiXQMr~CqO+P`eB#Lzj?!BLz#~scXx07_{*DL@Xy&1+ufXx3+T0lJDucEWNQLW4 zw}#(JK$NQ&%B+6>*jpd`^cTF~-Vfpqe7SqizxkZYlRxXMcj6S3EI9@6Z zTY#|d1EAjl@jGd7Om+#^E#=-)59cZVX3Gip*^GQCi`$`1kU;Is+l@K>NZb~cEGM5y zs}JclWtG?>HchkEH~NWpB{|vE(JHnBbvwCZ9ph_q_J8s3p+_hU{OPw*S;lA50s@^z^DHQ7@k=QAdbj@ z^P}!(v;?fmo{d*~$0V>3!E){iFwcD=*G01a#Wh^HUG1$=O{7Xa0Wbg0tl9I{ ziA{O4jv4KG2Hdg!#j79ux}Wqh_YSTxcB8wezvqu$-uB5~)Wlg3ke&Bq|CycWRb&EX zpftM#W!H5ow6_CINwD}N++-{O)+j@~-?4^NE?LvOvm2^VUXm%u+TT^D^q4lu!sRZ? zvUxPMz`Vae{Z2iLG|J+_&m_?@pxEc%s$Uae-;sSX{$ma75Ut&Es`YV}kSx}jbg@)= zW%pU7dn#SE`Fu)TRGo`wXDlG7&nv&hBFn`;KHL+2kpDh$z){Jae+94lULB_ja8L^w0;0xac z;KKY`rZs7)PJ(C8{T*8pHe8Z6Eg9Ku$}dnbz}f&~dmen{CvH^7239eyQg3A zEtj`_+OM)r!M7DfMotivL7Iu{#$aD}lZ?tp|@nqBa+N>_m|CFcyNodt0U zSYn-L>RN$aE_apw#`oiNU$kw<^=cI}QCe8o3ee?$jkP#_VQ?>{UH$T%%FpnGh5*`-U9hU{`R1Nlf|g0*2Q0Cn!SKC3qpfJWdl@alX1 z$(yi-3zfy)*!NkEubul`@^rn=Ca3P|%3lqvtsNd`^Drm)j~2X}b%ehMvLYM%F&;be z;z_^0!nUn_?P`_3WfH-3oJZ9axvG2~C+%)k&&h`)!h04IwWi8?CoWS`cl3w+ZkJ@t z_0gPw7$LKrX6Qg5vnyi3dehSbf$J485yP_W_sd^#@2~!nPrLt8+$}G6@A|rbe0k^R z{p>(M20$q`%CKRp%~!c#ZIX+zY3^?1A{~>TsrBR}0Z|r~GLU>iFr<6Z2||*<_6D)2 zPT@=NYU3zA2FR!JyJfS5h25^gdjR<(hN5Wac07wBWeT+K5P?UP<^*}O{t2MH%Mr*K zSXWlovqMAdxLBPbtS9Dj>58>OxK%x8pUu)M{kEZ-&{AP>K$1wz^kPueZlMmus7Pa~ zo2(E`b&IQagS^5e>zE^>(DY;ZA;Mq*=^Gf7X;zB1Sxqb;{iAe&VAxeN!`*RP`={~2)_1WLzIpsN*^8&2ej@WmL3Sl_jr22dk0*tyl}5Wiy)<*ua& z!T2Kl=1o}p#BrZw#kshb&+|AKUabQ~p1AHbHVaFml704U=N;-cK13M#h5J;cdxEYk z2uQ3`6O5A7OkBBaqqxfUr@rpqKlyc^cmL-!Ez|$Id+N(yeR=8+eDvD=3bF-)A~sMo z<)@QFtbSu7H$l;D=Xj>_0uU?HSYF7V+B1=>1aqQX3_u?8po|*;YuhDDl*O?s>hw9t zb>dblBP|Goxvcc}4q(TAyp28%a!nl#<6TJ@f>}22eM7c@t#e-anh@gQ! zkcdQP66CIlK@+e9B_Q|w^my%th4swKQi0t@%R+ET>?gvY%7P2hVHXwKwg_V=od)!eX;IL_uy zD!XvM%faDD6!kh-&C@s!GO;$f)f!`PuSg{4pRLu^J7qns2nIi|yH?FA|i*Qv@` zJ;V3>`wx8iy?_0Ce*gWC3A@qVJ3sHumv?>L3r`Ucx$$DLvs1mDce}(yq~nuEDQgFZ zJMR#H9!;!BgSCHyRE&Ce($3QC=08)$!=&8-`q)n!1fv4|2;OID&RSf?{NXubfA6$$ zCk^+*EqNAw8Nf4@&%hqZ^01^JxuUwTpF*F_WID4(ln&UL@2Za3vz>RW+fL}GL>xHp zrrw+pjAYSJI+jQWlZl`=AB6>kZpJ!g0XY<8+b{i4y8HIu9Un>48=WQ`ZprAe6qG-2 z#+q!PMI_`gcdl-onE{3TE`mtj;8j^Gpk?nHAdFx9zLt-!QhcIqz|Yd4@4v-YI5RD)0P(pTT<=aSMMXApf8=jrwEi7qcjK*A6}iyv zS=#!gK2kXPy;p$az-3os5Znf*7CS|HYeKQRUU=@D4M1lL3(g;2*EW{Bq+&l^p#!%p zA5rHjnOD!WUT)=n?r*rfN7&IaK+jU zESJ^}wQtyx*3`u#&wLa$PhThrLS1Zd0x=*csGeHURwhbU0G8q9GdWQl{=Cb3{@!;#cs%SxcW-&Y z-R1JujT^8aTOcX75|CLw02Z+Hs>4Uo9y zmL1w26olX=N)S#`DOa zf0Uv7HKV&!AYPPqkhx-QuXF;F0<23BhSM%uLQhF@(fhEne4Md*Fo8&UH(as?GiaMN z|2K^RId(g|mNya&FFFzi-oVE-aIjjma|c{WVq7Lc5`+KA__SJ^6JE%0*6Ke%z^D`&F znV{4bixo&#V0}-Xwz5!`M^#r{?!IN_S_WESxXkuRRcio2H30WjG!b?U&%46hu%#Ala*f)0eZg!z7n8X zf$Bl=*w=Db{l1%q+w@G83-vIml2#=E z`iF9Wz8D}_wegnuwpu3(vOXgjLzkUc(`9+L=!*?qca!B~p>zL#3rKV~>hl1D%55Vo zPaB0L#9Wwko($Y7V4=YZ1{)V{U&U#zD(?VGc1mi&`UK+8#cBWz0rar^Il=KZ41y@) zJa$0ztj_)XEDwTt2X~ol><7Q^$nr2`W02b7tLoW3%fVhneA?WA`AYLj$~&=^aEyk} zJq_BcKHCXuFXuX0rK)sio_pHs0fLUVngz4#b&iJ&d7VE@yho|adf!wQkRhiaH8UNC z?^L?#y*>Z&cijI;&wcK_AL#_-wZHW8ewMCGM{yd#`x13wjJ>bkpA4nWD7>v;JWo< zlmjs(eqt9b2PR?Kq(usFIRTjW#xl4;qEnZFfT$)vbHXq`)pY=y$x*l= z?4%pkOr{+`KLArAH|q3WU)eiOayJ6utshi?yUDVOn^?J7MbJ*bw2;yJ3f!ECOeohW z?!Rayn7gu7q$ZWQ>E5*(Z&fZ|U5n)TOnIT~iHlVAHTFZNlyg54+)>vFS1gq8te!cO zewJ3fyX9Hb-))Y)=C${K*@u0^y>Dv-^NI|QzA~^3AMLcZqV*(LQYLeMY4uy> zRqxL}V|}x6kbz)dxo(-B9mu>YbEO~QJz7(a$JIg7gpABwvaHO$@wUAp|F<0jBFG3{ zyF02G1VaaoAL*bU2MFl}j8o*^=M}-ga-1l1!i2z1l$*<(yK7lpD}v!y)jFV2c^{T& zv@(sf+3y&%?x*qI-}2U~-dFf;xKY8oL+0^!uN(Tg<%vMfz@Wt?g#O!bwC0EY001BW zNkliXIM#rL+4(^|OE?W)pAl}w}mH(aq+mXECWP@n2J50EX@mIP!*U^X`YqZb%BULPVLhrgF@ z7otuXG=GwS^bIk)^mN%0fHj#JVB+)l$GejNcWJ?a^7v%Ga{XGlU0w4raVuk9m>BXG z?-gOIp7B`h^wmZh?!z;Es>m$Pt*w}p*&Mrd&h5X zw1<|7lDG^d+jj$D^++TG_3Z~J2Bedbjw9TKs_X1>Q&X-|iI7ARk-$W+^dL^++ahyt zPzPvN8@nVO)(%B<2+$*;G7!&Jl>FSlal8qtvbLNBe+JSuz(fm*SzQ!h_Hn8}{{UV$ zUNgG_z`OOTYj2}$w||iERv9@T-deUpqL?t)9Gdm{DlQ|;br>^c#duV64&{B+zgOj{ z_p@iy^aZ)tAuFhRn1EDzNj<+ln-L3J2cf=&E0?AH2j6q=D}UxE-}_ySfV}5#|Aost zKJ~wByOtsVYQtP@s3Ok*j*|^|YE{`GAUkQS{#n}HcPd>4%2d5G04LHX7q8v?4D^wx ztw3;>qjIx4CXs=1Dk~69kw(V9D0vK+y+7hJCiPdONS@YrS%Z~|#$k3DfW2GwVO957 z&%1;P=i9Bs;?{gOt_^mR8YC9K!NP7#@I`fHjX`SymanWCD(#j_=t`%uURmhdsRe}c zqJ?IV8Md0V-N5~)`rpb*(qFaY4aoa{=yKKMXdt=+&XKSVJa46~Eg-F01KS`z1%Nl; zP3hA?U{i&%eR|m4Gb}ey&@RTJh{Mj z&4|Rfk~s8dBMcg}xAw6W2T9lQ8&AK5Rm1u*xNA+UAL`0lb;_@ZLj?ZrnuaoN#g9OPOPC4MYh!vR- zgj`pQsj)gLu&u!S4#2O|0MXczyXv$3;BgCPU)^A}LpUNiYDxw34MJZK@frDGOU-)C z>AF|>tPQJltPf`CtF*g$V*b5Dmsy?a-Sye(`dueCt#AMLZ@PTPulelzzo-$AcYp2o zU*7cvKVxnEC^kAf84MetAR-CyV|kBgL+1^9=`K~ta00B1lQ)s4A|N}!Daei_Zi75* z5d&-cgsg0pvjdhX&C-$s=?CdTQYd6rOeY~H)UX#ZGLOjJ5r>2`9Xp?nyozdhoAbRe^8q1x5za3ERWnml&17S@jcFO-ir+IYs z`}|m6fg1^#0{HgLl1e^|$C$NYhk(pTz|Q=s>cDo@b6u0F-SkXYSNXKQ$TG05sPfG% z7QSw)c#rDPg`X$gRm5~KnP9!I-gBBi{xz2$_^n@X|0RupyzBS<$mQLCaxMc{5fZEOU}EEDBKX(bUp%vT)%lPIu1(o;jJQ%9{bf-8>qosyGl8WZpo85w{)S z&gp9~-N!{(2bAlTDrby$alP;%_pr>=f#?a0Cz*Ww)D2pL*iycgI~MorwWD|9F;?Ti zu|!O~SNZ+D4yJEooImh*%Y0p}rJXWW8LM)GZeuGU#Z5FB)(0brK=5IU_}dR&_5#dz z$;J-pz%;+-_g-G}hyKX@pV$bC~`3*K)8$s$lvRu5@~m;qCGH!Tn3mEacJPi>R#N0anRuzD?j1x_C(%|_WPs|?SN zsf!x82}-xQhiS{IpEueX=H4VdyIQ4j2Qq*$6013@=KjPSK)$P~^YMFegw zhs(X~@7P|vDXk)%UQZ?wZX8EdpL8oybt#aG>AGAaR$&I>9tEhqrHn`_@j@QU4sa=U8n8A0B?9m+yck%S}5sf~Q! znqg(*3A%a~<4^hr@p@a78^$iN7q_vfb;Eu`4u5y!c@gw)NRiMV+Pud(Cy8sNI-6N=~8O}U6*F0BlXXi zOL1MWE}7|->RnY=o4`#UpVL=$`kk_58X*IwoBjSpzxeX*Z~ON9&u#?d9UuSR%lm%t z{v)%13@d?cTnd2GCb;bzeapsPd?Nc@)pR#j$_`*107;9~jC zoVuP*%dSuc7!8;|x;T&-Ia-7FJ|8BoPS{^Q1`dGhI@~oXrg=2hh}CUbD7UcXzqGZQ}~wVv`%de74Docj$`sjJR4^ojasu zMv_*yZvB7ky?g9-%T*q>f9E^CVQON5xkIFa+gyqXv57hHxu1e}oojD=;OM zASM;GGGJA%1cs_5!K6{01|(D<0aBoV6-XP}I0%fus6cRCfw{zBg74=XpYJ>0TfKW` z&8)TNS(ll;f1gjyIRbz0Z_mt{HM3{dJkP8(vyuD^7-D&b9eSlZBmg`Qs4ug--N>Rt zFq)hIw5GfcTIX3HZ0UKBI0$cnp%d>1*j7+(@H8CM(>pU$L0uurEB)$?rz%f-RfsSQ zM2dZsa2HEDP0ouH>CedYY(X@Cwe8B-6VDcA%R4f(*Mht?BCJZ03uvbq@<$E_xK(+BS2_C31Uy4QeGNjoxGo%o7rN(AK;72;2(L z?f`TS$i1@}yFPW^Sm9vk9a_)$`h0q|7}+Ch0T zVPIOG_qR+d1JyoPGkPnm(5i@l%#sR3BC^lW9Mg7WCXZFtdp?_n@<-2*{eJv%^SqnO z+%J>JfmaXdriPkN&L|cj#rg1p+d(BOo9!gofJgl}!*E zi?|?=I=geON!o0f7TOh$WVqg#2+$%BJ@bselZA3#pAQ}c))w7nab`v7)BqK6Mr&T~ytM24N9v&A9+k_{i$m^g>$T4>GAZV!l({49vf8&^HZ%5Mx zCDLmXeXuYBP`5)&JVIfIK9zp2=UEilIU4|@c3aPAJa}L{qaVt%f9$YUFryQZ(pDxs z#7-nll8bC;SEdgrPkf-BZ4gX^&Ux~+e*ACix0qvWyk!ofXXaI;14@Tw0xt>ja(K37 z#lB_Apgfspv_y2fK5ihr^=&tQ{^oLd%ja#6eE5%)850nYaKUp32qG`HMnDWwv2?zJ z_lvg+O!;PZT@ye|?@GJ3T5%m5*{-(*fcW zaQfKlkI*BvKxW?8p;#VSrM?=*F7q@EL@Am-iMbNa?<~p4=JRZWPMi5Vlb7Y;#De-j z6O~5dilvtyoTc{y2*+6-kV-nZI8HjmqDCqjXF>Er+{?yI9^q*S2#805 zIPo&c)=2~>?R}c;7mqk;j|}e%YI`{TB7Ll}K1(Rh%J0o_FzNauM`hlDbkxPRS0gs(id*ULg!IxM~GXm_;*FX?*{m)he+=B5-BSM3s@@e+yYLm&((Fg8IM5g zD{(QukD9NAo$#i>`s=52wP&$8g#=zG-{u&E<(V ze9QLO3tnFILS%tIUrA3aqNjO6SY62DVjgJKZ8U(0=p(&rO)?gM(x5Ao9RfgJZ$LQXwwP;SF^x0<#+cDS;WK$D%5_vZSf$(H#`_BF*^bg4hCV zQRK9u?3@O_8n>>G{p>~&TFZ?f-(L)K`2{$s^^x2XdR4SWUn=K7Uh9Gu^_6F`3=f6! zZ|TW`t~2swKyT~QWN6WtpL+u6oy>Uxq@Krsf86HrB7pOWQk{2>S1H!B6Lft6!3^2c z?~Cf43E#5%ry3V=rVHieI?!*A?4tbH`EcfZ*LuJZtck$zr zIz~DykdgKtR?0@if%+x@oS}zAdsiHJ=`byWBnVJ_5ZDVMlapNBtoglkML`UuE8z4$EqNmHD!}GhWRzE4q&|GG_8b zc~Sc8Gs|`0){~BJpt!fttydjd5 z>{YS4B#>XZ`HJM_7ve0*;JRwSR?+}TQUH}?M0KKcbVh>Y4cFvSzk(}rd70MtO3y)F z3mdEbS_@J?4B=#q=tT#nz1{Qjwej3pl^&)x55%b-rq4?#GGMi3Bw%GyA!4Bk2oIw} zL;=a3sm~^WqmEkVnZH-_dgY?|bcn38_k-%Oo>{lz#rC7DG13N(wnea3?`Aon(LnJc&c2EaI7!bjt z_6UzdM!(hZ6pZ&2AyH!*qM(B+}I%vBwlgBEXcrJ*5vO$BFL)%Ji zvn?CW2!<7sWfBlZD(Xtp2+6*3@^r_;v9D&`6GGnrq1&ON#jcYU4Ei$*^1gsqJqB>V z0X)-n<->v`dxdl$z!}N2K^HoRZXFiyMA6oP&Oi8hZwm~s%008(ZOdAf&&SA_q~$6X zk+h6QMeAgZV~;e<5{lb8>tWC3e%=mmQgop15e?HGB|@vRa*>Vn?51UtJvsmAN4D4A zT<(4E>$bfLA&GHu8dtnd4gvwY^f}F+OC7YIpHwRiPXh&_XJY`O-MS( zgta;kCvWU`COLeHCmD7_1}!gN4HgsVGtJP<)0-PnKLFcbIRWg7|#un zY*dGS#?N-_eQ(&KEKxW+pKc5P8>L0htn%0A|KNMJe{plU`*(kNyZ4nZIE8==XD7Tx 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 v~n))^R?+{fXan`lvVj?CIY> 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 ~@-VFygLE1G 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 M@9L^nDZ|762aBoejsO4v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/bg_pay_amount.png b/app/src/main/res/drawable-xxxhdpi/bg_pay_amount.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b4f9c78aadb2ec13a65bd5f2788f338eb4a365 GIT binary patch literal 9101 zcmeHtS6Gv4(=`bMq(~JhQrw#=NEM_CC|wW&DfFU9(11vh-V#9BB29`&4=OEmklq3) zND0WMOAFGJ8i+Kdd_mOrKmE`52?t!ylY3^(S~F|zZuD$Is??eS8T*LbDf+C{~jOwy3>ghHd*VezS_GQ$~+s-bKA!*Pc|E%z?drkYlD952kXW-B-=CVi(B=gEwa5;Cr z-V2~6ttP-g?*$vx_`z|v2->&_K2ldPTB6(yC_o?LB;&gf4|FBFN*1fOTI`M6j!^pD z0%N0ra^sAN+pAG;tTNMP#Jz{*rx;gD5)QrGFjux4ALcI-vW0l8X@4lJeU_dx8TtAO z1*B8ezxWNTfd&bFq}L7zeXbp05t!feFBWm1{jxLAg!XFJ)<27NRB7y9Wfh?V;X+Lm za$3@cS8wMh$lZ1_5q=gbtd)d=+!*@XzLqL)>&M)Kyy-OC?g0FcChvt7C1b`LU|SW- zf0RG9UdsORbp&E7zL8WW$DW&M-W{;8Td;c*Lnq8uzxi&7X&Y!x3dYTbYYIkOQM3+b z8nbKHf&qC}g~yV*GKJrP0+elbhP$Tg@65PG1VwPT+xvOA4O%j8?ugE;k@KJj<20%$ zn6M3RQBB8U7`nXheH z!hoiJO=kL7|11e~E}iH`^08#%ZeCd5H&0T^^onuN1GQJlDEY&ejQ50yh7lD4?H0V? zC8&9tzagk%aY^9D__vi?dg7%D0N3Tpg{3B3b$Bt0OLQt;eifq{%A2yvS1^8|eRVvL zkA}gXRBly=4->P;a1RM=1oszfAc_vXe?{lPQt1{>R<|9;Pyit8dc1tIzm+% zS!`lt;XRhr+9$bc11t9#3{cc~2PyOtsgMYU13-xDI1PFFe@bqkvsm{GV~P~tMPd=d z9|iMHsCZos`tI`G z;$UA&I>>)(b1>0y)lAL3y8>F@UC_}vBekI|mnXrLZ2zL{DM18=*BqZ6K*mcXXu1@O zd$02$6gFbQNLgLiz?c>g1N1N`aI!v_y;erWLH#b5fq4qM!?s`^tkptri8-AKC)f6hZM_Xi7ZYB5Z7>!!m2zv_S%E!3pHILqj*zYF_m&%Jq~PkL z-ca3wYRa@sSEuc;&rtwZuPA>mx+cDCwTZna!@)nVIWVZ@%Ln`8A% zV{xsy+4BQoywz*d?crwfnXBy!-#H>tXk<2z{;op@(7CiSuU*bUqoZjRVd-ynZ(xZhJZo6RlyWdGpU_SegO?Ub#yAZ}GfoC{ulb=n+&i?gVsVmTM9BJ#^^mnZN7T1m3Qk(izPq(4 z%JxW0lmPz`oR!1O|^cG z(os#Cri;mghI=Szmp|hAwJmzz7K8U+akt^dBkB6@{a|>{Wx_td>09o3QCP0*wnl++ zQsIL2Ij}tf=-4(StAwOAV{`mGbf!9P5@vSrGBsM0J&i-^P6T^#3Sa_xbcQp3vA^8I zAWO{6!TZHb|JX<7rH_s_P-{aEE;sl?ZnUYF7=(^z-#S<_R<@)|o6J~UOjNrVtoW;L z3hS$bz@lf790=!mVsXBV5_TP99|f1d z<&yEw&`T`oCPw3+D50orF=G+sm7Pr&be4$*+8gMYJ`#gkqn${DJXu)QtW^jL$hS~e zdZ!t%Q!#}mu3;WrQvgz9>)dy(vh)d0tmUo_^il)|(;Cqx>ky9zKc4^LWyewbw3-HYQkmNxE;vC^YsV6CUMa zj)*$qE5wGSLz1t5Zgm7C$KieRJXDef17LX`seR<+sWl1qZCW3pW!0>zFWfkYVPg9x z*V;7MTDpvAT9|a4UP=Yr$D~T>BGE2ODOtUa3G)5xF9yB39G^FaN6O>Zpt-Jv6>_iZ zhHvgSK{IY{p8!e?!4%vPT8+J2GnUN|Ix{nwn}@KXJ~r=g^dd}WM`pPk6^kaM)Qd`s zkW*K>%^xSVb_@1#65+T!G-V(t+j6m6+=k$XKCNY~qpE6ELoiCIAA%Gc>q z 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 A(f|Me literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/gray_ico_switch_on.png b/app/src/main/res/drawable-xxxhdpi/gray_ico_switch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb5e4ec21c5a5932a6847c939fb203592cac39f GIT binary patch literal 4534 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 UVpf8i6#xJL07*qoM6N<$g8r_73jhEB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_back.png b/app/src/main/res/drawable-xxxhdpi/ico_back.png new file mode 100644 index 0000000000000000000000000000000000000000..71745cedc91844ed504b78598f1c9d797397c41a GIT binary patch literal 1413 zcmb7EYd0GP01YL`7F1BJl+rXQC9JawvTD;PDS~PbQca~fB=HPY&u;nr_242_IkSQH}k&S&Ij}x{!Cc)dRg-HgI_wIhk zY02s?6e*=F=F=B7=mx66Z@$!-cX8<&iiaR6&OCtHvFJ}R(p3L_#oecH^-i(%&F?*x ztIG9-=-Nv=@=VThA*ldqWiuTj-N}#U!YDFp%@THmGX$N5Bm5ewba&E z%>QlRSJFxFGC{RS#i+EXmGt^C!ObnG90Wcx%=tlrwv{`hB)O4_;|#K$iYj4g{1n-XH9P()#i(UE>P0rwxL$Ir zxi-Mjj3&SXb#m~EXn@jEnvJj})OQBPY=*)KrhlZcV+p3<_671xmp8MY0bJ+Yjf!lU zOtF;eBC?IaA*6aimt#+!*S*ge81mNuNcn-3#!WC)K6vA^(*(+ZlT#k@k`G5a$1i*OISs;~E&DL5hT&i;6&c{>+*r!xa?H2+De#5S38owUs z`Zzp8<5jslgnz9WV74xBZls&hDzf@2Dw!TqfVDK8bvV!4jW9tI>V~?o)89wWvkN81 z?@iDcmmzFEnhNBXuCDTya^Rt2i}xeGC3`*&2Qwq=!n7Dw?K#iaS_s0Bu`5b+7+>DE zZmg~8w3h&t5Z6N`d#^LW=GA zVI|6-SD5nU&GiZddPd=BzpHmot_`eY#3i2jQpjavsLLY`fps z4rW?B(p{=&v)mD->1rj&shQoB2hxrL$ChbZxd=TQM}Ebui&nm=j?;8OqoM~|JR;hV zhqh1xL;a}YmsTA$bDQ!Kuya8}@EUqKA*e|bK}5XMZhcV36+i~l4ez> zv7P&|MMbhlw7#aq87HNo1aTjv9uGLEb|m4fPfdMPEnj__udj_n5Q}1MSb%yRlXj0@ zV?#ZpMwuvDa9bn63mi8s7r&JEA1$CH zH>kUQW+kW`!8rLXlgt!FUo%^;qNkcgTlt_eEmO<%Gi_m+r$AyK#&E9aa9U3jb`Dji on{*W=%0}g#hPoR3NBI7sXXosnB*o4V4(=6zbHQU9FhLLh0ohoj82|tP literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_bluetooth.png b/app/src/main/res/drawable-xxxhdpi/ico_bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..0f193bd36273570354dc8f15cf950e8d0527eaba GIT binary patch literal 1303 zcmV+y1?c*TP)2x(BMC=ir@fI1m6cn7vnC|tI=xw$bvKmU6)njL|Ypbf(~$;`)-bj8M)qvdk>;jnb63b3)U z@g6hZ27m!rQp!@K^(RY-C?GD<0KNpUHwl=TU-UfhKm%5vVp-N+BKjgSe@#kxQ6{i1 z(rK{`@SQ~TZgh=CYyP9-9BziFf1mIB&lAxjNs!@~R*?;_S(dc}T&Ywp40E~T9Bu(4 z%d%cbijKp!i*VlHdczSy%mEmSi?j~gOK{yOgplfY(+W*Quez@LQ1l1ZYFsZ;qQ0-D za;PDmlv3z&y(i!V*wDEkrFFa!_3=Gg>uc|4zP8!E{|JPf!x5IVw04$u7T5H zb!Z{PeE_z-rDtv&8tmr)uGRgx+NDQ}*1RgEyf}4h)?g=z=rhf6YxBJ{KdGsju3GaQ znIC?7`FJ@wIeE43`{(B7=GLNjn7B13!8RUFbO+k)vL(L<_@vm3U^QKfwk+!bB6=ly z*V|r^I>F`u)}n3OzJ-}Tih%!p3GEb{6F3$-`%5?rKiD zRhamz}oZ(_axi4mzepnP9obSuv)exr7XlX zB2~E00XRQ8h?$@AJa0mx-w0y6$gT_Gq4)DZ&#I6PE-* z@DqT($im+SL9k!f0Mgz>Ca~I62r&-eSpe!xchUF#;?mMmB`rud?;l?$1B*JJDpCLd N002ovPDHLkV1g9hc5eUx literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_cancel.png b/app/src/main/res/drawable-xxxhdpi/ico_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..0205d9277d3b2a3323913cc34e762763283086b1 GIT binary patch literal 3165 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_cancel_detail.png b/app/src/main/res/drawable-xxxhdpi/ico_cancel_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..f105ae96d944e16bd74f980e714fc5815df7dc66 GIT binary patch literal 1168 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>Ud9vkf56nkDY5*!Aa!VcD<&rn zX+{}_4Uz}c8QynjL>O@>y0BF~utSLmu`N+2Z+F>D2#2eyShw`17h=hE+8 zx?`?-OM%n@UWVP#`~P!2&}*=E`4YWbuauGVpE1MnYOBpW50X}1obc{fHN&~@SH8#` z;LPPzWr<-d(0=S!#gX6{?bP(2;lRzFS?h!@zU|p@QE?T}n%S3P?$0ax)fGDRK#TnA zKYR(+f`4UvD;_xIGPX19NfBGGl*saD*_*>ITTZ=kF59uKVKGBoO895}fRIBhKQ=B( zb}?DTA9?qh*arRsv)6e2;}@D}AXv91%U*D=?9KLrr?;>k`F5ZAhH1pfHw~UbEDw&S zev&)e+PJFWgh@+*(1FPlnI5GsR^d3%ztdmv;$_aQ{Bf)F6g)dl?<;P;TEf0Th2vnn z;-aOTrs=U!UJhqAGd=JL3l(0btoWn<5$|HluO_iNN(#M9rJSGH?29zj9HI}|9Macw z@IJKXkh!3OuHxCHJLkVGv2E%)`!kzc!-{q5XhHO5b6ICwSizQ+o#x>BYo zsv+$Ay%@cOR<*>hWk}?_dT2g7WAOcgWcgTz^x7M{eyct(U%7f}z|rahJx^Dt{8^*f+kdXt~VN%;l?lRxMks<>t_6UB9*`OJxSPK|}miRC<)R^=zG4c7MZ;z~9^rx-&&LhFQ*_ZBGrFZ0MQE|fM)veYWI)877@&D+$ zY{6HSDYwJL52&iiyk}}@ESg=+7?X79qn?9=#&%1Z3;$=&_PkT@Q*6}^U`fN^>FVdQ I&MBb@00un!>Hq)$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_center.png b/app/src/main/res/drawable-xxxhdpi/ico_center.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd5cf0b1f9bbdd5768e3b52aa17dc8f668ab94e GIT binary patch literal 1424 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'qJ`@>c^ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_date.png b/app/src/main/res/drawable-xxxhdpi/ico_date.png new file mode 100644 index 0000000000000000000000000000000000000000..da02e59eba170822bfa9a9d8afb0a44cf246eaa2 GIT binary patch literal 2683 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 O0000h#Hkc++a8b zMZAy1Ku{3GNWf?m6b+acxlF_d>+Vd?a4c8Yo!PFuT6bWNIr^BL?d|^cKRlTFRn_lP zAF6w*Yq}Yl;V3IBYn79e)0;8YQ`59_7-KyEbOvyW5F%gx$r#IRhOXJRNg+fPfWwTj z1M*J*r9z19ilXcUuss@$ZYnG+JeutUShgCBL?V5K5LXHzE(OpZKwh@mc1b&x05&ql z)-%T5D<~-VJR5m8sX+Vo?dw`yU463<;syY6mZ2ki1hzBA-tc%lFL&tBVRutC+av<1 zs@e;{WB}I!P@1aqRIe@q8h~X0W^m3o>xwW?D5C<^iZd0!5C9pi+dxiKG%*1IU^Re; zGbvI=26_Mf{rS;o^f3T;0LY;cv^9YkfM>j3@1yP8x0e^>mJZ7Tsj7M%fVluVS?UP| zXPZDdfV(;8ORY3)TA)39_MDuTmp2c<7%Ls1*k&j2LS<#;_%2<#{Lf5JObJw8UVggA z<5>0Xa5#La z5MqT~DYi8V>YP~ua;1Bi&*xjOw*uV)MIw=bnx?G;&`NLRRIWu5ILa8iTCYU91PTU& z{S-x6OEXW46v9lW4{Mq>C=dvImM%E0K*3<}3`J37MZR>E(dUjL5Eer8_xt_drphX% zK(%+xKcR11juOL2GFxJ?*nm`b`BMs{s_J3@w;5@X$~um~63%&22a*aD3Wcs^j9FTx zbR0^TCM1No&hPij8?ud#gaTDmRCK7UtlS2GyObHFU7vuOmzUSGUAuPs8iGkE5S_Zn zp9BP+=bVpCD^NHbK3@p2iT3f3L=6aNjIq8xpYO}M|K4Z@QdM;gfWd^12qYk|igSK- zQh`)ey$Ha^gpLR#As{!UozFSn692s33=|HB-xfj)CwxR81%aiU^AU{%3WY-57-Qei zwGYXYhJdDN+F9|fAIE1PRaK`0m_+!9fDQt3gTDOH#19+ag%B(fiR=??J#8XisFpYCQB`%Qs z8EhY7LIeyD*u**S%T!gB+f(K5gFFU;sVEVs29VEc_c^a49z?(>0mj%sIRg~|m~Awe z$`b(q_pneXw1_cwJK-P#MhOTZo|Q8Y-8?l)j>^Xg{8b9H6+lm7LIg|@*d_%E0`Qv% zrVt_!k^&tB(1utL0TTocNrB`Z4?2i|DFP&rDQpxJCqM#`3zi6wK$h@PFbPBsSRz0I zS;9xbBoH}Zi2w;?2_FTMK;(cW0wjdIwr;q0@{%yO@jH%9_xaVV_Hb82BB)~;Rw#?roEAZuBXKv_a5xMk*{YoH8^Bdc?pJah`nphOvw zXVmqW@<6dIzilN$)gn$|)z#J5zGEjU4ju&e72wQn-E0Nft@7A@2CCLHyztU1Sn~2K zIB=li_H zkF5oIZpn*ydhYzR)574(2ccy86UfcYOD$1qRXzRciKud`2G6y z#)3Id1tgDgrY%Y!ncjcC{T5@#jYoMfWIWs2 zh_kwN!{UYW(J64^9Wx}4Ih-v{Aep9=M@l4RGJ8mQq(o9ClE*AXo8C;-la4%%-F{aQ zwtV$3J;f82k*Bdmb7$k-HSg&z!2jz}Ovxl4Ik<41OKr#V2_){Kx0?Xf7Y1RSLac-B#5dz61)q9BFzJ!sAsUV9alvpIlBYg0 z#|b3U`((pL+%=&XM~@ygEJ&&VlBY2pM+zj<{P)*eYrf|1-McR%5|KQKF*;TtneOi0 zdoX6)o!C=);>qu3Y$AD*Q**RHGVMrYFUH<+7q;!#Va6ShJgKocULcwN;UhMoqZ~XDCltq7i z!^oPSOdHw3n67Q7e(stXsO|tRU$GK1o|=V&hYr;nSNVRfNe|qQYldF!)bY-EUak~K zQk1LJ@{uuLZr%(5hTiA(LXYm}(5z!nG1m%YkP{V8LVyG!H7pSzfh^&pU=oNNutb0a zvV@Odq{#KPh5cS4BM2n`W1K_Db&Ao<(iADalK5F)Tm3bY2mU}8Z8Oc3}$UPLcqjNNV` zm_l4mKnU@yoPmk}%yu~oO5YrTd*ns*r9y~x=He;J%>)=@1LX{K3V;IuJZ^?Txf>=R zpNW&tWSFX|p9AP)xC#nzGl4HS=Y8S=O$G3fn`uz)h6zmPoIg|}P$(3-fHC%|;VLM= zwFHC^7yAAF4K)G@A>_5tcZ{*Ft|dZ=>n0$C*v&aVoiQeA1ggCbnhs!+?pmmzn+eR| zoKKbjjtdkDg}O1uz5$@PnGEHgmVhRNINR^{*F0nSxIpqR;c)nEA;j>sRZsyp6IjMM zzb+1-o_dA$b*)SH27 zPh&q5LdbK3~0uEHx6Sb{1L;;5KvZP?SRnJkL2F+c39;0+p7Q zcFfJq-3ov^6b7YbjDT8IRdsIX&Ykz_5~y|-l2_V)Hr5W6b|`@nob#oLa!WV^#S5yc z`aFO!4uwK#=_BwW=ls@WMNOJ%2<&8xy%vkbUhUMW z(|73#oBg~=1*+RAc{{}8@%%yvF;L!Pq31H19kRr6LWnBH*hV45dLhJndTv8xq6b+M zsBUNF5`fq1l?#$RmeVr#~72(YHS0bRVI>iSRGOM_D=bo1;7yir9z190Cp;h kvOOA&es1=wxD`(S2Zf5gQ^`#RUT&z){(W5&$D#{d8Tm@UkW9sX74e~~~(^Dk$e zHX#52Hcbm-1IGx@JrDYDP7}UMOc>kH3qazPBx78#MfYJs+Lr~V7cedbefwY_wF&pE zkH=NkE5lsw`t}Eg_~Zon&vw(>?fjKb@lOQ-RH=g7(2^QdXY*yjVl=$l~S!Vqr z45knGaWEFpr+cG9&y$HbU6c#NAf6ufVC1VRWmyd3+UG1=_6E%0D`I{ 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 NurRSPZZh;r`X5#OcC-Kh literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_fance_scale1.png b/app/src/main/res/drawable-xxxhdpi/ico_fance_scale1.png new file mode 100644 index 0000000000000000000000000000000000000000..c97dcea18ac841cb6f00e28511dfdbd4569af5fd GIT binary patch literal 3732 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%0DQvViCIku8^`GlVm4s`2zmQvHmaW0({#Q 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_fence_round_active.png b/app/src/main/res/drawable-xxxhdpi/ico_fence_round_active.png new file mode 100644 index 0000000000000000000000000000000000000000..28d0aea99e2ba352b67ca8e9279c46df3b3d17f7 GIT binary patch literal 7178 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 M07*qoM6N<$f(ihC;Q#;t literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_fence_time.png b/app/src/main/res/drawable-xxxhdpi/ico_fence_time.png new file mode 100644 index 0000000000000000000000000000000000000000..9c59b1941931f3dd41bab109de825477fe00005b GIT binary patch literal 2398 zcmV-k38D6hP)6(}^IiONYNU@EXXJ-3PCf`TMiS_&u-71RJCMTv+YMzIJ<089LY zLMXKe5)#WVv z_v?B6`n_Kt;RuND`!8)an`OswO3ZvRfRg~c0KmM+{3L+?0C*C>ZUBMfI6tmdtACv7 z@-(Oc-}hh4%$ERo4}fI@+W8%TO|xgu{`!s`JN`O|jlKbRp7$~UHxkkN0n8a>QHxFk zz}EoWp|yUhADg)WjEsyNJ%9fE>jA6gCZ0t}Ty<7l1&pU;P zz5(ErJVuYeoZYVLURbGAev@S@6M*mg7cui!0Ssjsi^l&2Kw|qTBANgo;qiQCJ^_Fn z@R#JYbBLMO7-Kf~n%@(E@B7y>^XGCbSZC%f%=}obR{Jdg?xv%ZdIf-U0IUY^x-8qw ze7!N|&TjL%0#HhQ7{F(HEx^p*XXXvHT1{s;VjK5;e+ht_nfaX=>vRQS1>kw!Y9e~D zhtY8WS8A<)GKk}8ono=L!f~AY00^LNa;et(f%M=s0HsptHDMUaj&@6tTZV>)t{58| zJCHV3C=?btj&p|NIE!7^{mRarJD-+0N~vRr=q&*D%$+;8X3H?8QfY1&hW7xtvq07OQ91z@qw2obFhg5c(Kj4P$i18@U?Gh#i-S_>C0T)l7KzE?8ycL1Ck zjU6JQA29RXwlC;;-YrBVYuIE@7>3L0^}5{bE$INDlv*F<`Dx0L^Pfx($d0?ND;Llk zx-7UKz>CuBB<5}>qN{=+*pt-n1%jDxGsb*;8h}EfaH8wFy8s+zapobdwPcO9D5c&6 zU@L$Z_K4d&LlZ=FSr7!@N=zoDl%&s#Ee0B{>n^EODsm40{{@s%lI!1RQP@2+G*nE+ zyi!UGZvrs8hlf9FG#VE=j>C@Qe3OXEz0ff82aPdu23k@sm*-7RPD(hBSoAh&tuJc> zD3wYlgkdN($TWu>$2qfFt&YV;eBVEtnIFk;9?fQRRjpQgRP=n`KS%C}tj|G27X(4@ z?RcK&d2b}5Z5F+7)~s14N|I=u0i~40)CSAMhqcyki+_(|Ub2A1bx&dD)8dTbdEPQ2 zlHJUb14MLs@=SQ1_q`~Cb?6e&r-C3@7X$dcE%P*+&C_eOT6}Se=0Km-K zj4^Ukw`6p5)NeMMRm*~VwbmmP9p2V~ND2|@APD^Ux9HFcfLt;tfXMi{TI+VmDWz%v z3YLWzljnJt6Or749m32XGRAx{0bo0TvvPSa7sX&96q|oUYyIZ<56|;HLPVdj_;|IX zD{J-%!|>#Ky)L1J6)RR8-)J=c+#{b)!!<(y9ERa>^?LmoFzKLY7S0N#8GZpV|7orDjfqX%0bqG*-Dd=V)D`I#af{YkcD*H|qoXfxHk+RZ@YXEH z;4UJ%+6F)fr}VCF)>^+So*b1LclQ%QLSpUTzkliY z`1oP5Q!bZhO-xJ#a?@sQ01@q&nwmPVUa$WsP|ygQ})oO}U^GikV!(s77A&)Y~u zH)Sns8Q-9_{zUwHR8klKvvSy4tF_*k03hApnJK-e1%PefS*`W4iG{OT%x?ZnF|(KK zqI}=Km6_Y1x+yaAMaCGRa$2I466S6}a=w%u0zgXG52OtxFS0_Ru)uZQzw~pFCG0&O zhM`xl*M(j|lnjI)UDV?%bR6V}$@qh1{+9%R^q}`!PEtoH;d$PVi0JGbpWZfQqt;p& zy?8gJM7gG$Eh2g}2!d6K`H~U8oSsia7n3l{%={CHqAIhY84%<|v)L@vYBf0{E%AMSYZv0Hb%|wJ&SrY_-P&92(O4)8+8J~1r_oPatB5A#o*veqVI&M`_ zj`FiKMCltcc0>UG6To~MLS`N#BH>u&?W`@m%6DeI$ry8cJh_9Ji&C7h4pwSWm$mjiJ)Ssl;6P#5 zu3i7N0+1iG$X#aMIy^jlc^7i`SjTaMLJ^+n;kX!+@C?In4H20}qp>q?6_dLj5n1;F zNZ0)Fv`NQtiq&dW9#7gbD80UinXfX&NTWYv@jUPK5wRf8vsRH?H+@c~oq?pLQtCPY zU0+6`xk5VK8U%r4i@v2;ES^S0Yl-Om4CU*z*4CGzo=;3ULCD%QBHBzukEK6x+Oblp zG!lm4xzQ8TXcp>$pO|99N-2p+$uxQ2geB|9JDFUJ&qW7b8YZbeUu_`}x?zw;NHUb% zH(e$3l~Ob#UPfy3UQa+-o7vC!US_@^{TgF4kPCn)N{T&r@Zb%Shx_;%{WvXiCB@zu zhT*#8E6j|)K+-_OP=5@-dygOxsZ<|yU3Y!_aFG{z?k|uwc!d7hV=oas;JWUn_(3qQ z#0j!vS zV)2OuCx8_bP%J*N-~_N@0*b{a7MuW9OhB>t#Db4Bz@43)dP76Q*}AS@NJM8M;u0b{ z832v}fTKMg{{?`z5b+fvdJYkvaU5so$jHc39UUExVrCVIuL%pbENdPBTtY-00C2Gf zv!a1`o!&CP5izTBFX`RZjM-1GX$HM?`l6 zz^T&=_B8HTd@Cg7|IE~Dg5b>*q zVf4%<U$(I1&KPDx>HiBHrH6&~Q&vQ`1n?f%vcM@9)o!jEr1E zL^lG!qB1gf>$)ylT3Y@c$Ni?0p&YQ3aw!1x0l?ybB1HhWJDpB{H!iTjfimdf;o(~V z;A;R-7x?`}0B9CMJgXA2Qow~m;dIAw{#a&i9B>@xing}4r&SKFB)hx2dzr554*-vh8mX_yL>7fj;WmzW^(I3hzW<7{_rC}KCEX-Q#>gqbGuC9(D=K?q7#czdS z7_X>MMhRec9Ej-gGIQ?FY}>wOuDmVw5;K|1Jpk~<0LtPTvNs7Ku8sSCu>+P;wzHe+R}>MuhlYmM&Xwf`p|K@r zv)L^~)E4;d5+OuaoRDJ$%=27*efVHeY}Kk&94Dxmwr$(CW5&nFd69iz zNhw5pl^vHj*N0dE=kxg=BI3^-LI z7YpFd&dyXOlld0_Ebv*vO{Qty9*2@qWpMmsWMt%_GK-mmh+j4g<6f36rMw;h?)2T~ zb=$U2>gebgk9zOPhgGcrPr=~M;Xpc_K2?)llixVN|W0@rnS`UbP#FpLxC!ejIHwhVVg2)GRKa?>;)^njveS%dz-6e3<= z7zPKcBDbmmTb6YL5&0LhhlCKHno1)n<)=9Z2LSH}fL9Um!G#MK-qG0DcrfxP0ATCZ zt?x>uQUw6`SV%elv~BxL|3W6EWZ0LLu1CZh4a4AVT;x_Y;Cw#684VTl=k#g4qgX8FqHgI5g~G9p<2(ugXNM&5vaahF1;dp2e107w-r*a|y{2hi9a3i5 zZdC)8QvTjQ-)WjAT3cJK;N60ATp4X1OQljqr7m?(PtO8P)3yP?M?-?x>o`tRTU*-; z!Ty$IwGxqE_nktBkB5}24Den6IHe?A*Yzdk0@zZ@?*qWMXHfRZ@$vE1Yu2p!PnbdV z_4O?*7K_^f;KO111Hc{txQMrA<@$RGg6Dj{y(EN~E;&2nZR4)1#xKt7mdmy*wYo<*ag;_H12U-OA?X=9j1H?Cn7OiGa6-5R+pIbCY17 zH~=4#{S`u#m6^}yuSCROhE(z|h`8D?jQ!>M_w@9fq-h$%{Xj^01I1$T;`a7-j+RZ^ zq?Dn?Gn1Us@3RJY*REal`}XbI1psG;QI3fI<~R;R+2`-y-Q9f(!$ri?!^i=EzjHa3 z5Q4X0(>BlL_m^9Z3n93yD{_kiFuzhql{6?8i$_nj8}Kaex9p;Z)Of&K?I+Ufy}iAQ zUDxI7x!@#Bdj=6#PW2`P1#m=g-n@CQ`~H7G2vJo@R~&#tEpjELqs*O%c(LocDMak| zFQ_vR-aR%pwrZxi+%KcdBDYrv5iBPaE{?;@hrrfI$zvj0T4n%t&U;%N8>YgyLuM8wWP*!^oLR*3j`eSLjvrTb|XUXzYS zrLMA{l2^X^C=o3SMQ?^qT!+DqPSl)QO}fg}27A010$cJqRYKm8PN&VNF=$Tb*J`k* z>To4T!44ig*h@s`MS)C2+c|4dP5rNwvJn6#L##Cuu4Eu_1l-w+(skY95Md>d5wUM* zXlPAGN5@Dd*9H5Q@ic2A;O+rFBxQt%Z!|PCEUxr*?d$8yIF6GiA}*#5(4qB5Dx7651|2bqW-9v&XPA`ZCa()Iu_nMw-t8co-yYDc3aJnq61FW0vT z5kC(w`E@Lph&Bxm53h@>&MlwM-;Rir#WB3N5z%S6T+Z(@N9G(GU~i-Tj?yVaTy7Y~ z?x-4i74n>8Bgb)elnazcm2FwpSwzH%PJi|LkAx84j4CsDU95mD%i`GSKLW*n94cHM zH60Y!K!b9;*zceG@#LB>{^LPdmc=JFx!_~69WLdouIsMN<#LDUUhM;p)q+dPNGb0J z0G>Pj?LNaWuAYl@zF!H?W7`Y>R|WL@xey{)lwB=fHJ?`Wwpv_I5Deth>Jfs!x~_YE zHJ;#9PeO?Wds77;f_V%8-W#}iPqA3MVz%exX%4}>;+@Ypd=9~sfF1_Nxc2M1e*R&3 zjLSD4Pk9iLh&E(0ne|bekuZ}ZI}x^RuSY~K>U+mQMAvm&bGh6=7+F#KD4Qbu3e9ws z765Kbr_-C`0_}NcT#<9r|NT+g66o1D3~pH#mril*+mUq`+;7d^=L~*2L-LY8XV6bX z6Q48CH0=e)ab8=rXwk%B@xj5tEFvDyCxnRT3`FG58E`G|k^4CVKV;sO%)z{bG+T7ec@x6)JY_l>4PcW^BotafCA~9ZRtPoLX=>1$l0yqJzn1EvOi3KNs z6%$Y_KC$2guwnv=#U~b=09H&uvG~M-6TpfIC>EbsZ~|B{0mb4I3r+wlCZJgS{{S(? VU5rBF4ATs%S-p+9HV0f>-`uJd_R*{PJ8B^bnBu4X4@063fk(li6o!y-~xwSK2_sltGe)sI$ znR8|?!8EM|NUJqt3VOG5aJ~WF&cqD0ffi{ zkQ?Px528BQb`6OB2GL18c~XV?`s1{J{}atDrOf#%!bM3*78)DpBM^88Ld*ida8qe@ zAUXou{u+JK8t=tTfO0vImgmrjvO0A44{I;+E|7T{vZl2Hf*egV*5 z$DmTMaTB&ZjVde8rO-F2E}jDyMMVW5`nd~Uj!A(4Pz@obQAI^fvK^C=_Y`>RMy9#> zH{Z9gN=l4TWp<&$T?MN!c_5FPN!aZmLMF`p_b z4tin36X0U;;$FzeI0Im?7fx%?c@^2&W2wBnUbQW6fQQ4MK!~-foz<$3h*JP%s%(_y!M}dnM z6RBEHmi1xMwi0wu3S1Nx2GP6sKLGlwbTVySnVCR13{05ttSZ|E_U;9$s^XcrjoR8F zw10m~+CD@Ts0HrFl}RuNEL{qW8yB0|F`Zr79ZI*2Az% zN`NtA606#`4>)opp3JvoS#PK9i|Pn(-BmU<-S*APGCSLWJ$ke|t3!u?gK?ML4am;! zt7`YDEW$-NJRL&BoebSatx%$ScL(;UQF2Nx3pjQxzN~Fer^-rBzNOt%0$&XwK9}}r z(j;K!OrT#sptjZ-@ZrP2lQfI%IXS@c<-mv$a<1@dW&L`9=kj=sXbnXo8|4%xmQn{i z6p8={NjX(m2+W?{S@i5#VEcBUDa9g8j~>8^6~GIURlB=)flZr$n>XFuw#c%=ZbCA@ zs|5ZNfElhvhYttVCfJ0YKM!o%1~fLhs(MDCXHQ_|N?__OP7ExTY!g>#dY4utXc&O8RBZbRp8bwC$i%$1v_i0 zCd-oi+vuB8>e`)%if?tn0$>)O@o{O@)xhS>z=H>g1@rP8*n_xSD$#D-aP;zYBH!+l zWwo95lJ6BmQe}h-DNlHNy?C*dD6U*_BK`jT*z&!5JFo{1l+(vANRDiNNhjIJvXrn= zqJ(`Hp^zN#j0~Wx3@9j&8}ikw4y5`HnbJOe9N7IO%cR$?IdgVLJ#t>OkY#1biRznD zm`E=vr#LcKuLcGTkP>fAG%>6?p0xnv=R5uTN~UaTYMf~#-ap0Ni@Ri5N{-;EjBvS^ zX4~LWnR_|XyLEG5bA-z@*>^!=U6;wSlpOC+30!Vj*nVKSxz4mOSh6t0s|(Kj@jpbS zUB2u@w(M#rzD{2*3*|RH?FYt7I^L|vuAgNqh z1&CJQs!D8GS-`So?vW zpIqTUmP2PbAwH#wiuY4j5WA;0z)MPU(bV*pIn3D^x+lP+Q9d6+e5X1>H0gVjEXxz$ zJp&$v{sn}1PZK0HW{AF|NJO$ilDtW;f#*O7KF{%T@~(ABk3T^))ytd8o&t|#h$;W+OI1&oivGVgcnh{Y^|`n<_!PRIFUAthp-6(ngecW;uAFlt+tAp!f%fci zInJf_3Afj#bqvcWSo5Z90UUI zLWtL-&ML+pHGl2xFl_rP)Ybi<@={bPkbM{7u?ErMGkOys1b+gAKcmP0fF1z2md4Y> zJ=pdQ5b>usPJ*Zk_wM~}KBJdzXgnwVeKn;#CrlF#!vNR(lnrnLTr&a9=1hbe;F<|& zHfJK-0M|@FvpEyt2DoMdn$4LAH^4O$&}_~`xB;%2fM#p75w02dzh_I3 Ud-FP4oB#j-07*qoM6N<$f^KvLr~m)} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_gps_no.png b/app/src/main/res/drawable-xxxhdpi/ico_gps_no.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9b9c5ee8e2d05feca9bb767181f6f6892605cf GIT binary patch literal 3000 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 Y=HL%PUgX%V;ca)|v63bVr)VAaKU+~S)&Kwi literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_history_point.png b/app/src/main/res/drawable-xxxhdpi/ico_history_point.png new file mode 100644 index 0000000000000000000000000000000000000000..a251e1207bdad87325c6933c8b6bfaf803aa1950 GIT binary patch literal 6371 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_history_track_active.png b/app/src/main/res/drawable-xxxhdpi/ico_history_track_active.png new file mode 100644 index 0000000000000000000000000000000000000000..97e202abeecf61b944a257c29fd6433edb202546 GIT binary patch literal 5295 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 UMb2nzJOBUy07*qoM6N<$f;anC1poj5 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_amexcard.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_amexcard.png new file mode 100644 index 0000000000000000000000000000000000000000..17d525862c6f2e7cb227b8d60892508ca2244309 GIT binary patch literal 7171 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 FV1itO590s; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_discovercard.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_discovercard.png new file mode 100644 index 0000000000000000000000000000000000000000..cfae6ae0b037bd68191ed6b9b9a38f97003e5129 GIT binary patch literal 8357 zcmV;WAX?vvP)@c&tp{mb*R@1>uGC(6sYeCAjMLQUltJuTMDIoe^Zvueb; zJg5k3!_klk1%0$w%TT>W46a_in$2}=7hC+(&K0q9sHY#h?jI|_1=B}Vm$pPduzs9#)ct_#{7jKatimf~$g635}Xphe(> zK1uuI?2BXNOUo$<3&Y$o51l)9Dj|R~cI??5;Vp>&|G9@}20FyH&%EaV)2dfnWolF7 zO&L*|sBRa@@-W}x^U`uk->FrjD9vu#yiGD45~b8|YCDCF%ACU~$6K zw1a#C)ud5gk5V}`X>-yj32{{dShTUyKKx|>R#It7k|Ui2wfo|Pdb%$qEiR-+1qdb8 zDFx4+lu8$f9B_B0LS042-g_H-C+f{pnLAa{-q=qysrA$+De&_Cd8*T!ekn<+n)y-s zp1!*;B+HwLspvCug5~W5$w5$)o{BCYZvgaEr`j0Q)UrF`_0R(>SB;+3vbQR_A`3;@ z2X_D~sY|JspkzCx3s`Nea`o+v=kd@;u$m3?G@0JmF}cLZ7mpJ8QM2C_)l5pydqbYQ zZKp#lvFLWO89N{FK!@6(-KjxOQs$|wlq`8Wp>p6WQcjdexnwHYclm->B4)0?IKm1-hwLk^QC4&>7F}6=2X!SL$X0tP4VT4Hh1dT z1sG1q`jp!|HjSRJW$|@)@np63-H|xwf{ghkZ%Dh)&S96z?2CCGiy!@Z8qHo>2g`(mjRH{@727|cS z;P&At4ZO6p6xXk(!(u6ezrR1KRjYPe!SZqpF?PSyT87-@M3mmhgBBW?BB~)IrY3Zb z(mZc>J}Z?zxjK|LruJ+_7Ij4cmYRU<>}+T>8ia<1x-_Q>@a9cFV)^oK5E2~B3W#A> zgVBg;RU`3aqef`m_E`i61}XM`;erL&zI{71oCeLBH^=BPqg|fcwPPoif4vNeNr@n! zf`fxmw{9K0*t<8nb?@$WPN?j=`MwxJ~LGPJkKpw|F~K!5l>+7MMc_rT+?4Mbo-2rFy1+c9p;SR`Fc zf`$hkt5XM4Kbz*54pd+)!G8J|zb!9#}-8XW9M z=DThU$S)|sqmS0YXVa&%`p1tQhs4AS2y)D?ol>yi;2-FZ$LrQbm#$s$NX?q;*`%Z- z%$PnMRU@ln(EINrqDpyUP!-_G6DQ%LkN*iDt&R=CZnr^0I}JDvcHYi_d#ui5c=PXX zVdUu1;;tSiFt7LRi`CzK$3Ay#7mFQxc02Ehb!!3m`WSJ`T*~gzkTn20b?%J0^X8-0 zqqSUszIN>zh72Bz&6_r{XZ?*P)-O8`=yW<*?N$_-&6qH5JSI(<>{52mf+;vYZ6f@$ z%McL`gjWIrOgiWc8rZC5C@BC6^8rikXw)4)AGJI5VC9F$55=rGvz>JvI(P^zTDEY0 zmP_2%UoFKy1`crEU%zf0diUvrPOqtELIC!xdHzEuvu-mQFIfXJ9fnCwQCVlsgkqe_#tsv zG;cl(Mj!Nep{EnOCCLxilr;5Tjws=zi%It{zi=(Z@44ZawsRJ-T-53X{p?8Q?iz&c^5wBM=xAgqWBZd^~X?v|0_Wr(I_& zX6x3ixPJXQYD7olV#;O2KHC;sxBmpAkC9a#KX?ch&R+n7j{(mUz-!hpJ>RNDOPn}< z9HC)h2nY=mxCpQHea+d)%*;%*YS|K(lP@EtMhzri zNkQ8-&oW7QqERFG`I>M&{W^Z!xDnH5%)kfl4Z^&I3t0Jm^QPcn`~)W&T(V3Ll;O`2fOFF(5!zI5pl;sy`F&K)~Y>yesBOumG1W5!_0r=JP{e=r1O zhY8@GFT8+NYrey^)KoNY`m~@C@^Z0g$r210P_E9XT*~DX)QG9!vgJpd;My@Y@kh#K z#0`zZ^yxF0T9#ky*RMy~wKNPJHWXB=Oypy(E6&76s0AAab3 zY}U+K_;|tugjNbcZvG8y{(oE0E;jbg0QU9uMT3S7vFqo(FzCqwlwW0KWoXl?70x6i zAUG(P*^~oE4kPA~M-%~0PEJP4X3g1iq+*8-AC76Cf2PpTQRA~&dbG1 zFTI4-YXsX)msi6T=)J+8fIO8d@i$swET z<~sY?_vKd@z~-_t40vxK7A#z(I&LYzH;Zmz(&Q-^H-4P+`NRu}h;8#MI1PuKygYon zawYn_+(!jqm4v@2!R`R28u#wq%hXAghzO)zzmAz-%)*fPc*K1$1dE&!+!L$TtN|^E zr=EBc1axF%B=T}|@j~yHFyP&H(V}^C#SVTnemo{mor*Pn*YR0LzjNSpdf4)>Lf_;$1irfk zi@y2>g9i3TwaO95FD$^WpMOU4X3d<2|Fm_xyz`J+uLhoL^m}^K(ebbgLh;6SX!76*Q zyakwg+2)y6IDPUYBTfC@d=rb8euZK2Lot8O92g8f=-EpEn67zq=V3_P5JZNB!{q13 z>}gOyAX+~23|{Tq7k&G_2CbI(wQ%+9-UHkJ^Aq$213Gu@itji4;3B!6JJc*`kuIG&)?S(X4q3SnW2nZP^NEP9?x>G2_FLBQbTFVB_7zb_w8L*Db|` z4+r3xM!_(J_`qr>GQ~00Op*&N$LujhH^>HadK;kAGCR!a2y70p-2~_33;#g}!Bu*c zE!sJAW+ONth>^rY$B!T^Gz{cAb?(psfdK)?&dI@=_3QBBOE299@WvlDFn&>3SjZT; z=m}H5$W5X}K=UL8*y!tvh7B7sZIF?XfrAGQAU8W3K0Zcd=H+0{>^V$eq}oghw5ppV zN-#C>w}uU|`{%ukhAUkI-hKzmmoH-glYJtUF?z&Ed@*yDD~pyCCOfip$rAjuZ5tAk zl3?;Pp>kL_BT@doCLB6?6!rgBAFZ0T0J%uSCP$7Mg-KJVxO71}81_5e4!oZ1uU5DxN;6*s=ne3Bb0_o>4VlX9)UG{( z0|Jqnoq=yxtiT)n`Z<9QH2I-coyTzS$PxI+qH+Y@#tj<~RjnHAptu4Lp2(gfE=um- z`|l0HTw?#E5y(wCe3(i4l`B_JWG;nC?}Na=KxTW3&7~MMYP5@OR!YWr1lSu1?id@3 z!-oztcG~xiH?VZs*Z44gDCW(Xs|v7)5>fvxTee`~+yDErPeHHOA+l;!oIG{o1uG@IYbQ!^e)GM)exE%{%jhH*G?xxfCA^9*jA2 z%Ne%(VY1`TIRK{T=Pz7{lHwA?4UI=cNGQUpRKflO`xSk0d0lMFj#9eNTaxu+uU^=? zc?+{eHk%cPjvYhIS~Z!EyhtACaI`LlI^~^Nx_Ai&y!S35Lc84E) zT`h_QR>qDWk548|WJQJetmExOM`dEbzYM^UciJF2Wj{h2MZs#eF%=DxT!;N-05jGs z!~mIulMN;**J@!axB{--r!Y1f!)m9tC<66Nis zJP4h>JQko#vOEAx1c)lzyYCm5j#J2T#D~MNVD3B?UAlB71;dAZh#9kHvgcd??)f|m zWzscx&>&n%xq>Y}ZM$tE;)V>t{CV?HDJX~q2#%dN0sjDhv}^M$b30<9qLG`Ei#ZGC z;jRAt6({oC*)uqQJ`uh9^hWZojVPYeDt7v<*T9M5%KX~(I zL4svIvV0&E2@S?f?}$YQ z1O(vG+O;u%@gnBFWM^gJ_w(nm=DRgGcK9%=M@J($^(vlj`ZRX$+0A@2Il#SN?t^bu ztiZ_O!!cvlEG7y4-ss1u|C3KXiIU=CEMLByWl$)4ay2a#FTT(V-*4Q&>Y~slg*Zv7 z{Y<{d&dR}?{oi5)hvL<=2r@G=v3vI}#K*;hv4V^e?_qqb8tg29!Lxt{ zlU_ZsW`TSWap5=~yn!U56#R{J@LdHttidasY(yJH*t8!KEvgv3%Jw{JnpFm-w`tWD$#|IU-=`M+})#eVJKVXwtL^i*wV}r9($& zpkvbH$;>~dtGKuXZCbX(A4wOPrXjzc{NS3kTr+Rt#Hj*2ZOT-PoiHAOEG1`0X<4aY z?}%(r%Fu3S;YrF2efs%lLI#7qbS+H4Tm9a|zgK?i=xitav{MM}4W$6Vyt(kz>0vY) zS?G>51C=kx&qt}viZ8$T0`WtK-ll>n?oCOI#EVJrHTbZ=Jxvs;NUDQ~P(kr6j2bZ# zpH2VVS>9513ngpb2LJnd7>pWlK_P&_$Px~WIdddQX7J`5*mNeK$v7CAj(37f)>ocb z*tT^m`t*8{sr2gAYv9O<;~;IPwzGo*A=`KEK(NW5G3GKWu>|2_Z{!209rFm1E+@0^ znl@^T6Q@qH-^Yv|jZdcud1$)!@86I1&$eZ8^AejCbsw#bz5Dku)h)kN0baFo74u`O zREcozRw7!j)9VplIUIHC)CW~FTzh-e?n4HBGV|;Hu>n0kyX&Lb!!Y7 zGzj(UH()LkWojsoO%rH4y$XE7QrK@KfU^}tqp=A-Fy&}Xq0mIOf%b3l&_y;C#!SHx zjuWC^lHdw`XS3VT;_2p0dT3L?luxJLHo4L{88dPu_U_(`@QBK{1!<^03ft0LF8lX4 zte$rV48+;9XHZ;PiuVT%!hnGTUFx4ceLB8hvknoJ!;yIDB1ViH$(|9m9Z|mp)-P;) zzsqg2YO7Y-Bc-h<_g65WT%mD%Z6hd(vCE)UtLiOB*;Nk+D0k| zK@OPGJ|=gP?yesd8@}Xep5j`fT#}S(z}>;I6L;MHeJ)7egC=nsinmTckHyK#Dq1a4 zYsk*+G66|Rl57T|}Zph}6Rx;nX0^5$M@H@Q%RvVA5+pD@tuw1<; z*-m+YUkZq~5~l{RRKn$p<$np_imG|yzQuTRUJS=-YhyBEA3aLX=i8lUgnVV$P z0~Q;9y9CP{@MJ5cU`oO8WW&`Kfj7j>( zU^rk525%?c%=D@AEe=6~?dY-&t}I#(FcouWgS~N`?iO5WAMUoUheb;5%(_wx4zSp* zupU_o%fThkrJaJt6ai7!S4$O!4>IrCke4+8H%)+lcf$wtCuj{B>ZLk-i%8IIBd1%ocGxnzLzp9F6@p2Yq zDUYMscstC$t_FW-0g!wYdc7~Wzz7zQq0JJ4WD8q>-Ak}YvMKDwXP0 zQ`3J9fXn??sqC2xQei#u9qh+fgG)aRty;7_dvmwg3VQy?^cq2MV=&Frh^VLHhe|cmUmT!FgCiF$zLrX3uvki9J-rdulWTxWzd&m# zg4QntFb1+$YJ~UTln<1t2(aR_UaM%ONR^r!B$qU`#D&!MDgpdwMzii@GRw;d$#zi< zleAj$lVLx;4%XA_q0Kl0Ew2Rv!olf$9NT{HTn)SHtJe}-QP%8^Bzc-VxmJ*eJ|6~E zO`zInU&V$0zWV=UTTu)HDMEQ?nfZ)6tra}(D;Xg_wlFW1HeOiE{CUCyu17N1z;rtrljKC zf&8EYEcHU^cWY@rEEjfxKlKA_$@`$szYdMj7rb9($D8FMy}CQVDq7lWfTb0?b7$n> ziXh4X_C(^mA!QXEtoZ!BibGprN7<$Q;LmM_J#i1T*Av*O09tZ!3;~XJY0A&qy3_vN zO*t2UrSB%GO@cS^VNV$-HFBl2aOB_J&0xJLD^eZth(kM_*};xU6G$<^Ww~|&_H)}% zmb3@D)Zd^p-vaL&1kN`Q&>Fz8y8jXWtO9i*B-DdBPdrcVm704V#(JP*tH zo!~EQgZ=7Jpd=r99YvZ#0G&~Y4L^Vz_EZ6OH-Yjb{=G;bsMX<(#;7>hp5wSoQnQm_ zP22?}?E#;17@C{uOhUD$aPS5?gGqAqU&TA|Unx-`KlpAKwNx#83TSv5`Q0&T%CNFX z1ifkI+ygDD-?FrmuqEw+{n9T$Y65gcnZi54rb^%pe!_Ngl2&>vpS_3r=a45)b0prs zC+R{t3 z94sb_vdMM8f7gt7KLZ|Fw48Z*l0GH2Om)bE6`s0SaW~1;b}IedR1sK9-euU54}niP z0{-eTAUhG7k^*p)Z*|yI_J)JX8PrOBe~@E7)6YYbca;SbwZwdVf>=t9{W(__Lze!zSx-yx!M;xt>=s}( zAe30Hn)@S_U~dSSl4~TCW6q1)zi7(Hk+~4|jI*#`O8_n(fi2@S_^eCNmEL08T{xpZ zpf`cj&PfMTCE{>_ST)PRg-$>VsQGB!p3glUrM!TT{fst%-3$d32WvB z@TtGSp86~J>%W1^z6ec8k#G)&!JiQ%UT-LW|A>x8cD##px0CoFm-lFcJ-IJRnIknx z_D1D9pK;`3M0QK+R`f~vo0+g@C&89>685yy;IE$nmzx5vIES4U#}S}D{@`>*Nz(lO zN$S0djNOlgQXzoV?5kWFl>!$^L`zV(?9OcmiPN_PsLfUeI{m^}OVLu)VrlzL-QdH=w?A0XV%It74%F6-=>T&MOOGPdv9`6vE?Xe)5@ssLbC z5^Px)pvyQ1{>C+MMR|a&6zsGz0+W8UbmAV#wqwJ$leekwGE|>T&%uxT2}H%~_Oie9 z=P#^0I<4l}Ia#GU_Uv|qXe!>Mw(Y#0^yUuf-AN!Lb@oF8NT?AfBB9op?&GQ{}pS~ zb;gwHk+vy}&~=>3b6&0+jRx}dd30V2*m6B@0001BNklZZoqCUWk*KxdJ{B0e$Z$Qu+ceHjyRLxk2)B%cg@|= vQ*uxGjw*Qo3Q1*~j)b!DT4Tmd{@VWm2xxM~4b^>;00000NkvXXu0mjf!?+P$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_maestrocard.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_maestrocard.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4d026d464c4f89e367c0567a7af1efdf918d3c GIT binary patch literal 8581 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 LNkvXXu0mjfLHFg} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_mastercard.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_mastercard.png new file mode 100644 index 0000000000000000000000000000000000000000..9eae217a53ffdeb63d7eed3b7caa2fade3eff3ba GIT binary patch literal 12053 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_newcard.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_newcard.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a432c9451979b1c3e0b0f9bed9f8578d7defa1 GIT binary patch literal 3140 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_lay_paypal.png b/app/src/main/res/drawable-xxxhdpi/ico_lay_paypal.png new file mode 100644 index 0000000000000000000000000000000000000000..bdef9f5cb1103156822f2281f0cbbe39c898191b GIT binary patch literal 16447 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 DxUt*o literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_list_next.png b/app/src/main/res/drawable-xxxhdpi/ico_list_next.png new file mode 100644 index 0000000000000000000000000000000000000000..686ff45b10ac5f3f1cf41d02916812de6352f5f6 GIT binary patch literal 1301 zcmV+w1?u{VP)F$qBLSj?6i(2X~qdfiU>vQVXKNFs2WgN zDo|Tdp)~Ordt4KbZ75>r0v8a1a!Dl$q8tJQu@qVoHSzq>b9|~YuZPa2#J<~}?`Ph7 zels4z8h_Cm??(fmF#^`OKw}E5@d40S1YMf~iA17xQMBv>L1$pSV9Ic-7%fds{vGB~ z<{Cgu(~klex*+xhHKD^YjJdEPxB`$!BqEEEmU95stq?k6W3jzrnzLa%I%dx=2VyvTmu*$9&VcZXWjsi zbPl9hVs5wc#!OfcTmz6naxGYjwoEW1r3joO<_;^LIS~c~R{`ol)UD}<2)IuX_@`jI zvzUMDtDq6Q0FX@-*YuYectjC+h6s0AIpgyn5xfGZHN`Z2AAqM7f#-F#nxHX3ZkVDDk<3I7lym7r zejxY`u)J*^h=C~&pxFt5n4Yxq>HS_K1OiYS34H^d%v4ldK*{Ce*^-%l-b;kQ0Ay5G zZ|Zg-_#FW2og$g=LOExs_7a!m6DWW@@}AzoTWw(<2XKWW0`OYdG#&=PmsGpLn*#@^ zjRZ}V5ok137w#z(3RSldLIWU! zw)G8duCo0Jz}Gtl5(-UA3j>8h;k+9Np#oUmF%E77Nd#d1B z>mS+zyZRx3tDWMAkd7`b>~!mwAT*0$PjbgCHVL^GxY9A6`3)R|w3zO8LxTFXIDQ z1L9h0CxeeD?+X&$Yvs}s$n%%4BOtEnyBK&~vG^_$BW2|c)AMq_r$9WJ8fD@aRsRiu zI9bYNN`A%rHU(l@Y7fBADZ>6E;%!zg^S+<)z5sOh>EpzBN)dL}wyCRfEd80^@m>SS zzsU~}@Sq~>jIhO>#bZ-n1QG8UK>e8^`4cv*2>Sy zV;JIH1&AdF4ua@@#hL$psmkr|7L1?667L$oMV=Iu-!mhk+*ZtFehE{&UjW}URij%A zg`>ZRE#5T%`9a;9et3mP|bGwcNL(v2u9b9gK0Z}%ZPcpI^R56sZ9JE z)_7L|!W^kOHeWA?!-&)X2;*7t^OzbVz)$Tkeph1zgz>ESc})KURsfAq;SbRN00000 LNkvXXu0mjfuuVj` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_loading_code.png b/app/src/main/res/drawable-xxxhdpi/ico_loading_code.png new file mode 100644 index 0000000000000000000000000000000000000000..72eb38b4db719ab2d1defeda9f19881a180475c5 GIT binary patch literal 12064 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_loading_wechat.png b/app/src/main/res/drawable-xxxhdpi/ico_loading_wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..09817165d84178929abfbed446be0c4696d93d0a GIT binary patch literal 7335 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 N002ovPDHLkV1kmS{fhtq literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_loading_wechat2.png b/app/src/main/res/drawable-xxxhdpi/ico_loading_wechat2.png new file mode 100644 index 0000000000000000000000000000000000000000..9055f493be4c25eef76308af1a694920e712bc34 GIT binary patch literal 4326 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 UmzPY!TmS$707*qoM6N<$f*(CRBme*a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_man.png b/app/src/main/res/drawable-xxxhdpi/ico_man.png new file mode 100644 index 0000000000000000000000000000000000000000..fff88c671aa0d748f917da4efb2d19b41ea35258 GIT binary patch literal 8544 zcmXw<1yoc2`^WFbfPusY(lv&HG}4_TC6q=Qi<0hggfO}VX+c1GGzh}zPz0nq6{Ha< zMf}g-_x#V!wsY=w@9t-x&+|O*=k@+X-`7_AN=$nER6Bw_R97m{V?plptWQPN zO^omlZ}oPG(e6|RhD(vZkBy%`hJbls55BFkYLlkrrqlAUeY6* zSuvPEq}>g8F`x*-UGRj~QUKbhJw%}~@*xOt-F}}}mLlgpQwbX@Wp{OQTHt0)WQ)TP z!^c4wNphh7VlrpOQG#mR3BcY2tUhm@2#QNcbRK$h6jCZex5xRmx3}qO5(l19k2?dB z%)l9XzAFP*eGd3h!1F(Co#>V5mnF)DRaZ|zL6#H>a9hsQxeUxVFwO!c8-bw`m{Kig zM1I5AlK`@jn8e$uLo@JXO`dfah`oRS7xQ+5|Enx2M;%4YVpua*h-rz$9H{oTr4DWC zvlsn&LkphA4U3Na0aishS%D*^n88)(W7sh(&|)yr@D)5c28Du%yGk!~&J$5y;=mp+ z^$-oXUF?Hg{^(z;4hG_WJ!lKLz-#TNB~Q#&An40J83_{+J)Tn~^dZw>LZ4lyE@!GB zRNNYYfIt9b3{#{#DbflG5D!9*X+kriw;vWy{=sCPHx@(h)Hs2CyuF`ij6D6z0Pmy( z0wDbrue7zP$4}$q4lIBc2rxUUe@hmM&EGLP_Pcr&@Z&+%4Y2&lClQk3 zNh#D%S3rne)>D^{0SIlxTu}E2xnzqu8COrk%l*MmgK+uzb6L zWrjOLjJqcJ2a|lDg@pyKfsNw|(CX$xR-E+q0>Nd__4-gMSM!XWwNnE6`Sa%-k>pH1 z3~);_pvTF5YzM1n4m;kdGHZxBA1OHm6$ zSD4h~C4KyQpw|2PK_0VRpbeBy^A^=fc2?Fhd8KLw`O7?XiGv5W=yy52%*5>m{i$;z=W02&Wfhvs5LkWC;RnMZkq>x$B^dPqV&V+6J!QPKAC+-LL5hK0vXwKoKXj3u%wN8=lKQ)+q(^cnZysAV}-!X4_|B!CUd>KO`&rK zY8uyd35ByTuGP{^aD)L!0ep}TM6nw?Op&xa9m%RSZ+5YS0L;M;Q7|ZJ=+~Y|a+!ej z-e~5V<&OGB;2*--&sZh~fx<_}ME5C`y!c?k^pWleK$f?LF^pc{ zp@#s{1mM=R$}(if#NLvwkPId|oLtHd?9m_kK0|dPR@uRp$9_S--fE^!2fVA#=dmW4 zou8L(fAeO|p>_Af6RO&r2<01kT3`S0;X^;wpQ=H(3mmc}w8-eJ`*qTYB7lL+aqp#O zNmK`1C|5V%ENFxkX80uzu}TT|_>1x$&6g-hFp?VAv=8hUB6gtyo@ zV5xcw!WVMR4<~l2iPHLML=B?2URYWR#>}jQ=TVOdk#*Q_-SCAg6->igw79>1Upz}g z_o29R#tl8hCg&$puZ6(0$j@iO>~YT^d?nDpdv!O5w5!}9(w?o0R#wGoCvoWY$Ceut zy6`W-B#1ER6-O&otyZa z4h?yxzD-}pK<(-K2>`d0h5q6^#C-xNpP^RnUK3k2N#@YwggU<1!z=uZzE{K5RZ5i^ z4%5(Cz>}!o-6^)>DEzR)=>NSPfm8pBab<|SJEF5rXM+C+H_QQ?|2#gplvWR+ITdNY z*h+0AIc=Ujd!{0g;Y5rk(Pc{g5vEAaffY~I&~|Zj-0}IMKJf2EFmTbDs`j=Lai0>3 zSf>=z@$4m6hiu-oTUuIj0A^cRfpmFNFa_LnWo)cKMl<*u22C|HvF4_69DrI?*WzBN zb$w2aZEW=Z-QV9&2E>)A8y1g-p>-hQPwVF%-@Etmna}XTzYK6qfn2sxFH3_%b{Ig& zU-;}JG2exw1zj%dO*9w*1q%;&od#;6!8B`T9+6) z#{18K2aPj)Oel^Hv|8XXym=mmMvR5y?rD|P<#6A_tv_1WA~aP}gtw>=DLUv#O zK0J&)z}yM85Kk6eJ8`1CjTvqOuL-RIF~QQiMvZ1W_*s?DFgF(}K@JPsoc6M+u@>!L*%!#R0`d zgP*Eqk71@w&I}EWt-9V4_6jf2!3DK^9~ljPQS7nfQ}FLLJ>gXuurpbPqr3Dm)?v4?_KV); zww$?PvHJmBO^nWEPK+>giwE>p-x#asi^+Ig)Troh(DdJ4>^6 zzq?*OKJ)y`1}-%p&cZ&NFSi}7_>k~Hm|@>6)AcP0|Ao2~re*NhUW3padgPPR?B71$ z{#Rax(O9yJaT`2P8=-<9?qHE z=WAUF`Q4SqZSZS~8Y~@IR|-a6>rOO?+=HYoQXbUq8JwJqDiC*!`PBEF3`T@F;>+V| zQKCFgkgs(5_leS;jLxgCpb8RDZsA<%6<+Lg-3I>vk+Jn+4AHoqsfy6V(?2n_W}yz% z<)1U}5@cm(6IVI;%J8nB36y7x)8=VpWMr5;S}mrhpqj<3kUiERb;3Fo3Moj+&}P!N zYO{Kx=^E>mE$)dXnhPMtjZTS5?8A8cv2DDoUC?pHE^cQQvOf>Tg z3pad|uEM&bg)TEAkf9t$>Q*2&VssIKt8^jx^;f|c+!l^9@MTBg%P`nAL07``Rn;~s zK*mg_jOz)nvJE^xtV0hR=^&ly`;B>T<50FC{KEQ>5Ma6gTeNNTrB?2`M5O1|XYWaMZVNb=h}w-D z7^L%KV9q7tTj%F;m8;+vY(D~HV{>z&}H9+rbE z&krdoEg8EDr0RE);lIlctT#Ico!Sh1e{CJFzP7{^czpCESPFia=>avm{@qP$NMTDvobo}F zHSm*F!}Ug@LIL4%G>AQ0N zo^E2rZJx!p{iC=YqX13Isr@ST1#z+Lzm@wWc?(7rWD38%mPD&3cWP*s`V#$wy}SX3 z^iPt3MEF4I`{*D!FTanzxb~bI>R~@fl!`oQin)kTTvIv_1g*Boi@_WkeV~I%agv!2 z(s~ax?+{1X%}958P^*!MFm3DDWQOi`hMuFnYL3J0KEacf*!Un8ss>cc}T(O;81{`@AS%53hYNismQxc9=V z)e9JDr0#APCB91R`;>7M#2~m%34V!dr^*U(bNl@ZFuUl7ThADRG%jR@bnQlJLQX64`Y(S5rp%rar~8IpC!pA+Zb;bDN517^ z0-V~a?QNs~+WEepjn6c$!npYSh97&p(9<)%Rd8#Y*+w)lDxb{}o38IRrbMi2C+{|9 zmEc;BUs82vKPvpJ2vviW3iQH0%K)p|)>+Y5{WbyfXcSmi?sQTkh}c7(MAyht_agh% zA#f>hzc&!_>+L&nofBe|SMK=;%A7-8W#dp$=FM^u)#p){%CYex^`6=RR;GOrS?wvt z?@fur3{6wPcdq~nqyTB{2P2Vq%cfcHikvtm35su@UK>=K8od~mB9g+TV zq{wTZ^Ir}7B7xv~xe-pE{2aEbVaNR7Q-YhMa!3x7u{)JTrisG8J6EwWDK<0-Me{}4 zRuTjL*X`uXK7v)Pj8SiGMw5kNQfCYHKt29QRFKMQaPj2l$`4U^KJZHuB|F^A$x%6b zaKqzZy}@Au-9sIzL(BgV!X)mDeKIZod(U9d_6~l!P(RbEcM0i=Sn+t`@)7d=Vm@b4 z)s&{B!U4C!82QBaHJQV9f}mnM6G_fHfftyIZ~$rb#)0u!$#ocBR3G&S2D0O>YI!Fg zN;Sy1ZtOu_*CacY`Dp767H5QgYFMohYLQ&mFTc3uA>9uKXuv)0u`mr|xXvA1~-5yM_o#ez_>4n6QDj zAMCK^V}3Y=IaWq6PyCGL$^$3_oK4P_16^04uE-ALQKWu3*B7Hv(m@@()WD0v(3%l- z)7Dh#aeax)$7v@up7S*Y5hox4v%22#;Q^8-vnQ&(z7UrOTBmN#=HSmNy=}n~?A_$E zlRj5?{=FC+qM-R#10#1<9LbSbj@+HFrS0mQQ|1NQ$|*Z->HZ%d;* zWb<#2=*U*IMoJI)UD}+=m%*t0_B-?%I-Z^)*oq7~-p})mPPS9!Mq^V`Umef1vqVYo zmHB&lwV_8Oo@Y#p?qio5fBkEe?g6W%pABcMzc0HRU3^8SruI`kl)aSNBiMS}+{WV} z6NKw7t!v+z`(SY>vaK3eM6Z8$U1VQft4w~8(VlQI5wo{4ug09L^{JU@by}CHNG+b{ zBH5$Bxv^Z54KZ}sc7nalRm#y~bH!#3@UR?jW4LNOHy5eSu2?J)m?-9!=D{l5mI zFm(?>e?{cncaQ4VQv4UK5s^gC|@xhC*@vw?zP`lXtFe0`c43Sc*Fh- zW<%w1LCWRpawZyR9YetHj##@xnEZqFWx0L36}NX+6F;SzVnPkhmIvjG#H~aKc3c!z zxC&?M7+Pr0cuOAP2zaMCNG;g$Es$dwKlq3Eq^J%7kW!shzM-YNOi4sYUE?G2^ixvK zp%Q4hGdHfp!Es@qi;l^SaML=o#Gf2)X)2dpv>>KEv(l<1pSwl2Ot+<)ZIqlcNX+vfPOqh{Vsx}1^qbaK4R7p4J zBaayYjhIQ&{zS^B^Yim)j>==-!jum4VCoX$hOMB!{dUm~GB% za?M&{C^prLGZl1ZW$VgV6LCl(r7E84vXy%ynF6JZ2UvME4)X;=iNjTB=JaR$fQFj} zC2?Bw+uMS)9o?%z!MfE#7md=^izki)5gYlAvi?6{DG!aN$N}m!eKzvxE_M>r#mH-X zlU!~T(LE-3#{G3HYHzLk@3*7S50(qF<}Y7Jej*GU!cvyO1jsl{rXyE)iX%65&Hix? zX2#gQ;nFYMPO&#(kewU&PMG3ev3_jSj<*?@)e194eU2TFFuKk-V)VuA^@sF5NUa&;A*((^Q@+N9}JA*!>mnEZ&!eGX`v=X=)5Y&_*Y57R1}!DvvC zOb$X)Tw2rt_=+&uqpaM(&gbUts*1))|F27wnUj_L5UtDQrJuuMpjh+qmjHr6ZV@5q z?MN6(oUYH+y05JY+1uW>$5VS(F#4^5w+vWcaQOc@Q=dy#H6BEH#FjW%DWNi29W8lC zz;Ha+4Jq6WQ1$Gz12;7`#%tW7%9-^%hd$yixdGONoAw>2r0LVBE|zDaoxP984?JB2 z&T`Kl4&MN?E21&mP|F$Kkaq_ppjcwzAi=@&aAcTb6^C1e{%~sR0Rw1Ze%?p>7L_YV z(V(hG@K1#kL^_sOkS#DY3=iN~2R|VTxj=|-FWn1OU{HpCY!08M7;5%@;IUoRwh`b~ zYeE#ms)XRfgDA1A5`XDtIW8L~r`@B-$jIBw2{L@RXqGU=VyN4f`GbQ46?{w8WLRF| z8$3#4YC(9Z6;{6|9^g>9O$8~BP^1O^Lx>%MkjESo-+#Ww_(jbS#mXxckV3Cg^Y+S-y9RYT_RgKYi$40NL!%S|4ew6gUPgg`K%fiH=M}Z~Lwb?wlvZT$92PC|Q+>1_i@+ z1IDK~=-@OS){+2MldqoWYrx)7fHQcCLud^rLaDGC%I@6^fg=tHAKbz}(PC#<_H`j)E@zUnZJ=xsPkmS^y@mU$RX5egeO z!1x6fCps+^nA3pk-Z;%vKVNM3KcV(e-+ns#HX#bi$8guKH;06p6WeCCsxJoi(ECSk z*pYuv;RE})C@aRt#7;uBeqs zBy%9bvvo^L5$kMy!TeeVBPQk<1i0@Zz573>cJ8np({WT=f&e-#0n*M=P5V=G!0ows z_6J!W^Uu$d<2FfW+o4~U*WN!!jrB9S%R?LM zUisRysJ%RcO@JE&1l5LAJTc3N?0WtF3%ra3{7Ui8GQ%#{g(NW#v} z&W7;bo+BVRC&j1Ffr82=jcy6%$@+T)Vw`_`O3S)!L-NK;T88ARCI0m{7w+OSh z!%+YFlV9=t{QUV-Oki(K+!sWRMXN^?oI~yE1`tFH{0v~a;yIszpsih&+b>`E;%Sjy zh4a0sEWAJZ>i(A7Wu&c}sfUk~Oo3z312*zbZPW};@d2eYSrGji4cJA5=RY%c3&6<& z_Rx(2)iKWNk~S{d*dk*>g#`Bz7JQjm5Q6~-@YICO6OpCyLehEMt!u4y({<+ao7|b^j zhG_f3@EtMpG;2=ScrYfHb0iP|KurJJ3t%Gr+9C$CC&X_@fH$SdlZbfqZ*6p-MCpKU z$aQv9np>HG{uJ!4Its5X@1lbEUTb#(c&Y04mlquH50RLlC)mll z%HmWmJ*z`%L+>hMDE;aYQ{)@?xICtX3)uu4e+=9Qu=mhUf4c0*=?;Zr_ED2sC|1H+z;zstS{M@uSRlY*tx7z7X1>U@ zCSFWQ!hf literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_man_active.png b/app/src/main/res/drawable-xxxhdpi/ico_man_active.png new file mode 100644 index 0000000000000000000000000000000000000000..9995d0e222c370eaf60be8537b12ec3de8a102a5 GIT binary patch literal 9114 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_battery_low.png b/app/src/main/res/drawable-xxxhdpi/ico_map_battery_low.png new file mode 100644 index 0000000000000000000000000000000000000000..f47b7e3b486d986b7c5485be2510907ae2aed38a GIT binary patch literal 1324 zcmV+{1=IS8P)$n18rGdmNq`!M%$=R4m$ z=iYnn?EU5vR;cCM+iwHWUM9L1z|8<+6{c1I{$QZrVE!bQ$@CJSe+$(p6dJ&!5Y`;? z5fJSTo2vlN{FA}l6&n~B3X?aKz&{g-hI+$DgJ^3Q5@oP6AiCSK?R3!mp#)}yI7q;u zpq=}~4O&vR`;5ITER?{U5GMg_ab=xiqIaRx=cZ|nS3+u@*)o7mFh2?4RyWoJZfcV9 zbS3$gVk;JSI+a?xaeDeL0DAy*6?Hla;L{*PT$m()`wMaqNdn$v;A_jaCo9SCTOe=V zye7YX{Q(d?1Hh`JlNF4;$iRCurup)9Cr-@x$?HpCK9RVRP4im-9e$FoLd?jTxw(5b z3=MhOz?ZtjR>1-r0Bizq z*-okqox1@eWF5kR286hHp;pW9ZI-0=} zV-+pYT;xIj9ts;7c`))|i4llA7}i)7;A`50oJw7hote4A0M1#qtxFpfx0)816XJCM z&uUc+41uUSZrfj0qO$4&$AxHzVKl}kC;Mr1bk5g-08rJ}C9PmC5w`5n5G& zxn!~%L@zB8Jww3ZnB%-pgM)LNNYv#`vp{f>pdO{v3oQc!r^*Sfu0SEq0cb5E_^UFE z{ZQ%`11L)#fWyF1#oXPR$^2DHXmtf9lOttH_$g0j@0g<-0Ca1ps05R`#*K^!4#_Vh?HavV@|284SHU~IF3nhDlffwUa zzFKoLSWGCNNL;T>^ECqYx}Py{$(owlSo|tE-`N@aTdBIM`}@agZj&izx@>#9Aj3Ee zU?+fi5bd{Y`z=34t;r?29Px>^wx+3d>n{2Ia8mP2w9*;!im#bX#*1js=aIk?BNtWG zq7!{kLj}M^9*jI#Vgw=&2Jli)NaVrDgMK^+w8fYP7COyW3d+9|JhW%uW!(elfIAl)42(`gY?rMY!iIDc=Ys za4eN-G^eNa)s47cQmYh~cN!XQXgz*>DwIGC9`ERQ&`_#J7lc-cyjM4hf!%Q_zwiq5 zT%t<}vO+vez)`PqpjU@0@I24J<8dkVfO|II0(B;BbeQH73_P%S?Rd48t=`FhCZLyQ iXOAqE8$H$i8}JYF^buxCm&3~d0000laBrAE= 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_gps.png b/app/src/main/res/drawable-xxxhdpi/ico_map_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..f47c6963c0341074efd108739e04497f76bd3566 GIT binary patch literal 2402 zcmV-o37z(dP)5VUcF}G3-50a}I}X_uTi~AG;Ttc>cWS zeV^y~-uHQ*AK!C?^B@~GkT~!`9tXY}np<7l!J<3wB!8~W%egk->(98P1+qPDDL9Qb zP3PMFc>$Pp`8hDDCm4bDw9S+Y1>hUN^${>{I5r=@Pyqf7sEvR*;MffRzXzCU<0cVy z0+&R~oYjMv4Z0`~)Pz8w?cwsOO@EP%^)a;bHK-vT3J9Df_Q$FYN+v)|Ix%BR%g zhrm@a%JvUD&De)#aIBQEvH)h=ScULFjIupi!}Mww=#@E!omRF1H<|4E*|jkloODqs z2{7Brtyt`i1DA)}7umd5%!)q`9vVWeCtT^Tvy{VEAK^f$c`ztN1W{oGDKIf@2iGQ6 zN&|EQ1>+4G4&gB-?!Kua+3nPcG9R#k%OX0Cp|mNiZA{S?=V7LuE2S&A9;R^pwPQ1` z&j7P7w*&141%5)A)R^R#Cgs^yK7qy46?8Yd@(CVTG=<+A^_}r!hbi%>QdjH`Dtdxh zm!AT66c|-jJE?B^q1WR~j=My8wnVx&;Wz=@>)33F0l9`V*)=LHj?JgzPB9kXifvrg zmEi9{BC`3o)KHtA%)3#gA-L!KYgX#=$2|9dyGk; zxIi+xNtMx!DfaaI-A^b@Iet~-&YePngtAXOM1>m!>VSbpr<7M3Y{rS8J)dW`Ge$f^ zcO<;%B$-_)K))NgJhI71Gh}j16J={m*tH}qzEVGxLp`4_Yv&s4G;0v1oAz1C9Stcq z7etDSiT-%ku?u_+wi-ipSsP<5!4J2ntaog_Y%uyfFwd~QrM83FarG|bOMeDTGwj{u z*vv85`abZ5aw01L7#JDC!zgzHgMlt!gsGtxs88Fh=&3w(@`$0%ol01Yh@M>3vF27j z>{;wLgllJK4TG0V4*cnsY>s-AX2T!S3A}}nSLKAIJb&#`R!X*wW`z2f@apxmz`V50 z#>l-GAs&Az_XJFKvN<-R%rczH^^K_je79s=<_Y)_Q&JRGNY>>z@V=6(0Z*8+Fxk8C zXWAGavSz(iD33cSzFCgmOpZrI3)hOrq;wrG^*X^;reLwX9KFCvAD~}gi_Ku&x=a9@ zTqY=m9gV=!w9Vpj9Lcuv7*e>_vKSxbWR~TaY-!Ndlp`l4#`2`QuKEfrZ*;o`LUP8wrW|IcYrG*>y3pz+sZ7g!lE4RZSj=*7pC|} zPhH{3t&ORHh>%JrgKnyqH05}!fXx#+I(ITOdfNWRVgQZBTRg@_$t1s3Yj)YK!Ywhe zcuHZbDEm}=-x(DGGq!5LF2`m=Z(?xD#uSX~H2|j6>4Kq1bit?}_3=0~Nvuk1jK9=J{12h;xq7>mtt>HQo2UCr4 zNrihFll-V4G|#-$@%zx|TPnJ`xNhQ-poimj!(b@0p+H5OVU1;Z>s^6<`aiv!U~AqpU*4SmvUwCRLQ zt)n3Ul}>J%9BV`R&$M{Y0AboA$)IjlO+vcRAEM2isPJq$Sy=G<1n|igE;}`VSAmbl zAUGuOxl$x-x#&Z>(kHLtsQbSTJk6M@QTM@JJi~SFG7Pq7{q_^jDyiYyCdRECZ~>EN z@f{>!4bI=ommc@gpT+#%vDkRksjx;o);V>&UJkHkmvJ5esLz*reI_2$qBCMK8zrgx z=w|<811w%Ba+2L!6y8MGVR^i+aL}_jnt&S5W3a$S5N-^=fHGyssOe)W%#35x`&=eW z8^dt*sf)NfSn4$2%)DZ;r;Q4 z;M=N#=&TaqHH8J0hGd`0L^+Q8T!|0QAY>_vcwE8hmRLH08A&EH3pKNi~rE2cR<< UGafmFp8x;=07*qoM6N<$f+anLq5uE@ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_light_off.png b/app/src/main/res/drawable-xxxhdpi/ico_map_light_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b68f39f24516aecafa91d44cd4c6a940c5d96273 GIT binary patch literal 5450 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 YE`I3gM!OnZ_DBIjT~Dn-#XjQy05MNIR{#J2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_light_on.png b/app/src/main/res/drawable-xxxhdpi/ico_map_light_on.png new file mode 100644 index 0000000000000000000000000000000000000000..5001283edd0096785e02f945fa3eefb745e3cf16 GIT binary patch literal 5830 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 JNzE?$e*jcboSXmv literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_navigation_go.png b/app/src/main/res/drawable-xxxhdpi/ico_map_navigation_go.png new file mode 100644 index 0000000000000000000000000000000000000000..49739e87309bf36359e98406d736f4b07e92c443 GIT binary patch literal 1397 zcmV-*1&aEKP)Xj90&04FVij-b=}F#&`Fw%gKsOofH!Z;h#=^}ldht&F1pw~l+wkrtD>Se-J5z) zQBXlq@uc`Sc=DvkA}X?L>C3j;gIX;%$xo7*>9+HlmnV6i%ygiqNit79^L>6#p2^b? z4qgKVEX$hu*U^r%=A8i3F#u~s_@>}Yyngxe?`w46*IU4c`^VL00X_$y+O-v71#s^@ z0PK(%3b%KA#+L_xEs#iXR}udld%#Mia-BOdb*gVy9bDtwu?6(uoXM#!0m_97 zzNRg0N4vFM``TZe@}sZFjGil0&V?(M zb&Kn2XF+^2Cp9in?Gu*30M4VA!FUQlAqRuQz$S(ndG{V5_Dp2d;G)*P*a;j_xX86H zGTP>iIMK8Jx(re?b}UYsaiY1#Gi~CT#}J@ z--Wbp*gpffZ5#oUrZ4Eix?%G;;`#S^``u}a;^71St;*f6C=E}#t%&pm2`pCauZi$* z(gx*hecHwI6P7r?w;Bd|mVmDV*`gSj4%BFeL^$O>S@X#1s$_Pte*Id|NGFI^D z0b(=&Y5;sR_SdZFjv~|71=xAcl}f$pOu7wXzK=lnGjOw_E@7J`G<`z>J6omC%vkJE zgW&(6kvCA$>5B}Qb5P;wOAMGN&@|E~9I!vA=KrJeF^PjxD(OoduoE=+$&8&d06iDB z>WkPet@LFM*v8Ne`$GWFiogkRjINdSA@&KqiIkt}i__NKq|pzdTbXFX?v?e44%e}> z6hOZXx?x`gP!oAFJ&u)X`lNMX|AR|L?NbInnJ!?u>5~em8`dd+K1dNT_4G*vY%WHk zU(y3iKYdaGTXk>=z)T8=nWRrXVAcKtgvZ1KW|KbYfJMVTO~AW?0W(XVbin4!#JwOE zFuU|g2W-{BRRGh15Hn4mB7oLc06iiGFx&Jg0a!AvIc9oC0AS|nQv$F!ZQn&2eoPLS zefpFD^lz<}410}%N&-YF=~D#|dgALrIq6dduxQj~3H)Bn1WHSvGJwhE#q!dp3}AwJ zvDEab1!&qIgYk5CM+^eG1zJkrjkwLyzK3H-*Dm8BQM*UEIa zly+aZ-)WT$`!fcf==DAUziH0)J?rc1{=#@AUdjOm59FEfz6ZhV5ZVA!V{`S=PfEzO z8lfDZ-!A{b72v|#1Uv}90pVM~UEEw={zD}^zb*d*x5ue@psKwm00000NkvXXu0mjf Di#w=7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_map_refresh.png b/app/src/main/res/drawable-xxxhdpi/ico_map_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..8e02e59e716873ca1f335da3de990fdac3383486 GIT binary patch literal 10757 zcmZ9SRahLs*0qPh27=50L4&)yyGzhu!QFzp!vux|C&Arn=?(4vw91e!UE?Y4(g$T6o#2<~+L}3*Z#wbX=1pd#Vl> zGc`3;O&P>df|pX4QA1PRmFvd+^X>MNCB6B`st6+&1X;Lem@f;TU8B#*8GA?j_gv&SsM2!pnMt7F0Ps2}7W<_Q z1^`M;gKiOmy(5$hOV48o97=CACCG{?aXItB~uMyD`S|l#q|uEL7`nX;wU&GUMedJb_)>Ch3j;yw$l-Z6b6w4@+1fR%m&aQJwg@Z^i4Fd&kWk_9+U=o=d@&hS%CX(i`1n$e`f*4!NY- zX<{7*NKjrf&h#cGI2V4EU1Fb+tP2T%Lo8Anb#6k7PUO>c3I>Pj>+Yz4Q~IEC9}-!(aKPt0z~slF>~a31B7!k6P+XeDB2$sQjLY+D+?i#3w`~HB&Qmo;1beiVC*0&=ZUKk=gC6g!c>P zW$e?lnsv=3z_g+8DDL^;(So6)x`))?8tPhh9GdgVtElN$G+H>J0dyn7A`at7-$9Uk zRTc4M2Wyq&PNA3xOtjQT&0k~18Qp|>R|hUW(x**^g|B~G$0?1}xO^N+O7L8)^Xz>k zr=d~Yb=A2e`UxIIOh?1T+R+I(DUp7EpbOt22|8uNDYoNUt!&c0#YEwBKHxxwEXO0`<@AKhN7uVY`830JJ$Ir% zLA&p*>yzvjZIa%OyV+sT#+;w$oWZ|dEL0_fi7Nlf-;>4B14~!37YCS`t^1$aA}KEy zzg*2H+?oM_#ejzG*@W6d+f~tsUF)gl*zp4W$jL#|_FcUs6qCU@rP-15J2#H%@UAWu zEt;DzGfYwk1Arfk8xH|i0aqd8A;K;H_}k}Noo!xn5T|RD`GeB#mdTiM;6S4q&7i@8AIHYLw=OrPOkV;8<8&OgJ^t+- zKkSTM5wIGp)!4e`tPvBCoJ167Ao-8^*b3M~g0?L(-a(JNXN)l!Z0D&Z1da-6Vqi1a zi{)V%S$bxl`Gl>`*2<-|g{^b-N=!F_@I2{qJ4{kWaXJaFij8q;Hd#x)5mm zD}2kaC}b*HVvt4-DkJoMomlQwJm;FNzZRIhc9AWw&*Q_t*qW&=S;bX+xT?38Z5E)j zKFOIIZ$f!*cDE^Ec2EjG?l@Poml`IDe6hMt$>B3MMH926 zXP0QeY4GZInUK*M$h+MNY-{|-WkZ0~U@kiZYB-^z=SXN5zU)53Q%*>#W?tsJWYX!~ z6I29!BG-^muYGoA&zKTna#=gf`}#X)lT7cgRe|=lGI3fpBWq#F5NB|22kz!k_vm2H zV!Wc|x3He+z*d)zse@r&yQPgxCRh}Xa8xk^WDAX4vxo#3`MsquKCpd|w)ZZu4*vrI zbH~y4gNN8dzC(go_vwTGY3!hoQ=g8oL;K`L861@`}bP)5!ok&_{$%jPPzF zmnL|jicatshhulu)pA7T+)Neu_%a7L`#4u<^p6LMnhH%RDYUn?&7N)fagWJyDc?0~ zz+BH|J|L-aJS*t-5iLxut+8qn;8{Imp^Xg!r7gV7n**)mI+LyP6oc5CX>tg5MaMQPwAurXVXEc1=SyyQ3vG& zRa4nFF0NN^4M9eJV>INUum2j}XJy_py>2yrAZCmW6;qsVbN6jY6$C+;)$9L&Vmvj- z)|aDvKQ6jmr(I}G@9fuTs+_S|~1kAg#a4hTps!PDE4!k}L#NVqu4=|m5) z8@z5vZ~5-#j>3*axiYvcQ{HM_U&1m_p~O8t-gx19(5Sx}G#Pr*v$_FnS0`f-a9bZ(G}**T;wW?+%764bIL8 zOt`JiE+1NiMMtOgo%(3jZp4dbvZob0BEY;7?WKe5>RGS0lPpZ88wI;PbdcQSbbi-s zpIt`y@umcxRXj1D3t{)m(4-xM<3)vm^R2?ARYu%xU6yevnFwme7aL(Fp-&_D3p!e+ zEiY1k;*OpyzB1>)uUDd@baG3|y+_G_OOsuOAIHlKtY>ewI*J~d7qu-pNUg@qG}wy} zw;3~ieT;;~=WJQ%^`ASrM2<^}PqP9n2;V!N_6CSkM+VKRVr#c7EYoH>3X>WeUQ!-D zg5P8V9zI@~%mwIc1>`Tc-eZq?-^oNGw?h)FCU*S1BK{}%B6t7!xRvU^$EkBMD*b7S zg2n#3?f7ctmE~FAcXC-0{GJHxWR!HCjHDDynY#s)07}xK6u@a~CPyK*q#kLHX~%z9 z)6?BP<$bKWsOivYS{oeQD#VJGpT0AO_mx zz+qtGwEs*<(6o3kFR9ev;Yr(=Q&?VRjVyh%f2K&pO&j`N$6r0C2Ps2OMf@(pBQuxh ze;116;%hjZ1HP>1>*NzmC@^ai~IQ7jh|bEy^S`r>}}QcNkf^Pun*r~eNVbKRqAM2GTIFt zD*adY%y)6Z=(Z1Kx`WUMh0Aw}E|cN{2zw5(+C5@Iz%QzR5c9&cTA>5>f}}q4-d$RO zbbYmCqm$~1oe8Jv`*Ibcx+8Y6R0*}Nrst#M2&Jcm>YVf5q%-qE?@IyOKbcd>&5UVi z)j{P47q>Qy{=!Uc4P8U%5(DvZ5MZg!VLCCNV_jBtp8TKF=lt?yw?bm3RxXqM=1yS? zyyjw_=YRd}%?jYeG);f^$16Nfi}d32h4*9J$e&2nsgUNZx}7FJjINh<%q=PccIl4| zW`iO6EOR!Z_24&U=)ZAvv&oa?aFA_r95jk6VE>xn$7{ygaU z*gZN*aE76+IW-HPMryPXrV?owd^B9hVm+b4ByOs5uZ%&k9(a3smPv*fhOXyZbVK*^ z{&YIfC6k?Pr`N?uH15YlKd)L|n>Y}$zc>?Ltir90LpZ1J9M2q+ZBVqMlFMw<>9nVH zSp-bL?P(Dwe#_xq6$Qsn=IcMutdx20r+aOsuwGCuF{3Cl;&XF(7HEHcvPwfpMfwZh zTSAX;gtbaoH8cM1#F6>2&RV+?E^dt4m6=_DKz|9FggTLFHGzXq1{d6yPhwj$m}+Vl zGp*N@iD=&^^ZektQO)nDFS3jNx;Q2OY4_K@mpiNCbXfs|$*`F0j-67cqlPtt>uq~s zYr0|aU|ErqMk3>h<#X~(vu$TlV#T#Z>G)hdqU>JB;7Pe??5*o$7Bl{p(2jn|RLr4= z%R9XnFG-BtqAayKeSQS^&*+<%-%Q5#73~N=wD@_J{#5i2e-}BA)F{$1M&LcxV871H z;j@-nAbCt&$Im#wcx(Rgwoi8KY2>DG`fP703M~TX`&|9Fb#FmOR1C|_jxQF-STH=X zIO}()<*!wVK6w5F}3RhrnS-VxsDf*Hy)#?0h zSAur@mcMo>VS!ZkdDSU*^gOu<(7!-0Yf-hz^3OE?C55DrPj6*O;7VRl)yJlL>wqKz zWK1L|7EdBQ9G_*3V7SO)-jib#T~DB86maK3+l;#?crk!gf$L4>$>cJ*V7ulb*G@mo3O@!3>;EI3nw>^iUmoc;|E#$=z)sa|Ru#YDw%kH@NLk=5j zPcl(sS_I+5-QOErsrFDdern-**B_Ks%M9{Z;?f`*&`>Nh3Qf!jbhE!m+G(8!{cOMMzMEtaXoP;r7*ms?gTp zQ90q@9DC)bk=b{HTI^UX$6GbY0`%-vjC(J8$yhW$+O*;I9?u&XCGtfA+3v13W^$Z| zx>`Min%00+yaNFuu>yoT%yuJvr4B|kO7OyTI}0wd(<2K>URLj|Gi#VFZ{gdc&WBNn9PDaKNgKho}tK}vpI-@y{ z-E6RaTDHQfLtx;0oLt-ly3u$OyOsAevcO%KxuUP=&Ov09{u*z9tzplMtn8ds6e|TO#F5874w~7#g~&cQ@)3d2!dCiVb8{!*uNr1n6CjhJ-vxNnO24? zF8==UGnIOm+QX0v8ZuX3z!9hl7AWfU#Uk@ttLfErr=v^Y_}8g9#fHiU8prj!TGz4a zlcd6Jo$gNm=OEQiTGOrdl=Z(5nu(W1Ex+A%D^}g9bl024ze&581s)iC()VqÐE) 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 BXv}HteF#s$Bfb#(0eE<*yfQ0~%27prl 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 AhyVZp literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_pay_hot.png b/app/src/main/res/drawable-xxxhdpi/ico_pay_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..04cba843f24cac9a5d765659df2f4088fadb5292 GIT binary patch literal 4373 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 P00000NkvXXu0mjfx~mxa literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_pet_link.png b/app/src/main/res/drawable-xxxhdpi/ico_pet_link.png new file mode 100644 index 0000000000000000000000000000000000000000..eb50c16ee29d9ff1eb6d512d31f7125ee0d6c3fe GIT binary patch literal 1481 zcmV;)1vdJLP)9ka7Q2SBi9{{ASs@^WmDd0~?RI5N7O$#BqTvLjaC8qq zPuajH0Nza^zGx~IhYX>m+XO!X@IyA4(H1gVHBI|>Jn4oK7!RI_zU5|N<4__oG#;2g z9KDx7A6Nb}@KGV7J}_$poWRe;=mw{#RzUj0%02?_FMSh+bxjQbFzh56vI0{9Z-HzJ zD>n(icNM?_8A}H>?XQLs7+y)wRAK8b%-xj%{V|OVvE~ z0N&E^2cs)VpraLiB5_$>OPpv3fwo9wwO|Ur+KTY-Tr$>Amh%$|S<N%rBS!kLdH~ zwBgjL3k@M4g_SP>+*x*(GJLdZIGHTC-TS3TBnngb4S-bE`ApBK8ym6<1%tu)MX|X6 zhOe}N5I>pMQg68hzaSLqXeQqw04u5mESTMc>Ga8l5RgK#uNjhG$*Rlup&s zm@4>EeYwfYIx<3gduPyWV!w}lgSp)4eoHPLR8zNW~aH5j|PNk9)1Zvdlp%nbJd^a}thMXG6Ib90`+_n0K~6L1H>TQ1Z00Dj6V z;19cO~ z)d^u3pgjzHP2g@Y-UlE$fH+H_&l%>80Cn2+iK%zg#P;D_@^7!;J*ChD@W62 zl9nMUtXK!vaz_w^PjyY*WX%PGix(BC*e;AxVQ{c72f&;Pa8E_-1pXoyZ#$dK4pa@N%U4C&W1sSp6Z60lCXbyLU<`0@&T1K@U>6RUrnSNS#!bPe~bryEK@l4Co; zr7J*X93LO~%0wUDZ;i$LVv(&@Fk066O3$e4-0FLgn^?qMU2~*!7p!-h7RwM5Z7pcY zSKJzvWqICt77r3|OEvuk^V*?w+Ul;ReM}$_kmF04jcW73Ca)^wQpenQE`di=FEN)c zYL~Kyp3i5JmA=-E8Ba132uO108nAh!Vnt{|WKdPLdRCpl19)A}sL#~Xy^{F}1lnb} z+hno&bYTKF4`tNvCv)Nqp5M?jsV!Fm&W*0qK_*JFlCNHI3Hx+S-CWDqY=Xa(q7LJ- zH_6iZ&-WEFsZYj>w#DOZbkW>z&v~FRksqru2Le`9M_3%bydj|v1km1QDxSC?2!1xP z4ooiqh>w|QEclu$U`@1z;&FkDf869@S!Tuy)(Oj`m$@vh5Dj&BP*w(D7Smj|-b zCR+D4+R@Rm!0@$v2rl)wb8Vijd;Ae%Je$v|KTjJXkA~_JsMw3g<1J@KjFl$1okSig j0w>R;(|M2nrd|9$BP>QoyH8mA00000NkvXXu0mjf+)<{r literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_photo.png b/app/src/main/res/drawable-xxxhdpi/ico_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b2c014d3d0c87a6bec069d9c3635fdb4a469fc GIT binary patch literal 6015 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_recharge.png b/app/src/main/res/drawable-xxxhdpi/ico_recharge.png new file mode 100644 index 0000000000000000000000000000000000000000..283268b0ec98df04ec9e01f6d609c9c34aaaa131 GIT binary patch literal 6752 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 WZu0zjCF#!*prxjVEWcy-^nU=5#iSqr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_search.png b/app/src/main/res/drawable-xxxhdpi/ico_search.png new file mode 100644 index 0000000000000000000000000000000000000000..01f32b53a22dd3ecd5cc38ad74fbbb45ae3d4508 GIT binary patch literal 3713 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_sw_dowm.png b/app/src/main/res/drawable-xxxhdpi/ico_sw_dowm.png new file mode 100644 index 0000000000000000000000000000000000000000..0515cea2141db10c99feb108d26a5c48ee35e268 GIT binary patch literal 1257 zcmeAS@N?(olHy`uVBq!ia0vp^Q6S901|%(3I5IIXux#*jaSW-5dpkS&#Ij(KQDJ6DNfV!vfXd`PzYC5m zO(~Zya$0pbOz^QHP4m3c3u)WT3-~uk-Qcfa+Yx$czvI@elMFZSZMfZFdVui&_W|EY zW!t$f6b0q?nQhix+OTuw9*!7Gu^Va6zS=X!824W{^OTM@$}wH*f5D!?-S5PsOnsk8 zTTg8`?wPhtc1K>*k@u7M-URLPzp$TyJzV8?hq#4Gj`3}-I}sD_=XvhCQ)>2$<*!ab zsP8gMxob{2PL^H{DQr*>_CGdQL*x?1tZ2 zPVbnedHmYxe6#NV;iR;7M(f7O*^~CgUb-7A7AkuBj2Q#}^^96>ovB}HumAk=?1gRT zteb%c+z)V?o{ZOjxo}3l!AtwC?Y-HY-}?$-~*X`gH?F*}nJdb8yRTh^ry zTPtQRS#K>oS3rZOq_H+Aax?#WjZ@{l`xbueJ-euVW-QAdo;SgQXQD3@tJLny*x1If zZ~=GDdnY>vzO{|DGndGAYu-B(#;~68ci54iq89O&o_Al&{GDU*g6Vh3gW3bp2Rsj- zm(-i~CGED;vvbCqiyO@w{%X(r&m5um@^b5u_!Gv>K&PE&xu?l)Il1V+@D7Jd)t5!m z(!9OySe?*T{rOudhlg#~fjF)`S0C&VowO%8Qzos9?L*#S^QTUp`Q~h|D-JDK!2Raw zf!9wpN`or*PhI~ry>#pBo0&^jTP{hnj8Z*${p|-splhmCKV%*5KE1nHUro?xb1+xR z{Z2orduP{7dm?*6Az1`yhIixihFx{vZ9L=8s-~vhoB#V#kqfKieV(-wzuZx1>3)&n zAbum9q3%^U>+j{8nm;$o-!GI4SGb$A#5D6BX;=}$qu zNpgwz@jc>m<%|87mgHye58YvCfFYhF(MFFkjvx05mBt{u0Ezus?&vE_fJec);G&p^Mc z?6$_h_`84N$NBAl{=Jt!pwIEA===MPR+av7#;jFu4ASd*=cOKa`Qm}U{`5YD2Xx5R b{~3E93TLTJI~WZt!WcYV{an^LB{Ts5KJGyF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_sw_dowm_br.png b/app/src/main/res/drawable-xxxhdpi/ico_sw_dowm_br.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5b3c45246646ec1fe4f670f0db1c25df3ffbb7 GIT binary patch literal 1549 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 Z|34LmUl}Imb};||002ovPDHLkV1f+_kSYKG literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_switch_on.png b/app/src/main/res/drawable-xxxhdpi/ico_switch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..42d0e0ba9824af2bc1304bd74e4c7667ae0cde99 GIT binary patch literal 4591 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 Z{{gJv3$#b^rQ-kq002ovPDHLkV1h!U*-rof literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_unlinked.png b/app/src/main/res/drawable-xxxhdpi/ico_unlinked.png new file mode 100644 index 0000000000000000000000000000000000000000..126c1b9c2de1154d0cd1f5405b3d9c74c0437910 GIT binary patch literal 3614 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 TG9}|SkpTBq9-u0eEW-W|nO%KK literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ico_wman_active.png b/app/src/main/res/drawable-xxxhdpi/ico_wman_active.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9d58b9cb1183c061659c3d698f5d6420e1fca7 GIT binary patch literal 10734 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/icon_tracker_device_small.png b/app/src/main/res/drawable-xxxhdpi/icon_tracker_device_small.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ef1fc29602ef9850d4a1303e4e154599e2b7a1 GIT binary patch literal 26827 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 MjH-0Cq-pT~0QnP+8UO$Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/pic_history_location.png b/app/src/main/res/drawable-xxxhdpi/pic_history_location.png new file mode 100644 index 0000000000000000000000000000000000000000..991edb138f1a7483db26172f76e467fd564580a2 GIT binary patch literal 7775 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�W}B&J9BPYVGhoK{o{N30O$Xoi955c) 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/pic_map_location.png b/app/src/main/res/drawable-xxxhdpi/pic_map_location.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb8fa6bd41c3c2524a744bdc0e013a0ac500fb1 GIT binary patch literal 9155 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/pic_wechatpay.png b/app/src/main/res/drawable-xxxhdpi/pic_wechatpay.png new file mode 100644 index 0000000000000000000000000000000000000000..336cbf5a253eb006d9efe52f202e8eb2c5a94e55 GIT binary patch literal 33948 zcmV*BKyJT@P)(aNwvm;)!5>o3{VUR`!vU>!9@uu)9lt7^b3MKHLmcUO56pz?PqVun>m2{Rh6y1%! z)$~#7BllNnPwK>^#uDjFIWt7+?T^29iYICjkUn8AYQ10)}CM zA~>MXWNSgI*8{K&uq0~70>uzO=tc4On_}fn-G>q*hwTs^pK_1f>b1dQp!@eV1U7ZfJ{dW5DWqYt_?Cf;WpR;rAN5Ie}IecDtcVc6;xPgAj2;*b3v?z8Qjrvj*_TLeT%`Hw_LX{hlqIav{&P=H;erb# zP$+@_gam##P+X3_(Ba^#11s;pzGwR;{k4)Z6N5~p1PW;j49RWU41+g*ibR_~Zzke) zd>#PM4vsc&J@C2%!VV4|&_<7Tbplz2Ozz>3g9i%i$N++5_;v^wD84=V8$t=L4b3n> zvkVAGio2UYx(We0S_kP_=|HFHpn`R!*fwQ5TmYrXqgVCmA5o>EEacaGN(q z1q=cRMhL)42s-&=WrEi#_yE}tzey9IFlZ4NPz)159eoHU49n>$MvUSeh;eD_{K2JVk{IEtEi^1pcoj@ZEtTEIGW!miwEQUVC!6 zag_9pm{rgq6Ig(h5P^^ZY)(SpKm$6_^P4@!31kvtfW+ZToTh-lZxX6m4v zvSNa3IoIHkzl<705QOIc`UxsrT%iOCCGdYQf$s(sEXxXJU7x+?R`~UH;n}Z?31t)r zBm&T*O_db_g)B#g(>lTV7`UCD3t7c}fe$VY2)GG<{5R8vM)l*fUmn`}bL!{AJ98Ed z@{4c)!fO;1@}&TXXclOK28IIAtFu9$L_-~$`Zqf@>Tt8GU7u0^_fJyc0t+QjD1rZ5 z349lzxD|JQ(8e392H%Xo(o`$gfjH7&mR+FTnrt=M=hOj=UCw zo#1FOEYf2*079lSqz$EO(?P12Li-Z!kM*tD|E~(tDrbMrMHSAfPy&S#D3rkGB~YM1 z5yQsFH(uH`Gw9WcDKWw@u$HSpOvpgX>bVoV;WW#1fl(DmQy&9LJ1T~pilx| zkwAd~MQm1hgEbdd&iVV@=~lFg0ds*lPLu-*CCed)Gp9{pY%n$bV4x5fozq-2lfks~ zGXljIP}dNZYnV38CI4xKdPvkJ0+~TUpGt!cdDWXZMn=dY3ZKqG2^318Py+u33FI3n zP_i6>k`Msk;=7Bk%PuY0^eE$oy_uyg2q+b>dWwr+B6UEajA`@>KN?M-oCppw-fI;m zQ~8$zg+Wmw85HVEfu5v+5ip=3HIR~=03wDHifCyR*vrg8Op9<-5vLjOL9C>~C-EK^-fxM9z44o- z@?)fx%TbJL>AHdSvP8 zF(mQ%v*%E=>Mu`QwP^V&Ixco&8&}seZQ8WS{FbRt7(3cME-KP1;K0H1Et)osJaP6y z(QoPRXTA5;)2G#ZcJ1gc7K;UlsYfgnW;i-JMZbLgdYiYm_lF^iKkFj+c{OTSUl$n} zq3+tP+rdgzEAH_e`s;}wIpvU$Q;o)q7`4{i+ybW~#K*-$x9+{pEnd2KTyEx(@7lJCf=VxEl*XH-^*|Q>N&IDEb_17^N`0{ccIB>u!JUpzlP$

sC-kSjPM-s`^8J=+xF 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 M07*qoM6N<$f>r&avH$=8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/abbidot_ico_1024.png b/app/src/main/res/drawable/abbidot_ico_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..5db82282c659d343212b26c95d32c79ea462c372 GIT binary patch literal 56980 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 Nj1A27%Pzaz{XgY1d{+Pf literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/active_tracker_help.png b/app/src/main/res/drawable/active_tracker_help.png new file mode 100644 index 0000000000000000000000000000000000000000..0f93a29a9502d0b7528a13abc690a3982c7ae314 GIT binary patch literal 116093 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 RliUCR002ovPDHLkV1goIPQw5I literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/battery_life_help3.png b/app/src/main/res/drawable/battery_life_help3.png new file mode 100644 index 0000000000000000000000000000000000000000..2df292c87b3e31fd2f8bbbd7ec3c768516a579f3 GIT binary patch literal 14251 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/battery_life_help5.png b/app/src/main/res/drawable/battery_life_help5.png new file mode 100644 index 0000000000000000000000000000000000000000..639f238156cdfe1585930dc0a8cb509412e1baa4 GIT binary patch literal 81280 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 i0~<-@Z3lI%zWx76|8W3qG3BHH0000 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/button_enabled_text_color.xml b/app/src/main/res/drawable/button_enabled_text_color.xml new file mode 100644 index 0000000..630c58a --- /dev/null +++ b/app/src/main/res/drawable/button_enabled_text_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/charge_power_on.gif b/app/src/main/res/drawable/charge_power_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..6cfed58dac1ea61f724470b1952bdaed17ff12b5 GIT binary patch literal 44421 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/check_box_agree_select.xml b/app/src/main/res/drawable/check_box_agree_select.xml new file mode 100644 index 0000000..0a32306 --- /dev/null +++ b/app/src/main/res/drawable/check_box_agree_select.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/check_box_icon_point_selector.xml b/app/src/main/res/drawable/check_box_icon_point_selector.xml new file mode 100644 index 0000000..d28401a --- /dev/null +++ b/app/src/main/res/drawable/check_box_icon_point_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/check_box_yellow_icon_selector.xml b/app/src/main/res/drawable/check_box_yellow_icon_selector.xml new file mode 100644 index 0000000..29bc8f8 --- /dev/null +++ b/app/src/main/res/drawable/check_box_yellow_icon_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/create_fence_help1.png b/app/src/main/res/drawable/create_fence_help1.png new file mode 100644 index 0000000000000000000000000000000000000000..15fae5692b0fc09d36a7b90ad68c3c0f88369881 GIT binary patch literal 46036 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�ndm1I*#t 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 z z26t4{bF-}DyiEC3bC7~52hf!23l+1XT(GJa1`=T@pN&Hm*2U(Pp%v5OQdt^}QYu1> z`-LNJn^itIw;If_9()qslf(uf;VggRjH0sB)NfU&AvC{nY)m2(9PAsj&{8CCl9s$ajs2GJBJYY#!P zKEg;er~`yOj-09)tZT7CX%lKHJ*BV5;|J=a!wfuf)m5eXOa9JSxu{OTXEU_MFj#hbn33Tna=5ga!N5|&_aU!i={;rs+3|t zwlcIkUl8rd`o~I@`NE)fN!NG|l-P41&o5-sXw=r$0Ygz9R$V51p_?z7T$c>X03_al zs|~FD-KeZlmM&lX8-A)qvPlvi26!gO#MLF%an@UQdn%}~RGIU&Sd?MBG996?5fmj+ zvpyW9#|6Q_Dvo9FsYSa=T>ncNx;6;O$!RM{3#kwFtE|v(=|$6KG@**Hjb-SwrnoOT zxWpx-wD0W;=zGY|+9qi>4zMj^RECJ#@2Be}^}ezGV8beGrzzPVBv;7@)NICW{H;r} zvE8PC7tPWsS|5;Lp`T<+xoGgLX>Mn2?{ljmqX;jw(+c0Poh&68JSC`@?y@r#(?f8k zBHS|STS-Y6zfGl%z!cjWG^Pr@j&)AXBxG26*ARWwr>(B|diJ|a@VTLPmKAr)f%gI= z-{CVeutw)}Mn<7|2f2JsM&V&PooJx9jH-(b+!C_@L8wR&Gk5lE+t{^k-8!Kw6Md$V z;q-*7*Q}v!I=ANYf`HeoT|?blZ(Vad5bm0FYiV|R7Q1W#sIdjtE<;uCg{1l13oo-D zE;9IA0S}m6jpjz!N4HlPZ}41SUbc)A%D{60Tn_0T1UzM+zZwXkT;eLqCCEx=2xs@U zsSLvLM_phrNJt+#8XPQgUrr{Ic3Q?H)OF(BO-9hojwOmna+I&8Dr`nwV7(I@2xF$$ zSlZc{2~<}EldO7)of28AB8eOoVp1VL0x zD_YF3Rbg=dlJ7uD<+!D`AnwD;>K^DQB`&Q~EJ{6YQm9%6W=?B7BO7DDZ7w%7Q1`a}@cQT+Gl2YFPV#HppnVjF2KnS>1v#RS;Q{)g-N+U#XV(-wGQ`H*FqdDH#LU z2ts0oj!@2A;2~1rG>3fUh77~)R23#H{jXJ2Q$BO4FD_AubKF8FpUs$#AeDIUpLN6- z1X+KmnOD*>hLj65Dh8QOB-)uEM9ckFJVU43R(%TuIifAe4o}W-grzqhgb{d7pdrb& z@?apLb%_@M;Q zlmGC@upqxa4wuDer4r-AGvv!#gxw^p%U%bo)sYn3^~&)vtb)P;t?g;#vRzQ@5w8NXc)AhK0s~+ zoGGEa7;rz4@(^xc(Es-L^~?Sv{)ZZ4=FFM4-WuwLQn_raH4w#!`^q(>a^>g9 zKX5;CgF~_$dW1-@b|5dFUw&vfcmu;qCJ!XoGXMez8>thCQ1{bPp@CGvNxV-*KGXUn z>)Y>xUk0!}ob07Yt@Nvja5*adj%pc!tb%tkqmm>zB-z+Jn3EN2&8l0~&?x*)yX_Y( zrD`uRX&Um+RMR)4^TSEg9M-6A6qB~Kz1)FIU8_VhR=PVfEvWV36VdWT@E&+3!=(OaRNd%uh*XE;GnV zG^Dmy!boU8S%+56wVb1b(n#ah!HsmrKN~(59fp9s+u>%62;Jg{c-cWR-JCKoVdqeF z0tv4XlMPoe*$&xacF7^KeHdNm<8mMgcE_^9F%7jXshL}m$S#|0`57mzLU&22S7wz| zQd;!cV<1_TA}zt)dskd-QMxTFDYx}PjtVJqL?v%YvCB|Ok*IxS8`UslaV9oeWx3EK z4h{oX)-%uN5PmD<*dd~FNNlcHEd>+mO*MTNwc{nXGG{?@T)tujEkOPOM+!oNYR?P9 z2MkM=2LbC5#XUhT3jjoF`O{je0`{2|#J$zLc`82MV3onDRjX7#O>n}P4I4M`bHROI zw|%X%{EQ{7fmD$PAkDsV zCcCxxox~=ZI&Z3-a;(N$F8AjttYIjkBPKRPg&~$%-Z+&2#E|YfNK|53#IbFTeIMLNS{ksGxpqpm8- zu!7&vYeQOM9#Jvk73Zkw*Ji`uh&XhjV!ogvu&nc|gxca6cBui$Y8NEm948Nn>Q3bB z&J6cZi_LU#7`iNQa-ezO@M%ymS}G%CvA zE4@u*HaqkIS#>rUnpn~Pva;{s-LUc?^J^Mn&h@U+9LxBEWN1I_bBPvbe^s{S9EH9Y!3`EH_s$xvJT5*!7$`NVk(K)&L2yS zVfmJ#QmZ6b8Isu1k#=o^@J?9EtK=Q^-qez8xYsEf!2;~FY2|!Ssvg!XE8k5V#EPm) zrfP#MhKIWcpkmP7R_4 zkXQ}_MTXtDU|`JqyuTK!nU14S&2j6Z9o%NrTkM%>A;C;{7ia8Bq~Z-Yg|s|6I4A^) zoSf;9p=OlQJx(Sr4==Go_`!1pu|h47G<+o05Q9aitCY2kh$Y9)&W!ECU=d!m`!s$b zP1EWovct$oqaugUVya(O$&1<8V-{I0kWig9VO8f;BtuG~W#d{}R+A*M>hU16ki4+~ zUI-4KEfw9JHx`1eBBgxhQmR<396X5i3m6TP9=~6iA<9rb!c`!tHQH*L@?P^aHj%LP zw2}Z!n_$RwN&adXNUb2EvMI}tI1OAf*+zlG1>Mqdt%Mm2&vv1AZSEP!klNZ1;fjjH zb8TA)o~c9`Or)eQW)vmaciCSO_Z51%e928IhN>u0DAYYB_jgidr%4X1c?#7Un)u?b z8<>UVg^sic+li3)(_&z0m2BBPPCS!>P>bb}Z&|tcS>gA|q+7=td>knZ$#OguDX}V5 zS$%Js`p0c3$zl|SGkPaa*A?M<)B-M&t#dTa!Kq$6=q-_767;7VTqOIxzowwa}Xw&(eqo32xUaus3 z+cUy2d}ivk)i=?>alaugrIe%xfC!LK8#SV=8Hs043J0_1XS<}>c=mPf6a9H`9XW(W zt4abx!fuf8&MZPS$l9b-F{rOkTH;Z_k}7^Rq&!ng&r2Ta`s3zh!`&LkBHv%GHBjTE z)09Gjq)dhdsm7`VrAjPIay8A0Lk(7qn5>Nm^*^p02+MY!VMC=L4Sz42B-t#-Y-eSf zLBp^~&+i7f3}R;O1(=S0z!GatR*=OCxD!DVO(l#FH`j3rv+B+j1Wv^#bZN3wjk4;Z zlI&29=W5mIU3?@9`0;oBmnAG5=TQ1v8QhWfH8NTft<%BXE9I6|-T{809WP7JdBe8P z`e_(pcK5$`&78A2l5PI^mq})WODZGT$Z%f9`Bx9#;M|U5iQT%oWHRfK5e#}opTW-W zhBhKu4>89~vbLs>>e4ASJWfJZfrVttu2ab*tF+`LTm82}c5NWj41H`@LrL;dzEEZr z5F}PRF?~}bWc}?@&htY;wGv{aSw2qK*6v2xZah~ zRK_0bd@jp9)pkAHIOrj>nWXLYz-4HCmZFyaf2J~GA(MGYx&a~4 zhRR@+2aB(PM zUY4p!r@Xlb$}GVq8VWY;*2lV!(8^K2qXf)22p6$V5$vNpc6&Mh!a zEi0eq+Ejv#Z)o^=U_5W1-6D0!xZmlTnXNic7=pDcRg^2X%N6Tb6|Kdagr|Wd3lY6X z5DruWGQ*Bx`?8tV{sGU{S;_>!#pH$3ILB6O8O{pB6bC0H6|pwor=4fEr8Mv5d7F#v zKtiQ-(l&xw%QLFfhMbxyB{xNfQST--K{k!g=RRabj&t6{J*Zk{-EmbZ$i4D68C z>UaO*YNKysYcSrbg4Tg!RJd-OtfGv2&US*5BXPNXqUx025ywZ?wQ$BZrPATrUtaq` z-B$P^Nb+s|%AJoiR<80ii@i9aowkOLiju* z+sBj0wxEv)i4gi$&HyEPMOKv;HjLIKoFEttmfIb{Fjc?(PohT%4Cu zt>M|^$83l8I{!BndvNHmuyr%x#Go#12()1I7hC>+oH|=ZHona2b2(cEOXGJ ztjvh8pi6z9_l}x@zY|>Ou`Hw6IH7!rCMw#|SE`)5_9f~ov!#wzhO|~x&Sp!? z=~iEaxK1PVLZ40QZ)XgRmg_!2>5FJh&rP8UD6zy^RF2=-WWvsF@rs_VDlVsR;x%S>R)3`R0 zY@io#xm-<}4P(}bknmt6!V8NScyF3Kf3!nSX|{A6*<>lzA+durh&jeQL)MswAL$57 zwWS(ePUNoH@}SZfJoOjn>GbJg(2rXL3qX34FTSiD41rK%5*gws#cP@|zvUzb{2!rgB-*zIA zdi#>BhKj+S`=5uPgWKd)W;NV_qTIPqTN?FON?T5XrF~hDGeuz%U^@XlwH1hiC_A`h z)ifa%X*R4RTYp<7SxeVismPMi`C^f?0wqkDt=$SsGa~oL0Ih7x5>8x1E0=(5P}mO9 zJ4tV41Csd>P=-WS77fZs6^3M+zi_{)El;&7cp+smMoS3g90UlT741c08LOPns8Sg? z+Yi-&bbwDdwyD$_EbAf!;hDkvZYin)H{{HM$ucXmrd6Zr8mJ4P(n`tXOQ;oxe722L z25$Xhi0d)}e}vm5;s#biBCGIZ#+nIx+F@n6vLd#;Y6F>Hqd+N6r<&wGo*T{a30%Uc z(L^I#BIe-jQWn8N*E%$8rPC75UQ^5$Nk*GFkKEpi@q2vSX))D8)rm~nMX)eNLPdc52S{=VqD6;BzF2Q` zS3-GSu-`DN4zkh{!$Zccw6z|=#(_9UI(``3uZo;($KWzPQY~XDwM^Yz*-M8*rs4Xi zrp4i&M+8HK;rk<2Sp5{DIQwfm(xKLFTj5eX1r`pnD#X^g-jt!VuId*iH9s4Q3-!-z zY#b_>7-2b=ro%J9Ld_!^cWJgcDb~A-Q30WrF>pE#|F8Nmob3(OZa6XNM46jv*lU%TZo_GMNa5_i?eH4)Ap+S2ZENrl< z(LN1GcJ-P;v+SFQLZStJuy=}=WF0%VER2}0Z&tsTiR}$0CQiic-Am<`gdtF-KQlv~ zCVYbf#(LR#VSVn(xT1o}%KePV-?2Tfs~Ae9ASGTT!x%+Gl9OmLMNK4GhnP@gFs#U+ z@#`0nv`qJY(dDSgMY2pJ$Zx9xez@--+Aa~?4)noPT4ue2fi^cXN)0@kqM->w33DDE zu(7R?`?+B>IDXJhmVp()Fl-1Lk%ln8nGg(`AR#0(0&xvvFc)?MKi-O$Wb4l>ylc3s z2=vd%6dU+b0aXv!pato?vx}0MG_?~26iyr-X1jtv#+GCo=AWta&b}hRG0y}GW`Uib zy{Q%1uNG5rp{Orc8Xc`UTEKDBnY1lo@^X_nlbB5M;zzLl*Mb^X@Eif)LIbG->ICbu zxIjR;D2^+y71O;;HdE)?B3_e8)H2JBBbshH2nL3*lDz+1@&@i*Diqq@%#`XKr2B(< z!SY*9_~`!)YR9cK0++gMHApgK8fxa#!Fijd5aQm?%Jxj#UciRaTK;?zbfqpie zO$4-Ak~Qn^G6^JEC#0@cMvM7LweY7!?6j{$+k_;`FB}nDTAk5pvWh`bR%T83oyYfw zy#z`Hj;={dFA8KSgV%&4Yq^hA4+%O!w8+Zs;7y{_Tv%#V-LvJW3c~5qIAKu*5n-L| zHiy)EC}}QBCt}~EvISHL3;n=PUCSpp_N{K}J{T7w(3PmT=NEqYTP9{7lF`0un(1wh7smvH}dUFJ8v`K;s zclKa}AXxQ@L6}3C1zUk=F_0m&R%Dr$Yh3wIfrG*oqZ|71+)H&qyZ}JC;-Tr_m!V(EBP>GQ)K8T++}bM zlv=N-Vu2QU%cSQ;bzM^O#XXn$XBr2{UNl}Bhn6K-qxu13DU6lSxx&S+mwiGLzR`A& zb`x=S_J}volMv-#XAQ|xGbC%){n^s70u}{<75PHy=*YVBAIRt)8AcgJB4G=^ zoTm#(A?rG(ZRt1aIHlLT=Z!B0y4LQVP7b(0yOCSBEOfF?61Q~1khrjz{i}A zHW4}K*`Jz4yVV5^_VpY9&l>JaUELj?Gh*)~;1m7s5{e>n`+JH7@D`e;rb5w>_?h z*1BW>!YgqJbGPaM{faI4iDXS7#UL=j!bK}3Q!zSo5MWx*E?S1!Fj6S0lmaq^he4?% zJ0FNNA=>Q>s)4Ny(h2lyXb-Lp)5c1(w{TqEyVjm}D+C*K04sNFkqwcuoY2tFDE}3N z)MauAZl#7`+Y5(K#C=KVk9)GdUNurJP~>!s5GYa!NwAO}y9NegA=sigE~`fX~{Z4Rw2XfP294I|)p_+!U4Z3?)eNEd1_(L$;-O+y)ph3acTyRY5>*x0PpBl?nnGOT(AJMK%!( zF+6N4wFrfV(Na%pCsD?~p9`k{!O$--fThz}UI~>=qx`Y$lVUBH+@INX(G&T|<~b|J zNnX~-OIS*B{u8RD-rknWe1lm3bI-kW;Y~MDPP|`>ciM?QbnKx0O^Fc7?pUs-&Os~>0z6;V!`sVEJLH;^v>2v)fHh^nMY^ktT0ucb zuOIo@FX*k`I-iqO%^c{bKU{Y`9sa3L(*w^vM@<7cBoL~c&iJnnyeF;Q@ivldyG9Bl z)S{*l>3&vE%t>Yh(dJbG8GCtBN&}`K&l)l^rB7r^7!Okt7LA2H&5`}2ZkW#j1uexmyyKnnohT9})GqcRbEdZ`t zm9c1YP*Xs#f)+Z2K{u65xRztkA0EzgGW%peC+g_yZCOol)58zbpKiF3zVp8K(iLC+ z68-w4XVKq3|5+}~dci*~XX0%ZoCQo6%PTF${+;$CS9 zFYqPo>d1&i&S{r4!@$uWVY?P8DvK7ff~A^yIyQ-!bvH2s+K;3#@SCl0rY_|$52AH! zhkOQbVM9zkByYTsHTvfO7$F9MdYHIRKLm{66(ymM#r;FBjPW8_S=AxI{n0DI!flX! z!0Y6)NQu4-gIBA#`ri9#kA(~9%;S&c{)NB2x80WBe(ce7`x8&lrr}{~1#l~i7Sh|= zpwT?Zj-5)QG2-f!F&qbyULjvl{-qKY(XtP%ItM-_!KNIZ7ACt#l?vtNU9=jIm{Wb` zyB-p4xuhb#NQLs^#Ywnk`36V9<=I$+X)bihoNYJEJ*+3yO-i)*5@HrqD9hA_Fdiim zf%mcAvuhRbgSGs!tAP;0Dvt^wMX7(ScWy|Ctw^zJH*KO1|Kw-%mz(}8GnSRzVX;U- zx@6UAdc)Vwqx+tDmYM~mS*Q)dW4zP_6X_+1tJlS(C&VlZ#xQBIuLAiGAn|c$?(E=L zZwqCWrV#$O38OtXH|*s}Jz+`4%Zrx`ezY)(IaLSpWtRzZ%3`VuwFv4`p*~eZqK$N) z{XJBo?%V2^74|%J4^&qVTH&PWKuVRYY4S|r;W(Jdfe|ULWNZOt_9s5{6Q80VUGXm( zY0CFi5O%gB;(*ZnosVP!jI2s)3)lt@6XgK;yS?D}5pdo`*u`qUT8%Jr0!EvA~>sTfTHix7%r4Y6JB*`}GQE=B& zPtm-+Q+O}W6FwN*Hco8Yc1~>DC$??dwsm6LwsT_J$^Y~H?X$PLd$oNz&vZ}E)Kph> zRoDAkp7_RKOl3>;zOPAGgn2xyy*>#DyfW!J?FO;7lx5ZW>;X?e6>V_rI+5d3hCkEz zz0vsGA^H^`U98Nn?mo#!MuHVC57AE3hS0U|d`4w_{ww2mV`mF;P{xcF8jadVYwW0V zK5BgE!5I?$Hw_9K!Boy{w+Ih&D<1{odq+dZ)LW`SPP)_F0`G{g za%r0#V^y-*%&cl>*4s9=1@*bF0hbbhv{7wUS$wU3MCP%ikouDjs{`#x%67^bmAf8r%{m2IR-RtyG zCInsz4kq#MllF9?O%Nn+flk|q9OttL zTueW#QZtF?Ry;lzg=G0c?nUfbJ|`UQL`YZkD@cB)h-ar`3cIRhR^mN+Dzxd|&afrg z7s7^#_JAR6>H1wBC_moVF05c>b^4VL33Vu3z5_~i$`+ZWdlMeGeq8}CP~pM)(c~E- zpguCsbNj*@8bdN7BZ;sd4CQVQIdr z_@HvlDa`W_;}GiocSyoW8?Zy~rUu+ztG^iv^g42cj)C~!l8}&8{q(wr zZGxv}ixsj^d1GeuwR{|4=K)>!ao~c@M2fWp1*JN)^Qn=p)RI`Q@j9gk_y(DML+NMD zolUA5F<>b&(x!Y-UvQugo(=Wg{Nb&53ovhHRna7VLPfOq(5&=Q;iU0o{iz-Gd+HGl6| zRaKYA+svb>)Cn!u)#Ua+$FP|w;khFwt5kr!eh>U@H0e-SAaz#P6-vX2uq{BII!MS zQ8f$%;Z6c~;@FJvz6=!)Dhrobt>~9k`lrJ12bJM~4X6bcA?+9WZ_OAqPialD75f?q zNCK31^;EPe>iNK67TTlb&hv7P^)Iy%0MRFiRDrlqvveW&ysL|uE(#q*a)VFEH2I)d zmdB2Gj(&~7<&yrTCeinx4J3boL&3l`y;SU}qnfUNWMRB|N*XQ!S*{zBRbXL!CS*sa z7Q$f2Oe;%P4E?w`!Bb3Wt0lLpJkJ^Znh2x&^qO$$szHxvM5>KA8B47lG0RZex^y)2 zc07>KNQkgBHqJknK0(r_Y^Kh5}`hs~beeVOkR)-l~_kO*|nd--lgzmac`4^MH*2CkX^QLj!B5akK zVyyyHcipy0)%H#ZorCWcu-2pm2B!DU!}Gx-BDoL)64fj#E171v6TxHe2qmdedW6_c?v ztO#?1F`>Y7#|p}_->9Zt+5Z05outLQr*g^}q%z($TeNDX*wE}MrM&zb?ej)S)F4%S z(tG*0TaWh}Esw_!Jz`ZHcEy9Po2p3HP~C@{yT}mrL1*fOUr;Wr3WWK;zjot%h5b6; zFfv(OV5(~4-JauCwOn(7#*tn5hfup9*#`SigG@m8eh47CavXZ=`O7LOi&AM3 za~-9?G?W$Bo2uv5Dp&d(h=gQ4h}#{*Yd{hm(4wej{C5wgBE}Z(V}TkPA6lmq){^b%^ScRi|4+K-Jo20o0o*a)yL` zP9lCb?Xv+U^KK%d-T_3t&uP8$_fHpRkxjj#A6NC=?u0PTN8K;;n>{Z4Io^A~&LhZS zt9&CVFIzIb-N#z*fWl?bIz9`gml^>bFFv2Q-+ra5wEX_DyXJpjKx-5Ce46QG8kul< zqOn>nz{y}LQpZ}RC?(Oc*(K%a|s@LID!}5TDlvr=fl}-;g8LixIrF!m(5)4`OYvM>@Q}~bP^w-PcSs0!uvXGgqIf(LA^ zM$By#OrsJzWK%usF0@`@0#n#FEC7_hL)pvAdc_5XtzSXz?OLmPtv&!_D)USWf@EK9 zv2-4Wm^e(VVougEmjdNK zE+q;jS7{NkK(0pT0DnPQGkBiR-njW2MQ>5^$;C0==1-mqrRM}Z_q|jTIlm$e2l6Ub zEkHQ7>#6NpX}rTcTo%S}*4`o>Tc?Gad$AT6b2M0R&-+fBSp7m+n)t%rCE~@hP7L;} zG>p)pU5D@Mp1I>@{lwxg_$DjwNPsX%&(Zv-Wzk@kK?%{$W}bH^?+j zXnDKG^+)`tN)xov2(b7hE-Qq%Uof;;2trlWWS9<(lIQdZSv$Klu=s1`vuD?tRILiYFeuRcOzM8o`FFnc6(lxh+FLTNSS`q`b6-*H|fvG zSg*|e;r~`VhgJNBD7lFuA*r>#)ltF^UhnCc(`d0$w$_RejLQy}fbVXXs)3$u!OeJP zBjpUF%6VQ&ms=7u~Fdzvk#`Nw{lyaU%Ma~dOjF@$~_ zNU|_JK^oFw*rs2)U|A##W=?=gojP(-$p3*my-nd|4%ry^$^HI5a7hXE4E=uj$Cm=ikqXy0 zZr5DDAkN1hGVyn|FL#c^zkOD>bCp$oNhqf$pO?j#ZwG9?*H74Hi)R~8vvp>IHpDFl z3htk;n*yJ|oAgU>30UOpiBGy{6yqR0qMQ7QPj+@Z3Sy)flfMzJ>F~^Nm@I(N$=ZKC zptaUW*BavD$u{y@{|gMpuZ_&76bNEwZ=_NTXVgn%%UpwG@RX1U!$*y?(KTxygA{qo z$t95Ln=^Kb<^}&-gB}Q;Nw$7|M>}DA#7Sop&2Kd31!1$pJ0ZTDIW3!UDRvwwxyt!c zgy=L3uR{2o%S|qYAsH^zZ2r!g3mppVI8uls%$!hcIpF^^5SijUlgCgjW7jQ*)%{8WX1qKS^SI|U+w`&O>U1*qcjv*5Td*7={x^ne;(B2GhX{s!Fd7eata^jf zxV*CzhDC}A30q(F+Y0TtFj*uOEi#1Ph~MqY(s1DGf(#%Koca-HaWCyA?+JIMy2QR{Ec=_`ZZ zcVa9C&SF3Rn6JqGN(hRH57`s8q9SuWk4}YG;i^pZylg;m`ZdMep#4ifJ1bQKI{3Ws z`(tK_Ne!ek228EDZUg_smud2%v3rN zJKR#mU0jvm#6V-n)QMkU%2kph!PAhA$^cr$BLgUw}-mTy(rOpS@Yr)Dee_Kh3x6Icn((nMGQl zgrepqSC*!n9MAXRC4V z{A5De#uiejK*0zxkm$+(2bz+63=}kp4UVqk|L9Zfnd;Mh;;xk+=YQZ(=@Agh+#8hO0xA8Zg-1=(I=17)fdNbcQC08 zo6j1^J9C#l5?Z2-*_PE)fmdt_Dg+%A+qi!vgfaZmJvErwnN=MTY95v$tIixq=EdV> z92M;bWzfRD^o^P0w|~LDB2x`reZcrd_O|P*EHX{xW6oH3S|uO2)kaZVOWc0?F$lK2 zi-qLRdgEgf_yV>lONg7gHKdlJ6I;zM3wzlrvTOzstk&ws41lyMSfg|%%9X4V4UEI4 zOc^^2MQ{hyia?2bNdg~(mcg!Ujj3C`4A^z%d?|@V&-D|i>8HgGZ2r|y zkJtZ^;0eafGoD!TCsV)2mak5n8S5un`Mds87#+R|2|SX)EK|+ACVbv|#3Tq-6o}O^ z+^8}UX~sNiW*>zt-uF_9c;LTeNWm$Bd#yNdvae1%8{pVZR(O#hq0Y|5$Pbn_&swLlapy^2@1Wlx>?P`9@;*xK82$8fE~H6Xl$RnoPktod&+Zti zrU#Vn>Sj$dm4P`Ue$KDtD*t(G0km|8fbmj~bN;;%crcsfaP^dtjJq?l5_APd;mXZ< z@t7T{`XqwG{WSubL||wxI?{1RJoUS}%on+IzlagQnz{>RA$({yM7i*uJyl5w1lzq# zAjw2jDBZLe%j7wvSJR;DC?RyrOwt7s&pOWjy8vU% zq-kk!@n~H6a!s#fQIt7X;}_zles;KBU5Oyxr1y4Xq@8DUaA*H6(sk9v{B;bAsOL*BZFz0XWt{<`Wsg%lmc$wW`XvR z1$ZMiR$n47wS=!4u`1V{Ugx6=9Zlj9mM7U5NHq>JXr3536eJmG89^A+uDy>n1GEO- zU?X}YnInH#u`Ll?kaRoVFZ0lg>e$~!-)2nPe(^RF8TuGp=HPd#3xU?m>#cyqSkN@= zSqqx_eHwjWOs(4!YkqiL^(+~{Rl&kwPsFISfB<)*U)9cwHdARJXZ3sV$KH8#q z%Br9m!B{=wpMOdR#O);4LZM;YP1N&yI1{-n2iW~&(4h@FRDro$kTrk#K7C>wYpvMe zJrMKFXJPgscF>>q4mG-|A%KsE`LDHuWTH8Te$5DQ|1XgfMMV=V9} zBMwu+A~1*Z)>ZDe%Q3H)9+r05hV57>*UZ$6_Q#(mK~%@2!6~ce&y>6B$0}Y7{4;KA zOXZy!LCPS}67^ORN?;?bVFKMr)D@uK1hv}b#QTINqkshUY3joQY~s7br5bI34yl2T zN;jAi2pURI8oEFeC(s#c;51xU*iH}-W-&Fl>Zd^IKsfpay1Vhw5CMm(@HkN3Urc@} zYzJ&Li3vpx?;A@0niVsrC}~_DD`>=93p|XDR%j<*HcG-o@%;PFt$9+22DL)JB2L$5 zxcShK@sqT_L=m_Bv5<=}#EPWWPj&-1m-SqQ`}wNi*8IFD4?k-{2hQR{F+NU7S* zMb$svQ_Ha=A|BabJXtnDgEpDsJ0A;3EiT!xjkyhsTLq{Zf)UOS#No7j&F43gHFAoT zjFN5O=8)yD94q=oQW<)Lm!*+4sZ65wlI=2Vx_O~FWCmZ9YA837?V~7wAi_~p&;YpWqq_g{06M?MT2R^R=FxvEGUPD^dZ@7 zc#L8h)QTfIUI&YQ7Gt#-+38|Ln%B)=<}VZ|q~22TUO__`wTq;>MB?_cV6%9RPYFc; z+?xNAl`3m1T+WL1L?!UxqO`i{nt1h`-C3U#JNv>rB#}R*q9@)JWPfZVa7$ryzFEmo z0GjCFJ*Tg6B2M)JRS=(I^+3@G7-5RCnryS7AUlkD*(hf0i3QnfIPA(JELfCfIBoyc z3{T%VaLV1bg+#BFxjtLa?+n>7>kE~BG&R0@AxZD!*D7J0o`cW|NwqI|$`t<&Gj@M2 z;|FDFeBrwm;w@xh8&hun4ACQh$ib8pbs~3tscQTAAcD-vJ4Ve3!E}{@I=&UTd)5Ja zJ7XV2Kgf+`QxlJZW*XZv@H1hmWx_T{jDB&;JT}H7Sm`}Uq}>mdh34&_kyv}&ZKrku z?P8*@h90Prum?KX@j zpBW2R^k;Zn<9FQ%1-H~?9eu^AGQqgEjNY1J%wNwZd(ceb$MM3=8qa)+RbNOt{sPgv zM4Cg$fvat_KH9~b_J{!=h>wQ1bRjc{E4rK)9JV_x$4_#B%WtJBk42KZ>r-s2_$KOg`Z)7&2zHA=T8ttDR%EJFPH<={8@y~j z9N{X{NQ!8ypGvU@loOEh{f46M3^ZqGKPw)ZHQBQ?QO%NQIKg`54|dAdzL$4`)yA)p zMzhW;6PG^j4xppgCcrPnq14n8(-u4>E~=qr1CpsCtI%&LR_%ET=#;RiBCMb}o8(4- zs21IJQq}*%l`Ph!4!?xSmPLX@**A**VgrR@Q?Qg@W9xr%n~H!%?`ouBvH&?=DylD2 zwJy!q0upwfIutDy@4_CuF=hoe8`Jn9*x8oum$hH4sTh@O$LOQXappMfCcKau z2nAXS0ngrGEFX+iqR!6h$TEI`HrjJ+8HhxRrbE;E-q5G;kJEjM?1WvEx%JDpm46s% zFmQggBb^}geuP8e{yOf!U+B=zFZmIBk3Y*?b>9D4Sfoc2#`FWE6M&4>nbC{MDHknj z72U0I$6NagXd*e8ApAd=sggpvntv&%U!ykY%AX|_pafoYkiqlp_v||6sND90M4tX? zy)F%D=`r~aObc{5iBu!wxprfITbWobQRIhmBPdEpK%Qbmypcd1E7r2el<&FSh8H6k zhJ>Z3fYej6si^44VEZy1r~A_|ffh o)ux!&vf5mz<=i$PwC-HOlI5yts0OUoff0 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/create_fence_help4.png b/app/src/main/res/drawable/create_fence_help4.png new file mode 100644 index 0000000000000000000000000000000000000000..32916768df70eb42296c27f9c5164e0732190fc6 GIT binary patch literal 37704 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

Jb6ArsmT!{32*zL`nvmQ#(ZF-Oj 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 + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/credit_card_chip_yellow_inner.xml b/app/src/main/res/drawable/credit_card_chip_yellow_inner.xml new file mode 100644 index 0000000..b660f3d --- /dev/null +++ b/app/src/main/res/drawable/credit_card_chip_yellow_inner.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/debug_ic.xml b/app/src/main/res/drawable/debug_ic.xml new file mode 100644 index 0000000..76c0b7c --- /dev/null +++ b/app/src/main/res/drawable/debug_ic.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/front_card_bg.png b/app/src/main/res/drawable/front_card_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0da7e9981a59ef2f964c6d72f05515d7c19b6320 GIT binary patch literal 135818 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 mQVz3AES)4m}IpVO`BB8Yf(D`x!iY$EF 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

    v&29H_(j<~3CmY1ae_kel23p@I(YbxCRed{> zYFbQS$Ghvs$2w82FNbn4>a4n@CF*jX+G4CH5m~keceDwr0;IO1vn(}F6e|#YEOMzX z0yr*OjFu!VR$=Qy^gXfWKtbeR-Sq7p5HfYa%G$NL&U)k} zB;uhg#_FE~GIDR#s`_?%lSm9gDXBStDs3sDx#>rkc04gn<#owPsPA%g#{44}kE{R- zDCWP=2J1}U7z115bwawFlf87nbDAgjLRUJy>P?t|$~(3b&*bF4{eTVBSVol0K70+W zaFb?;sxy1T0`*Z|kkI_f5ps^g+pQO zkO-wy(JdnJ?Ks_MALs8uS@hSlLF9Zsf1*5Br_p}8e31LMP9pmU^-bdR-#>F-Y=r}= zxq9!j)CsyJ%A&KqedIVs^N;e{AH7pLagroSM_YtTayr!skhJ-Kt9dUY--AzRewP3n z5InHD51(ME7brwU^sKOyR<{>*-N_$V6}7H@_YbT$40=?1yPLh6vyav`TG|%eHUq{Pxkj97K-g%aFg8opWhfUEjFlw~9&iE~u!5`!02RMCVzIKPBxJ%iq&29C=(m+MoVsw~Mw* zLT;Uxi|Ot}s@Q#Nfl65pNmTe%H65QlRM@`p&_7%w4PRxA=AO)t^^mKq>3`kM^-fi` z1bttBeXyON#x@Jg{5|O7Kr5avFL9B_P}Z|sC40DCbhJuqcG1>dH4y&2@C6B)UZ`_m zKn(XRR&5mLl-R5OapaN2a9o1I(F70$h@`JlX;KxXTqG6E*JyXsiYcQQ_>~DiDaj%k zI*L%dNmLl{(aU0-Y>{$Sr^~(_b_CdeEWF`PeDRa_ekdnPC|#I+dq_YmIuRgnJ;I8W zaZ^=saz?wd%8Mbu_$oCKYGwUyiWpo1hkCp<^Q2U*Ml@pZlo>s9=GBqPkMmK@^ zqAj&nwNIkz+?|sX-C(VzFqEJjTNLT(Bgan`IPI`A${psr894_&&dIF>kc3X0-iXcvhtBC#%Vu zqH(5R%uv2AX`ywsxk4_NEN3KFX9=>k) z)Ge*0_~_haVENwTVh|N3kEz8j%TEp_j=wQc%|C{}oNOC31k#@aP62l<{)|uBXn&KH zvfu=rG{0hVlZy>i@O-1P41pV47k#zSTE!(iP}XVHdcbBce>E``XQQ}jqHOVfxGGqD>a>tEuZmgd|q04sft($$*UV?ItAVw zTs5`sE(@RJY`EHR({=c;2pIfa5)+2F|kY|yA|%m;-o#3W`- z!9-2bgzu? z{C!SnU)OZ5JKVqx?fS>S_;=HTPyJSx6U0rXt=8`^CrpJ}=I@XXpddr)VtQL@dIX3j zqe3ZF!n-3kGZ|2WRDqc(XXg%$2uohXeD!TbC{`^NV!wyIKg5M%>ASItn!oIxx~pe? zhNI4qKMrXvzUYl{) z53e=O`b*3#7@N0V&l0OxJ>6JBxX4!W@~UEI;&Jt%>XV6N24Y_6ArqpO^Rk6Bx6{ep zH>GAWNh2Kj1^~D4H>;L&>$uq8-H2ES4J^{nR+QZIgNF?%TXtc2`8j{w81cg|>x?R&oAkS6sUJ^OyC_SLE#OxdZ$eM3WPh*m0wNy3tS1Xt zGX_gN6qj^h8*wP8h=kT+&!B$u(($p{hs%#I*&;ua>wQdG({jn;iIw+b8cOR~^mk9y zC76>NnT-EZ_#3q|atsYadA%Ou+`E`+r} zt0n=7H~aeDd-F6I@2hyYt8KERS#Zkjsg|!M%bRS%IwmK{>gMD)2IcYpl3;vC3p{LA z)PtryNgMC~ZZ3jXgEP#(vOTO9csLLiPccAP>6+<^T(3DbVRVVyl(%cpW9I$I%j~iF z9SBfj?5B^8)q_F5zMCa7+E{|lv6$I+16MuCCi|Yt-&_xFgpfP3U{WPdZ0X87ModdZ zON8r87CIZ(`OP*bo)w$8ZBC!f2`9%&6h+La)_)sF0I^Gm{adj+GtH!#yPrL(xgmIc z;lS9JvmGqWC2BT2SQKi!eDpPEuz3B~P*zc?*>}fHoVvo5kTXMTzn7&m-~M1r>?mVV zqeSZ-+d&aWJ3zIaR_b8Spx2((baK^cE+~A<{}0m`#G2K{#gv2t_k4da%_VLnyd!6@ z)M0Pm=>Daouw67k_utYFVPJpxhma(BQPZg4-212{LY{BAGaG4EAefE-0c6ZgoMC0I z#~W+kI)MRU_6}YzU~mhtaQ0xpFZ@ck^`}_d8?9*#iq0eUX`>(mWv7Grjpsdg%SFYT z;P=!@L%mlme?1ua%0F>0a<5=$My|aH0+5_t#kFeQ9S!dcJMsrR1w1c`Z#`n-;Z0p~ zlM>zf#zx_g#GmMFLt3H}+%BCz@ra)A=)daq|A>^n#EIP}bw&z{sPwv9GfC%09L2s! zSUOu0`Wu-LB=69R?PFb4=iDkYdkj4?k{LFa-5kBzCpiBlFzA!M2wMJi<}_)OF$HM` z4HClu8+nD1ibswaKT}pr?r9P|e%|TK!eo=g=eiEvsen0ZGVN?#YYf9RY1?r;!8Q#( z2Z)1I-qD}=v?S`80zWuI#v}ied)|~67?6mQ%sdz&($K&fYsvW1^Teq9x*fi;d^f@Ks zzda= z%Bh?|-g?i!t)84znNfUL{+vNk^M28%W&R(5EZWF;J6dnl5`P= z|LWb_Pa=J?Zxn8`Tp6^cU%%qaKozJk_-NZfeXcZ}aCUOzrMy z<`-qrkHJq_k+r3-f5`l}aG`XpBo6L=8H56rJ~w~N5a;(-Z)ZJ^H(Pqs@<%d%RX+GW zS%at>|54z(mt=CIxc^oW7wlJVgA|lL-=970q73F`%$ZU6@wEHlR`tx&KhDq0IsPaZ zh^_KDgnv&E-I_FE{H@slVR;#bjKbb{I{YYl3EpDTCcI^*_lZm<#`QOcy8oDZ{NUNP za4F(Hs--7hVXoX6pZPy8e*-F*#^|J>a3E0a>!8Kj1hh5O^<{cb0%(x0_H2n# z)T|Gs8BLz6=?=z~=F&0A=EWg*%8+Sd1}N1@ zuq!QWU+%k&q?sDC==SeRUYx8=yVLY>4GhC>;p_B9% zHqEcR%GwJbhdm%+FQ4J`ml@F1rUja%-JSSBkCRk|rx_YVTE^mB*Sy+yOtkfT^M~%6gPb0N+)Kib+_9cI8 zcZdc&5dMJ#Hef;kQjU5ouo0+9bZJ67Ww2aX$#P@tq>sOgdyqKSvD# zz=d%v$|*_^3;HOO%m&+*Tb@LN7E3Zp@Sbv`^1Yi8;Q-hOiG0{ z{|M3t(xOlHGbC@54}z(jG@CM8`Pcx{eAaeG!u=aVUe@;XNBo~31U4(&aSU_876eg# zT%*m1)Gj%qyvXa`VcyJ11>Z)eF?c06z@45MtHxihe; zV^%!2GiKI>J2gvpxtw_{wYXx2){|2VxS2i~{~C}F57ykH+)e`X>zr=IkY7N9cJ?nf#uNjIVE9AYb|} zyu?d4rz5r9@s!TbLdABs_S_+F%@ynY+D8kn_RSkfTBvN;B^SCdcq$9qrWlD5w0uxg zMKUpo;_vVN>wRzs^;VSwlE9iyxp1^0&Sn=}e)vBm!51Q_RelQp6Xxi7jqFLSvq>7Mp{lhDJod zt<$!LGDw@hF=(TSl@F!*g2H)}6t*Ks4!`iIWxFqe!e^Y3`)&XC{lVG8<=*!|`F8Go z;`ts$<&c&@iC=fu=CX0P7Pu%$Br7ZPoML=A*@Guu_QLk47NPAu*hQ-gcX4VjjC?SI z7@4-}DqV|9e??H&@*G^VWsHx+yG6{0{I%9w+bg>W`0^tHHD5mFq zkE7q7bRgkUfk@8y2mCR*t#8is4qjJDuL5FF0Axy?SUiSF<{)({r19L}iUl{=W|uk$ z*|mv09M{KIe6wgsoqa0Y(bG<^XEn1Lu=p5`teFBOjI35m!jCO$XqSHxW5=Y;Ld$)i z#~5sZ|Cyj#0W+qnilv|-zMN0?=pb~TCnRsYhH-R+wur~X$u7t{HEWBx6Kz)ta8XT? zrcf~lE1J`^=@#qogJOqD&sCc%bRzD_7}ywaZG3C1EyGgX%Lf%bl@|7i*g)$2TD3eC zj1O|#P368ahBe4NbqWywD~KYYgq37$ZERIFiD<@n5M4+nlEbKf>n5J)*lgigbRJ;u z9-Ej8zxieoW7QzFC0rIQ z8H8azb#H5#jO^0^Znlm|3SnNJzkNm14MAASl&7srtrJ${`Z!gzjBRA!Be@vdYxNkv ztii)?NIB%X^&_r9x{B3%GOfh6m#?1}xcR9Tt+5DqUft)4hpi$0bV3Xt-kj!KYx{Nq z#<*`qdzR+>KFQE|T$WMf-wl8xhWIoQ@Mm0K3r?}%&sAX$~ z(dlU}KU~u|qsM4)bK=xtB~|94qpUy>#kS!-1C4t441}luOR~ITilz9dCA?);A@=^B z#tRxkDErjb6+xth5nfs@c z^tcRrrxdfPr1po~J&`M>6m+_I-!HyVvT>psAD11S#Wbv64J569?@bRlzkcO`1^oEI z{Dx|Vbw{e=w%+54G#T??q4B1o)c+RTgIR!vUkU?B_P!s!q*vtm^+?{(v69s%+Hih1NXm*`9kLNs&U6C1fb4w*r32 z0-O8xZ@W@rx9eU$*cNPkPpKVw#7~XyW#Z&)X%z*ZWw)pIhmN=)T14~&b^aN2 zEX~*q7H+HKhl*wE1$5?bH4I-kb1>7d=AYbsxwHJ^6#kWMa?=(?z+5|C&mt+k_4&1d zOoG5)8t8^-XRk=2y#m{L#l~6y;~6BMm6t2Vs+dm4;-#p)ymm><27nH^t!um-PvO`< zNLtOt&eZ4hGM8PGS6hpmHOHAqqcq|)V0qnE!g^0nt{uQc&4g95Mgij9FO)B*QomOgo&fi+42Gzda=C zraq_eE*26WGVw~L_g_>SWYyG${*EYFNi%0@h6+$V`!&HvBp=gSL@ls6NyzEq2G=N$ z9lJLf{3YG&R5y{%kHd1xN#ud%cF4B3+xr-_4Ep8pJfPMsEltA0f8{xX|46 z@zrdcGz|Xrs9)sy?@H_iU5m*zN>oj!rvuTFB%5Z0y;R5bQM=LyLXQ9W?#@7Vm37&5 zW%gODX|;9TO)fXCM)PK_ct9Ux`v0;&DNY09dF!zb;T4H#`%N(*i|_6zRZ>}h7LP`! z?U(A}+^_Mdt@jTaS4DSLAmx?bL9>A^%W+41E$^?1@%}ft z?Vw|*O7p=8Lu9OWee7rDk^Lbe#f>iyRkKn41sbdW*(NBnd{^ulGAG4NP8SUTa9u&5 z5WqD+G!p;;)B-mD|9*{EpNpEBJNQsSF(a<8FOf<5|6yTZA&CxP4OYU1b_)yqaWGOK zjdB|+FnD#SgLwESiB;glgz*Lodn$~@JQ;eq0l>r|ud!qaIj~;ojbZVA8?eZtmI}KLtYC%{# za(=z)Vuw!Lrcp zDgVQt?4PeLZR6y}1gjoT%k!B#uC18s`Mz667NMXQmCxh*g-|Cw4)qAmvK^n$q)>DiuVz8zcgI^~kb?5&)zOZgXu32z7wQ{oWI z?OifH_Q~wum5sFFa_(*X)xR1U(azZ3u5@lTO)^v8qo&Hu)OG&S>rgKHwx7|>k`S4B za%}{=B@+%Qru`MFLnjmY4NJFy(#W^RFn?$)nW!p-d)#Rl)M&=&uvW??pUDVIy=9>O9qZ=wVFJ`$4iG;C~?5S@V*n0xp?B&0EnD2=%4; zbYgn&s`r#ZG~hRg0ad0UC3Vz14oJ5U2LW#NC*wXSCE9G4iGCgU_w(xIEGEp>bMngQE|f|QVU?G=LEi#1e5OM{9=ama5O z_}{q_{|Tw!SpURI&nvospzitiAJHQi+W`n$0GiK#Un>=Ziu;He7LChM zbEGDD&J;^jB5?3pL1<@5z<;pIC{|~rDqA`6;o}@Udoh@4`py(oO+SgYX(nDurYV_C z0}ouF1|a6BnLCtSsm^lr_{TIjqI=oC?N@@3#S)1ni5w*1XMNPI05Vd0d&5W3qijs` zNsed+L1lAgu&;CAhgaxd<`KhNiYVq4UrqYMSVfKWfQZ+|JO5foK*t`FkPK8VHA3*2 zqTNJ}X#id_I8`@B%!22^!+S#0vDa!|rE@8Dt@otZZgMYAI2qd+KeCp=6rv!L=CI)L zKUs`Y0mzy0XWV{F;r8{&ys>AefUY((U@$j5W$s)+HthMZ4@>4#cowsmMyh)3U1CXM zrYGtDU@<^(RA5U%DqS!OWh)@W3#|T0yw^v z{CSms&hHI!q6tv#q=^|fgp!cE996T}gDq&&r>kngc@~qOgc`<_>%S#{d6;;`ZeLJ#!G#nFb+U8cDgl0K4Jl+$3C4BHA0kCi(gZM04|zP zG9dlYb{&-}&K9?=f9u+HAHB?jgq_c9~6R>mRNGouryJ~cYZQk8 z&po)O0DQ@NkoZgNo&BE!SB1ET^Y>HCT)0Sae=Fg`#f}9D^dN=eBHE-Gjmhc|dp{G; zK+$NZ07l$K28-u}33LUR6^DLY!N!^7l9Lo)j!jPL2#qc8zB4!Tmk2+_`JDjsJd#Tn z`(wjp^BTpkDz6o!cd=wmD9}cuKN|%WbduLCgowNKHmrwTN(OhJN#;zVij7L_Meaq{ zVw>cX8+=P*_b9{VAz-?ff99-&$^YIP`4=I1Av2FnphrVqcAdrTVL9QWC$*HOg;HKwE}d5uEOFq?1kd6%6+e=xXKHj^*Jq`#nF{>a6@ z2PKR9JV|y6e{!dnQ3t7AKb;l>0suM@)Ev zBqln@erAtl6L?(!n`jI1*p9eqy=Ot0dna}htpY0=IFA)gnvrPRJlbM6l2ZuZnyy8=&{+&`M5xM7wHTSOnMt&ZSDC11=AtI z8n)r8u})zUK#43)i|l}#m_=K zz)o3V$~U2yHJVDQDI%saxTqNWlinwcXrjd^TlC$E5$UB6B0u};VKxIWqluIPV7Z43 z5o&oXDaE4~4Yh6J$SYA5mlnI18RSH~Kb{tuC9gMfbFh!5V!nJ>R~Ayd@TpOT;{q0 zcyQeVXz@~LodKkaf#8)pA5x*@sbqHB!O@|lH=&)W#6xx@4n_2VImbrJdg&bLJIcU8 znQ|;`Pgl4|jHDiHYDQaM-gXB$m56dus*a4y4Gdo72`VA9J{(7q)BId6&w zGhr$0GJCYBKmc;GIHwKg1g@K#W-QRE3{2?(Q$GW8VnBRIFM}!&z0FhlprLuQy12PP9a64yj_p)!|Zmgc5VFFZd-qfcg`rQvsTM1xr zaYmkOC>auR4sevh#@vWtqnJ#oGZ0A)@VE)|5>4VQQQ)0Q>N7%-9FQP}(q~7>Hz<&> zMF8fQb2%k)MFF70p|Hw%kS7Xg!i0d+bBSE1XPbpvUVkO=J7(6z8{Ct*f74Kp>N6{k zCaKlHAwt+m4=8X^S-Lp+11jnq4IjAqXF4EYB%Z{!sepf`fd3&VZ#zVJc)*95GBtZhz)$kz8;lNM zi?6uJ;u5d`s+)365Ce=6F0{XncYYKrYiy&MLu>1C)6qy(7^Y{xZOaRB&ijTl$c5ao zZIZal#4zxqR4VoP2=>Kf1ss?~DHG?^e1T9iBqS%arm z8?)qUT#_aX=+n!q((hUaDx@>QZ*dy(2i`N@Pj@K92$$66nPH&~Us(V)@qc8ZRFQRB zXSMqA9vc|QfB^{<5oT9hSK~=8D-pYQ2{tmUhtIr>w+GVvDyPedy%z&a4|=L8p>J*> z;e1uX^-(|#0JYpz3Y6r0*A~6L4BxV-HB77IuCx(JjcMpq?s9|LzIMt3kjvZV_~ejf zW72l`t6^v0Gvdp?*B@UdJOW@bg)rUR$Iop&4osK;5ca4NihNFPH_MtGd1|@aXO@-! z^&)oi7$+C-=T?-~*fwaalU>sbsx$KPOL7sSG8HkutUcx?C6!>!8V?4sMpVn!0pxw^ zmB?Tqvh>h?xHY(yQcv1wTaq(MdaFYEe3x@mk<#DoF3%%f1xrAn6fn0KZ*2B_Fyy(S zwH#usa*!fFNBh{>$tRq$^`<+#@ydjSx za|wd9^&JPDIspG7-ifkxUDv+)L6)v&q@<$cku!P3J$My*)Z zcAnfCh7iZxJc+9B4z@_BC$XEp4D$7u`oGt}zB}ex9CM;0z@A$Lz^^lCHu(vQ+(ND%8r{ogja}Rz$@8+K4;M(i1QFLarXYn%lO)ITjqWN zBIqu~a2rHb`0SNPL%&6>Y$ixnPjKEmJcFWG#GV`UOO!UQjPhuE9=!>s6I~DtUHAa# zJEDa&O7xjZ%uaTw2%St?P0sEX3?+^YeW=&TjF1o81J-YhVH3gc5|;wQmz1I;9<&*d zCEcflLDSc%<7feDf9JD|v_Fk4KRI32!l>yH;IM?wA)@_BBEZGC-lAvaUOi&J;FYoi zDC#V2YL6sSNa?PZzi`i7Q-SnW$WplI{9vDSz6|gib~?y}HssooVv)Fp3sv?cT^Bf9 z)>j?vC<87Q6!Sb(7nMlCVykb;N>;zczU0M&q%3X|+`gr}_R2<&ky5!u>uhq3EUG;> zfiO4+l6ewc$p}(RroO?&fB{e&EackPT)cg`>2w+E2ka~ZE;~;Or*E4xzrRV?<7#IU zCs#OB>wlY!MOW1Cx9Vh0lK9R{LHxIMjW+MAw$n?&wYRn}a?-1Z@}wo>ffx$rw>wfl zy}5tywEUf^TOb*hfYvC0sIj~Br>{9NuWs7JpN@<7RW^(fFq_pOf6>)ao+S|!Cv;vR%a4jAoX zC#`YBShUlxvPD)5L>e5-v8@PABljX)#oN3w0`d${9NGd+}6*L&^>@;SxA}zNUD-= z?=(;n8h2K*{VHy{@$iLE?*+ZWh14R-glg1^@pMa zp1+Tf4`fwLw{ulh@rlDKqMzVeQVkZ802GMphnCvre)yAbX3(;~@mtRCs^(R8Pl91p zN09Mc&gYHaU&hUQ`+e{MK>?TTc0we;7`o~eZ#6x z0Y~tiPan7EuP1(dh$0uFy4b*6WjkF-J0CFp0VK{qZO^K1zq&v*ecx0$^zdJl3wTv* z`tuJ(qRxMX5embPA4rG%n*tbr#y!ghE(p9MOmCEZ>iRc5<^Byg{NIN?fYW~k&;PqR zp8=9cPa7N;p3jZxSfg(Zb&-kq%QCKA~iGHeW6TnW0NYyg|lAIcrpWO z(ZAn^lUW&1<+T_t9R#5ciESO2ksVy7}SiJ?U{D+c)to2E9 zV?m`u^zQDEV-aaMXjCL8*5X8)tMdmssR`RW2ow;|f;AL`eGyl>ss9jgUMAuwKPeLt7C`{=Whjy; zjY!}>8+l6pWuXb4m{j^*ojC(I0+GS^EDdB~627OgRNgH@+H0_;)2fYa=8pihIV44= zDlW-dg`9tvLMrAq9u{^n{q?Tfu6m1KF6*8K+mWyVwMgwOKam{vO zXnq(4ji^qZ&UQjyJcGgwH6~@=gh_ZVqg~ujiGPTyAv3~=F*@Vgbo{FO`1rAQSTQn8@$*lq z@ar7S_*)Q{74Y^~17Pxf3v1xB!oSipoTWX*`#ZLRDZ+BKt`W1k6&Z^7+-PJeG=F-~ zH9_!>0?#dkT!cA@2Wi6=$U`GQzwpT5hb{x*Qb%d2f{aapofMs+DC)Q7AyAJFd7SFrv0v zljCDe>)Ws927Y(O!rPb*3m+tj!_+5a1#W6S4h3Fs83zB$kMaVIIU$s)mRNv$#^NjO zHM5gs_lyn--SxSI;9{`!N2W5RC86g?1tM-wkt^b(6!flODg_+#j6{ZMm_$|oI_h}T z?eVvSg8ewN4)H4^FBUlHgF7mUUxp}V;WJMt2G?g-JNp=20aQ-zgI5DId|SSc4ttWu zp?@5P_TmgJ8|itn6+b9Sh$Pza<7jrH(GQTmy&QjHVpweh=r~TC|0je6<}^pKl9%l5 z)885}@M5ZwVwtm6kZ|AwQzs&OA#1VFIUP+=>i!bCa!^#oAAlRY-RWOkT>b_xki!6l zpixhi^J;5QxNX@>Lw6t+5bbkk$z_}2*)mAr3`hnLjGFor7!x?q0_;N$K|Jlo;l^l) zx4RpC(}y7emj?iuBOMgdHPr?eA6@h{PLX8>`^LE!%C88IhSjjuTpu};*XPII_Qk5Z z*J$4MpdDLH*kvtm@>9qkSbB|}5qlmjb?@G&>oc|yoaMtbb2Avw`Hu!cc%}u=MmNM7 zaFvZqKr?l_yZxYvRdDjZ#Z+q;_cnbAIdxvl6A*q#zDie8m*v98w1OD4d_$MZ+net~ z%k5`5E2)M%@f8y8MFlOtu5Oi1_*%Xzcz=mUOf7&)cCVif62{0q0xk)N=x5FOXi1>4 zd`_{Af>kii*72K?Rlx`v-+1_Oft5^e!ui!$=oADpMfhy{xvU>DMfttS?iMd{1!ylvh7)r4*V{3yEMW>nqoo-u` zL7_Dz^h4q`Yep`VXfgl_?+i*!z53Hfrx?z!34RWiI1}b`LDmdB^cmS~_zX%AU6TLQ zNefy*y_9Njr+IGMQl&uMNf1L(vRHx5ilW0;4;I1Sj|Vw*xVr!84}^}9K?NUzhNMyg z!*;*f&ES`^JtJS9H`xetMV7Dzuk=zcrGg`6P~Pj;I8Dk(%sPDYLWI{Zp6m8lzyA=w zb|1S#ym2e*)}>Vk9@-nMtjNR0dx7OjSqN#W(;+p?rc&?2SDvK9Br@d@7?{qBzie*j zYwb10I!7rlMu&z}GXv+!YSTBl85z-nn&DBlxSEqC-xL?}7|cHKEy*2m!Xvo>vC?=` zNVQRVl1^tA!$b9ml^ZHn)T=}M>uZ?C=UN*5&1c(aP>q^uctEHVRM&ryEGqUX^hu{9)`%u4jMITl-6)>jKB-OxX zJ;@#yReyYJtB~KGSPMZ@lEm^lccJLi0)noauakT|U9c6Q0ux_$UvJUL#5hT6;&O3}pAOJ|b z`eVm<@%@{}=uAq@g&X(L!2+x3mcSC7?JWv5i(ToBR}jv)uP{t+o_s-ze^|a3B&lSc zf~0CRcBKB^*S7TQ@qG*DfC69o*AATbq#52veu62vAUt6>kyA}l#-^GTZGmXZS~C4dXM1O!}B&Kf(ak&&Tjeq~mX4ka4Y&Nmu35Ey(Bg4mPTmLWffkr?5n+ zNHIC$M*sUDOZs)+wxH;392=9j@Xzbd(0A(|lxBkAlu2Lq*-%f0Mq&b!TuwHJ!dz;M zLTZzEdLF~gO6H(jk;DImIoG+Hf&hJ!!S5J?R0Tx9Z9&9dU0b)0;8vYN>s%K|H))eyhE#lk&mg z7LOZpn`lwO9f9ld&8xIL-s+Z#*^(LRVQ%2t_^MSf<4z6b@Ej}YM{c@&P-Jy6&nl1$ z29*#*3+%l*v_Px>mKKb|n*y+=IVz0dni7H(Nvyn@Ybv)^UQewv)JgEBM%DS1(v}Kl z>q@Ea%)M9;k-cBSdksV_Ms+y_2$J$TU(^hclxw z8k&J=)_Y9~1MmL4>Npvbj~oNu%ER}#6`7Po`J&KxS_SC-E1a}apY&UO5hAG+#ibcs zvr{wumzr2BqJBlw2Z%E!S6vcP|1Ql?h~zelYLYfqRzDVb?Uv7|NNL^rjw+Gao~QY7 zLUHL@n@I;5;)p~N3vx}A(QF;YY2Cc0%3flhAfctLv%#sOZ)%(YJ>W58!Wl~<5qMN+j{NJHk1s-%%lZ|OT718JMq z#%@Wzw_jCdit*ctdI$+9pQn@)TRTRAxVMMJPW0TJRr>rL-+0!UUMm${e=}A(<~7ke zBTb+I^q2jS!JG`ayNs=N=%Y1s_#bsqh={TkkAYj>DEXo`l`DdUgk`YUEOILTOORIr z+C@YK4+hWd1NcUI^qKT0zpH@|h9v{qUFAc@NjQ^znYY?wb4Kb3-N`+**oR=$X0H0t zw~@h2#p}oG)S(-!qjSpaXUI6x#AKa+bw4$YRZHrQA&u7CW;T0I4G(6cR`fOr` z$#dkp_HEO3igHN)JMuw2sZs+L#C~6)mz@B8K;y5Q<g{bqUjT<6Q%(TAeeS5hk}@TGX!cXBcd2C zeYk@mrbC$;>kh-i>9ZLp0&=P}7DxELz1h1Fw2LF?=j{Xjd-JN3l@tUZnxdmgYg*&9 zRY!^;P`YEDr>%9KqAdI!u{K*gq>T?|`X`ajzH4D*PQXDMj5-=KIc>Wop?$ocb<)og z1yL_Hw(_kQ+O?e{-^7#}-`3j!LJY=)ZwAH)Y z(R-?C8aWbkPnAYVaD2KzChm&bwL|VvCyP^ zJD?)t=3m@g($czb`Ni@txY+Zk_)Qot=5fWhy+3}BZ3%v*b`ND5BRjNgglTL>tOf6J?yyrY}g zv+_b;OY}5Zqp2o4%H}8?^p0ZwV`;C{L8<*lhpf(>!wC|>qcy=#ordL1*LfaReosvJ zJXT^T7APFkin3Ow`Fg~ZZKPG++}GIb9u)fZ-GRzyLXXSTZlcRw7Wkrnvr7TYmntLQ zoA;)Beq<17ePF$^z&|0oMPYK6(gdL?o3QD5*R5pb9owe32zMec;yn}OQW?ZC_Bay^!5%UBuD0Z(RAAQ<_XeMJ!A8@nzbE`OZRS zds0>k{TnKd-HYZ0=ChFO4rJ6I2M#r=Y2h#s>!0cj+=Q%svriFOQJLhYjG3gxitJBr z#73{sWG^<(I+Zkt962sj)=OB*Fw6fjIcYFt={DTbTH+ki;qouK)(3zU7e~`H**g}T zDMhELC|#)UrqN&FXolWz=J3+XWjDcRf6B;PD6^Jh9B*Bi^yS%{HgNxKz4?yf2-pVS zHFCT8Sn9f1<|FQO_)e-rT}*sjeSGIC!dHYY>|_h#i`$b$vK@%!4#5^3%=Zw>M$D!G zy?g)=bZJW6_nMWUtUtB9yP-Pyjc>p>Ef&_nP-SyDJV}cieT1*&O7a z>P|DeR@qDOXC%8@w~!;HEW4-$QiU`zWoilq^zaH7#Z%fHbbIsqk{CZUQKdV&r{1yt zQPx>!iNUex%_G{;x)W~cP-K?M$L0@_Gd_M6oxrSoh_M};Ewk^Ul@Sn-GBgyJ%TZdHPY^{}Phd-labzbV$ zX#bjNLIj*V5WJ%>{Vu^)jpP;G-2>mu<6H&-6~!L%8P@>OiNbqtywk=;Q`+uwxQQ7; zBOh(oseU%$!qe&3eZqLB7`-=DEA)lwYMTgsfCx?r53!~ zmITCyptjr2vkZLEkG>zU<6fQSy(-Mdw`V`-QHbK{l54j0u8i3`Q!XcGX828U*2^CN zzGmrHTj)X5$W9iL-MePfijc(ybkU|LpXVKzi3HI7RgnL=Nl{yY>l*w_J%T zi4BWXSWUTE_aBLwYk%bNIMzcY+>$3d`piu^BEsQiNZ^+Xae3KI zV-47|0EPf@KlqaK@)or3=!ucVO$r?m`#ap2=7gx=*7RF`so{era}7y2XYI{zm=`ec zcd6KjX!XdTX0XbJ1O{*4J2|&~0@bAhEpG*0D zJQrH1zAc2Doz)zP`yb?0ZC1ulMb3n3a@hkC^3`GDkqR@jH_s)>_7vR(B})bqm}Nu% zz>c)y)A(=Ky7$h3^Z8sou0xCM_6#6}JcP>)o=ibNWE;a6KWdQbje1i zn`Ht31W!tjGOg|bjJWki1u@Sh>n(qFOkj}w7EO9|t5^dMXSBvCNE+wL>}_mxTIdTG zn^qcYL{;i=&+HB-st3Cd6j9r~QM=0PBTwOTS8WQgmcQu&OoS+tTQ5lD}jmLO7dhD|HwXsUJs$NjqRnm zw;1*wO@F5}|IWW-m@_tlugOer7*~GBV4`7vBZ_I;IfhWaQ9jSB8rZah$yKD@inH_1 z&GeL2z-3wAewcOL_gG;VE)HET>f%m5N{Y z!~$rK+o2B{?T_E;_kPl9X+{b~q{b^J7=PS+_jdrSa|kRW>4MIilyIREmL zx>vNy(Vp`%?M-AQZzCyAbHv?*p-e7!?ez1R+=02l7?6}lG#QNa4M?|Mc(WNdqiOB- z8}p2wnQ1@ODRxqGYR16$s|lmtaYpGDwVC1b2p2lF}>KN5P zZ5n%>A^DMSj9twZNB4zVLPk%2&Dy*47K6fgcv;!f`zE>K%PS9;m-wvuO17NT){ub7=1lym9S}3-hrBh0df6GWKtg>a}FRv_&r)OlY3Ozz-?-6!9I3p z4X?f^ldtH-H#ng$T=?L-pGfAb$agWW$**QiBimn(!qc$vfM|HeU5gE1YmOQ z_Lc?3|5y(v8yO$T|2Ubn_yYKLu;SrzEyHWxpwu3uzednRE@^GM2Ca6C6li|=K1^Ly z5-Ko%(<#67OkyYfLllW@vz=ijl$9F+ldUyUk9zl6PwbD+Z-2~*z(P)I zTtu;6uD*j{fz4n@+PEF_QBk$nnw%m?S}MHLxrzREdyDS3(Z9w zvqVC-^%R}s$emFJL1TRN%j)5C3T*~E+`ZaSeb@dH<4^J8A_rm~UxVT1=Q}iA+HQUKqtDEQumBQ1p-=CG(~)~`0}7KOMcXO0 z?D%?Zr05+N%uXCy6}wB`Bu7jt=-r$_AuhSZ%Z)x}e_FCh5mS=x*}D$$SAs@{YxL=? zYeWODESmeaA!h4mE)Lb*A@>FpjC;2KavUwO6RevHLPpINSlDq&jMUk>LwF4;*Iaq7)`;b9QtN z-&(_(@a%rr#o+-TKAVoA-XH@?`QaArtnt>?kI%pM4yuqPPOxnoGEcD0rMDh9@m7pv zrg=Mm=rv2BG~Ae)kSGzisD!Re7!M0N9#3D$f{MzUC1P*nUQSC>70Nl%x6uHdal^o0 zWyidDUAoCJd)uN@zc8?J8S7&f@j-3(I2+bM7kL|ysLcHU-IpIqhOGFJ0d7?i0AU(gD>263y zvaYb!^v#ZBF*B%=LKAvh+8jOZszR0M{+Rg$Xxx@Gar>d5=X-oGY<~>>JebFH+%B%t)22h z(2IyoDx~lFEu}ApyExGvS3F(RlQW{gZSG7!Oy+$hD02Hj^5S_Eh0Qv*T-@*P^xh%q zf-D9sDw0%z!?C3>m;CoXCz!FlmnDU{CGX)$KnFC30W;lV#ndxjTRfe?3To6y5dPuo z?Uq&Z>%UGBD7Mzz)!fCH?vA2?UiQIW(t-oG595?{{kkYU&gie3#${SfpOO7-mrY1ajTVcxbU*tl3>UB23L&TV@4M!gNpZ|99~ zI45V_ooWfh9?7~|oGel5qL~PbK3H^>wn>$$<3ev?PYs?TwM2kY6W=xvJUB;x0Qmyt z5Uwq?WYZ8hDdrvG{-j#uz+|1$!)f?`tljln({cas{m;h6Mvrb79Rkt~j&2w!Am9j* z5=TnA(WxLvqoW&1r5)W35`vNnqKJWl#kKRiuJ3VQ$9?~L{|DRg*|F^%kJmF{t@NUd z;hiZo!f8%dUuF>_&R=d-b7OGA{=(J18s#o8MNrw|WH;tjjHO}pc{7Vh-SfC4Fk%=v zdP|kH^%NU8QIf@Ss%fgZ*}pBF*j$RAcd!@}Q6DpBL{AXoGpqcAuGd($7Mx4(f|wx^ zd|}Qg)(8$Y{)!q&YXiYjV=VZn9Jf7x&pdwGJT}F}%dhVpPWRy^zsa$0*2Be{|>hzjmBxi%d-~pTs8InZ`~G4(rvx}U)|<3-dsAA z^#9b^{ztbVbyB&ES}P|0TW6bSt(?k}{;zJUnkiBa`mj0CR{ftk8zr}Kd(A>pO7h3U zP{Acy{@VhY(q=Sr>%R*z$j)FCe#|FdlabqE4XZ{-RT*4^Vxw?qw5t`odn~HFQk=+ zF-WQNrwjUq7aty?PsrVXU_;8DhW*pSXy1RAKm@^NOBZJFdVQrM0NJ#`kOx2UjDwBu zboD6(YawDFj5AOfNspvGBTpfd7F|!tX(ZR9#fY*}Fv|=Y>Ots}@jOYEXjjYwwUAb1 z3bm@J_6=t?R-XGZiS+vE^pG_tPyw2PiAnv(;hu-T(Rm5O0iQ}$KI?1^Uy>9PF}_d} zFS`p+_OGu(0>bmS!b4M2s?%@z)bPNp!H(9#_HIY+%rubaWen+qqMq!oIa#+0IN#wc z3Ufc?B*P1STza|PIPXGNFkH=b9BrzY%;!roXKKDtuhO_sRkX@Yxthr}zh2YSGif*i z=YxX|gda0dEwS4g68B>D1*e3VH1`3Y`wzZu)Te{qWe!1jeIl)e^|^X#Z$jIDl!OVR zZs?O_H^=CsWy-9$#-T|QMkpcdSTdKUwWILfHn%tU8F1T=bcAMKM224%pJt$M-gu26 zW86R19{Ky9cAE>p*TyOqObmcaMwup!D{%A8wFq%&>D;iSrtlH01XDvGrgAj8GvSmA zV8C};3u40*KOJP`t8RLjEFxeW0B8Bv)6QgtLnbV-tvOX8%mL)Xn`P%&GuBpjq8XqU z`gsLFDXl5F3b(?HE9N`r?CY5dLgZFuB=l5A||MCB^288*H(GL{cSr1F3erRCuy zYx1eeAHE8Xx&QFDFV~LFwi9T>h`>Ep*y?~kUf6J8k%Ki(1_^-P2XR3zv6-+0G#ld}g zn*cpZEw*4$D6{%$lBPT_wK@RdFC?;IhYV;Eesp(sB4L_gw`iLIoFvm?Cajc5PK^LU znh_CBAIn&I9r`@%Eyyb~b(n>*%CyKv>b<>ElAF{WFZh~Fs>yR3FZW5Ew>X^yYHcfmlR=Xs# zl5vxH7VJ?TPaxgVRophY1j*$;h_5EwuT3fi0aRScMB%Y&Fk8Co(`&l8J>+VSnjJna zsLhl~`-?FxXv*0+Uq^+iY$`=+v5W=ogMNLa{lTd95r4A?Oh0oDHu?n&KPRKc5ZljI zwkfbhIBsKkc|N?HBA2Rtj(^Hj5IL@_vh7ecA$8#%OAzNBytd&b^UUi?rW_F*{+AW8 zNdv$Xy<~@#l^IrW1R!rmyRDc%BaF~|54?Yz?&lHbxcuSHUP$0A0_|(B#U2+-tTqHp z?t=jfveU+wA*peqrX zgfe{1xtG7l){J|w>IdR=@#z{IICzZdu&Z;zB_`!AHT1QAQq6Wva8lpn0vldcV#7dT zD2x1~X5C3`(37ekr%fUuWK<0k*WapW)oXn4$xDWif2#7yRZ$+a)@@U#l(ysUFgpfk zw!}JB{2XLsK}p#m;wkPe(BCP2W~ekZ)MI7+GBP8M0;`zN_)j0=*2WxGSm}IE&z0*d zf?QBB0K#u$=^FL=)}4{G^gyh@kRc18beNU?bF%aaa>Xx@b8NF`mOe0~c$oWolH)+A z(ddk^xo-;sy8OhG>u$2{`=tHQcd9N432`Q64f2(WbmJEM*wJeNA0bMQ=0WqiwN>(a0HH8tL;SV5;T57$QZk*gole+z9vU)|}rrN9@gCA{{B zM+rt)AL!6-uZ&Jw{n8cczyE_S2nKez&F)YBhlXbO`PEan7TjWzy?|yTuc^1xi;s&h zS&_!o{Mmf)L^F}BwfQcHz}hE#Y4MrciX6&k58r-mUdso3Ql>*;qPY(N@sfF*Humw( z%vXiLC&AJZe@wl!zIyr+&^YPsnm5xwl*f4i>>$k`sljkwX{ZTKOOi7Yrym%@Of@K1os? zl>Yt69@iBZj`3Y8-fMJoMI`KGJ-}r{ZDZgBi>HCb1NUe&xa{qbSsv);h2~6>sa|W4 zzPU#aVb(TjZPHtmcFi~|WgMuCJW&Lb^)Q-A>-fP-G7iCO*S~~+?Y|cPf$lFwY#Zak z9V;FA>({ND_H#53TT_BBLDb^*FT%3rinSQMJ&&zxucFB1L=99ZdGG8T$AX)c|LyTU zOj>D}*4`C>z7W6?MwH)@O9x=64dcl*lY-@#Imay{EC%`P0q7f9r4k0#nC}K2KSUyS z?wz~1g%Yk#mNCW zOHigZ-Yjs;$zX5@QvO_)tz?_~J_Il(-qW*;ELQaJJ_CP8(~_KBAv%zV3yH-=9iCC2 zq5aII;}i~U7DS>GQPD@%whHdL0?jb}X4|is{QHX%JM>~NUxBj{p#rT2r@8lV%g)iP zA-mA~q;itRr8LB`dyk_Y zvtqA(CoA^4rSJmcHKzGbK{-{JufT)H4Y;TK9&A}*z!1k<{KX)P1$qmxRCP@_+V`&7 z0}fDhcA3;Sy#lGXZ_px)PLtA&JQJfU^k>H%EJ8qwqS5#&aO8@b05K>ODL;4`Um!?s z3VyJ00I^3JnkcJN=%(GziHBk+4O;v@y+|JE1k(a{NEGZ~8_)psGjnK;du}n!Aa92^BN*&F)uD4EGTGPkP8P@sPNUzH}WVKX*y3uOY;}FvybqZw2_dw z9#hOudkJ0ecaqR*jugy;UIC1}3UWE5vkS4bPv&DqN#toB9=!}6TLD==w;-9gs0)w~ zI`qgLtB%Vs{H_^(PX4`;ORhB^)XJx_2jR1UJ<_^jamd{yWax`dNI&yD`3aENq8yU! z<~Yq&Alr)~Tb2mqWWsz<#cBKG9ryyAK)4mI``|P&AY_WmK(ULfFeS(Ss1)vXhIjE(Fapj(P+U+R*H1LQza8(BejX;1Loha-mCLUp7pnzwg|kv<)Xm6BAVna{K9 z3B(f++{&em%=MAqv0XZtY}P6YX$Q)zd>2v`%=ZGI!+882qj`mX9w`mBAZGhz7Wuw@ zE?o~`>!0BOcue8--y`H!NJnm>p!}MATw)vQN;`9bI27Ang2Ehu4DmU=Q#lkihYU<= z9iQ)2vFAcxCgj?oZnNe>D=(XKm$M7qrf7Q6c?y%+LT9kBU#*m<{q4V7yCQ(o?ec5O z77~Q(9~jYLV!eLf+EiZ1==_%9Z%$2QHXleNg`uH5qKq0s9h)2w9dsapBU_^xOo~!c z6FX!mjJ`MDf2ag`fg_K?6vf=If}`u1Pg^1LgAl~auI}pK8{jTZg5qu4ziEoTa=q+w zNfiq1rg{4EcJ9j@Pyh*vmZ8<0CrWE|G4}v;+kFdFebNQAO9I)lDo?HwX^_QKvPfFN zO>lN|HXE+|esj5hJpdt4N>L9z_kC%3OS5oHt)o0M{P)Y)9vRtKW3Fv>Dx1zI2E!$V z0)7P4bd%wFb1mZXk2)2hLud?`Aml#UBpWz?0zRcaXa-&YfRH*^VIHK6sU~@`D-EOn z5p>O?9cnM+i>>aT!W1KiOv*DUy)(?eJyX8jJeew2dO9{nRq8S7pDhE@JPnrA0?h{5 z(R-?L08v7DE?uX*-?t2s_qbJ10A4ocV8M}5fqqZ&=Y zu41Y)RkkMI`KL`mu2W4doCPe#?Jli%yRjih*7dYqIBT4-12pv~X3sJ3l)dn($`dUT z%Er3!9e zrZg{2=FmejoR8*A7mHsF;_Y!9Bi6ua;PgtSxgm}gCP_x|clz|A@hTyqFthCUPwM#F zplK|%=yBlNj|)P`9{v&#CS&rd#7nW6dMvdrUeVZZ+vq4L^lSQ*Msbk8j^r(O@yTCU zBVEr4HFbnG6s*DE{~Sb;MOJ^Nd5*)7=`I!BfEEhwvYH-T=p>yvh-@6K;d=E27?Rm6 z(p1eU7y}oMDIa}X{HNBd3u$jB7o*PEP}`D8QZTW{a%gERU*S{zfP-{K&(q@i5;I&= zGF)6X4f9DQ#AaAqxpLz{^0R+eu26=X6Tgrqq+G4$Kd-QJ9t7jiAh_!0% z>N_WYUf?-H*-!R4G%2#@WgdD5Ggt%1hP&w@(9fUjE3zY3k9TVd*A~=WACg*c$nc7! zy_hRd3Bo2XaZ{7_)tttw3*)U<(bx5wZq7k>HYIyau$kY%Lszc+?=`lv7-ZV%RwrYqHQ8XWWF(K(6k#e3q&XD!G5*UaDVOY8?tF=9jw*Eq< zXlZxac@9l^-o!oGnD_;0be6pL{n*J0Fd!U&aFEZ@ADw@h9ATgoml_LK`;Tlt>Ai}B zcS=K%dJXq`TH(a!mFn;7{AU+w=!`J09nuk^Hpvw8&mwi9L*C6x%3^^-d&3lm0g3}IxXCzJSV)orNniL#d ze5H}`jy9>S|I71}7oGnmj3dsh%n!_otMxLVOmhb3{;yp#l?=}TTI4ss%dk!2h_lne z_~|1~A+mSUKee%YtD3i{uWchN7TwKWEthQn>E4dxCA^;LdH!)W*1XyF+41$4Q}^US zX7)gV5$PGcHsp3Kc=&@Fxp49KVsVaUTg~-}6lxJi#j6lrclmVhj&41&1lXeevd^{E zG4&LG^&A!d#n61ps`KLrC7uD3hq) zOKtSHuGO+#G?kK>*7PrW@IwL>yq*6%Xpn{q;i^@G=7SEdx1pBZFg>)|34s2|>86;{$VA60%b-Tm*u{LqN{`rI1c4#y?&zj5eJcCF z?MkbP9jR2VcsL(;B{UXAiP)U~5GRN>MB&%H(vkouHZJwWo2EgZE0Eqm9f?+TG@hnC zKj=i|g(_h-zPn+{%ymTz?QGY3eZjz$zx)rtnKdzqvHVD)rL-M4k( zuDUzs$XVsqNuSFFz2{i0uYQ+bvF@|J^W>@HQG7$U{^nW z2k*v}S29@?gF*|&DuT_TPR$h67tkE5-E)y9%C@Sl>$p>%8-lRG9XZQ$NquA}j zwlgW_fo)%&gDP}j+}Iq5=b%a3=VjrngWuVefCG`ViGp6BzY zB1FS_k*Wm53OuS!i8(ULq_WrLjz_>o-&{4z*0wX1ADDB6lbmz+g-a3|)^0*TJAmb9 zaTc2gEDjsI%Ne?fZlKfjA##5iO8wFD^$^ipQhZnfGq5z(IlTSx& zb|k9zX?1~p=h9^BVqGy9I3|*6+slJ{P-EW7^|cNa_IVq*G$<}5Ii6nGkc=apEW_9I z5zNT`*<^+>_z!}&L6o7R)|(=_G;4s5BeQ!2e@DwkS}QmT4r0auci;&AQ6>yoC3YYb zJ2jKEJ-~@FJXVU=W~U;A758@>+#Tzo+ToW5+xTaZMXi%{H{%}qV=`$OQG3dM>$req z0;t<&k7G;JAcE$T4Vf3}B{ku}>`sf_EwGvF_sl7Z>0#HwM^irb-*ogYeGXu!XwJm% zV=o2YNl{oYcmRzDJ!>`1+_ckr~Y-J&FYxaR=vw4bK?I8|nWf;ey6@;IJ z>EbQtDcEe-IzQfe)R}bEW{axK_E2xB2BI^WV?-w9J*4_i887uQv(Obc>wtvBvU%x+ z>ftL!72}7i&#yWPv`rFBJw+cwEubeJ=0O|$bHtql>A-rM zx%{e_Kti~g4Ihz-jP-YSc5-TkO+qCZ@j|Jk>D9r8N2rhazL#l|hINcjSW~M0eT2&c z)R;G?4)ZP@Z4@MnA4Op&7kd^saJpJA%dg{+?u9F=XOqS_4Lk-W|x&t#E?s21Q2d<-t6m-o?621XB(>yokjF=R97>Ws2oQjC*RAO(*wxx)D@tau|T;Cv@ zmku|jrBxS(R@dG_uTD4pswpN9cVtNm=|VEbmo^Pwe!XLl$y}s@w{+gOolGp;t=^Kb z%${MM<+ZAk4b@-Oo3G{H_Vbts=@GEE)!$x>s53}n>NZ?% z{F03{DAH#0$Htr53__sFR`TmYs{#hNOwdWA5o3zg;~2s-gHjq+phqU(PF9>h?bV5J zlqjM`RK+KNiO$20?8>fCxZ`j&!f_(0WFR~u7$fsU=Zh~!XJF*rCvC55Y8$a17&0(= z8$WV%XJC@3{$fE^|D~2i^W`_xBB>lEGz^oKwuJIiL!ZW0ir=6y2D80d$>pm zxzuZ6v@wnESwE{#mf(Jc8(aY=3momz5DhQ@0A+1YAu~p`I^|G@`k7Emx`FVtu~#;0 zYi7vxas*$?5mFx{d}GLq>LMs#t{bs6FoG9Gh$8+xz7F5G)e@;*@0?@S!BL<%2wyB! zGa;B&R1;>x`aG@AB3wg<`@`6%cx3syL!rmh4VO#hO6zT?@ZOo0!0NGY=fonvCvNlU z8~YRYRR2J?ru^TO&D#*g73GAWme?U}R$|-4F}+(FxMW?m z$^Ba9p5#>wRfqi$OV+?8yOZFKb}prBZGd|Zx!jA+u6RLsftTfrd^M28A}8Ip*j-Cv zgdC`+llG&PobWIy_ZLf!1dFB*s%!(I+c@#yUdi4z+F@;soa)t&S!z@LjRJj}Zip2? z<$MU&zlYI5WVc94E=)nL?ZLt8w3mB; z;%gC+KUqc|vC=5Sm5+nwABh%D>H-3K#4-Iu%ZZKu((29wsu`h$R z7lqA=hSH5x)F2|8nVhJL5vift$MkZ~i9I^KWpE@bz58(aB;GD!SX8w4NF~mcpxvd~ zZRXUCMyv7~_FmG&%L`DA_2kRHX|1y3lD;Uq7Gh)YDrii`aDs5I2(ecCyLSy1Ny*d+ zxx5(AZfT}2S9wQhdZ{uRu-^5uh;S0Y<6JZxOTcl%@yAR0ehuTJI-NAjDD1~hrCMR% zh-+-|Be09uM@|N>;y^hKTDifLPVIepWrBG(%Ia!zi}+El!PQ|ypzGhH`+B6Fs1@H} z>?O!e#vx-BaN||-$~DsHCBW1aG+9zJLjUSDb(nmszM;-N5g`mLsDQfwdr+~1vw%hZ-ZWm+_hSCGYJ6dThIr9HGZRmdrW z@fpF{RW4s~n)_erV!%xJm-Ti0ZdcnJ>FlaF_+TpXEA@psl^bMyue4fkS!!~Sog$cP zHOh>?24bbITHR|nsBUU)YU=BzV;^j~hoBOh2W^9RxI5?A!p0tRHI09&_K_e9FjJB%ITlVjcT>@5h|;?wN5$^9u;ZuE(rNKWVs;|k;BsI7 zG9rFLKvn5*y29*(?A33AuBK^rWa9W@rUO!JrksK)$SOX0k+#>6S9RBt2g_5CPFIW~(=Dht~qIQevqxxXrjtYZGT?{8EF?dmB zT$40lhm;^=G40dC&&endo-N~Fk(uOxn@l>`_9dj8q9(-m*p!{6qW4op#8-|UnRIV1 zeM(0vPMOGOYHHcSDaRqy>dVc18r`w9S8d01yV^-F;AV)dT*ktxiIEP`=HEvP_eLGH z>1l|e$<1Qx+h?gQ(x_vPdG9`@K%=%OZSk1MVT#RHUrysPtks*SK-yNVQrv2n*$}*u z+4bL$Cv3_~Ie*qT+Sxetq&1J)JL+2nb_ci{jowaCz6I&t^Q|sX?-ytniIb4I9Y4&C zSxdlxbI~ zdqc%NmZ{=$2)*&TGP@3hiA3|vE7C{}nRC@1H=Upii;7AMk;sLLk-6Voal6z_t5eIo z=OE7B3WbtB&XEOA(2B&K>GO}*KTx;vLC5W1_sF-sIvEBhB)5HtI#(5>vcmO|CZe;)at-W$qg-b~gCpWoTfv#rZ~r zN&nJ5PRh|LG~D({ABq*&>OpDzj5ifY!@nw@>;1I060+rBW7Ifq1TFrb#KKJl#d(vuKeP61 z`SnQO=E{~?;QEdsy1ldKdcDKTY=UoyK0r(oUfHFVeDtce3ap4>wp}F;UCk*TVN717 zsM;sMZ+_7L{Q2LO*KpT;!aVHS(EOe;s!?#2$_knQ;8(1dY<8rK4F?$EIxcX2f+CQ{ zYj9`(S@0_3sq5qKZyErnnhs1BpWCMNCXK$^W(Mch9k(8tgJ)qcgbYy=XYO!qdwYE{ z#?!Z~o?rb8oZwhM$-sRs~PJ}bV!17?MPHRJHk?yfC(t9#Ok#l0fIGFX2v)UNgtNxNAS;=U<*(?b6yxsKGs z3ykR_mgsks$eCs#Wp8R}vfmo|j_#u;AC;m+)8lv^Ud4hRrafhho->KG{FUOB^3Qd< z*=wEqtzhQ+8x^-{{iQdlZUvWff+E%-2~+nqhdC_=;dK&P!uth^)T&;Z&u+-RXWQ6A zT@TiOpAz~WIl5nZGDnHd#YR?S$T$pl&|K~+PZ>xG{pen>N&yZP3r=V4aV$C4OX<`0TbQZLJ5+&78Y%2ftAm3y0n36n=l zSuyKgo+5DjSliJqnDeJRyEVVCJ43idnEFT;@yIF0uRuV;TK zl-Ta33VUYZVH9&Tv$I~BGP^%Ur}M0KuT2Qv=5e*Lo8K7$EeIwYu^GZ=l%jXzo>Ijz z8KleE$FbP^bz#4-<}qgVd}2F~GhtaTHNTs={^jzl2}^ZXTJd&}E&3)6Z{Q<(*Wh2L zZMYLL7DK^5dna6eQJp8^*QjYS2nd3RjXJiK!q=qUMY$LF-4);uW`8m3)k*KKX$gI; z%wIVh4ElR541Gdh`%O)9_}Q(%u5tcbe!A}qz)`>{N{L$75YMGNqVxW%{+C9R@~4c5 zZxh9oTz8MT^}fk}&VR6j0OxC*3E`B+vU9WVcDtGc`<(o?`)b`+W+cO^Snm&@;5Bh`re}sxE;57(m>nm;uO}%uub%2_X2n@RPAftO510BV2GLG z2W$@_;|1tJl6%JO(1$NG_i~G(#@u&nW{;`Q>95O0^Lw3ETp$a`7?G#+(v>B2YGjEY zDb?5;!-CCz%)NO2J-qs7RnpJ&=ZH+oLYSFj!fNq`Ql3XKCW4w=WItSn`36vC7 z;z$(oNnL||o1+k6+ZPPA9xFoyi1|RnPH6##Fjw?I9EC&k={%xLmq$#(Q=WccO^}cG zhVqUMLq@io?0@TQY@TKQ^u_z6d#s6bOrFvJU!AtzVl1mMpo#`TSLz_Gt#%#V$Jblj zt8?}0b0rB3WE32_HO(i^aOLU4PiV5eYYU^hwkE;0ixPtXN)4Rw> z+%A;^y5s4+R9!t3)4_4~%5js+t+^*YzkwV0I4OjB@;r@ms0KvWMbmki+du%GI~in6 zz>hNN+AHxTELlp!5K0NsDKhE>r`ayWTEs+3Y0;5o7)-FmC9=LYb|vzQ1M`jOj>?3h z80=YSEGHnlKhJ=Ol3j3N^Om0o)UMFZcctC6rhqd4r_Ode-))eG4|{Lj!gCuTm|`TU zcUkC|N65uRUhRiH^|i(8~;)*DY{Fv zT-^0%R<2qBT89foVY_VkUdGmu;r8=R;Tow~Wlo=;3$>h2)V`jtJDXs(Z&L;U5&MEX z^umiwfILz!C*xQ5VFIEZXMNAYv@q6Fhh6BMSEZi9*#St|i z1NFlrs#h@h=;iIWpg-LwWm%8;*zS$S=7DJiA`l#4QjU$;=cc!UWQY7>Vr;SUM%O1& z4^7vmbA<1OrFkt|;T6r^*2ph8!CdrORE`nw-8_Bo!Z&Rn`|<}0MctvVizte1FSQst zOE=zXX@EtMoZEvw#WxXGCOn#Gg5zWsm=|qQ7`2fT*%mwN^pY75-9s?zeblv%tathA zr)XFGjRYYx=9m1DeuwxGgoUZ7OyzW`Bp~knBfE%N7@Eu~FcSZAocVaQ|4E(GO9gWq z-C?bm3K?TrFSgeVo0|d{}Ih+FCntakUvElAo zG-5Sl8XuY+t-~E+$l3Gg5@+r|-*f0H3=)-3zWV5ndK|;Ps18zM;F7Gum(r%yzC*HA zI1V?QvFcVWE%$4}k7LJBT=YGXPjvLL|FkZxHhLnW&7F(*Fktk^o+OyiL~SK__BaHTU?7w78$j8no`cfac$;cF?~j8(al6p;9*Z z^>L8UHNhvnC8B!MK?{*zyDYB>Bh8u550S=%I-Z16TRqZ9xLj*dCfSxs^I{!QHy^Nx z@Lf}-KShzJ6CM%oe{-qHJVFSc6rjM3cUA%r7 zEUr8l{sr4z$}UFZt%hQ^dCcTq?&y#Ym%*Y6>9`gkE%_Xchc>rl9?^)Z<-Z(h!QH9ehvaj==3WT?NsH}&PZ(y)OIXJZ`Wz|e zFf7>KtYS}l`6N&FLFxz=bwKyR^F96z?T`HIZCp@9QX;&$y|-{Gk&0uA(WEs`>>Qs| zZ4=a5Jemyr-FMv8-B`E7zkK^p`b&aN4{u9^RTeg20ekWJ!XuDUiF_0x-H;}%b?8Egj6Gbd-O0A z)@NB0$2cCC_L~Nmwb+D7K&GuTnZ8i<+aC))cr9!A7MGb%+8Sew{Zsr%-gcVUgMY;R zJ9`#K)K!$9Ir^U8%}U>-$Xn8Ox3##B_a0IJXLRJS^x^i*E&ln(g5OgN8Qsrk6?vTU zPa@%Y>(p1x3E^U#c?QJsH%F8$MVc+u1vkn#c4fusXY2H@hwl6qq6JY{8nT-i3GOk4 z)-qlB)cBVCQ0UU5PZ~8BS6Y8)J}E3YJo~g|=<=ex#b|%Fv}BXVE92p=ev#MGJHTRc z9_0J>(abT$lyLRP>dkkaZ8x1s)5I%EG`L3Ze98@NTDh{|`~H|L)GWC6XTbm}^-M^ym88O5eF2+8L zD|Ti&)rsxUg(l=3PF!2dduv#-V)JdKsQEYPcXKf1Zo@yCq`qZcbS z(SFv?0uqam8oq-9rbdUzx1KOo40X9*KfA87V|E+T`Q|Ld5<{hB@U*vatADZG;mG&H zBxy|JK>)0FDEx_&su^a#&xE2w>v9e4_{Zb&=U}<@nL`Bmxx>q+KO%F0So|8lqd(wM zg7&d~zb|INxBLz@KsDQ2NVgT9dx7_>F%gevKGNyk36$lujy?-xY_76C0=VHE^mU|c#O()Yi@80@z z@|%XUZOvA9CEbe{8pEznP*5$&9Tb=kXoRocFn$(;J;WU%dJJiSsDM3RC&SlJ6-nL!;f8 zp`Ec^CXJ`qaA8MbN=t}rHa5@cr~Se%p>2;_s*V7@7c#tMc69)(z8!736kXBmsf%=d)iyXT!$K^3U=*_?T23l;o57pgfi{G}o zLc%CkOPK%&&Q+p+n56BHve%_JVow^AuZk0YIwZV4TecV&@|SoZ<5SRin!Z&+HR5D0 zZ$2Jw>&|9xRoM3m`qAzE0nbhQHC&++Qn?8#@NVKEX70nCxugIf9`E%30O* zMBZnHt39LK%HG|h7*2mTo_@5rE8BDRuBu-57l*rtl~wx-Y_}creWnVo-lIGy4|~9c zexnO|oRaeCwZ2%eZ0l?J?SZ1w_(_m{3Ii<{5qCMUQ^|9u z-cJPI@HX9-=%@>XTFr|$7G;K*c>k3PMLZV0PXxte>9Xy_aB;!(Km~B+ZS$0IIb5Wz zO$#UHWyo$^n6a)Ql$l-^k;3*XA;}43;0I@7455}L;`tx2*?Ybgqt_O+L3j_QN{-sQ zir$rWEw@lxE*(iaS->24*U_w&Ft{}sCQx8n*(hSPZP*g%Qq(7wXdMj+<#@Ovaxk_8 z1tNzzwT5}HVPe_wk2Hbi#6qzk>>XQvUJPQ%g7i{#O zy2Bo$kI*hq!O*89?mdT$G%Y?-z3nHZ%r=)G`bqllZ>1t_SN49`eU*g_$qU@3etV$!b<-J}y`Ht8VZIMj@U0%@M`PGEPJIcpgjN5PgEN)a{A zOpVlJnAVP>mAEN;>48huK@ZWYm1%*>GRgS38pzm`Uw<`LCWlDVL8|KU6vCz5cnG06Y&q*IC?D7~>?Kpv zybB32JqR8eVAtnklEMzK^zO8SNLn zj5hQjxTqlH$0|OtOWJ@zbcI33@~L6>_Wh#mH$qgcLH?8{c!~ z+3ylvyh<*} z4aw%ar18NbsHDra+26rpQG*P*_q}*Fun3Jy1!P>e>-B+REZ5ggfM&hfW52GHHpCB? zv}+W50DmEFn6tjPzYSp8e#E$=fEcfHqroyG}o@fI{_jEPs%p;q`DC<;&Xc9vWmKoz84K9*4ym7oa#D`ooU)-Zy3d45?hUk2lq zHwz>tnsMay2k2VPOcBFtobePs0DHKtC*7|IxJn3LJ-wlpYg?^jVSniTzd>M*%;YZX zJ0dT%MXjsKwxQD-sbJm?UxTbJ95Tm^yl`BPC2#<^q7HOTnkDggNrQv~G4-#C%S_D< z$=NEf_Z_*ksOC3>%Sx?UyM@+2gyM9%Y=;0I<|gao3&2cW2SC!c08eD%VK_TFTcUw? zIVUErPBB-)kPp$@rFW^KSoXb(1vY#`xXf(;T7IrA{EnC(vvra`uu{PpcN!~^d_IAk z)mDi()i*_#zjVmp)vCSW{2oe6#ywxF(^W4ciBG!rR)s6PSz5d-Wbl%%AipI1=c9+; zC);YzqCiT7>GwfigTpLXsDjPM_}LN`h%}+e)FMm~qU0A6>eaj&oc@lRSE__Dtl@FP zcXGS@vT?=9v4oX?_dB_R6HzB^Ig!n&SMn5Nu9obkQABMO7orBJUm?FtyYs4ti_9<& zf?4Jj%KkI7nNL|;t@N9QV4hxAYm5w!@8u6^9G4~R zF>OR9qE~L6Mb`?_I8}5DLY4~9)XaW~QcSw0{>kR)9#=;V3(y+1;oJ0sAUyn5d#HCw zLmoHnpgJ2z9P*#6`lgdE|2R;dF~LtFQnGCJXT+B}koV8XjgCvKLNJUHq-(v3fZw}A zIp+9^MVD`}>-$Fe>9ER^+muv{^V-h@<4OV-GnoUOr?T?uKEra{KnKcQ08Z;HD7lm6 zPqe~y+if=pF{%ohIA9h)d`S;?r6dN;DF;T0{QGD?u|pHeq$&7$8ntucyr#W468l+j zuM1Wf79ktBa91m=3?2(4u4p->i4(MrQGkaJ-M>#)6n_P~z0qMt#=KSw7qK%h{ut1_ zt@lA5r6AW}tqMYzX5O^#GZVr?i~SR<#&K_>SmGsvOQ~+aci*NfG4J1a;#I)&olYeA ziy0oL zf^OfyEZqC`itIZ9bZ`np*o8d@sQP|J+Kth4NP`}ZfdmlFSun5&@fQ4^ww!@UE(6%S zIs9QqXbF+q|Mu0NV84sjXdfl^mQrqLwz(z>!g?O@;TG`yJ76bGW``t;U%mSt6P664 z=J%vIV}(j$93|I6SaJ3(HW;~|6#2JJUMobat%d%^^P=+2ZIQvti=rV6l;#M^QZ&#Y zeH*P6WBS5n*P8OXG+E^~@bO;YdsIm3i!kJ+CrwqWLDhTU9z)G1 z4b4haDfx-~^(C>4H9jO$>QMmuLtU;c4;vT!-RAfDi+{iepavz7=r-<5~CYOH;!%`-8xELWtIG}6i$^K4*>aJ5y!e|)`-ysdKz^w7dL;zEQ2fbE=DQhpsjdBJ^`Bc zB%68a@fsei<|Z%=c5TLy)~MmkR5S_I#`I*X)%hu8bPPZ{3+$p)TGlw2IXHR zY(((6DDe0VkYFfq+)(=dntqH~LW9!vKTBAJQDM^^+yi}=Nuk6Hgs91J8bqzw*s~zM z7a*xY4QRkaNr2Aicu7H&u$K-Cm}~Zs+r{NOsU=?=&$Gn8;PJ&MNWmZ4l2Ou+flC?E9P#Iidpa>4%ZXj zKe+5n75VDTb7;e7qHb(MO|+}9?@%Wj(38P)B(mdA=9)RD*=hvgD8vX|`{`H6>JZa0 z4wl3~Jn<_P3kA&R^%4POM!9!A6}U|ytQk`v^-4I*JtmCGp`zmPh+9y5+Gtqy_9l3M z1J;b=+%5>Y<8mSM>D{f+LKiGV<`-}%8a&@U%&S2tjBBu2R>5>r0d3+p~z^t{=7Gn*hN^R6%}F&ML<&Ay}Ty9w1&< zp@?sgp@o2fS}*hX)lkM+66|f`?ap6}HAq%YLJNY}!WjyX<{BSF>Z^$be|u_Tv7xN8 z08$&p9mSv9UTiXwwjVsLz6GGc#ely>MZFcb?V+eiD%`6NxF2qh{AbMCM}XFvAw-Wu z=;B^11-Y+L+U3&7UkbQ3bxBehg->eVb5WFfpu}qdZ7xdOIQ5f-cA*3%);tKX=ltT> zgL5f!%N`ce)?rzKiA-vy-x5(+$P}sK%GF%fw%jR_|Aksag%8Z#?8fOe)N>M}?X-ys zu?tS>a_jH&U}D_^;6%6NXB(h6h}+Rfe0*MaKzg+9C)}|u0KuW|N(gX@ndMdMRm`!( z#9+>dhu^s7ze?!6z*XqO6Lp~wmNK2oSjvl@$k@loNax`wl0tK zd(@bW$55h;PHwYV7OwFVna@ z`f2|IjYJ-qe__{cu;AKPKn1=)|3$w>#+9AD#|w^~VCFG!8A^uclOxlR4FEQ6l@Cs@ zGK8Al6Qn>nEP+NUGBZ}ul)ZN&W==!yQ~Xge)Kz9`e{Uv# zpsOLRMKJVEfAJk`TWkg9>6f%Y--s&p(2;r!h_;E{pAx=oqPSydPa#ND5|iYju>YurC8qbnY$jAb=a09hzAdr~Zg34d!g94`K#3(b_nGFoIXXyT~ zSC!J(Vdl3ptam~CRHSO#qYov}Jxb|P>}=WU6i#Juvwul^radxEQ-pFm!Qq_Gy0^_7 zK(q%EzGIe%PJuzwSh0ohpd>TdIbQTa6Pnrfb72B({8ecea&N{mXqhc@%9iD|mzHM! z{iOz`XAnl5H(F!T*>zu6vBG;o%(a&0Sd-43;|vVuJ=96LQ)P~eA-hcd5- zLnlJtuw?+}fho?JH&&U;?r-{pwc1a~vG+MC&kSBmxIOe8T?&Yq*e`y4xZ-W*3P}Ey zss4&t=LSp(EcC=I_-|s`=eI%(?>-V?lXzVn8WO<4WHb@Lhssye4;-42kAjvPDdQi~ zS{Ny%oPQhdiw%+|-do_Few<#i&U>vA+6R6od^M0Z`&ze_9ZB=Ua1iL{AzJM39_vwt zxcYcl< zBV8d8yHyi7gx;?HsR(PhFtMe987*WK}ZK$+!m(3=q zYpQmpZ1GOk4x8MIXQ+)+^}Xf5y-Mu~o$S@~f|mtZ#93K4cmACJ6D55%b)RjQwk+p9 z+67d-Uf>=)c6(W=kfwYqU^$2!9;FfbxGKtDZ{*D$o2yTrv* z`k*h$_xT*hz#FM|i>mk^L9J6EAup!XzA~O(`1HQ{>y7stdY7mo8{k{=+zuOwz73M6EMS@WZ1i zbmNQmzm>D>XUwtKRN8ZdnkgKbpYx2`b zCML?^91Z&#aIqr87gr;r1uEbzUhFpQWVj_tB??N@I3LSS4iUS=QL&~hn&J@erj;JYi@i+${xD|5vYb9E~Ccs(aX zHyt-}?lD9gEG7EFToWY5MX(!&a4r`$bd`nD;_BdH%|W@y%oP!&_Kz>|NY)eRF0-9J zRZjqcR2hLIGN`AXV1lA&eA5P9B5Up_cMIspDn5$T+Wq}IAjtr^9gjoltIs4VE_$DP zDz%pWtzEWjv)$s~5c5KH-m2sto|C(Ds;lhXL2CC3ly_KCqK%;XT+$Fba>1{`e3LAn z!A)BU5aXs20-5gX=Ldp$J~x@=M6^s;Ep*{c2XjFeN{kH0g;Q){io;V5Y`rvyG=?zr zR0cs-iIY2g^G$>TFjHn0Q2F{+Fa>~16`p$k>oQv3Zy0eVe;oWAp_qEj2lfnHx!)O5~x#BG|!T;;TdarTejPk2IeJ)PEc;&!|_l>iMWSw2*k z;E)c=NTN}b-h^ea+7#i{VqXc-H-Oq0Q&O~1TSEp$Xd4MPp6T7>OlM|!V1maYqCDcX z_p78lKk5el`O63S!yL)s=WUq1tAY3@vegcVw&4Y8@?iV})_@ujyEr_lRz=P)FtpwI zONOo1DF}TX@&#;TxznvhvzjAX&8YVLd8(fmes&NAN_@;_&dtTZEei zxx)}2Vip4jz+w|Ryea)ke`1IrWb0M(_~JM$t?ZkwLx=0hjiOw|id`|!(P8wZy2llK z(~<@!g20<21qA{vbwne+vROSVOqs+$?eya6-!^*W``Hy1n!<4RRavKLNZ5O`2_fFL ze48ySV{Ik4@mjmUjMOHWaa+V!96X6%N5ei@=$jlFJj898i+ztlEDL{_G&!|}2XQy? zGfGEKNfFo7N}*YTjet2@wHJY>+NDU+7rA7$mRsqr(3}jNi%c?N6Z+u9e7sMCGU8X77bz!&K0K)5MfcH%k zm4F8&`I;7-;Szx*Zex>kDsow#rdZ0d1p4znki-ro+T>;+av1dO{_eiY`!l=a+-cxt zu9lo6rA%{?8#foG;upY{G?s_aqr@mBkY}46bT9v-HfzneG}iwV7(Si|E9*$4{p)6jk;* znI*C!3CkZ;doXNSp`KA9ZxPiIb(F7_@6_>7QD&6f3;KSvV1VSdZgBBo^DBOO$3h&$ z{U^Z*JgsV4LgqF<0F~)Ly{ag67bT`r=3!6c>Q?jT_yxvfO zTf=Gf^ffuAS>NYgEV%k0?E(zo-{}gdpnjs>iKsZeC-_4!>p-T9$62*wL*}KNP>JI| z7v-ST)!fr=REr9I@!d@=<d78s)v0uHG4%&__sG~ z+1g#259L0WJ@T+aDS#!&XNY`(N$fF?EIvE6i-Ap3QVIquH?k}1tZId?AC!#5%k)H_ zgoUigU#BmFPP5c4u;jop$`iHv-&%jVKC1QZ2Kx`sgQ{NcKGs#159h86BRy*S8f#*%N9~FuWkU2Cj8D;s7#kJlk5)_ZUS$W|MMsQr6O$u6 z0*BAnDE{_OR+cXO>p~=-KR%*D>tmOte)R4iW+0g;W28U0(6~A(odt%Zk&@D_R7G- zL-?Er5|-tn#r5M6>7?t-iP*``I57`=D>iijFxGc35yf}&#SGTxX*Lu~`o)ap6x~11 z-7eTTB$l4{cW3Z9gsKC7d^*ss7?PiM)uq4CTPMoRAX4Q_l2tN zfC+ffqtBgD0F<_{&sEg1Y`E=6RQq^v}HHVtuC05lsy)iiL1kY5ag! zd}ei;t!%>LiD{0#NsrPfpSoGdQ>B0XRqnB70tW^3Z#%balGHw>;Aa6f9XeWJ{_Z*S zq>1cYT<_A?I-etMo=74#=q9N%}Iu2WA@enH0U)_56pyV76%dsb@${x+vI|ej$ z=6$NQ+`!WZuvslve$iBL?tb^G2zrPu`vR>UomYsc$wlpLI;IQDx+m+g9VuCEx~Y)kyk0b61tY{YA0X z1935U@9CRSUFCreW%Os!+5a*?407FbeyxcHsxVWzCt4Hak!hr#c!%`!E3zySUrO#n zEdN$a9^A{Wby^gW7h6^_d zcSVi)0<`xchx*4XnyyY@M+<}^Iz=E{{$qv`-nk(LQV{R6^<|_$=NCHc*?%p>F>t{rW{2i*cmgHq`2?ISOz0 zW8?+*kC`rI2f?K{EtYu&s=|Wd&{ju%?GI^DtFe3egTHz2>XB;|ipN$GNpG6xJ&Px0 z|LDqd$P+{#dv~Sf_9=Z|Uj%MB>MGAYSEdwjFAF@f<8FJY4Fd`Bvl!eUq^CKw{*&?^9-Jy`S z97UVORw!zkH)bhioQ(J@9na?^XJcHEIF=CwLDP@=AJj@kzG|N`d>ws3G~8T16RgY) z%F}UaFn!4#^i0L56=a`zrsU;9{enGzcfzb4gYQ!J>O!)|pl+rEFL)*1&^S@_LK-Hs zss{gZ$62_9Qh!&}QpAzKVRXMM&5#I-YQ9qtI5m>~fd9~@IP+eD$5N>;VJ7HJ_pRw3 zxiLJZ^Pa(I`^HyFInoEF6t7jz1l>KFE~+CAWl`D#aGKX zpPsjHaIn&L7++;rTFv!yF2A+B%TcuCGdsVPo37(@UoTZ~J+W#Gq_nKP+>n=%^9oaA z|7P6Dzv7HgujQqiQ#;LOPc!dzJ#q=O(&qJcTX1ddiFJUBiTCkOy4=zw-|Y62iPLk| z_pouj|6^KeMlLwrsj=qmBi>7m>JaHr5Xsw&Ph|ii^#;@C$W5HX5S(YmU4AdQJo}ry zwP5zwsJlY`AD~1GuB#)TBxmZq4*tIG(6>|q@3A99FLs0^uo;KD? zWY%5k^l;elB|s-%&w89Q07im+FX}b1bJaTh?j?v0oby9m_o z9xw$7PrM2wfu|2tf-G7SB=JY%E;Db5QZHZszV*h*$aA-v_a4mt7tKqAugTz$UBHX` zOQwGHfwQ>C3v<^Ev%m9dEl5pt!j|&6@jZ_Tn#q^d4Q{H!rb?>U8@nT<&q+L^m;GAb zqukW4Y5m#k9S?o~Dl3(%9!y_6hr9U0s+?kRRLenoEslp{ljEvlLvx02P)D?GK-!PRFPcicB9~(FG+D zcTRDM?0XrQ?sHyG=Yn)?6T7dLi5J~HQZRn`CZo%@=|86u7<(tU8Y#Z!Q#vEAm?89ga;C$q7VC=`}v)%B(`COde)yCOVvE#%yk^BOv zwEDjnQ8fMD|A=$7X~BDfxh6Ly{@3mWaQQe1OvGCUJ|)VvB@dPsmOQ!W z0}>#Da>PyYQm=6qt__aJDEkL-$Sb4kwg%HQfZmD(`lWZd+MvWU&oC(HE9L|1sQAQA zY0$mHXDjlZ$L;K^^4uL4xfNZ$DZaayE?`q@340S4Am#k&5U;^0c10?b^`GK)*~})8)+|@oFn-uxs|Mkj_39BC5sAp$+{Q zDGY$cgudP*1uuM1PXCkPH0lz)G30E1pd|i_8AWr^#`SJn-+WXVWhCZ&t{8(&1Wgqs?AWR>^NH;7|{L zS(2Uf-$7jQV5-GpvZ&&F@$dW-ey{Z^EjQ*-WAWL~B4pph!6iAxUw=C=-QVa~P(V!R zz9k!7IpEFaZB28Ivw>YYjqxuK{$lO9p8a2y8E4OMM_u|^FXZ&hG~z(lHTB5h+S0pMI^i}S z^;f=5T>aK061uC)n8s-Ho|AR&F&852(m{CkKsu$Qet0J``}maUQR3bIeqLTYP|!OX z)Y-@}-{|@!mr(|erFH)I94WpRAMowR->lu(PCGUAV|D@R9EjI(X4eEE z|5<~S{6ve@F$LQg`1w=1^UoiiKV`2Tm%jht%X=gbLVSArrqYBMV{#L71MFRo zwt0MFc0cjanJhZfWk&w)c<=kaa)h!?YQhy`L)Mep=;KJ%AE!U`V(xYQ*%4{#Iv-$- zGmi{*QZJ5q3;kdpdUl|7aq+s8uyaCy8mGj<(J*Tyoe29Y9VzvidG)7AIw|sd%AcpL z`@Xh<>F2J|Q_@J?e-_H$x8B>{{A(pa{=I#@fgij76G~>A5H7;mR2d-o)Ny#{bv+o9 zngkl#OIQa6keuwH_IMIW+5u}2|Hl*$GKcXwg&W4L=NkX7c>*6)j8U05PRrDXq)L$z>(}qr}xe(jp9F6 zO}D}p)r*9M4B&y-ks{}P2sPs@hRVm2D>{`e<#O5*+3+CV@`h^2ht;VC7D5FYE2*5P zFJ*^e%dkQURgc^2I)SKqN+xn&mfNo^9GQ4pBPH}{?8^1Zuu6px?7SPhS%yJ5jZagMWwJX<_| zm6@vXXno5qsAKcmLgp=nr|KI{hGRrmxJbs)7{)w`#)G!_0!xVFgw?(Xm*nSS&9fA^ zW*eE|Ao<#d=Tjn(QgrJh=&X=@9EA1W`0(jsG$E6MjQMI6$DqqrrYBMsHg7zP!hcbV z&w{?@cA(U<~~Pmf2TEC~>{xhrObw5#Ir=4Fhj zpK^uNPDV>NUR|quAFRn`4++(drLR55a;M-C367zu6b zsSTnYQHmaS?)pmH=oPzT5vqETF^t2I*S^kWNm$n;@=$KLD4p{Q*BwvcugMW)mB4(NrGMNz5RLQY=0(6b89--@>z@M!GSear^6 zxNY|Lvy10elINK`s^oN#E>`(hQ?`5sz5Ew#N(K1tq&eJAelE`XGxn(A3O9ISyhVCE z;b9q;g=~C>!}$Bakg?RExBa@Z>EqM*S2Z_8c>}>Co*l;m8Gc&-ec}`UGF*y)59?5o z7#9xiR%TU??+HRik5;`^gkox@ffRL|t;N!wp?l5O9AtX4k>1!w-;-zt^usBK=ohF5 zdrx2q%+iV`De;5#rZ#8XhM!J4PE#m<+Q$?8|(`9xgbk z5phq+to2)BXZzYR&%4^tmfESI&*biqF#SMCnAM)wbFXle5g`M5 zUX@#r-!(kUwq61rmKsTF$#iY@{SB3ER(g zs>j9-=TKtBoF(^?xTJBXF#6pG$s7rya7w3_&Ui{RD5(hAHfmLKq>&#wwi!%_*>{ba zh!dq|AAG_4-86@zHIrqYiCq<)7BQHij{R|*Ffc@&mNm!(~oIrfGVZ`dw!$iwyILW-x; z^09g40k-(HGuiTK7&N1iOtz^=;`7AP|slFwAe}wBdeqYtTq5WpV=qLNnv$c3H%=uiDIc+HT zWsC)ygspS^J9#cDz+2GPFhSruk&ODhW+41P$7T*`nYucrMAmzx`beb3k%1MV29LZ{ z^ByEwB|ChT0gU~lkY?D$3-mf9fk1%JFDMKOoC30jfFyn3u@d_$W zDOHm1u4XPc?<@rg$EdEc6vQded00??A=uIeK$=?_^r8ToN`l_RGL{ z7R#^AmfhL}49;3+5yE>SW86zxr9{5lw|2V&yO$*imt|Z8;tjs?*}Tj5RDAez(Xdi< zl1VrAb7^lyc<3pCT|eU&+^bM4MPSP`>a$Vtrd0q$gBJQYevZV;F8s z(SKmOnPzN0S(1AMFBGHrWR10yIS!xT+2ZJQraklLy-d$l?(O`L zhjZhoh<}|7Inuh@>+0s$*xudnTI{{d6KJiWA2CONx>f3YCDz>~f}N7eEuL|YB*!Pm zUF8ulKE;b=Yf$5`^;&n?kVQ35F`kf^hm_Iq=9V3Qp0){1Vzvj6+GJhaEO|cxT`p}2 zvY9lMqTUfMl}!#G7r-e#9xE;W8%<0pWr0u;a{2^sxa}Wy z{vG7ZZUctn%7+1QzW%l|cp_qj8ScaEIjXfI%{f-FpekwoWk*nj`*t#944?O%U0_SJPNa^{k>>zGD7|}r% zd44yFTV9WI=-L{XQJ*|~4Vh&iV8EP{0O)OL(5)WKxdnm?WFyiB!FDm_;tS4Clr}(7 z?|>Qy;U%_{@7@mp#msa>5My{k45%^85@i7W<^Gqz9<;UP9PyU$qQlVNQuWW;#=iow zk6`m|Ltt4nltmQ6c5`_gaQ&&t24FSJo%tBT>*x#gh|Hf#-JdmH&S3i@#29sBuHoHb zp`; z4?~lj^_aZoSa_>l_twvhEH1V(y+$T6xdSj+fXePRUuhsYXB1_4fyBkV!TfxiWUfmC zO_3Qm`f<(ZB7BzZ4L-JWWYYOw5W|;IJ!E`Oiq!I&UZYgj7k3)uwK|B&Mlu1(S&SCt z#`AkH6Gg?YKKiVI7kmK0w=sC$-a;6$I!MWc;dlmHwD4UpS=cEeVYXKHQ~M@oXBwlVOq&mYg9UVVDlbq=P2 zV_+;JWjoc@>c=P6lLh=G4Q)EHgUt9HMWk6)I0sLzthZS94xCYcxY~1BLRsecIn$pX z`ClU5WAy1^&o)}0<%UJ^aI6XJ)($?1u?pZejG& zgjsOD%s6rLqALXB7lC{m>)}=?DvR4An_M}3!Mps4HGR;5|7(8JWg#g8-ixfQ%j-jM z-Cr|8Es-@6SA#e8(=ZKezi}b8+Ru+m$yn@>qBcx4wM25a~$Q z0CR3`2oURY4~$!@{*%88YbtgqD#63=%Npi1?wN=$aSdqD3_u_7(01kL?(PGUm#rj* zeC9UzzRtEK^AM0smf1HykQVLsPhKtj`vDCm>fLUtwbI?jb(^!Wx{9^!gDSA6E6TsS=MLO75G!p43{04Cp^abP~$QM zrB2~swli)(S_U{Q*1oK9mk)#=4Kae$aPuSUY|)DmANc%+?ODh!Aj7#Nm2ED2eR0Lh zqrIdv)xTFhPQnB}IoYz04rSHV?E3%JiZ5Q#Gy2Y*G82p6x%Orm=CJo+A}vB+@*v$J z{Mx4PFgHHnlH1Z%>{X_9xXPplPgjoj=(k>X!tpJQh`1aMmno4%X+71-SoNdUU5S^N zV6Qum*rImi-9G(r#qyY){<|Kd(7dJ`>el%TrWcv+N8S<6xn)8=J5Sj@`SHYNy%tZnes3E6H1I*I6E__Pw7|<2Ni-7+Xfz86UBZL$AOx$G>x7YpIUQ zBbXt-=$Ud&U*vD4uf`efm6ulHc=H2Ulc&ob{@QdFg1o7uPcFaXdk05=(K0V2HihY=AbX&&m5DG%O;h0mp>-h`F_ldQ!xqXQNLAr z(mun?unYlq&E996W*F#Io;?u%)P3&=*s;k9mnFi!y#1k}J&ZD5i9i0jmAs#G>1Zqc zJME-EFTVrFzX#nqy7r%_RF;F-ib*7$tpQ>9SO`L`DVIen&v&X_v40X`V$3@55s1DP zL}zO<=8zN#fcqNiI*EmK@pj0M+sTgRJ>AjsuR^WSH=(L->%)A(`jH~G0PP9qlNTOp zAHbw5TwM}D9EHq|MA!j^`O)2wqSp9?(3M%}S=!%n=Q@Eou2_~~H9}~})U})+`A8R?nY}X~uComrnkOvf$3YTr*aa%^7J7N$eAf9)E#bpTSBax-+;*ZfVYr-}Dy?D(~umdc)E-JvM-u$LAV#Quv zt%h_W#1QNi)?<_cA*O`1MUEPn+TdXwCLCtHakY*pB^B7Il)K35?WT1=9^E z3_}#Q-%mN~2Ygh4DE%)NLGG(TS!phpeT;YZ0D~cx@7Ec0XBhM#!ZJCy$eQ}hoojLiaGTym*z?OA54KGWkBsJjfDQ1h zR$TEty}3SpxhOm<7+}6w=P3<0)#U*3lR#lrkW(KxU9J%%fW-&_lHI!MCL|5pV3yFp zz=}uiC*2BfCB4zG7}!vXu}xOb9aIe!aX?J}ssi;x>?gk z{y4;P19vTkkcWYSC;i}ONOu@1cXW$=XM1rLi>_D2L7p{Ekne(kzGA7@ zi)()*O(Y(M!7(~dxfyX8>)~1V#Ingnuqi?zy`&Ls041LuBYmh09~u~w!$)LSI@SYK;CsY`{vpu9FSmhEQV~Jq+WpD(Ku2O zpCy6Sxw|r{{(;4?J_@6Re|bLbVkQ9)bBLB60-xH0>FNt3z#8IODn@d>VVJDB0Q$Be z;z6|KA5o2Gm(exwW=Vpv#EWK|S#%j%+n+*V7oK1SRMHm=SPgJc2j1JvdlfarY##Ai z?~=-od(4^i3;~G1SJUH{Y!bk_M*z{mnr8odH>15uOw@uH&vz)f`p$tSE9-)Ci)gUB zQRo7$%6c>}tXACyuXnLW0#XtkE+k18r!05SNft*)Z*zwDA(o0pIE#+C+2pkGdM)o!uq#Ri|+J=8}b~)=eEAcd@cvqOwVe&5LU(B0UA5 zPM~|4euYOF5G-{_g%-8tBF^P>;D~w?V!nh9+h71nko%v(fQLTNZ1krDh2?ALidZv*=t05q5EPtm9@8hm8C z(}RiZ9#(@_4%aWu?mfH2T1Jre*ryj3yd}s0v21-faTPWxB(p zA3i-j&O2!U?`!6ZRL2d-6$MP68npE<{!ER4C$ zk8Y?lBxy^@XH6gK?z880c2AMa*kYon<(t@5?6skhAtpbcqRr?x#ffMNl z$sD*!Y(y46%t>rN!#Dmmz1?Se_JUL|gCSZKpkM()Ex?)@r8Q4xl*D5vXVvJc190T4#J^g{Fhq?>&-Ys%@LzBVLl zWq*6kL5rX^Ae6FZ#SsJR-b9Auvr6WB{SpfPX9>^r>CY7O{l`Txx?Hw1*ZIG2ZVw!7Jhn=W z;R&uz(^cW3Uvj5qvqyLTToz3mj%b zX0O5kzCkayIE`EWyl&)LQMq+dhlCh#e>6dJ$7BFEPBU9>zFkReMj~{&eciwbw7i`S z2A7vwn@yoMa!YnBMM+D`rOiug@hUyapzpL7!oa+=g61az%MxvM;blR(%-iX+DDWu$eTfuU`Ki6)8_9C=MO04y4kwDz!n=6?>x$8> z7QvR8x~&$GER*h8hCu8K+aFpS_ot5DMyqKdE(>h**aP&v^e?8^A8-Rpa~tO`hA$P; z=J{7*zj!WHfr6+kb#kteEaq1KK$l7ZWZPQo>HWzqxjItl9SYx6=Uc5*IhX}yFjHyP z>)mo&>Fo5#k}>TCj0Q96XVVCN=|rHN6xy&g4P1Xl>&swP-UNaGpzi)yD8jsL=WWt| z!#2AsZ%bQ{x84c;%M+2`VWSf^gHY-6)Pdg*CI76CNkR8Epc<+m^ISLCuuod=Ha@uf z&sTxYX>7*0Z$j;jrvOF(_bN{Q-sxl?k~C=}z{+@c?z3w*-^@&H_11r{wf@JTuEw8 zUfRU(Za!)T0E zgKVoUC|{5H7(x6b^?+G>ca?JT@HvYT^`q@=gY-F=GodlSJFm6x5FE5ke)mch-97Z* zy`#Z9J{P`-?%rYZ*twLoBjN5`db<0@Py<{#4|WDV{fu}j6$TS~WNmyQ{0|o%Mf-U) zaMFK)RR^c@pq!Z%%i?fOz?l_ICt!dPV;D0OjvBI{;Nu#Z*~BI~UbG3NA@@*$(1QxY zRHifR;(z`xKqKW+|383c`VQX5i&`u^j>o82ep%&NGlNpu#53V9!0BW#3>eVMn|g0o z|Nml)#>X;eRk`6L=-rn9Xpskpj~|PNahWU7UcUVLM%M9WHA}9wfg(>0ijy2)lSC%~ z?FO`uKaRwSO0uKL5@D6n=`1ontH;BNlN6EDKVcDyV(>y+_lJqVrkEA8YRGpVe&zZH zW=0PzO@G%~oN_3nw(Nf3FVL@4x)NzHo8n^tK+X;doYA^g=+cRLs&HfC>#7E5HJl}y zC?wY|z{@vzgMfThDrv0_=gC>9-5G)ZCmOuG9F}~ek;8DJ{z1FRjG^!jG>>SSD#mJ> za8-OU@DmmC(vpnVf0fJ|2a!c?dyT$95-Zivb>==PX9sDdY!;)}>**pNu<`N!o$JWE zTO+(p%^h>|)co+vMHOYXxd^ZvlWhHToR5HWMJfU)qDw3K@MdP_i(pVPhWQtbgyi-5 zGRO?ak{(a}(V{8ND2vP~%{lucYUfFKxvtX4v^kXuS&sN@$=^`wbFg#;b_~5UX_zW4 zN;xG0Mx6XaKxC7RA>Z=DvAOKl5PN#_$8f{Xc7(@FAp^EE5Gs=_HQyE&kL~@=`b(D( zsDRrSA)ZhF{i9U`P!dU1QezIx6N7W)cMO+eHxbXNvdqH>*~+g?&k5Vu&K?a-g>{=? zp2MRT#$w!zbfM<8G;qJ@O{d)j1FPvtfeE{I1k1@&J-Czzcl}bnHJ;Wck7=uTd1Gu$ z1(YFq@=fFt+wzR4nr=iMi+UXW(~MuMDX-bcH(w(BYBIgz`CHy*BBFbjD&GW;dK}n@ zs_LgJs(cd~GMjwssJ+omP_agd~)8?N3aa=>I@k_V)3R%nHeMESrqy#DO$zzoL%0`x8p-Hn-@;3^CpL1TL(S|r%jCT3=gKoJ3mJR;*+h?7t&z$xSyJTy#szZb3 zDCLzp);NoRm0!J^Xz=1wM@EC96Rz5>l)Hw`!SQxik4;oxJrchlfB`eohYBP(LVapY ziT3S6aqxK(!v@8R^D02caI%A+x|OSu_qADb#X>a{b8q-y6U3ECs(`6OKKKXKQI8aB zeFA7dtOm|5r!ZwnE#D9KRmlY6oj|;EW&}mqrTtdxe;6bI;EsRIuMpH@Fv?PL%z@0P zOtTLhQa8k9S=-vAIg7sQ*_)7LMkR!7rM2 zuK{$jqR)FHTrTv6Xq?FY0`E@b4Q!#Tryh4x++B6m{EAb2I~fufhdCy}fc!OjM>VQG z^BQ1-dxJ-aAEB#K@eGz>`40bwvA6ze!hPVkm$1Qr(TH@Xj&2+bkd`h1M+y?6AX4f! z!cj^$I8r2(k_JaQIt3KaQA!H}3dWl+pYL;?bDkfczhOIP_wM_;URNdd$1@cG_puPt z13uDD@+b>YB?ALcwCcXmP|m+lRLYvDsZ~j|++TV*hI$=@UwOjK2UmnU)Mu`vODaG* z)=>72g@vk1dh?q1A*t(VDY5uii5RRZ+*v?_zHS`esZ-cwlz`F$+z7Ty&FG)Gto4=) z5uB>eJ3ho57JNTS~8-tC9w zQpS?pOa!i30_)>?e0e)dmQL$?&9a2&5rT@w)l!)0PHdjLmZIRb(;lF=mu3BrDeUd# z&DS)JgxW$Jv}h%UR#RZsdHCC= zDz)n+q=~$;D)3b1t9&eL*&T=F4FKXa&w^_hXZ!c}kH=p-&`&(*setrM0Q|Y z>a*m2w?eh`=-3?$Pu+f5X!5eK;3bf7dkE9#U6ZG*IWUG;E;@_N{=CIe@4dX7`X-}8 z@wIUMh;~!ht<6E6(4ZKlbu4Ie$(56o0_GomXxurveaG6pJH~&jngKZDaGUZXrt7!o5%azA9&AaT$l|_;>(@SPF=>Sa+KD7po8D>~Pqx zIvr=Kc^OtMpdURq0=2lmwzf^b{vnMCg1m^<{Eo!MNdU;s)MgL)-|v_5;&U0KjSOuM zsJ8|H#tQ)Gp(;xAb$-SK0H(@Bj1y2K0pk zi2Dyq*xpLK*Kjo*S~wsJ(_Vq`AXa88qejN$4Ps?Sr@#Hj4$#ec)g?U@`@d36#CMgF z;ISPBc;}5zO1qH9?e67?p~)@gCCs(lKq(a4GiBeVQhx3!Ip;qV=EHWJFLACZ!Q8A6 zj~^0@l9Mg{eQ`=tV<|*I6=SFYsts%F#lUnWz5>4&3sZ{srJ~~)d?xNUINi3Ndof4k*{oJ^ z`yTu8)_q3HgK);(=bJo#m&bs&6!Pa0Gt?c>pnFaKokp*l*CdNUW#P?VtJQO1@>5}z zbM39QHxXK^t?@`!u?}L8NwvAK21dPOMe5xH%&X=;=^T$&KmSNaIYi$}NC>2K{Aqmm zqEG4b&O4XIu0$eqBlq0+#)ERZN51k5*}Y{jbGq#ewD|F z(E4&eCoQZxGYsV`_3FnCuDvQHd!{15sYjAbD;A+sxd1#Dgh5d`I(mI?|LfCnSyYlB z63hWO^G#NXARrnNeNtEDvRWR01WJh1R%K?m)!RN-(k;s@7O}v@CC5 z_Dq5*#)kXbj^O6y4x#h?@iEf!811upz9qK)7 zG9_8Vc)5Inb*|Rg)D@%eaz)W1YZLL5%TGcOoc#_fc~Nm{pF*!qK<1hA)VMH zO(C1)nyStZQd#bY<%P%PgkvM`zuDWEB%I}ox1|61^r@$-BnpsxTIvMw~ zYBI{+o=Gc`2&Z6^R7I$$YE#&Hn+2)o&l)Z#rY$PIlRsZIk8D&>V^U}e@06iTkeZ3| zF)W)S#iPxycQp6@H2=g?ezgtCgjAeQH_B)DnFg6k3V{?Z_V_ve5=Qz*dp<#8e)l{Y z=_&$)ch>=;xHiKaqp!k)7m)f~$k;>*h*!dp*KmRhYv9*7_D-+Crzz7H(J^#7#`L!q z>xOT$$($Jxy75y@4gmK1l8V zwSFi{-5usAfPyF&P-;?isM<))u^;crT@*96pf_>+*NEhQqqvD^WNO*tY#Ah-J}Im+ zE}<3(A^i7u@a@H*m(svF3RChf0i=i~@s-nwQ30G}CB2bxI0H~F$m9vcP<-r-#G|oW z+mlksKxtk$rmp$dnF+L&e7Y+PGO0kX*80mJ*?sC(ei&5M3@@NCg2={P%zKA?>uLc| z!?B9a(zxKUTkLWjw-o5pIY<>(GR%RQd ze*>&DD^=KiF1KKUk!bKU5lcj}mTC^O^QQNjR-~|Y_3v`8HW?;)+G%~14pe`yI2uQI zOQ(K1x)V}bZ6(W)`GGiQf>fe7fB106WIk!nRLOvF>qH@$g*jpM~%3#7{+>Fq+W(tJs6w|awc zDAca}U;9~;?iWNG6IHK8zT+_elb6}+%VWlt1BHs7`fu1%4JS2pM(1YAT75j=Zg?}^ zR(|K$MJZ8x=C=;PX7*>mLWM&US$#{N*|C&IhGAh-Z*@&ytHGsj5)vKl3VpKt6Gjo> zOCd2@=L(U|udoF3O|^nYCg@s|$w}wvUFZ8_9}-<|kP2K&J~;d*HMOYcRB9@JrkP_} zGyB$EdK&(!F`cmZZ}7av_~W5Ht`MXQGFpkHqodGBTy7BQTqfCFw#OX6+SJ_-pFiv=f7)J@{!7#m=xAZl$t)Z`exPQzIQ;G+-LpaE zg+bq6)~(tREb3zELSWgn@rhn5sX1nxU*CWYl8XPD(D!$ji%S0^XD*c_)eO1y%M@Pt zJLjub8a5g|nd&9qxIZZF(lGvdbtmqn|dr3V&9h`DKaI9=#PpSGwNA%LP#(QYb(?*H8f=O)!w6IbNlY~s~sQo-s!DZ=DOXyB37U1@=>;~<5t8g@1kWd`R5yG&f7tGovT8^si>CBGwR+BK{2Q)1RCGyv==~u&*?b& zmTaws2p;cr-*d>gdz!~wrQqMs*yROTWjW~blDuuju=@Y9Q;a1J^92%tE_9s#)Nj>dKk52Ta51BkqTD z(y85PTrR*iTnV($FOuJDxOS0SOh1sayspiL^&!SA-?u~k6ERn?y^s{YeC75I2}yg? zwDW2KXlq&gsOOfL_SPRapf}rY_T1N;!OwJtFDT^FyG1LK{_B)+7&>V4eDri{npr36 z!H(z0-509cU3ad5^)F&UJ{|vAqJ;YkRQG0M$Sh(=$*hKyN;C856;ETzkc0nKx1_&@y;ZCJZf&CUJuv7}{AVe7 z^Ta(_#=EhzR+>^=`pp{%pY<>Xk+)aMh>oKQvOS@3qc%R0wGVDZQP=-I%V$H?KD*S* zO=_QIqudfYaAAOt5VyYbc^p1VN=PXF@w)ae_63LS-6D?o8-A#eKaiIH46LwfN(_?= zhTFO69g?s;mX`?%Fh$~GJhufyx#U*Ct`QgIPPV~;4Bs%6X=mVT!Fhu5di~dX1%ncF zEqTwVTeYc{S9$hZ9w$Fs9Nq}rm;92frwV$XA0t?>-xYY+?W(K7wak)p7+ZNrSDAPD zIYN$^)mDNlsdwuyS%PCsc9`SGPjioiTxyFl&_gv}z&u}YkhW#(Xqf~MQ$0)_k7vJn zEYQ~u`d+2~1(uwHFnoUO-zPloC~x*K7-Ru8d#4wZx+@+@eNhp7s{Nyix5OfLPB0Ls zhCTW0b6p(Qu9Mv=`{rb#^+9)%o<>B-tqJ9)u%Dv&A)zlqJfH9Whb$AA*Cnd8L_YAd zP6U^_zACHmi&FLWf0>|{17=0v)3JBwc=O;#4~xTDw(~8RE9c$w@s;j>m8bDrvv}p6S$Gy-?`hHIUMz{kQMPk%PIW_$Dmk!odW*@=f zgG#6m<^u@%zW6PEzRTfoHv5ha(}t{;kDC|w`g)%i_uG1Tkgz(?fJHAu=~>xqeHqcdtg8Kh@IJHI?VEU-{OK)T{)!F$)VQ z!fDbBMPxZA?vJU>TY2#6&=AdVi2E)#u6b2}EcGA!bfmqf7`u1@Wu+R^o2$wVu=$Xt zbcOcYPFExRlBsh6%$kCn7*#G&X8lJlNCC}kM1_M9jL*l)a6xfTI`uf9*0bBZSy9g*vmqKJ}}B0;W^1FHk+dR z>|r?d3%~lxmL*8?)%45MCsNH^ri@m!h^jzpBX=&4&@7*`V|qh(tJ*8aOPS5m1aP=%WhT0_ zVPo$VOT&NLR3qr+ZBKc2omSD9s%L*}W2R_vA&Q=chonU60Nv-`X{P%I;Vzwlqxpi6 zUwOq|469m7?u|EVbylkjK9JRR(4igf3L=ca6W zj#8dgVfN>R?AjMez4pl4TtX>2V&vQ-7L8lSoYyfwwnE#--1gVg=VZqeyO3_-4Z61T zzskcUIY@jvQ}69$X?aq*P>krhp7@~Ww3XtEG)0S%?nz2#q~g9rp4nw?q4JEUQ5dhh zcT%CETK~PatUHgkp}QKRqeqVI0M_b7HCfq%a@I+03^!c!UU6m}Hd zzGEozdcp(4%QY*BFNRO33NU{eh9-H)Jmd>A(W#fOqd*4PfzePnDw8&m{kFF=yr1*_mC z2|dp!2=xDhqo3rD)w@kZx#@~CL+Kb4?krL2OW!{iz%Z7PMe-|EdaXj^*Kdz83UTQV z7Z^2Gj6K&An&Pr2nPjVIKjPSI8(brgxscQk=dWM+z3%A{s_q2Ts#NZFy*q%Jg}UX%Q);;AzaMD zO&7u}a3O5nX4_oxx{JV(2;MI9tZa$P+5E9GR?IpgFaKp@IBz-pTuCxFD_ukz?!!raz!aiJMw88+OO`s{148EbcBLVZc9TgFOx zqHyKh0>qrA>eY2Un^hhbWl|rvFF(Zq`sJ-Fex$Vo8` z^RpVqwM}m0Ai=-f{&bR+#;@*N^bBYkR)-@D#5J-;#7csOhxQY`_tM|J6yBT{-Lkc@ zQ+F+x;vt>i#xZFWbdx(*s?!xqmFwhnRwW?mF;gpjXRqbz34y(BevEzkERvmQG&XpQ zt85Y&C#-=VWacR5xdJ62t70SLluy6{56DzND&y*T}EVrAtwvfe26`!yZLPx^=YT2NVnc zNDPjIjFn&mu#H<%9k@=>V7(xMR%;>6IS&v;S;wJ0cwO%7(fD(I{$Vb>T=-F zcO4Va#|xa9MGy)UTPDbXtLUo>c@Ei5;XM`Mg3!^W62C^0!Jp6!)CWLa^Ca#MDYtuB zipUHo3m`Hm1;lzh0T%+0@^?=!bDjc{%*nc(4XH%=E3qI$6q?%zsRIWch6W|Afq8VI z%c0_rCF^p(RjS6Z_5&{1Wq_dm*BA+laWl;=T{f0Au(&Es60{ZAEdytvsS*ZgBfgx9 zZ5k{w%U#mX!2AKEsL7$tGLIDmL4yZR?d=$7xnLhfoWh#QT((r69hQ4+Ljl&vBe7)# zGR>@9;`jKwx#(TI!dUh>Ld$^>;D7{4y;Rnfx?>$4*2n$Di3$-GFyxC*bCbZ$@1nZ4 z3oCtlB$?*#lv(E5VA79{i?#IIN7D$?QHucAuRj*lerFz#KKHN2#?;XQ4s1ZTnFsxN zz;Wj_gL1_Z=)Q#CsbPTvfNewX)2~v~pKL9_7v(D(dO&QJD{BI(waWBn?zNhWww$mJ zerqB7^}K3BjduXvBPSi*tQ>ofKiN;~TSAi1YZ9CMBn~>aIqSar_Kh$K&sWN29Z-Zy zvG3ENuq;{(pToz+$?&SUj3b4SP?7ZQoZHTrcAP*B7S=|M17zhxBQijjRvZ1)WmbA- zDanCWY&CEXDoy85Lkcr>+dNVVL<^-wtjkq<)RBQg1%f`^wlL@tojsUhOM`KE{rHzO zPLP6Y(h7nU=uSkHTxGDubaVt`@C6%>@+@iiUPfk5Ih$)0n*kyw8%i227(Hd&CEUBO{Bw%5 z`1^`l(eR+?{NV6I<*29$mw{PaJu-I2mT44v(Qf+B-;pJ9wtuLJj9@eKy9gC9FTfff z*jI!1t}Nt-(|>cbU9PH>v?r&e?W-EDVvc`VrSunTU$MEak=fJcp z8kT*aDBz@L@Po|sSNKZ~B-%XEi5l*LjR&mpfB@})eg>Qb;tg1NyaF!$cyfR6N5}Z( z9=^$gdvyueny&VVdoiRK(GMnH3Uo{gNa&vyA;m1G0(1dxNjh$dh!Oo>;o`g{X$BVips0A4Wh-vF0 zjLh_(i1dK%s5nll^A!02qA>|f6#A>V8Tmb)_3s@`b_d&h(`&^u0S1QMXE#8a|4eQ) zls!1lVMmN{;5kSP-Y<5ip~b{eClA-v<_UA~aa}JRhXo_MpV~<~33q-af#ggI1~Z+8 z_3f_wd?*P~K6nGg(-9cn6o_%~^FK^Sg*wiqrT?W2>4c{Lx@1ynVgWE1nQ|pIhAMDc zT?|mmTQD-E(5rugHtR0i|1_bm0 zD74_jiL$1TyY}O@Lg|s_6$tu=g=_qj^m|Lm_xC(^pq{`oiCCS`VP-nz5Xk(XDrQ0T z;-&P0Be%PVERdWLEy0glop}~ud^uo&(}z+iF0i0jhcI37bF98?smh+WVLBOjssccI z$!Q<(_vzdpoR@XLM$1~`O7Xan70~PStBA^glNiKR6j)ys|7U=~F@=6;AV}7LXekhT zv9f6DVD&94H@!l;`Q!xxcL>b_a%1Q{^7UhXd+p7}vrdsA_Bl z#T=)^jGQ1a2O#+r1m`g*4@s0B#3xKDo3Rma4{YsE!O4}HcoFrBx9vy^Xei(|Q76tF z1(FZrF6Bs2kpMwqoLC$Ai;%#|>Ye3Qz=A#FMhaqC9I$keFhD|Dk5XG3K?s2m>7R%b zq_>q1$cE@5`hTH$RD5iIYplbpCWQjDJSXee3fSqgL`S&WZMfYA#7OwJO1CMASt8-r zS|zK)f*2LS7>j2O6o$x)vC?>rix7a?uZZ6d7$-=HvKPM^a7c)?Hw^p#BJ)^Xu?3e@ zO5mS#L36T3))5UvS%m9H`njOvh+DMeFPdN==a%PfsKC>q-sHNk$=j;np_E$}%jjYc zGWoXv#|L!bXqs?pgwDhNvCshaEao7rKoCgG26QJJ;1?hJgiXCZQ-AQlV?;czml@9G zp6^YJJCRQ|USnl_kfF#1eMQOm@X%fLCA=J$Dm4gT49Xlj0F}K2YGI-J7vX}S!aHbq zVJ`F;j%GL0i5I05bsm#PYf)5n29)2TVQ7XR>mV+zN~{9FHL{{q34exA^rJS{Va}Xb zIm_n|0|y+jm-h3C-_#wd--9lFpS=G-GGfN)&lyb(Xah`G!34use2GJ+Kp2t+!74`SFVp{Drje$Q$JRiNor>7gR?eal{L1mmBP4 z0C&uzeUnW;ISK8ARakiDT??uxO#qeUL44?7mA`3axDCV8y&b_?0(461(IHjt)%|Ha zK$$Z1x#L> zealmBy!IZb#07x(R@{@06clO{`Mg@1*J{4S_DD$)08L@&a}*eC&oRD}8lhVJTM1%! z29n8wGGTQtvKn?|24p1T913VoU&KYGkvX8X@q6n~4RA22T1zPMuhNt`2=Q%Jczj#Q zYe&v-Uh~HtNwou&u68c34_s~;;X+smZHoXvqA4iSooL{9kkxdui zc)T>A6USsZ2@*bl*r@70NvS^|*Jo7&vPSA9a1{r2d4Xp{u9wfp&#mjNgB85~ynfrB zy|fC#Pr>uUqI^UR0BB9MjrzR>s8@TWK?Yh+ec zEKu09gnOhOg6x?~?7FB);BZAXXV)3B?p^+tXe|s4?~C=WR(L8ZPv?P2o08^9al^7* zK%RisS%6ni;{+aZ@4-9!!Ip&Pj`4V%v9r{zI*?;ZtD^$R5QtRo^ zfGUBW?2fm7YDu+iv9Y%mq$UT}t6$S#s$~d*BEjrqu;k;sa0dWJXcAz9ewWK!*K+g5 z{ililPWm$7Y4WHv&=c@Q)wBK|m@S za>&U6SDE$=dU?TM!P;#IKjfMwhA&NY7y_|-B@C)LcoU8{;(H6c8*AEF2hc*5KT(AY zVKXz%0E6`PAQHS}g8=}owgh*X7f|R(bV;KWNKjW!V#U&87tTh>s&pt-qMc8n_l1o7 z(3DjWtC-1jZ!yf$*cy~a}7jzNcrdVN!kPe^E#0AvtN z;i3Xj2ed;ql;ncR=cDyb`E8Y-x@0EX{8Lo&5WRN6N~I%X@FV^p@bE;s>zMcLM2I*P zMf;Xn1BheXwD1`^27DHu=<$b^3tWG5P62GpzgNBu91TKrz^c26qZ#>tsuZAJA@CVu z%;{#4-`V6{xFN$JP2Mi>V`tT(e{)j;il0FxRBBvAIGJ@)9#aqB?qu_80UFj#?N_Xseth60(S81OPx0mfD$intI{%*pp23O~so9kSgU ziaOGC`nOOUarcA;`Xp7|#bUY46#^^i>*%DX* zMO~`1@M!s)UviAA%;+ zKp%aUKn^sS%_j3Kv=+8~4DLRv!K%MICbp&Bar< zaa6kQfO6C)KZf}tN4h2tjn^aw^L)C4=#VFzZ8nLYAr`X&d<$8Lpls~GcNfClA<&WR z6Mxhcr;EZR-of`{Uz*k7cRouY258rU?q~zwyQeZmhe8vg=ftz#F`BPmq!vEc-UzS= zu~LQSOO>EdZ*9*_y7*leCro>8CgvqmHlElFNq#Q!xYEnNw%`+3Eo;JOPNoF}t%(%E zmx7_*dut>ujW&}{dVHhYXpP_NfFNpbBpGO&w9;%}a+|Kl+I(X)sx5W*b9&N%IG?(e zEOb}xE4mI+x-(=kqp39cCDKSniIIKm8+a;!mC&pj8n~?SXZ&Npd%ee>nlXB50E?Pr z!PT32V#aMFrW=CVJ=DBKPR-pwU&6QT#YEZm-eh3^-q6%|14$Epv<-pQ>E)W$&@1|U zAgNyKc6_J`A@2l41wvOnG%zu+m(<>pS80~uHZJKZI2QbPY!d?5E#CfYvP=|n-A$+k z4UI3zp8xk+X>zRKS(0$0(!+`rzD?*-@EnkOu;=eZodIv4ilfZaYOjpeY3u!)RgRiG z_jIv0^$36 zaR$z(v8_fgj{i7oh>L>1PAZ#|JA*LQo^IMY<{JHdknaFYC`cGnU_Jkz2~v$2|8=uT<&`lY#PNv#mP(>S1&_&(_!q#cpha5* z@_-TX*P@piOAkXjpB{aSxy&Vit|V3J(m|4tIDZJC$0LD_S3TpETW?uBjJc>R3F|)% z6O=6>N>~8U*`VORd+Q%(zTF_{#9E;*8UlC*!^ukwNOU0(EMh3*Kq_{A9lX>O_#xto zeVYKi48-W0KyH%NS313w8C}C+ZUH$0uKoa>27$x+M<(a*YJ$R#N-8aMsCcG$69Lo8 z$>Pf@G9u^lDL%a(nwA#3}>PveIbk`Ij`vaBwqPfo-tZ_ zhi(~H15vR=g&&d^>N`ci3iZd0Q_z&+B|Xq-xu z&9l5c6~l;Qvnu9iRJFP)nk^!rC0@(}OZml7+A#cdDQ8ssZ|m-6>3{0TVAE^^Ts)IZ zgqgya;i`WMA+R0g4)9FZ&zjIYR9sEI>iLo36?0+4whEQoHbbp}BwfzN^D4NfmRX3* zW;nVj)G%`c4pRaj&q|Nl{9;UC!n3}P`XHoy1?&#LifK40lXIL_f(RA_^~AeQCAkw6 zVqB6JJTl*^I%;Lsf_NN37jI2|kJ9N{{XJrifkyLcX4e^259$$S9nmY04k?QCki}X( ze)eQRL#Cd9bUKkEin!}Qm2HTbBRC8lYdK+PR;fbkKK6XUjX5;Mp;FDKm22(I)z1zb z$Y6ygJyw%us^#6DLae$>&Cb-4Y4k25B=4#!*}H4lnnkPV5nrY2DYu_bH&MbkV&sbN z$#X0)`O=DLjGB)iZS^Cl0D`XhzpW(8ybnj_TEEuQKWb(wm2f`4r*U~Im2<-`+Otfu zJpKV4T9}SARAxR#e*5dQ*K$Y+!Ol*$pkFRxA0ivNz!v}T^|s7!ZjAi(-uQkmoo?;~ zE9ib_*!{NK-C{jHC^-jYSL8g%v<7X1Y=29x1rFozB+ zV6zg+bGrQ83U?`&c?(3j{QOHsS%Rh78`NH^>k7}&ITwfFpmsJMP1gIN=$smVKXZ-D zcX9t0cQFgDXZXdxSpffQ>H?FWbYt>GUi(>W9&&cmW#=z#=7OcZK~p*&kvEBhlZxqO z@)w`W$6kU}V!f&Or(sv5fzMm+PCgtB&vcrRavM%!EGEIDX$URFQlQex@-tl| zJbjjdz*2k(^!VcZmw7$us~~xN*oP}jWW^@_tS6%iqAT-?3_cqgy>1R`%eWvH(}l(O zjwnwhNGmjtkFU=U$}ut%(OffZgOD0Y1oQbp-Ba62-9K#M*Z#N(b6nRMF4k)`YrzOL3>ck8|`eik!hMq1@BdA`^RS}?o&)7?ohugu|p zSJ)Z)EDSiIrO;!J;GR)>9d16@4`0qhYR%Q^zb~a}k2D<(uG-QJ%tz@NrtXGsWs?=T zHn1$+S$l$|6h)ouGY=u$v!0;4VHmT8;kjuxQr^tySLHUxcT#^39GvQ|1C&XO{sAU9 zEr~&;umq-jo0m|**4Z{bVrs_#={&5EYL0Vi!&iBwRZ~9N|Dvm0S!zQVC=fsW9A0(@Ft%ib!)MI zV<@~Ak*Ke=%_ISZgqngaE}gsX%4tG85HGb~=oL+F(LO$y#3} zYf3!yIQ;cxhSmU1^?QrwLJ}BszlGM_a>-L7+Fw=#tvQuPxyGidM5%V!H z8P1Bf5GMtBieQRaf#-9wcoUE5&k2CkWt%bxH!{wD7YEl+?d4XTT*?Cg=s3Ooje9L< za@+ukRu(|*M3tV7gBgM|_D(0r3EyL+)M=y6qw7)N>Uek^tAvvaw=lu;zyq7b9_?unqnt14&2YOIF3_xBh`P0M~=H#$H{Ex#lhx{VfO z`}9+%r6XYLzqrMr8($@vzB|49c`yB?Qm*@VGR`e4C#L9Rl(L*ul|sMt+q-QpP%~su zVLUJ>$fs%JoSV7Igx$HKSd&Z9-gd-+FPK{Lvk=6s`hGN!4M2AV2L0Mz2Tm~LutgCGzK_|#Wfvz56!sXpa6Gv;=gU}W z*i7eF*VZ#FaRt9e`!fwArH!xumC(6rY_S{&{3ZAK9aG5EPNYOFJTrL>%VFKk&d$$Y z<^uSDYRvUNYoG66ykCFS@wm{ZBW)z`$FxoG-rTw;o9+t8_WVkvPmxNyGRQH~gafGg z^!-c!^SaL6pO5D8m)lonPIY#MaxT7>_Zqf{KExJ8sYfA5JL^?Aogvq{Hre@mD}ShP zBHxff9H9@%W`BHJ<3rUml|8@zw)4LfX;`&h{(Sfk*yW*e`uHj5!$_AfEos$~RK!MU z{nc>pO5b>m`^{%8)$<9Us4&*Cqo;bUc=KMK=YN_5SlEJgYhTy`1^94 z)FHNrAFyXB*OoduSS9$Zr&UIV-|l|8f}?8{L9t^sw9i!WNOkV=XaMe2y_$SHpuY5j zdu>ugtz=Fyd?{X!0%3uG5&Z=LCh|rz%FpOEf^If2*XSbr1QajB$GNIF)A*7fLIYJL9y072v@Gk2f@msC6?gsz-YN6RhC(0 z(H(R^WY^~*AWMxROFua)Rb1|XnYw}y2q$e>VV0_|@djab+7oX~T~pU&I#1_x_=OsIgba=l|~JN zX7Sb;J+ZjH;k-WTpTsAiR+G&dM|GHXqZB(8qD+47=+-K%2lo(Q9V+Iz#m2u4#x>AU zibyy$6#m(fx_4RA-kSE)sFs%KRv7jzn<-uqOlYreNp!#<>xS~jbD{C(Fy{}e?i{w9_lx=k>-Cx?s*0767k>-TM2>M)2I1-?<-9rr#*4)`u2Hyx zFgHyGL>%;~i`UYk20C*%H4|CfG}?*iHx503uWP`U(L8QWx{sUk=0Sj{P2suYcm+zF zxy4}eQTNj&W=0FpQW8Werz>y9z_nK^kwlF586}cgc*!r6I!=Q%5pFY5g@983^0#&$6N-h`a( zAgHS;hJgUwWh_s^wE|3r&ul<)NU)uTLPFBDiw}N)XYzby)RJp+3RJEXTd7oZnRvem zXxm^)8quk2Fjv}EV7@=J(WifzzF*#rd~oT7k3v6^YBj$Z_cLU0(OF4hW6Uz9W;iT! zh|CfcW$k!0yUqh1O4GqmREBu0)M`veM2uc;=fY|^4+%-g>GHkZaov;2c=zJOVF}Cy z;T~i&Um0U=VMy#Bt5~YbE4BRHF~t*Lr@Udgo&@}}*tTpk(9t?GGCi}2=!9^o;{ka) zQN(!UEK7s!KD@$NZj8e)R=>7;2R!$J1eV%tf8AGy3^Fd(wNCP%@qREzOtIttXK5vC z>t{wtL5$dr)z}$Zy=usAn#~q0$oxs@j4IGPf9!7`wMi4kkig5OupikXb^q;qDgCt& zYXI-0O6-iqKTFJl76Cdm{9EhD(7_%e5vpf2u2>L-2ZCf|<9hMV2tD^7`dg*l;+}+L zC>`AbBqn2G@V=6gwEp1w?2SwqSL>&Y*cl&o2MB3yBSxXO&n|{{D34to?=*c)t6hA| zBDl~hpQk_JlWklsVH?w5_75&}+WK%uuN@d~>1-!^XD*}b6QAr7DB1e;vX*shpP#6e zX5q(}lNO#`J3QuQ-=(XU`kpsGYWEg);v@*RyRg=nIMJyR+@K#b&8*apHFj=v*W{%|XP&M(0@k^C~@Z z0-?RTr#jsa@Xf#JToj2pS7;K{a9XSxEq_I%Oqbn|7o(I(I(S=;OQyu7fA|g4Bu$L_ z$!V8*#m6)rgv8f1DY;g9+jb9nr_FK+L8P>+Sp}@l^-=}E8U}4m#8F>e{{E=P{E@Zg zzbRJ3ThDEXOD;r}{{X56lZ>A`m;wi^AFuX;m9_UhTt11ibBxu>H|Z2;CscQj-t;X0 z2NFl=utmMY7F~mNf8rvq3vjr5**V{Mye7a~;E>>L#mG+el6t^~_+vY*HGZq`WNicL zi9mtx(qP#?)wkAOb?bk6E{wWeOajZ{I?{>j@4OnxP&r;zZ_|CJsGDD6gFK=by`mr8 zQY-LQKW?Gb-}sZf8l%c1;O~XLBB+pJ)FR7D%yLZtqHKJO6Gu%;!h+2Z z%k_vrM-}A{-pcMGt^hed^H;f=`q1U=#*wkmWZ{&2nkt~&+{E{{PN^L388qC#Tzor;U)SAO zo0wz82$+4lG`wh=cX1#4gHy0p9ogvRhbXKs0FfXnJq**xO1X zKI_1jIw&zR;_v)9NC+Ftb9!I_8Ymx}y(l5V@2|04EWEu2)CBHb{oTcN&HqWXFG4ry z4+DCAPr=@3<$T$7<(3s3I-6-j;$9his+sstw?|i! zI3C^;@?sIQj1B1*$O*Mrae2?M-Lptzb5llF>HJVRg$oE3$WrqK*caf2p4ZkVV%5*ce4j$XJe6#L*Z^0Vd2>z;2B-@?;+Q!L`<@9mi$6@IRY zr;QNeG&sMd^<((`P2M^-H>ZfyZ+P)*SGkD4!I^6}4*z^9J-Ple9K*jtX9)Uk=XF5S zJAv>dos1uiA2;5JjW1pFO(cKG=9*`F;L>v)sS-VL3#5DisJtp#=M^v?8e&U+GRM#K zA1x6AVkJp9tO#_1X#tNeP|XWy{>gv;w^KmN~o4Qlhdy`MW2T~+t z<;A8+T@{QdYC_$$hk|KCwTMVQ0ko*GGfpCP6|TaibOnFWM4&L00l#Kia4`IY2EzucyH0?-Tr098 zZ9(FVyX1OZ4>6_nkj=*=7Y~M*)V%M7GiL&Bv1F4DY#mMqtQY;;wkkMuB%BG8y7$!- zse0jCnasBy139dCM6}#yVXw*>u6v+Xq6c}n{|{UL;SE>+z-^;bnHhu8JEQkbbQz=f zA&4HmN3@8DBr}X&GNQNWy#x_KB+*+CqD0Ri1R+71h}_=!J4Kh8L<(#*Gl?eSLY<*s?3du5eC7-*=65P3joGwtF}Z;;BC7Q`2FtL z-QA+|{anEkEp?l`Cs8ihvj!+P5;uJ;Lo~a|?8zp(*SeAVVQa)1c@tKe^8rY&`a{^( zwk((AL)l;6K1k!3v|ns!vODI}?Pn1COx^C8p{ONJKOQqd3@otNcfm>9M+m z@&>yPs}7BR=7*=xWNO9af@EDKe|35e8%Kf8FRfS$I54D*O96#$MiV5GcrR z3A$FJ^RDpALNv=|<&yXC`0?_mQ^j8PI%lqZmzD|97qFWd*gN<5AkT!Z%H||ev$J3O z0m-dtnMr(j<$LLLluzyT{d$4T$^}MzE4qK)&4t_3c>Opu&QQNKL8H8nO_d~-<1nK) z>zEniF(|S;B}0TI)1c9jY)oMwod=HPpc_k!;zxZ6c5843RWxKi9uBtVSnF^dt@)B} z9;%83K7yQ)#>^-2JPx=K1hibsjKOuWTY&dgSR6MDC~j)}=j{nifm$n=q1`f_HnhgQ&LU#4 z7G*eUza&%14b#-pdV;LeFWsm6^agbk0QHYVqY)kmrg1V=Ff^y_HvdSWY=2^WXMrJt zNC0nIA(GK$Alw5tpQ;EZ^*Mht?xVe{LSBM2#e0MkctiY_@w{>^{*m$?1*IZei^`*+ ziw?q)HyT~1f^%nx<&S-7?ur3Rk_S{oTH_Brj15jQlQVYPxNv)d#skLh^B0oi#Ps+2 z6+*Z+x`yvD2xbUMt4u|Aq7wwR_gS9R4Z`xNVY~ofpf(OiNB6zBCM}V{&?rxM;Cn&o zJ zq8vje04$paVnHFNtEws-4s8NVY~?z9kq#ny$uc>?%2S@}$90Y> zN}6&5Up26zzgA3PMnFg~U?K2|bLo|Orp#e|E=BPK>>GQT;grxx1OCIUUMn)piqz)A z-{-&`sBaE$<=q+qk@H%f_X>+B2-R{fkM7MY{C_tKoB$}mJHYJ!zh*(do?g;q!QiJ! z4g@pz|I1pWm>Cg_L~sMv7E#-A6E$YxdtTiCV=anQ!=E?^rX{qhxZoo>I6El!i-ydu z^F&AeTwz4d7*nRTJ+7ie{r31uH6Wjhr8I@dG*YU>;*>K9b>f2sR_Js`#xf#IYT+h* zA`)+3JiU>@{Mv}!(35+i6q`8xGZUP)&8-%LOwUf9{`fXuo+(rGk-_Hk0Yoo@`ir*5 zbNs3yQQQrwBpyY@w@+SW4~W2vwYXS2!y?$kYIKu0c=;bco_7nw0CD?B3TvS+!YI;j zu{IiyqkXyxMcvXVZ5(i-AmA;Le|MVHQ8LR)QAU#t6N7&h$OKY z-!%!r^8#)R{o05{esxQXF<^K9=-c~mH;#TZo{azpg4mPU>zjA6Ktnmdt=O7*{!&QS zU4ubK$^Fq%Mvo*>S9YL5nI{a(?#IS}cp~QIV>tPu;`Wlc-28*l1sIyeU2ohSf^Nvw zW%fQ){*;?vP%#|i*qT)3E_s_F#ot2@fKC)4tGeE;=ZOO6MVu>-<}t>oVTdK^Oe?q4 zLP+INHw`#;qB7G^pOehy_xC7@7{QNKF)O0jG#LoO6(65ql~APNm<(mn(GF-Z?`#(9 zk6Bz+$?)@`x}4~Ln2_r(S@#hRT!z#XA4po5vCHpg{`~WUm01RV;v!VC67VHEgmVuo zcK9#grV(=xf9aD2{$)&>Z?uYQ(e%c|W)%PKOg!6%P8voA+a`7Y7rDHv>`@GQ4#9}s zgcU5EfYQO&J}z$osnntO$46Xa5|UKU&TG(ZL*8cfbp-nmoJ2o2m!6K$V1whgTNm-T zx@PexAcRWlyM}jwg&EFcR7p^en)WW8lM4%N??Q4-K*Frf1d91)1cE2Ob^8tXOsIhX z`-0T-s~R@)^{i2gtH(9oRY(Yg(kIZLmAo^f0}%|F0RfoO=8T1MxUFVKu3ZMCw1VCK zRTBkzFLz?^@awsK`CyF)fRX4Vmq=Q_a59kzJTLl)K`Ekbm;tkRGeFxY$PEB5d!v{Z zb97cay z$at!oM%XDpb)e2&zrMS^*e|F$z{|sDjQ}8(kt9znlhu6Nvw>h1Tpz@y&#pI_xlA$j zlt$=HA4N}0N<&85LzGQk)IQPQyv23kIE(q;w~!lBbVg@uBo9<=UID#_$N6#|*NW+t zOM0W0E>^N0(F(l-lwRXii0$j$9VY{UN+k@@Q~+};f?s?p0nC8MGj)|mV#qr0FW-+O z!t0(Y-j~GKQD}^v-c70n&dnebnELI>SO}{<@AvoR1Q~TS2R#WWFxmeM4nTVfEcE1~%Rg;kx=LGifYv00R-9P5>F@#{=hq>MSj-)KlS4 zz#@O}axxVNli1i_)_CBR14`Om6Nt2z)8?kG0w^%gxtKS0(;_BVSs+5aS??2j3jD%{)x6k743=MhOp@Y zk?~d4H!>1U4Gv^e$L!r{?iZxVn#6Hx4aT+ypDC{>qq1RVabnAWO9(f4njM?uz?&J> zWTpmGSc72LE5t0?(2RNAK~<+S_0!TO3LHmk@j#VjW0sCkq{gH#Mf1~zH`vt4{!$c= zYUqs15Mvq&6tf7b&!DxpddM_Y0ewGiD)XNLN7$Z|Xtp=VqW$E_8FTd+8s8zB=5~kP z+WVlB5i!C(W}?=IW%d!jRznI0clU1nH&S>lqUGA-Fe4Y{Ft>KP2!%wAUW^#S=(|&6 zrm!1Wfh&p&>yv&;%?vdw2V!rtDm(_}%a7^&6$oMm$KzzrU zquJ+E4G)xYb~H2T{R;6lZdy_f(iFC)i43hK>Cj7+4X|F;Y@-7H_>j{ipiA*e+0VFE z871-^L;>gq*>*NB)fqv_ZUBvkTb;k*=>lNQy6NIxA2RF&35?3)LbhTR{NBz*>=CG# z>>E)j=ZlZFn5x2<`KX9~v9%uk5nXo|>>jf?HgT#j=|wr3)vl7xIqaU(7$vgwd|9Vb zQKgaH)4BN*2aRc3$RE29^0w@YUD3h69$pw=c*>Cy65nZf8H)veI!Q3{@}$;7NfDGE zKa!MsUz2G51gx}4=GCxgQkW4JsmpZjWK|w~Qz8jViG2B3y&NcJ-jZg+6gww(-O;`- zme_!cSHS_p6`sf&H{5&6{L2ldZSm~R|L_TWx63hBpFoH;&hn#mXJRml%eWLx)Z)Ib zJ$^J0ZxdcPr}VoUx|DSv|3T3XX*r1)H*^QPxhy#LAp)kARPbgnfg4?QfrrfrI&ht# zWP0iy3WM+qf8*}nha6%{7@;^7>TWzH_qC`GV&6{$7G2?6=xS4MDe9&6;-4$fHe`*O zO%wQ*8`64@oN&7jbOHqW3s1TE&IXoqFgU`+{@aE$z3}^en;-GjDK5g-45%P@21FV} z7QVBh`C-rx7pYWSasyaTBOLBxL(odZRAFFXY-|~IeJuQqh6ADbsFw_vk#m|NyQNhsfZ7XXgl=Q@umUK#@l(SiN;c2U9qvcw(=s1oxF-gI0Oo;cp~d;ou$|*3 z19xpM;)1iuTA@_E_R@jdt4rWeKzx|J4p_kr&<>qVlynCE?(=I^<|O~+u9Am75qe-< zP@pRATyz+NQ)k4n!)vAHY9rOCjReY|_fMIeLNWHohENi`Mjv>cbjK)9lT!{thjvBh z`S;-<=QGs$_^8tl_u3*J4yXj2RasuG0*x7J8+#)8Td520M4EVUjsit(YdFU@&E2;G zdI{z=iM)>b5iZZ8Ir80h4CyIy<&!J-Vnd=pq$rAa`$wMqpGX`2+rY4DFKHF$2{s@b zk!nmCSkiYRAQ8WR>Rg#;?cIL=VF&lD@HGRr2a7+|#yz2utr7HP5BTrU+4#nP4*B1} z`SmF9_h>wf9Dn1|-hs)+1oRuC#EzfwWodkt5SVD|xDXx`8XS=+o@7AS@*=P=MUQ78 zb#VwgH2BAiCnZvVBtb1jZ+*tloKcMKWl8$V4(WSIWmT4$NkG|Jr3M4=T^pzXKr9x^ z4coiE2ZSmC?&o2NW2c7iSP=E1`X)=!zdeDJFu{*wM`Wk}&N1L98`+dkW0&va?`FX9 zjQ>nDKr;e(l^ox{N5$iF^LxC8*BDTgMJ?z=k(NzW6BhirE!;{j`~iqLV$+b6$qV-| zDh`jhOUVyXst2v0{m(8)9D);N>@u%EE(a#$`EBYiEfd@Xi`JT6?8X=VIw89RWGWJ|GM;qAysG z<6=X%20+?;cCj_2f#P(f_8)I-V-k+Re8<46IM5APWM)#pP|g)7jygLl&b&epY%M&q z7pY^P?gPqHueIey`CO|c-p$w4IR;$&LtGyQv{&aiEQ4i_5!o0jFAV%CAonwg3J`LO zd*(6EZP3G+q`*HEnKn?kPj^Hmt|WV|o1s1!ua#ZzYBN6;7ET zK>g%Ihr<(_d@X3)poJkB3M3lPF;WtrQ@xtYe8Yde!Pro+Kwlvo&W`_0&!(h!~DD$xF`(HQI3Z`^k+HG6xTjB zbc8~4tyC-uip8^$NOT6B97IqB;^;s(v!6*phV*Aj){Wt|W3>KwD$3^FI~n-uHmK&$ zldl}5ecl1vf^po8AT=D|c{g9tfQVXq(Udpw_I|+IsIrz%pmhk;rIqTnk95*qm%rEO zC>?~1eV4gqeJ#Adz#Y0Z5=}OsVy%E$Fq&E<;Gtn>Mf%wj3Kn5Zexd}AjAjkV_pba} zDK+_CgxgvkQ!fTRm3;*EvvH4RW6U(O0chY<7UY7q@~{-B33-V!;3|YtrsxVJ=n*W} z<)GS40_4uTA&IwSFEfx%L#qM^QuZ zP-&6@58(g6C?UYF1(2FTKy5=qy?7~%OmzibD+0htqYB;S{HM#frz~-e*aGoJEEsvs7FJ#Mb{3l13Qq8s zPE1Lx%eQ~G@79f~cd#a^~FAYhH+)>nt%(Z4z+ z{FJ7>Uc6{{vD4O=JqIm#&r_k?WG-ZTW2S5|wl%py)9$#{-;U0~0U^5Y!ab(HPoi_K z??$%L>=aa>%AV{-14Jm!a`LN>myInfn09J%ZkTeZ>|3v>)Q9aFFI57sL^TQu&P2M* z0B*IaKlmAECS(L&0?4>^)q0qss#_-|Zz0ibRvHk8W8|iAvr9HzHK4??2rB7TVS#^z zmTM6H@(ME3zbW}Tu%RdLi|$RQD>Cpa)~IK%&=`!`_OV0_ zuJtRSi*5WWUsBKxK4&)dfdanIwF+MNKR^N@(nDRkYE=z~8Hcp#4ie9HY<6o z_E@oxcD@Mt=y-@Q2UNWT0Hts(e7Ipa1?E7}pOhgQj{8|iH4R^e1s2?S>$uGy(ThVmWU7*y#f^D?73fm z>1j~fj}3>!c?wQ=g0J{YPD!O{M6U{pfTh{uyzMD}a`st^LPp!$Lb>pCFSsc$!{B!& z@8a{JoDPWU%T|zL8GL>C9g>8+2&Z}dyIBN10=W;w<9afSXE=^0A!WnwdvlACvn>-; z$(119;|8y|*_xO}bpZ$u&l|pUUMpN+{3iZj63xaAFq)w}mRKFskX%XB8ZPysDQGx| zLUGXgLgs@PwB91eA((Lv()>y5ykl=o?f$UL80hbw)iraZvod$L|8sGxG>C|}hve27Rl+#E|D2ceZP`2ovqq&2MuRn4N zzmx`0PhQm`BTC`J?XNyS(g9aPR*jlh^CstCyMW@3lVsS}lIE6z(2*?ZQ)|U*tsL{u zCErZ{leGr`um{>jt-^f?i`Qq=zDe0-t*n0^c}Ky7CYT`mc=(PqWTek^!g=)=*Fzz0 zx=ZH2m9#ruRLD&fo`2F!@C+DUfBm&+!3SKVn%pRxwro%4$a^2PI)-M((IPV-63wkh z$xW@!mF6i;PV$^RVEC<8p#ay`#_9&))r^?Tl*`5Z!@f=_Lk&jhZN;7eUGSUZzaOJD z;GvQb=@}4ITi4jD_=__w7anpwWW7tu?tN>y(d(7XbmY`FAnK@@u)Vo0(e8EmwqH1S zi&z41>a95*9~aOc_^q{IjgB-J{P-_@!}y zYWgSJv3Kv>Hs5B^(aliRQjoOcdJ6x?nDvU^w1+!rC;OtGR%@z3d|$NnPztxd613o@ z`+_tD-f-Sl#_wM4uiYa<{L0df<|MIO4;nVe`W8VK&)gXQTUR9Mn|%dD0|3`rQw3+f zY$Doy1LnI*RNj4!Ew1k-Hv_khG$}y@-)u0JWWf6sD23lU4w*^SUh=uTcj!-Z?DG0> z5xMIXv)}$#**;y#Z?dw}G$Ax~nHJ>-z%3qaKA>PfA6z~q*Iykk8)|#K!uPcM*@I2z zY-AD|?sEJoMeNay@V(uXZ+1`SFCO%Wk!mF9()yFWPrv@Ys#!T?v>he+V|hBn0$&*n z1VCGyG|}1Xx#Y@`C%r zfb7MT`e|PTZ2h2K%J>ft6kG!zN3{M?`1a@9{(SJ&{i_ily(X!km*32$J0R5;uRqBA z(7lB$d%_vh%KCL%n{07XG8h_PTF3aj>#*+m;MI%IsEy~^#tHybHLE@aK+sKsQQ`%C z03B%3RhTw6CKFAG7jP(#2)fM*P~rt-9#z1eZZadAjey&q&qHt(ISd|WbqxV2RwV!k z_^B7mrokG4$?&x3bX7QTFFxju6fS4+3PL<I9P_IJt!+7pedNse7tvMqMFrh&bB9s45?$qnTb{ zD}J00h&OsHVp-#yOn%3w5^O(K?El@zqC{K13bxX}cX_j#QcCCK7fPH5-RjW;VyF*8 zKaD@LHj3Cat7!T|3R-eQ16Dc$R|j%dx8rN1BHzJP^YrHsUNll@8UfX1FacWO=Fd-T zgRjuq_9fX@gn>W`Z^d|R)lXqUGjwNe9W+SsDdBwk#(I$@^pbJsa)2O0g(-WbSw*zw zz+*@Zp^8;wzSb+jAQF5g0MYK*6UsKa81teQVC;_VX}^LomF`?iX?#iT+Uh~UF-Yaq z-Sc3xI4>_TeNN|u@N(@cGciHv6W+qfHwY;KfFe+B>#!1mH6j`M#g236EN%t%-c3lR=pa&H1O{SB4w z+~Bm9p^@@yAO9JRGMliTEI`o2VcnY2;(M|u`{@VF`luA3LS!=~CT8jC>@`hkWwmJQKpp?pL?K;rEckKjo&r!&fcybG$1UD5Yoy33qVlO27eDHe zb+qi4elTb0;560`4}7XGSQP9e0zycm7d)H`-`%%aQ`z9JxyHA-U@>-g--Vu%Ez=U} ziY*4H@;i1%z!JuVVtqGV6%{YPn=xY$;!0V#9x^%CIVDTPyWr-cDCzehuHKlmB@N;K z6*2(VZh_)cbe#--AaOo5%g#oZtap6ih$vAK??))hUYCLGBP}sgab(e8#aOvEk@)}s zb`pK*RuK;lIy*>Os5+y5`X(5@?X}#RB?=1}L#?bXS_C}q{Ky&`rxm8UydtiL#@^CX zY%8!f5mk=04j-j;c6RpI{4?D$RJcFOMqJ46Z!vx z^(UJ;;)EBjKQgWp08oY%@j-LQUy@h~z-TMtMpD!`jE4T#_2C`T}58?vOK zAJG^b`|LVyeE0CVr1ub#(YV>h+pv_C@msSDzLaFb+!8?|iV^u$lPBQW5J65V?uyaPv49+P_(?Gu}iR=cTd12e6@J z+SCWZv2Ysu5Iw}cS2FtVjnxaGzV*;DeE1-iS%9R!)1<@e%1urCKWHMY5?Fh&#ZC!} z7%_bHVZ=bU)^c(Wrrv^%j13e}ZAnym)ifVz_*gphxR%Dn1z>YIAUzfJ->+najL~po zZG6xB%U)yU@h$deGr66WQGSr#{t{lrZsTkQ(OYE~2q@Zpf(lldahn2W9EgJ$^4oKG zqy(umKc{0NOr%#Ba}M!KjN34fU+yNqg(UlYNVS}Nn=F_+xyDz>&Kz1^ zWuF#QRjf(U^N|LEF|#D5^+;na6RWJELm}mL*{litsU7U(=rKGufBOoce)98;f-HALFJ>@t$PGz7Sl$wZE_)u_ zQR%qKIh>@gr^*qEy{qN)r0lt9=ShMizQjYKcz}8^ShCHh$+CCA2jwSYTLv3$NDaISM%r-#6`U}`-8A1^G^*@^UF zAQHqrlnmun-EW_!%HBR*U^l&6q*mKSUCSH^TF(!@9wFhtkzU8NBpk|y-?pzCQ*117 zY3Smdq21TK&H7TCe85KXo0>!`SEK;)EbRF%<;DeMYYGi_ zEg!O(tR@U~JMV_|b-zmoY46T#w&2_)N|Hd#>OiPs<=r8n8mT*0ODNIhN zE~`Zq&a^wfSls=kl#5*84h>XQu~7FU!2XWMR8T@tQM~%RO@h_4oc3&pe~4o}asrwc zC*~=DiPzD6EBXscpz{iZaqr4i#&UZFPt6xJ-B)U1by_#AaL(#|AT?07NE;7U#h82K z)5C)R4cF3hf|>gka3MNkF(J43hy#?nYSeJ
    Z6gApJzXu55OS-RO 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
    B`o2YX7Wgz6c2o~HtV?mVUvaXLr*JI>yqW~ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/help_tracker_status.png b/app/src/main/res/drawable/help_tracker_status.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4224b3cb9c779c52215b7c4a266e92e723bc5f GIT binary patch literal 79548 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%0AOb=tx7-2M7r1E)}(Km0TfJGO1b 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 + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_activity_selector.xml b/app/src/main/res/drawable/home_activity_selector.xml new file mode 100644 index 0000000..f02caed --- /dev/null +++ b/app/src/main/res/drawable/home_activity_selector.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_map_selector_v2.xml b/app/src/main/res/drawable/home_map_selector_v2.xml new file mode 100644 index 0000000..2b5a6ce --- /dev/null +++ b/app/src/main/res/drawable/home_map_selector_v2.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_navigation_color_selector.xml b/app/src/main/res/drawable/home_navigation_color_selector.xml new file mode 100644 index 0000000..40440ea --- /dev/null +++ b/app/src/main/res/drawable/home_navigation_color_selector.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_pet_selector.xml b/app/src/main/res/drawable/home_pet_selector.xml new file mode 100644 index 0000000..faa7fba --- /dev/null +++ b/app/src/main/res/drawable/home_pet_selector.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_route_selector.xml b/app/src/main/res/drawable/home_route_selector.xml new file mode 100644 index 0000000..b5a8c15 --- /dev/null +++ b/app/src/main/res/drawable/home_route_selector.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_v2_bottom_bg.xml b/app/src/main/res/drawable/home_v2_bottom_bg.xml new file mode 100644 index 0000000..734ad69 --- /dev/null +++ b/app/src/main/res/drawable/home_v2_bottom_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ico_account.xml b/app/src/main/res/drawable/ico_account.xml new file mode 100644 index 0000000..04bab6c --- /dev/null +++ b/app/src/main/res/drawable/ico_account.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/ico_account_active.xml b/app/src/main/res/drawable/ico_account_active.xml new file mode 100644 index 0000000..c418c08 --- /dev/null +++ b/app/src/main/res/drawable/ico_account_active.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/ico_activity.xml b/app/src/main/res/drawable/ico_activity.xml new file mode 100644 index 0000000..6ab81d0 --- /dev/null +++ b/app/src/main/res/drawable/ico_activity.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/ico_activity_active.xml b/app/src/main/res/drawable/ico_activity_active.xml new file mode 100644 index 0000000..2a265d8 --- /dev/null +++ b/app/src/main/res/drawable/ico_activity_active.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/ico_map_active_v2.xml b/app/src/main/res/drawable/ico_map_active_v2.xml new file mode 100644 index 0000000..94b4047 --- /dev/null +++ b/app/src/main/res/drawable/ico_map_active_v2.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/app/src/main/res/drawable/ico_map_v2.xml b/app/src/main/res/drawable/ico_map_v2.xml new file mode 100644 index 0000000..a3cd729 --- /dev/null +++ b/app/src/main/res/drawable/ico_map_v2.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/app/src/main/res/drawable/ico_pet.xml b/app/src/main/res/drawable/ico_pet.xml new file mode 100644 index 0000000..3993f03 --- /dev/null +++ b/app/src/main/res/drawable/ico_pet.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ico_pet_active.xml b/app/src/main/res/drawable/ico_pet_active.xml new file mode 100644 index 0000000..2758442 --- /dev/null +++ b/app/src/main/res/drawable/ico_pet_active.xml @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/ico_save_to_facebook.png b/app/src/main/res/drawable/ico_save_to_facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6e5e6e7a27fb4bc2ca5a73d548bdf088fe01d1 GIT binary patch literal 9816 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 JYDtse{{y;MenzhMAWc%+ky-mYfr!h_Xwv9b249 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 Jz6M8(`w!aQ`MUrB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_1_year_hugger_lock_svg.xml b/app/src/main/res/drawable/icon_1_year_hugger_lock_svg.xml new file mode 100644 index 0000000..3c4af61 --- /dev/null +++ b/app/src/main/res/drawable/icon_1_year_hugger_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_1_year_hugger_unlock_svg.xml b/app/src/main/res/drawable/icon_1_year_hugger_unlock_svg.xml new file mode 100644 index 0000000..8d3faa6 --- /dev/null +++ b/app/src/main/res/drawable/icon_1_year_hugger_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_2_year_companion_lock_svg.xml b/app/src/main/res/drawable/icon_2_year_companion_lock_svg.xml new file mode 100644 index 0000000..85d473a --- /dev/null +++ b/app/src/main/res/drawable/icon_2_year_companion_lock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_2_year_companion_unlock_svg.xml b/app/src/main/res/drawable/icon_2_year_companion_unlock_svg.xml new file mode 100644 index 0000000..fa757a6 --- /dev/null +++ b/app/src/main/res/drawable/icon_2_year_companion_unlock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_3_year_harmony_lock_svg.xml b/app/src/main/res/drawable/icon_3_year_harmony_lock_svg.xml new file mode 100644 index 0000000..51fb396 --- /dev/null +++ b/app/src/main/res/drawable/icon_3_year_harmony_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_3_year_harmony_unlock_svg.xml b/app/src/main/res/drawable/icon_3_year_harmony_unlock_svg.xml new file mode 100644 index 0000000..81471ff --- /dev/null +++ b/app/src/main/res/drawable/icon_3_year_harmony_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_about_svg.xml b/app/src/main/res/drawable/icon_about_svg.xml new file mode 100644 index 0000000..98b8714 --- /dev/null +++ b/app/src/main/res/drawable/icon_about_svg.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_active_time.xml b/app/src/main/res/drawable/icon_active_time.xml new file mode 100644 index 0000000..41b1cbd --- /dev/null +++ b/app/src/main/res/drawable/icon_active_time.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_advanced_set_svg.xml b/app/src/main/res/drawable/icon_advanced_set_svg.xml new file mode 100644 index 0000000..122d49f --- /dev/null +++ b/app/src/main/res/drawable/icon_advanced_set_svg.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_back_svg.xml b/app/src/main/res/drawable/icon_back_svg.xml new file mode 100644 index 0000000..86526da --- /dev/null +++ b/app/src/main/res/drawable/icon_back_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_badges_unlock_bg_svg.xml b/app/src/main/res/drawable/icon_badges_unlock_bg_svg.xml new file mode 100644 index 0000000..0f2d91f --- /dev/null +++ b/app/src/main/res/drawable/icon_badges_unlock_bg_svg.xml @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_black_back_svg.xml b/app/src/main/res/drawable/icon_black_back_svg.xml new file mode 100644 index 0000000..ab5d8f9 --- /dev/null +++ b/app/src/main/res/drawable/icon_black_back_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_black_cir_ring.xml b/app/src/main/res/drawable/icon_black_cir_ring.xml new file mode 100644 index 0000000..7936955 --- /dev/null +++ b/app/src/main/res/drawable/icon_black_cir_ring.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_bluetooth_svg.xml b/app/src/main/res/drawable/icon_bluetooth_svg.xml new file mode 100644 index 0000000..6e89ac5 --- /dev/null +++ b/app/src/main/res/drawable/icon_bluetooth_svg.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_calendar2_activity_svg.xml b/app/src/main/res/drawable/icon_calendar2_activity_svg.xml new file mode 100644 index 0000000..f743c58 --- /dev/null +++ b/app/src/main/res/drawable/icon_calendar2_activity_svg.xml @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_calendar2_svg.xml b/app/src/main/res/drawable/icon_calendar2_svg.xml new file mode 100644 index 0000000..8974fe7 --- /dev/null +++ b/app/src/main/res/drawable/icon_calendar2_svg.xml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_calendar_activity_svg.xml b/app/src/main/res/drawable/icon_calendar_activity_svg.xml new file mode 100644 index 0000000..db0f8c1 --- /dev/null +++ b/app/src/main/res/drawable/icon_calendar_activity_svg.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_calendar_svg.xml b/app/src/main/res/drawable/icon_calendar_svg.xml new file mode 100644 index 0000000..edac738 --- /dev/null +++ b/app/src/main/res/drawable/icon_calendar_svg.xml @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_calender_big_left_svg.xml b/app/src/main/res/drawable/icon_calender_big_left_svg.xml new file mode 100644 index 0000000..ccaaee7 --- /dev/null +++ b/app/src/main/res/drawable/icon_calender_big_left_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_calender_big_right_svg.xml b/app/src/main/res/drawable/icon_calender_big_right_svg.xml new file mode 100644 index 0000000..424ea8f --- /dev/null +++ b/app/src/main/res/drawable/icon_calender_big_right_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_calender_small_right_svg.xml b/app/src/main/res/drawable/icon_calender_small_right_svg.xml new file mode 100644 index 0000000..26248a3 --- /dev/null +++ b/app/src/main/res/drawable/icon_calender_small_right_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_calories.xml b/app/src/main/res/drawable/icon_calories.xml new file mode 100644 index 0000000..98f5397 --- /dev/null +++ b/app/src/main/res/drawable/icon_calories.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_cat_default_head_svg.xml b/app/src/main/res/drawable/icon_cat_default_head_svg.xml new file mode 100644 index 0000000..f6a1186 --- /dev/null +++ b/app/src/main/res/drawable/icon_cat_default_head_svg.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_cat_height_tip_svg.xml b/app/src/main/res/drawable/icon_cat_height_tip_svg.xml new file mode 100644 index 0000000..65c4885 --- /dev/null +++ b/app/src/main/res/drawable/icon_cat_height_tip_svg.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_cat_image_svg.xml b/app/src/main/res/drawable/icon_cat_image_svg.xml new file mode 100644 index 0000000..6f85401 --- /dev/null +++ b/app/src/main/res/drawable/icon_cat_image_svg.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_cat_type_image.png b/app/src/main/res/drawable/icon_cat_type_image.png new file mode 100644 index 0000000000000000000000000000000000000000..435ed7d5a93382266f0eafa509787d70d6b6d751 GIT binary patch literal 9300 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 + + + + diff --git a/app/src/main/res/drawable/icon_cellular_network_svg.xml b/app/src/main/res/drawable/icon_cellular_network_svg.xml new file mode 100644 index 0000000..c22b345 --- /dev/null +++ b/app/src/main/res/drawable/icon_cellular_network_svg.xml @@ -0,0 +1,31 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_circle_ring_bg.xml b/app/src/main/res/drawable/icon_circle_ring_bg.xml new file mode 100644 index 0000000..8c72392 --- /dev/null +++ b/app/src/main/res/drawable/icon_circle_ring_bg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_clock.xml b/app/src/main/res/drawable/icon_clock.xml new file mode 100644 index 0000000..ecaabe6 --- /dev/null +++ b/app/src/main/res/drawable/icon_clock.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_clock_active.xml b/app/src/main/res/drawable/icon_clock_active.xml new file mode 100644 index 0000000..93c1c32 --- /dev/null +++ b/app/src/main/res/drawable/icon_clock_active.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_dark_green_star_svg.xml b/app/src/main/res/drawable/icon_dark_green_star_svg.xml new file mode 100644 index 0000000..f8443c1 --- /dev/null +++ b/app/src/main/res/drawable/icon_dark_green_star_svg.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/icon_database_restore_svg.xml b/app/src/main/res/drawable/icon_database_restore_svg.xml new file mode 100644 index 0000000..0ae2a93 --- /dev/null +++ b/app/src/main/res/drawable/icon_database_restore_svg.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_date_svg.xml b/app/src/main/res/drawable/icon_date_svg.xml new file mode 100644 index 0000000..a34b13a --- /dev/null +++ b/app/src/main/res/drawable/icon_date_svg.xml @@ -0,0 +1,28 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_date_time_svg.xml b/app/src/main/res/drawable/icon_date_time_svg.xml new file mode 100644 index 0000000..f010a0a --- /dev/null +++ b/app/src/main/res/drawable/icon_date_time_svg.xml @@ -0,0 +1,39 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_day_1_devotee_lock_svg.xml b/app/src/main/res/drawable/icon_day_1_devotee_lock_svg.xml new file mode 100644 index 0000000..15abaf3 --- /dev/null +++ b/app/src/main/res/drawable/icon_day_1_devotee_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_day_1_devotee_unlock_svg.xml b/app/src/main/res/drawable/icon_day_1_devotee_unlock_svg.xml new file mode 100644 index 0000000..c685e17 --- /dev/null +++ b/app/src/main/res/drawable/icon_day_1_devotee_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_delete_svg.xml b/app/src/main/res/drawable/icon_delete_svg.xml new file mode 100644 index 0000000..f7c7ba3 --- /dev/null +++ b/app/src/main/res/drawable/icon_delete_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_device_battery_bg_svg.xml b/app/src/main/res/drawable/icon_device_battery_bg_svg.xml new file mode 100644 index 0000000..c527b6b --- /dev/null +++ b/app/src/main/res/drawable/icon_device_battery_bg_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_diners_club_svg.xml b/app/src/main/res/drawable/icon_diners_club_svg.xml new file mode 100644 index 0000000..92bd4a1 --- /dev/null +++ b/app/src/main/res/drawable/icon_diners_club_svg.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_discover_card_svg.xml b/app/src/main/res/drawable/icon_discover_card_svg.xml new file mode 100644 index 0000000..6ae0d8e --- /dev/null +++ b/app/src/main/res/drawable/icon_discover_card_svg.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_distance.xml b/app/src/main/res/drawable/icon_distance.xml new file mode 100644 index 0000000..c85a70e --- /dev/null +++ b/app/src/main/res/drawable/icon_distance.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_dog_default_head_svg.xml b/app/src/main/res/drawable/icon_dog_default_head_svg.xml new file mode 100644 index 0000000..d31c85b --- /dev/null +++ b/app/src/main/res/drawable/icon_dog_default_head_svg.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_dog_image_svg.xml b/app/src/main/res/drawable/icon_dog_image_svg.xml new file mode 100644 index 0000000..df9cee4 --- /dev/null +++ b/app/src/main/res/drawable/icon_dog_image_svg.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_dog_type_image.png b/app/src/main/res/drawable/icon_dog_type_image.png new file mode 100644 index 0000000000000000000000000000000000000000..019cfc4a8ab5fb1ca5dc337b9203d0c07c723973 GIT binary patch literal 13968 zcmV;BHgCy^P)W*00009a7bBm000o2 z000o20Vd5lGynhq0drDELIAGL9O(c600d`2O+f$vv5yP0dL_c=3zGpGAN_slso(=gr8 zhX%SEdZDKwAqydi<0OQ{N$hxyx7e0#N!G4XsZ@K_oA3Ycd!>>r*_N#|7b>=;s`u`@ z|Mvag|KD2{eviYp?IrwUD_@;_$=^5fRaf5z zUkT^6$NBeO`8%(b!0&0y`6(`EP-r5UPrwN49?Y|#X1%Zcr(8nMt53i`aT-}WipKS~ zA=cc1c^o@n1p5#Lx&!}?<4qT0mEc5ZTX9*#uKd@U#X z0(a(ud}c5Ab!8_kM=2PvA`)^KOZb<$Z~-FJd0t zr3lY1+Za5u3!?{~p)khK`OeQF-ntNWsYowbgf|dEA)Cf{&v9f&&Y+miAii`18ah|< z0d15Dd33-0B+5QNf)giceMWc7(IsfzbO&RjXUhG|qRji!bn&%~miZIR^O)C}I+iyt z!mC`fT*m2FeuLbx=TNpSgjd~yKqQX*@EH|ouw@m3@fh;G`{DQIVRqD^;Lc*N|EgEMP2)1yh&pRU!R;$H#;vv zr0}-#k8i^Omif3M1y-g2f#jK^7N9z^}(c>`|Pq#aA;s7T4y3l#!U3ilr zgT%{in1^xMF_8~0uJakpn*dEn8$7a?7SWB7BQJCD8Pf_Su6hPRZyLd94f2Shm`%Z# zo)n-AU(kziz6+sj55oQ&U9Az&bOGvnV~vn3Lxd;pc;LWG$enlr;kqU>kMqxxpDUa2 zdufsN8@%sHC(XL7;lm{kC-(gUmyI~j9jU=y4DWgzb(`OzZqvs_@_N1S(-Vek>QpGX z0w+IsaEbuUpj0eN-&6Vb48vla&GZ~Z&u9;QXn|Hw1wjEtPXMv@6&2yo8BhUcx`u`R z;|G!M??dM`H&a=HxP-BUuh+PiVwHb^OB|QvFC6W8#+k&t4cDce{@t%o?0OmH=C#Oo zA3!ikmoYBcz0TR4a*@StzJ^N?pnX2KV^Cp{ZY|Su7&cvKuJ2gY zXFLdyWnlm#c<~_K7@JoC@^(x=EHu^>5hxGQZD)DwB7C7RQE)+X%;{rdWDuG06fk}Y z!+W=*SjgcrhPc;n;}XW4gy;xREO5@~vyji?=<~l;OPg{{zEUIo=s$YE{GeDAlTi8i z%4r%y$^4uyEl75i@B9+i=SP_1xagR8IRX>_(6{F~ z6b9Z<7gfv`h!{g^Ng|}9kNzF%m#;&4)jC+r!I*ybh82X3Z&; zN+^~v`1*^8*9IJCL7@(iJm7O!m**lL5JjhJ{p7`d;G%@+#6STtmz4ia44%cvf#+Za zB1oL=Mj?|z%ZfD+Ddy4?!thCquTElX* zt-q0uB8%>wPr^et>I(-Pw@y+aGp25N9^AYLGC@Ip`C{IDK_Ol)h!HF7Ke!VizfDh> zME{}PC?@*R*tvp23aab!2vat88Ydq59v3C9X+fl}mOm_zYRjnbq~ag~mHaU?JjjL2 zs8!2~mCF{=<5|RN!z#?o*oe9~{Vo6P4}|A7XNXr7kY%h+j5=WDksH{DLk}MY{Wh%J zAahp>ZhB#Pyv}?~$|94sa9I)+*Lvz=Q0v85qWI_~xP;*{nB%7oBFty>`aDRVd=);c zfH$7{7qnh=6QWIR@I>nQ`wT&ZJTQSmp8qfT5N&BjC|<`h(x~#Lgfz6`Oa<%|OHANB zA^4*ah?oTMNGQxt!tAI_K8i6sf0mz_wXl+S5w_0YxpA|cK% z1W(^7q=pg%R&mEo*eXCjiS&Z)L$ddT0wS+33=ct3q_%-?^WqZ6w<*Xy7pjV!SBMUc zwiTB+TsQiig1t%2`}uy*KzXEeJFclu!@Y4(a<>`wuEJ2S`lk%rrV7mH84P7 zSjw=7Ks><+8d?`1(bo^3&r1OX5unxOa>ED)j8%BNUX7zABFr>nYOJ|+b`c6uPT{2! z30i-l>K9a;iE;QTlz3Ak61{zN_a&wxb*dm<3Rx5=P#}N%`V)pgpvrjzQH%%c5NKPC z`o$}zaI|w6KcXBqov&W$nf-axjeY}{F9BJv$#kCOPb&^EqMIB`|no)^R@7cm|g`Y?HJXG839U#5z_Z zmzmV;veKP)BEAgCFtgu3NVhP1_!u?WnBQ#=wiWU3gM?PnvK>ABBWcA#dfvTA7ZSlt)=k% zQ|^*YrVwW3!nWLpFg7oVcV>8)%!(HBkuQ?2^O?mCM|=pzB8W6L&oXm*hh&m@X41(` zr-KslktK`|4OV`i%h+_^9>&T5(+?B-g0UDP4UOlltmVuyoAsda>bntbXvQ2tkGRvN zGr84sRMT;zpTHc4EPR%bzvuaXMeg`Bh}a{HOLT20abbuSS%oN4lk>@>g1ADV%%ER8 z>9%Y`V`&<}g%8!#B2>qi<3BfShiWDTXg+HGQOM-g?PYUi_-g9Wx_k+mJ3B~=1q{NJ zzM7fl&U>auMp4M+38X{_4OE^wTBeE9WeTm3%cxl8=a%CU{mf(Y`LfPi+^gh@Ia;6fUklO5BC z6qJ_{Er*aYM2-O;Epa+&Y(7^cD$EdEWGBYvq^lWPXsPT)OXp(LG}P$j@?^?AOjV@L zC>*CfOFW7)rKzEd4pB$~hKku7(P>`ipg;G}v&ePJB?%pA#>T7) zI3tQmGQczKRtDHeS3v=zhhET-GRN^Hr|>XkOcA1Eg%4nkLjXhHtB)hD`s82yln2SEwmcmGVobH#oqGhIkpHA|bk?36w}r>BEUTb+}DIlOi)oh^28U9Iveyn}_aI6hSmPMMRmK zn7~|B)n!T234#qpT(GD=2Y-Y>y!35-m+E-ga*84+Tj)G$Y7GmhJ%&l%yu= z)<;LRk|86&=k$hyn4Fl)%{p;8oi=~t{c?`tnu&Q-xxLJLOC=-RV90~9BQF|?5Enhp zvBruJDcuJ!$5>eAla3yHh1G>1ypcHFNLgvI!bCy^CvH|oQ7RL*S=>^|BEAtZ4U)*e>_bh@z zpL0FB)!YDvkL)%n(8Z50RsW+J`ppTE3P4DnJw=vc2)=r{&h$7J%+?8(od9na9WJp@ zn)XRUg?T9?c~C)g;*&zP^(^`dxTwXYa*l;;p57pUMeDB6dx)M2RX5hxSJk!3yp0xD znTsvFZb9cDR^_3^`r=Up;&Fs2^lWkrh2*4rwCGyHH8pCbA~1=$1u9G+$k<9N6G8e3 zeoFZ)+*Cyfi8F_fp`oR2iUN4)DRTY$F~-VFUB}87ugD?rB8YWMx-K9f*85Dp>FxRFVY3JFRe)1dK3(Bb8j0sPF_ zq7Ai<01X#9K03zO)$EfPWtxQnEryU=gM| z;l@VI1Ko5+DkZ|D>ODM0G0ZcT6$hwY5(~H%7NWOWu&fiJE7p{i=IMe_NFSP3c-q_tjo zwW|aV@TH|HSBUS$MGxcqN0049#BZ#v%!&F#%&l_OdC%k|B>rfe;KO=!@)V$yl6ai} zSs8I#f_7v<{M2p(Dl+KpA4D=a!Mw_gR#puH)c!zNEFg%Bu~y4bT(J%TRKgGiqoyn+ zh2;LeA$UhPxra^&JfbO&a3gZt5>M<#TpwpPyU{uOXg{w zE1*2Dh6D9Hrd(Fy`wbyr)<F=a0(&{=5&xtmw-DVxqX7}@`n$-fR)WreD3z!sF0I!N}jQIB!y>Q z??FdH9BY@gDK9G2nkbwrL>a=fN}?~gs6-4P-Q~9UOa(VEx+cgNP~=_87N@yIOF>{D zR;TDWlulxF@1q!tFXXQR6nqxrrw_88nbI70oY_EK$5Qvh!l!=6=d@ick)KE&Ge)+* zzJ1ZG>ry7!JACkYKD4LeKsHXgg}U~In5j=hHTcXiTH){%Zzc~^ERv?m zQCNb|&RI*#P)^3LR2EDU<;>`?BDw$zyN^Ek5;`JYeEUOjGr_et%inbQC5cW;I(Z#pgG<2B&nB}Dg3LDB5vxy=a4Fo?OfmW8m`-wKc&to9~Qw@jV1CQF^i2*&0(H5a*~jH zKsnFqVG`gRg}j{t%$#GT60lR_6KGq~4x2fUSya1HvaxARk~Dj~))ey)&C=EfjTIUA zJr_!Njdl1q>#WdPoKt>0jkyfDf|RoCITZDZ)8hTP7xkz$O1fos*4d_-k~C#4smzEq zic*Lr=D1e2<#;GaSPAMiv>D9VnpZ7ADWFU7+4jW{Zfc)$YXLVRMCIW|&vZe^c`Hps zc=m+37)*ttKwsRu>o*AH2b`ZxU4XIC6zbcWH3kW-WGTH?a@Y}QLa#jK3??pIr27DK z83NrU3D0NdRtb>!qfJ(GNJZsdrQG=%gKc%U5}$p3OKYW?;44d0G|yet1}7G(V26m+ zb`c=G*F=I!DZqzwEQ#U^i^Vvc7tg^rHeK@$y5h#^H{V!^iDC&J{a+d5hqoh5Vm4IQ zsuWsb=mdhEjPYmFCNC8Tt;93FNn4=w#1!%w3eG&V&4&sF-jCHC4QQz~AVg9UP3{e1J7=cy zerfZ!z2%A!C1;k9A?(hSS(HpsKn%q4FxHlHWO#gt)tmGxN20z+#V3RAtJH}Q>*R*v#ug+f5T8Z2SI!_XaUA8;aov#=oTZ&gE|*TE(9pS*4?qR*1*l0W zx{e%$pE5N>x;>L4POB>MAK}``O2uq(Sjs#FemLm$XkD*@euX{JSV33A_$CEh`$8Fq z#3Ndi=_If!_$1HN;CDy*@WSieSln8R_PQ8G>HZ#h=r~=sg)iQ{1uZqEZ04PzNbRJA z6+QH5Wy97&bSX_K=d1uBll_n}n$d7m(a-O8-pR#VY?L))z^)%KQ zx2C&7v{AcYA$t5Z0*JNB?c)c$Y9-E%9m;IVWJGJ!5~M97ivSlomrStcmQsi)l2jX_Smrpn$e+J(lnZ+XX}Xxkco6Sk;(gPV9jJ>0Oi8I^NaZZ= z7Y$uRbFedCDddXfh)_hZFCJqK81&=o_g#wtDrGWP#ByH^-nL;WPLjp>$0x*6wFrI2DT4s1Zn^AmA^e z>#-kbsA|1py-8Vy@H-c6UgbNJ>!BOl%6f zMY_%mR<+k+-^n3-=DSZ&dCI6`+>x9)LoRd6iUs)aTi0U8!8531^}n?(Jfn6r0oVy^dQ0%q_(X^7ix?pDj%)HLz3K1 z6jiC3Yr^>9_Cpx(HRGG#`75;Z8dArUN(M~;&pi7a{`~*_9QSQ$$FZ&fw6r#!%M?i` zLJb|7ht-Y=S(7rR&xRgAG9Mu`ekMD%M$}M5-L;2 zGBpJEvOed!T826O)IT7;{2J7)za3*I4FmKBh()jGXCK&meKzq&y~v z6_Bv|jedldZNXRWc`tVF*nz));@3F&`s>W~g6LSf1h>5BE`00T-@#YE_yyd!B#vt~ zE@v@!vM8+S7t3E#ekx^h6+sz|w{@YtRh#u$FGdMryda1@?bohta4uWwTzR5Uv$+qa4RR?ZQHgzz?;@dJN@vHS5fNQhwRy-q{#SiWKX1lNVGv4 zZ_Bnx`o~5U{z@gn6_9BPt~R`~x-S{xWn=*@CpVG_x_OeeZV*EINjD{FJtqc|Y8iLk zd!H^`3*BL+ryCw3w$+`TSbgOcc!3tWx-E*<+8E-b&CKagrt~A)E!?F~D*7G+GCaZ!knxnJ(fS< znQGw<_>x{7A;?Rbs*o6ITa8rj8F<7H>ZIKhKlV9#qZNY1x89GQ7am4A$wd>*^$=}J z(N+*9-&4Dw!$5R5p`~ENO&JZJHe}_@hIoA$^ktG*f$Lr&i{pN!m%_CT>QaP*{RLg+ z*Z%mwVO8g1^mZLb`+@~Hv}X^V`OQ<#wr>kpUVSZII5CdvSG6gC3Rbx;w}*9BE>7O# zcz~|q9PatZ=kd(H{Sse(@Ea7oiK+K|?lCmB$ga z@~X`i7cMGAQID%jyr4Hojr150Gt)xx&4T14FdM?yu2_QnTWW)OG9f`hdkoy;)XE<| zu@~3f_D)>4c_Ypoe*^b_@;|7{yW@TL;K0FyICbO*A-^9H7L;qK`9}w`SWp)+M1pS) z#}7CeMzFC%3&zLy?L#FDaIyF7+Fi*9JC-cdR?8=T_EUWId*4I)#H;8}W;Lg5jE5<} zR=kxcHWp$i7|A-NIa^a8xrdb6CiThEoyXFDJ3ctVbne`Zu$IS!B(q7Diq6lwopbV= z;r&m;OQ~l3mWCj%r3$f26X$YKnffA8)7a6MSv`fx;9=*K-_?ut9hCRI#c=&st!Oy?@J>2=; zyG&@||3dTIVSM#NAI6EEG2F7UVMe0hyu-Hixt1?og%@}4!p`TP z!+-rx{~5Qx>mAth>Ms232S0GAuM+;~)1OA17P^$~E|*H;(|2w{ZT)2DfOA1zJ4^dj z3y!kd8p}L^K-Ig<^CSoRVb8(YE7G)TkcgM$_I~a ze*}xJz6rg%pCyOd1wY}fha9L>+l4`wt<)k&e{(B?a)jDethh^OJKi}%I>>}Pwxotw z)mS%_%;6NFb@$GbIMzL=Wu{SbpbvcPe$?01WA}5AO8Ul|Lh;msrAYKR>VE1<$|TD z#CkG^ZO_2j7%@ptZ6IX)r!Nu#rsc8a)X_m)-dxRRCi=5;q|PL)a|@Gn375gz;1 zBf9Ue@AMhC8#uGf3%5V=5Z>D4$Kb%Q)*~&?9Eeaj7=UgqNko0swb!DVu5fclEuQQe zM-Ju6BFkKt^11F=*MO&vq|m;ICAt#_W~BJUyNDYtYs0bG;;gQ8`nZtBNe;o2m9zxxs zC4|)>R=HXG>K%dCH~VslHs(qA`dLKI=gQh^8D!ph<$@*^94hxH(a-x7+PAlNpdp*Y zYiIk-$x_zjd21}!VO7+NElZlPeJo-&kWK?unlV{UqAgb^K=TluSKyDZUcz%G2eIfN|x68aows~EL_ou-{u#CHE*q;oGU~V!}1v>=poaN zD9S6I3v=`mvI(fRuEu4T>+8Sx0g7XN zy7@)e7Re7~Lb-`NU87$adg-STW<65dLN`msB^uUTY_=i$EtFxfbGj=^P`K`lhJ~q{ z#|U)BM-XC4v0>|03{ITF#+7kAwr?0CMdPv~Ow^Z$Eqv(O77Vf+xR`DwsL6fR0eeiM z$pD+aS60@&(v#D)6q(nbg+)~8&!;p`(_>Wp1)Mps6QBLo|H9vW?Q^_t7`NTnhEy`I z9ojKceP;)9_&<;I;y-@(N64Lc5z$yJrX=!?Qn*E1%kt@O{o%-*1!z`5b{_k6jRdXh zRtSb9b4Lr=M4!fAr)&O~y2kRKXmk6X$l~=|vnOAyOfAbAmgH|j(rTBs&#FvV;$x(y z9z)%Ih}YLJ-^ywZIh$JxQW?_HM?zqeB@e2bI3;=XO@aeCw#%YrOpFcV!=L{=zW&HB z@RjRhxMgiU_U<2GJSw1p6@@FVY(SJO%VSR@aM!yxQ%g;uRZ5XU8VD(X)+-Tc>re!| zaLp!k?|TXMqK(L(c!lp7SC#hpf?CJ4yLO`W=8xmQ{Ov#EufF;P*iY}pqUJDCv?@tK zlA%_7{yTqzXlV!m&jfSkW<5fzdPp@w>ZPUu+2o{N|J(}I?vSP|!5f_6WIIXa7#RMY z%3?VXi9guu{8)3ot))`_nWK;Y3}c6WC!CqWcHwM=B9a%TP1{31Et4KQJBGTpxI=W$ zQZ$lkMq*TptGfAw?m1e^>rN}t2$Ib;t%^V*;Dj)g#Dic^|D} z_n}ej=(6yEuYDC)L`D$vmo*HC(v`{fTd@Yd>d~}eD{32C5hgG@+tsBDAMl!zReF?4 z(RC1offIVbLe?8YWW(FBeDe($>OG5-hYqVyWOr5jqIR5o@iEjE&g!-DywCI@*kP=H zK%dL!oVpQdXrA+45|K-u#D6dv(XPCq>t~|9kuo#nU^%O^a7F2%>+i*DG&%a1=>oto524H z31HHnJQZg2#C{CC{1}SKA$aK~JquRDOV=BWHfXAq9qorN(S_Qmr$V03H1fK4Bw;H2 zvRR1hr5jB#Hz7*5oRIiMmY{+xUyb$lR2s6}(Q@s5=)6TvfW!mt*{Rh+l#?31)I%b? zd;3rH$Vp+dn-;cK0(p*g!az7McMXHFvh?V%F07PkB*zhAT}W_GRidtckJKPjvjVNF zi5y#7x!?tD{LRrN51xJldAfanW)NwDEdRpw=)CToRESoM*Dk;7MqEvr4ULKEu}t&V z^eEnV@@L5O9#@wxyOO1HBVIyJW)#FJdr4*ta0WR|a2`3?;OYobTxnEy3t#*?N!n5@ zNgi0zJt=}mgc>ZDU8F4MfiT^<_iJcewpM<$)IBq`8dpBV>wIbW@Qa#{ST%G-7^_Sq zonmm!l3|Hl%4veOa)|DhXQAn2zrNR7RFEVjue50hBGUy+jv$hI4XIoY#=r!vu@A;VW;!iW}ak6@gN5k~tDMK0e%!ky9si4~A@x@v#0Vt(Z;ASDM|v zV)eo~hw8E7J)gtb*LNdv^c4kmCEdrEq>}lyV@-k33<5D#_@ojS?sLM;^KkJeS-C8a zhZrd@PY5M^^lHkI5_Ob%{sSaS;!$M-7T zromK>l}r%KL@zB^>*Hu2iO2MoxH#W3DwrEA;45AN`(tBsh4hRIj}v&s!Z>bzkuD?jx~3G z5Ou9BIyVoYXvey1v0%++-FzcGMQOUyu~UbUI(-n{(wJ7@{fe|r3LymnDcG7rkqoFa z^YAJWE=j#2)LDe40RAy!{+N`^On z=Jrr^V@(J!t*BkN0=2Cj+O%6e4nFlb&iwiph{r-)#5{(FhfM>PZ8op!mT#8O@&o;N zl4Y%T{?Bi+O4Cs3uMlAhIW61j;!O+CvT_3weW!6|=i|ut9@drlJOwjL4wy3ey>#ckffLNY%C+I#-{v$QvB_&yQIBGu{R&8WyFo1H_7amsTEichmLfwKGjWu3d6n5728w=drMe&)I!6^|XP!J=z##kvoFL3vc( zXWR7kJ;$_s4GSN%eEzMG*5$}_?@~aa&8~jaR;Z0eRlPSCH!O`))x4zJXJWdWrQF3T zwjQD7a*U>}(5hdIhK;wOzNtkI+LOHxUXRZ$$?CO5dynsY2?6Q1p*7?gyQRKqj?{GO zbaEdGpd>X%(mB!qrDY!5z95Jc%UrPbEjY{SLH6|*Fmn%{Q5NlBbABflH!)IFFQW%E zP?5ACfU?d{1e$mHk=!9fMaSmrG1j#o<$*(}TegvP!$$XRUDgbz`JY1qUjOkw+!2b# zceGq}GtrVyHN+(HrVT$oF+S(2fuP2m_S;O3DQu0ivBpJ!V(nVVZdin7#sL)|!A&q6 zQxIcUUBxV)>G3R3Kq(fMN98;l`FEaF7*TePm4zJt93#no>{K_7p6)^qQx-YJzf>w* zaQ+f^Lrg)MRtEh147 ztwqaKH;{t!qJ7gXsM=2cz)bU-rCHPZawGY^nkQ%LQH^tjCe2bp^1296Tv3Vj%7zWMR}PB}Mq;x{IicSswz>Y_V?4hiEw4t?ocXCEnlWRverfLV-mlD^a9Zp8!?mV+MXa5-*g`q z-uPaWE^uD1wjoxwz*o=EhqjG3>tn`R$kndCfoQbyRY-zJpPlJ?GYXM!-sAQ9wk^5& zy#x|#)cwdP7L8zJH*hZF9``ZnCM7V-;dZKZ>5RGx*_2tF)}>wK^_s4}qY@X&(-u*; zdbMAHnx+=xFtsV@{LR53QiE5$=Pr~T>Mu*B8P80m$4c%IEEK}3>u*HM;w95!*33hW z{W1(z5b?H7Lj9>7Z;~9uS6+vvRU6QD)lDQGHeLKK*s2jAA6>g}wOW3R&wjx*~A+ERiip}J3TQM%DfiUm%dW_IjSgcYk zxaGs>y!C@Y1g#V=gL$M04{1+79pW!^?yosMkpIY%{uh0LZjtw`V zX5n(J!^K+KapdRUfzM8xbfNme&kK6Uak84wv}~OQvZfX5(AT*hxsxyH!n>rHFW#sf z=v5zMvK_(s4u91)4qAZ->dsGp2CLq34Guo~2u6+`F|81+Q!c#r2E6<3yV2N5el%9+ z)FEfLLIFMbv{Y;w)M~{db4Op4o{1@+vP*eq%lG7v!v+^_x)BT3ZNcd2V;Fe-Rb+>H zP|l|GEY-o+ck%f*pmsqgmfraXIQ{%X@ad`lBNb%;&hJLual!1Jg8Z?wH+)--yRE9e z1)D$nr#SKKBS;?kEiEylM=75xK9`a(l?zY9a;&-Ub0*1E$X`T$q zqT~ES+@iQgZ%q)Lo3^kFwO(CtVrYm0j%szlD@Ze5KWXK&JvX3UM&>A|UP(Tw>`aEB zE>3(;HuEN6^MEwyR+I(<#6LRLl#V`=lM4O8w7Bfwj&i}-TQi`hyff)s6-lAnks zuYT8uvGxzPp?>4LQ1FD#S!7v2-ODK{O3gy7yZ?*M=1MbD?Hie4v!_s6!+q7qW!ad^ zenM?1Vk+V^w~{~YN7u`{4OI77xbO+Umf6{rH&u&5A*WV3-gkn+JQoOA!8ifWg}+eK zy1?(O$@hrhZoSwq1-ob-jTd~tS;$YgKNFfN*3^boZ~Fj-$gCfG=r7?bXB9+9TZO-E z9YPG&a*WopTkh7QJ=~#MX}Wr=f1-cO4EGWJPN2T^J);{=(;Pk7Nt%r~ zk2juv7N?&79ah}@7WnC=B{wsNyU%bn-FK4JbLUXmqiJKD6`1s~SE>Xt`Ptg#o6Vv0 z^E2ioKpAr)LuV4C^BXOX^tP`>=Il{1Q#4<73l@_u5*OzlEjjfQvNMU~w6rZI`(gW| z`VDK^|B~z@k=us>2K=@a>omE}F_w6P0ZexO%&ggZd?2LISL?Pm(X<#Y`>>O=ZEFJ_$l?XQV?kFki_iqXA~ zO`Q-Sc6jBDXkNWhPx6=jd2;Q5KRoqN1?TU=mC9K$YVNDf%|#h3pWr=Hrb7HzRw zzW!tP5|5DK~8Z@_QflvoXawHwwp1f9f$t$&*3YKSMj1ULm#~D ztI@FTdc5?taiyNJu0iwzul4aXk+2_m&|6catVOW914t}YOT zuYDC^`DTQrYHk}&*1d)dIpw(T&{4ec%yTI8oW)h^H=>SlbfTvl^^2FHX5~tjp$3p9 zclz+Z{woHUm$q-&jCXx=8xgDNBNEG$E!qRG{2KO97hLhW%~<7l2d=p151HpK#5@i8 z@{$Lw%lL}-OD_<@6q31sx56BD`v5LsxRxcO^~y~YP>U8{`}X|~eJ?)(zg0BxFP}!K zYcKiF9>iG?ZdkC$ROhQsnV6vUJ@d`~jl#*(xch(ncXTczg+&(|laruC@bVpu_4O!s zokSzOeQ@DQ-1Pa+BCf3z=4clAB9);%+bO`4lXHYQUD)4tCDy&~GZc6O=3$7?zGThA zcMQ)NUnRXOE-he5WBvf_fH9!%_FpTeI6J zJ2--aKllM+jCaf5_aUHvhzgLe#L&zj(~aLgjqp|Lu>2!`z?_nwnHW_xJ=WKa#J(M{ z$NH6da!-^gSgYYQFW64Hq6tI8fO2YT^QK? zG}1)AKJTP^v!hL@UAYA{i&kh`z8py%iWs*zdgvg=kDt=h8v|KW-7m>^PZ3*&mM=lg zvK9KXEXn*#dJMx|hmm5f(8@?lqEn|7T?#j2$?f-}^@>fn#BZ3X9y?&Z;rm(4*_IK(a!0|OKVC7)FwrvFU8`=Wul6{t6_fyJu zE9zFeklV^w*3*!sJT^8uh~Yy!Q8>Myxk;{a$C4+4`qkH>^OpBHG}vV=)egJ~!gI%) zB1Cso9fmtEZdQi4y~OF`IJ;{HCQcuqfRY;6%S0V^q#mJ;)#P|rX#0lNDCKAtk2x+y zPpFXUKFI*-6&>w9g3KFx;LRo~8)t=m33sf+vfJN}aBb7&rhhx|CJN6TZ>kWh2N&qA zFqXL$^AtDbOH=v|?n2_^0TdFwD2@;5_e5DjmdBg4N)oJTgeMd+yMvhrmPl0R5(6j> zo(6JBEd!NV5(+nTpk~D;=A>Kno8+uZm);JTnD>+Uig_0r|87F89?tQc@{+@Hm*5h= z-rZ$YBt;Q&Iy2ml;gg3ke)a?kqy2QjN&Omkq2bKgLzY^lkL4#3ZlGZyY8S88WL*vb z(*Dx9Er|$ekMk12?fv%>T=n?92yv$22v&m65}5PmF6moSrwr{_%M-k$l}VCwd34X9 qkmI-{kkaM+DH~b3ejfsxY5aeG9q + + diff --git a/app/src/main/res/drawable/icon_edit_svg.xml b/app/src/main/res/drawable/icon_edit_svg.xml new file mode 100644 index 0000000..bb9161c --- /dev/null +++ b/app/src/main/res/drawable/icon_edit_svg.xml @@ -0,0 +1,19 @@ + + + + diff --git a/app/src/main/res/drawable/icon_family_boy_avatar.png b/app/src/main/res/drawable/icon_family_boy_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6b5f7497654ef97d39679990ad6f89985b4492 GIT binary patch literal 10424 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 Z{~x}8+|iOv(Z>J)002ovPDHLkV1mBN*K_~? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_family_invitation_bg.png b/app/src/main/res/drawable/icon_family_invitation_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..28c8d93f7386425cc9f8f6ea367d5574317430b5 GIT binary patch literal 47213 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 + + diff --git a/app/src/main/res/drawable/icon_fence_circle_scale_red_svg.xml b/app/src/main/res/drawable/icon_fence_circle_scale_red_svg.xml new file mode 100644 index 0000000..3e3ec89 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_circle_scale_red_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fence_circle_scale_svg.xml b/app/src/main/res/drawable/icon_fence_circle_scale_svg.xml new file mode 100644 index 0000000..f7fa1c8 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_circle_scale_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fence_circle_shape_select_svg.xml b/app/src/main/res/drawable/icon_fence_circle_shape_select_svg.xml new file mode 100644 index 0000000..de9a175 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_circle_shape_select_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fence_circle_shape_svg.xml b/app/src/main/res/drawable/icon_fence_circle_shape_svg.xml new file mode 100644 index 0000000..2e84b92 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_circle_shape_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fence_dot_red_svg.xml b/app/src/main/res/drawable/icon_fence_dot_red_svg.xml new file mode 100644 index 0000000..b3c244f --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_dot_red_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_fence_dot_svg.xml b/app/src/main/res/drawable/icon_fence_dot_svg.xml new file mode 100644 index 0000000..06819e5 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_dot_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_fence_polygon_operate_red_svg.xml b/app/src/main/res/drawable/icon_fence_polygon_operate_red_svg.xml new file mode 100644 index 0000000..190ae66 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_polygon_operate_red_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_fence_polygon_operate_svg.xml b/app/src/main/res/drawable/icon_fence_polygon_operate_svg.xml new file mode 100644 index 0000000..61e1665 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_polygon_operate_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_fence_polygon_shape_select_svg.xml b/app/src/main/res/drawable/icon_fence_polygon_shape_select_svg.xml new file mode 100644 index 0000000..3cc7740 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_polygon_shape_select_svg.xml @@ -0,0 +1,41 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_polygon_shape_svg.xml b/app/src/main/res/drawable/icon_fence_polygon_shape_svg.xml new file mode 100644 index 0000000..fa3f65b --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_polygon_shape_svg.xml @@ -0,0 +1,41 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_red_rotate_svg.xml b/app/src/main/res/drawable/icon_fence_rect_red_rotate_svg.xml new file mode 100644 index 0000000..c3b1cac --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_red_rotate_svg.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_rotate_svg.xml b/app/src/main/res/drawable/icon_fence_rect_rotate_svg.xml new file mode 100644 index 0000000..d5704f3 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_rotate_svg.xml @@ -0,0 +1,22 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_shape_select_svg.xml b/app/src/main/res/drawable/icon_fence_rect_shape_select_svg.xml new file mode 100644 index 0000000..ade400b --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_shape_select_svg.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_shape_svg.xml b/app/src/main/res/drawable/icon_fence_rect_shape_svg.xml new file mode 100644 index 0000000..65b256e --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_shape_svg.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_zoom_red_svg.xml b/app/src/main/res/drawable/icon_fence_rect_zoom_red_svg.xml new file mode 100644 index 0000000..609a0ae --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_zoom_red_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fence_rect_zoom_svg.xml b/app/src/main/res/drawable/icon_fence_rect_zoom_svg.xml new file mode 100644 index 0000000..96b3207 --- /dev/null +++ b/app/src/main/res/drawable/icon_fence_rect_zoom_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_fences_zone_gps_green_svg.xml b/app/src/main/res/drawable/icon_fences_zone_gps_green_svg.xml new file mode 100644 index 0000000..0ad3bf3 --- /dev/null +++ b/app/src/main/res/drawable/icon_fences_zone_gps_green_svg.xml @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_fences_zone_gps_red_svg.xml b/app/src/main/res/drawable/icon_fences_zone_gps_red_svg.xml new file mode 100644 index 0000000..315df92 --- /dev/null +++ b/app/src/main/res/drawable/icon_fences_zone_gps_red_svg.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_fences_zone_gps_svg.xml b/app/src/main/res/drawable/icon_fences_zone_gps_svg.xml new file mode 100644 index 0000000..8e57bf6 --- /dev/null +++ b/app/src/main/res/drawable/icon_fences_zone_gps_svg.xml @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_fresh_paws_lock_svg.xml b/app/src/main/res/drawable/icon_fresh_paws_lock_svg.xml new file mode 100644 index 0000000..00f9358 --- /dev/null +++ b/app/src/main/res/drawable/icon_fresh_paws_lock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_fresh_paws_unlock_svg.xml b/app/src/main/res/drawable/icon_fresh_paws_unlock_svg.xml new file mode 100644 index 0000000..e835801 --- /dev/null +++ b/app/src/main/res/drawable/icon_fresh_paws_unlock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_furr_timer_friend_lock_svg.xml b/app/src/main/res/drawable/icon_furr_timer_friend_lock_svg.xml new file mode 100644 index 0000000..03a3797 --- /dev/null +++ b/app/src/main/res/drawable/icon_furr_timer_friend_lock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_furr_timer_friend_unlock_svg.xml b/app/src/main/res/drawable/icon_furr_timer_friend_unlock_svg.xml new file mode 100644 index 0000000..7a13e22 --- /dev/null +++ b/app/src/main/res/drawable/icon_furr_timer_friend_unlock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_furry_friend_lock_svg.xml b/app/src/main/res/drawable/icon_furry_friend_lock_svg.xml new file mode 100644 index 0000000..87e6fe5 --- /dev/null +++ b/app/src/main/res/drawable/icon_furry_friend_lock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_furry_friend_unlock_svg.xml b/app/src/main/res/drawable/icon_furry_friend_unlock_svg.xml new file mode 100644 index 0000000..94848eb --- /dev/null +++ b/app/src/main/res/drawable/icon_furry_friend_unlock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_gray_delete_svg.xml b/app/src/main/res/drawable/icon_gray_delete_svg.xml new file mode 100644 index 0000000..af8ec92 --- /dev/null +++ b/app/src/main/res/drawable/icon_gray_delete_svg.xml @@ -0,0 +1,21 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_gray_down_arrow.xml b/app/src/main/res/drawable/icon_gray_down_arrow.xml new file mode 100644 index 0000000..82c90d2 --- /dev/null +++ b/app/src/main/res/drawable/icon_gray_down_arrow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_gray_right_arrow.xml b/app/src/main/res/drawable/icon_gray_right_arrow.xml new file mode 100644 index 0000000..1867d75 --- /dev/null +++ b/app/src/main/res/drawable/icon_gray_right_arrow.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_help_square_svg.xml b/app/src/main/res/drawable/icon_help_square_svg.xml new file mode 100644 index 0000000..9dfdbc8 --- /dev/null +++ b/app/src/main/res/drawable/icon_help_square_svg.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_hide_password_svg.xml b/app/src/main/res/drawable/icon_hide_password_svg.xml new file mode 100644 index 0000000..926a82f --- /dev/null +++ b/app/src/main/res/drawable/icon_hide_password_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_history_point_activity_svg.xml b/app/src/main/res/drawable/icon_history_point_activity_svg.xml new file mode 100644 index 0000000..aee5396 --- /dev/null +++ b/app/src/main/res/drawable/icon_history_point_activity_svg.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_history_point_svg.xml b/app/src/main/res/drawable/icon_history_point_svg.xml new file mode 100644 index 0000000..9f60240 --- /dev/null +++ b/app/src/main/res/drawable/icon_history_point_svg.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_history_track_activity_svg.xml b/app/src/main/res/drawable/icon_history_track_activity_svg.xml new file mode 100644 index 0000000..6b7937c --- /dev/null +++ b/app/src/main/res/drawable/icon_history_track_activity_svg.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_history_track_svg.xml b/app/src/main/res/drawable/icon_history_track_svg.xml new file mode 100644 index 0000000..4fbfd37 --- /dev/null +++ b/app/src/main/res/drawable/icon_history_track_svg.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_input_check_svg.xml b/app/src/main/res/drawable/icon_input_check_svg.xml new file mode 100644 index 0000000..b513044 --- /dev/null +++ b/app/src/main/res/drawable/icon_input_check_svg.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable/icon_label_select_svg.xml b/app/src/main/res/drawable/icon_label_select_svg.xml new file mode 100644 index 0000000..a864203 --- /dev/null +++ b/app/src/main/res/drawable/icon_label_select_svg.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/icon_light_svg.xml b/app/src/main/res/drawable/icon_light_svg.xml new file mode 100644 index 0000000..21d9c4e --- /dev/null +++ b/app/src/main/res/drawable/icon_light_svg.xml @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_link_svg.xml b/app/src/main/res/drawable/icon_link_svg.xml new file mode 100644 index 0000000..95b696f --- /dev/null +++ b/app/src/main/res/drawable/icon_link_svg.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_location_svg.xml b/app/src/main/res/drawable/icon_location_svg.xml new file mode 100644 index 0000000..a0deec3 --- /dev/null +++ b/app/src/main/res/drawable/icon_location_svg.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/icon_login_v2_bg.png b/app/src/main/res/drawable/icon_login_v2_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b27d8962940ac69522f54ca9769039a1f68602 GIT binary patch literal 965592 zcmV(-K-|BHP)&jJKi?ls*NZlf`e!@JMPE@G|O zxLY%9SmXKs{{Q^Hc0@*uh_y22%vkS=?;png{&9Z)RlkfC@7giO_Yd~>Ki7yi_xE?! z_h<6^uTj5y-}n2UBj)qO=l3V_`?GbObA|7V&hO8i|2`Mq=eytct9yOk$Y*~4eBdw`~Ai9`_KD{vFqaJVZZN{^~C2#^`Y;7$uao5z;k__ z7ykar_xIO%w)Z^CsPCTpZ9ex*EJD^d@xFE8@1IR9&i7BxyS(vyU+b*JdG7U|hpQK@ zf1K-&Iq?8z4Zc6K&-;9@)A@sS+y5{74@x1k&?`xm6n7qb$w)4-k2WLOet)K7f ztnYQlI*t0wk)6HxOeGHk>%nKh%j1vs^Zk6{>({UN{rh+A5v~zfyS3}N_kK%8>i6G& zop&AI?^^d>kdfN+Jo5L!JI9gbQ9r}0CFCR^jAxD4!rE%B*0)^!@qhZe_@Dp3e~IVU z^L?MQw%;=Fy{7MH)%u-(uLXcO;aR_T>b%eXUduVK*E_Y5kad3W`yU$;GoE_I_vOCx zxz4++@Ar*OoqJd7*17+=Pe4cK1Nk~KeBQg(dL22#x}Qb+{k>LC?K$@NJpbqD+F7rO z&zEc-ec~3?Iv&~lzUO(3m)AVHclNPFkI#z>2ljUyJ>Kzr&ARWe?|oh0`U^_UQb)u2s7EyVeue7~a#f zFGs%q`k#N*-q(GPPSS2*O|^e`?Xrc7_bAr?hma#}W`-gcD@3ced; zoObl+_V@2T>-V=^JO1P?dpT)W>RJP93$rYp!@8W`!%pp5^YML+lEF;s)3QvTf6iyb zzx>NzwMNG_mCOa~7=#aoiUgDWT-n|Abp&n>(Emd$&mgMa;HS^avBpL}T>cYJ+4SpS9R zI5M-!K0(*lf_&rASLw)kzV+h2%Qk%P&H3kF-}f1`aYxtd_krudp#|;t_gcJX?S9$6 zVvWPHtiIH*CgRk^&tk2CMa1XHC9-_=NJ)@8FcphM+eXK3acK!{4J;L*YUHuC4Jv6tN`r7MT74fu&t8S+T-uflrKNB z{h$8v-~I_;8gRUe>O$jKn@7V_PJ)1{E|!a*3p$x;@L5230Mt^V0D6Yi$NMHjrY~b=JO@DC9Qe}NfTVE2p-~X&VCr`X2Qv!@2Aw7h^w4t#!OYv> zZI&QWsBM%0HVPD-1-_gc1aOm*@MtpCw^=>vzDj44MJ~%=@l31fRE72JiW8jK6+C(9UPSo_hW={F^_c zvcQ6G8|z`?z#k_AloCc7yadP$D)E-_r2=3db_jeN<5^(f>{o#gf}L+AF4@@(sGh-~ zW0!(H-wwOpapQR;69hbuMG~ZCnA!0pw>nBL(37*OBMCH#e&c zB7>0AfAir=X3xG4 z0vlch0Tp%hY~|;rt{|`z_=;;CEt_=w=W~+9MWreyO6OaFIQQb{OfXK9bCTXdo)Bo4 zvoRTaJ78FU{L!9`0Z9^?t>@wXK&H;UV5bIU>Fnj_8xR%9{sxJ* z8|U*IGPr2lYL7&4&>qy@!Kjg}2+K`@73n;EH3AK+$I+cyxBQ3u|##~Ir`qvYg~&F0@6h=m>O`BSo4dQYFj z8xIm9^=>h|zcz<4Y(pv_pMwF^#BZrX=g&i3#oi6R#|V*Aki(6i6WEObx!l~#B6l_d z_C=Y89KaSJz#ov)%dVEUrOg`fp%hD z*GGG`sTb3L5%P;KEUJZ8vWU$CC<*c=u|n()E`oX)Hzpwf6f3#89v!Tw{r;d{mK+3a z|Dya8D9WEr5_c_@lEs^~@kh3;1&nPVfYN zVAL8Ke3NJjlN7QmA`s>8w(;Pg9h?QOC&@+VR*`}Vq_{`Fe*N){eLh~3AciRdfwn#9 zlO;dG#9Gf244rpJurqt_1DN;g+Xok5r;LqgZ1*XDHYCgxZ}>`)G=~tbwG}2h*Zq(G z_5b$gd7_tWO+>WvX|a<=Y^Fh|9BV0eF(F@NBa5{yMd72#C`gzolmcB5BLv58&;XzV zWfwzlkdk1r^_+5CgAO#PxaG`wt@`W{P;O$9l~Gi46cdjxpf6U8R-ewS0PxPZS+BL1 zl>?6H3VgT*JKB%~Xtwc)P{6co~o5NGSx#h%X7$DARU6H%nLV zL}5FxCiZJ&v!Qz%W|py;-_AWK#9;#+WZfrZ#>O#d6bPyZ3{tc35N&iwZ{DY z5V%=144c6h_u5gs0R5nTjSf7wu1&BZ8Kcq{Yo~Rf{2Y+F7)U4xsMk#f!88t*8(urP z|B}!T?ZQ9vz9WxD@pZPEoF@&TI3T#hD+tgVBF9A?c z1`1P*1`ZRjw6b+cYv(;v7F8LC%Wez!uO@PC@B@7wot+tN<4e4jGFhuxOJ)U1M)$rP zBkjQZHsKU$yBv~<3amjMz?X09)ZpeUU3c~KYTc2gd*J+;$pQ;I=$ke`#%P&?E-L%B z4LAjGM|QC142k?ykbmM8tO_NVMq$vthHbVB=8FZ(h>4nhIhmqA+_CF4afP)E-PXEu4^ zpg{J8x)r=HbQIbBvSkZdN@1r1>Pi+r#2F+LQ$ecqn)VHA9R7Lj3j;F%K&)}ygE(dH zxUyKU?O8GBFysW?(?Nmsu^8gGo@XcJav=CP{_F$Nv$%`3Y#)$eMuuz<&uOg-S846G z0txE+4reNA?FX`6@Xf+1${aFigf(dwnj~woZ72UkiWH0giJ zR%BjwyY;J{iB$}^_l3jg11rEEtZ3McWtk zgaliE$v8_$ky?S`>t2cq(;$A*3e@UA2v)?;$X75!hA~2*t5QP*4!HI*kW<=Pw#MsX z$1TCx6_Lj7^%FQ4b_DxU&KuN{^&px_0^1~La9WA1)k|k3MhG&^bnHMGj;&ScY}&YB z&6Uay1}xZD88nnCV0|6}*>c(s9lO9YoiW%PJo}Sqo^n%GuhxaVPsW~yGma)1J*IXHnD;r^_Y%n%#ASR8StmK?+T!tyi zU|1$Un; z0Ye#znbNa9PY2_341?V7-2{0cN4-TRG6>l)jM%=)hAFe|pyRqmj6vVHTYl0W8`&)BP7PyKO=F zUtVW95XQSH+lunymeXEb*nS0}_>pNqGxZAEQuxKhBGOuvk{OA4$ER7mI;1uVqYg$-w1?|7Vo95j)9h}D<& zi&-hWM+KKeZ$|SH7Tot`ibb+>N0GZ7V=67n6jBgeM3|j8>-hD}h&Kz+EZR9Q;nNaT28UDJjTHp zcGAWSwa)-fBiqo_`wjI2oa<0F$N~?tNMclF1;C_E1Dm`+-VbMS;0#lwDqV0{%@0tx zt5o2WQ-}@RlyL+!y7gvF_BJR|&@0gG)F$AG~1 z+slFa-d9R@m1o7ptkHSrwdZBTnWCwZkV)$ras-P8UoxBw>{(Kf-ODk?)g!d^oZFe9 zVo^_>uj^w89CTk34Ftr&49)=K`J7-Yxnf(j(9!yn{XC(-S>9p`fCfvt=2v z!91Bt>s!X<5486rEQ*xbRU^#Zr9HZ`brA-rP#tBN$cT^5l4*^S-}$_E0Dv^OoOnIz z)V`(lKAj3>CT9u2QPM=B@p-3Yb3;~BZ?0@o^-C<L5Ld(8qbPz*1mF+J-#URIh8@u~=?)4BURPsI$I7bRJ zjxJeIMkwL}d|AQ1N@+*l{slg$_J~Y#*Hn*CWkL0bB{MyeFIv|XKm8G4pn9v6o!)H^ z%BI~wmG3m9-P`>O>U)&GP^nTqd#bEQxmsl|MfOlni9_Og&eJCr`iTN_C{>l0=;vt_ zW2S|8Y6k{@=Tb=da8uE!-$@@Xm+TUBc8;5+VMh~?SYSv8Yd3}AZk zYch6c+_29CD1n+orOV9*CWKf8^tx#9A#V^71U>U&V8H-TiOF;+N~{+O0N=@!7*ee; z%4*D$b689dHEY1=gwk*XU#v>dz!a0p#+1plo)zhQg7!KCwSQC55gk#j!tOGh(~Ka> ztTvEQFa#QkcWUPFIeb?c4W(8xx}K||tRW^K(L(^sgzHoBR8mlYj zPWREPP*0O3Gt0t)eMgRN&?u$X+GvnLeLA8hwFpd8}@uyhm$bk|>Wwx>C~t{Yw`cvu1^G8m=r z0>TwIPv{2v9wwPpJjvuh=1bX15Hw*$V#=aO^7 z8n$ghhG15Nf8@s{RG~m@7mFuf1i77LRSEnV2#LTDQx6#c*$@nZ!Azp5S%lHo=_N_Z zD8WLKSQ-Q>LAgKcSeev;XR9?hd;BP?x~cQ&Yo6y4u4ASxj3C)`1?*~Y zt0-=#NuTZ|=xoBAUHV5a)7cFI^_a?9q1vbI|A3OIs(a62Ty=hb8qte%yMCUMkJ5v?LX)ACcj7~f2{UUO&7_=e{iMV{ zOjU_3DB(^vRo&olzYNphm;hGT=n)J=$THTC1|0KCgH-P?=B6?SkAnw9a&Q(3cq%HV z!BnKGn$5cusG9scCQ1+9@b| z1x!=vXF6#!?Jz_o!0$2}P`?{&a3$-iNZ(Pq0H1;hzT?X}Yd65rsN&vA*Y%#uu|D(R z_CdZR=-w}7F7j#;Bf}&1Flf-G_RheVfA-BLa6b_8d!Mu}_1@Z3t#t&AHUr_z1|S5@ zsPrQUCD_z@R#^p`_tf+a2OBhG<>J7u?FPXB?+ieOqWuQkFbrWsqk2^|>3*D9*kW!r zbfzXdj1JyTt>h`GLE|IdzibKDx~_TpB6g=4YvP9FE*Tg`n1u*tjLQ7T87Yulc*b&1 zyK9(LzwA`;7bbQnfcYx$h|iTlpUPB4H8GucP*AP1G}kW{tMb-!9o>7EvH@x5hY28$ zjeI==%NBm5zC*IjX(m5(brXPWva20Tpj3q+9n-K?-gBJQ|5Cby`^g^14%-JwcZ)dz z6-yy=c6LFIswO#QTHke#m$knNc=gXk5D^9_>R}*zK2bh+Or7d|;f7|oM13oIf-Q!7 z=;>ls&b%C4%0CJ4AQN_i{LkBs$>ANMT^gKXGgJ~0{hWK7%|#Y)nA55lnQpKOMj_ z=7z{z8NM2z!BQgi*>ySWcGeqL?o6?oHi4a9_A=Fq2jVPdz?cCqmX_EgL|9OUHw~@v z0_~6jLdj0h&s2~gOC`pRwW!_Sa42QHE37IS7~0%S|7Imh5-&E z!SmTUdy>jh&F%)HYk_Dz`v{?4aAbE#YN>AZ8TJpA%Lfbl1dRL8DnnJ zJ*fgrrkZBdk=_PKN}%QzHDtS%k>cFI&7k0lhzHswE@9{fI)R8w~pNC+ee zc%!#KQlFtRFMz5}Ps`9L&=Tvib{nBeGmd5^43b0kq?EP{j79fJt{2CYp5ILx(Aw9%?R)_~!-3A-^c}n9{ru+_SylzDx`v$8xPl0=wxtTQ z!Hp>8VF#wN1n7UQBZHx{pY?NQaokT*a!ALiX-G--grEcKJuVqs1?FYPG?Bt}v;>lS zcV4DS3Rmwv0OjyVKIrSkFiRJoj>57{dqnk(2v72OI0h7sPvv%RbmR4M+0iZEntt&TZBwPND4MOnow-9BR;0 zCQun(vBnV!h?R9apRGwN*`!zQtK28Uep6W+O-@36F-z$ZviN=gmYPfnGo1=ZD+3VF z&sURf2>42VpLv<~O&J^pf$(?q&0;l~`BRBg$tBmk7}RH!FKfF)%%Z>~hBHV_WTfwb z_2+b#B*`NGy~*}QTK;qQG$PxVdOihv2sG{~BefTBECA}Zae@A;lx+y(1W%KRi0&gB zToaT_6j092u)9o<_E38O>&HyKd{;&&yCuJ=?7b%Sm927sMe=~_I+R)AbRzhzX@8O$ zm&o86@F@*SVfclMXm>dEC|I@v+0pl*Lq)8x#{N8tGCzyN@sGe{NY-TpIpktNzmjaX z0?N8eimU~R=U)*6xs-})SoP)^(WQvHTMekPxlzvzk^}$)?H1_h!kVq&UBWO8wPSztpB%lbE zJkViP6vevBSbn&ADb)dm1f2hM{{E_HF6d+legt~VXjxIayI85HQhi3^X_kW59Mki6 zmA2JbtZGW)b71V6YIC6^s#EjE&0#iK5$Te#39x^iMrIxKc=)#4Y}Hy_J14`LG+;2) z$f8XBJn{LSA=*M%zoQe-qyd4dq|vEBDFN2a_+J4PW`6^GS6BSG8t2!mBnfsao#s|E zk{v|I*hqA-FE!$EspKYwnz3G6BbIhE0!+aIDr0O@J^9;BDr#^$2Jp=5bpR`&+TrOn zYMk7C>u_UYN^w_U*6}EoO@Yv{v}e9|0vQ6Fat}83KqWs&!@rFChMy(1R~H!l!K9Bg za8=~5Kx#7OoYX_7uGvI(zE!hq_jZG@&EE#-tF<5)o@6PP+1KToZhcuJz$C|-r!DD@C0GtN66N$fRup3wweq zfw^64#{FMC6(=rddD{R5%nIOZ)-V^h^q=fgv5(BQNw&1E0<=%1X#YlsX-gY0HLw+f zkI{7KTe%&ChYiG4&s*}TGB0MZ*0v4ov4FvM0jqukH0ha*OiH6Kg2s*^shcSj?(;+b%mEKPGc^PflKJ>s^w@fS-)+ye9{d zK>)YI>oWr)A4i86-EhgEg}6dw6!8}BRihf`wHC{u$^C5td=X~7i-FHH^R34C$38ZD zErJ=QkFu!QSfuu7J2+8)g#s>IDSuGm z7p#J+43g`OfPh&kW`ZRnva_&t+k0wxi!?qF9)k_o*Pf{d5bM4)v){V0Sqg?fRr-cJ z0Az)7t>70WJe^Id^LCVpk>TE(fduqlr0pp;9L)M8F~FdIsj=u3$A`MzncUaeJR9uL z83V*Nr_?Ej@4s!cA{v{Isuc1Z_rL$gfBUD|*t8wt!;+!SZj=z1A&;dM#*GTCLeV@+ zwV@Z-?YAR-7z?P9sGP;dNYxfP#n0c%@oO{0wkgWe0?H^_Uu-9m<97J0k!BBYUqngD z*JiyGfKf4jf4x1&IKmFO(xA(3!VcuU3>Y=dGKZ#@P8-I!n}Pru)bOJEs5(4~PJA&! zl_Dsu7x6bKNg3!XEhnZ`vQ+Ccd+*EXFc1r~&%G{ea1M!!4N597X(dR?(2y(<494oH zQ?>3YtGSK*b~<>uBrBq8^UfbMxQ-B0D{y@q&n{KMVJS)j!kIVg0mIh^gN)e+dEi+u zkgcqVf~Va~RgRY5pN^O^bJ#Wme#r2zUtdVkMTVMTTpvii2^w5YQW1+Oz1o*k)H}5J zLB7EbhDW*8Ge2bg3@`z5G(jaVd4E*PcR5`kt!)PAxypn*l8)?L19R<*)|8G|Z2xE` zZm84FU?Hmn$M>dsodalYCtR5CMVX6hQ3)7>4En=b$Kzzq9=yN*B81r&m>)*U0)a1$ zzebu4GA?^zjZ~}dS>S9iI^gWctfnQXEGTVhH#2PQbk2`oI`e%61tEK|eiAJwyP_K5 z2Dn+*tp@gB(`dqOXm0;u^E=Qb;LBj0D4C?lPVWYFhu}hT#^2B$-_N{R6OBz0pej(i z6-@Gcj!c&2U5DRoux|)7)3x~ZZjI&YkLuG;ZN1jz$jr;bh$Msev?Bx`gL=AbLp15h zve++SqRF6+ng<`ck!enO%P?yh)c*!A^itU)Fg?;R+Hane%6J}{uhp3YlLu*;lINB! zNcu;4=5=MR&$J;=iwg$iVxAK=V^ar|)vI;kpa3=J>OE>-=zDC0E*q$yBMZsCh-@rS zhfh@#?nUTiaK9+eJa7jY;g`&6znfTgfu_U_wMi~X3qB4q-zY!xp@&=#Wkw#3DBgTW z1Y+rZ{}E&h0VR9DC@1%*%14183Br;O5g*($lme2d$aIEW*+i9)t&7ld>DXXJMZyLJ zWiV+6LHcZFh}#O)$x>>#ri_Y#-z@F92T2H*C~*GUx_Du}%4jhF6Hs3AoAxoZk6c%m z>M`3`z&n_|l?^5)QgBl8$v!RFIf6wHBUR4FAY5W`;ez1WoH9G%A@I!fH{5UeV(Em& zw`xGbxB>`eE{CxW)G*jAwW@u zZVZMstVCkL(QLMD@XpA!Qo4|_gpsNS0nTL(DV`#fsZ`WxW_z@nlw-V&l$B|?R?AK> zqD$Ka#(qTTTu=hjk{bcpM|GkZ>c*FIP~DaTp7>#^3>xY=3_oSO+YsWt_62yt531gQ z^E{fyq7-_4pUtqz_Y10^nD-KR#-+7JOV5p9WU@qN6JWVaCelt=Z0o$k|epZlyG_qah} zKO9bi+BTJG7iQwtKc=U`iz5qTx|C1jy-p~|!=gCu4YGPOO! zSo$Ww2>UgnC*}amJv<~tjA3QsIHFU*i|hjn)ZEAztxnX1VRQ$OHRxzntE}u@myZY_ zR2dPGnS<_t0~JUcSFgld95KgBZl!awLE21Q? z>_GVbW~D+T1Y~p25Kr1x%%4tAS<1M9W_r{s)>BSjSxNaX0_JG_x3lJZ_%OV{dIAVZ zw;TMFlf7zl&%1xoW;ytjz=jw``bFBEu5OD9MlBZ#SWqY~X zCg?9PB0$PR;7l(LE>31mut_!8QP3iR3MF<{qE@e<^* zvDs~-O$xDm>Mj*RrZK(efEetXnDfW;t0zkY*YL9q`yIWLd=&hoaK~=Kjs~qtu4vaG zzcbw6oy>#|^wUXKFcLH^o60h)pFo)kRU@cg-}25PbeA#5aJkbNJW#zqhm74JULQmv zuTgr$jEv-7@03>{B^F-mQT+zt$wN{@#_IdH(qMUAKJLLrH_iLa8pe|N#8AzM)XU9Ao(aRE*7A}vT zTMu@$rb<;6Cv<@mm*yCjcjf^0-{;SdLE^|HJPUNd+1ryPKY~; zR1pnx9q}8@BtZE&XV%Oet|dmf2i9gHv`stnmvsan(Am)<>~2cy%&Ne3!xJD)xE9*?S^P$qVE@2>fgx zoZShpO_c~-(@xgsH{+A^9>ZyJX6Ha%825SVuA>6&bfDTJfWHl%!qw((sf?79AQ@M?5cbDxYf%0M2=tU$*2 z!LC7n)hmPP1EUBJ>?5CrjqFK)^?6qV(|OI>P5{?)p#lg?Q#=NH2FTp$orRe^rG?j% zBj=hb6LHr5WCF`9(dM8g8qYg3eF%ys3DLb@KnI{P4W1z@=<}m=Z3bzRu#aFu&a$-f z%y9lh2ThcB2do*F!(>i{`iwP)?!DTdE8G0cX+07V1Qr&0s;N}Lph^>8*4rnJ!Y*Yu z4f|)f$K)gtJoCN+7zVyoG9di~vsvI{{w%YQjj;K2V97Eg+LW0+zV!I|J3B0Jn~~1` zhAi<}!}*io87w1m*5?9Hq4lgR0EhyVD-E)!%!&j}XDs?`*yZ0065-#vL{npRB@m-} zDhQgMKG+W>j%2>$BG2~gKz~*F-fl9UWu+s-I#yZnfeAeibxi$yDsw}x%qj<=Geb80 z>C19B_08OP;`u@;ih>wb6KF5$_EWp_#@0+UmW-jNnrlsrreNryeMu4vD?4+np$RV= zIV)TGK(>Q=HCS<=lXWXNtW!yM_k=M5O&SPK?x7qx$Ql5p>ZkLG$mbo;3C{H8p0acN z$oIV#u>sWq#GZrd&1<}tjhaR?p}!&%(}dHT6RzyB#mku;bv_IdeA zEZ~%p-|K3`dpq*Cfd~t-Hc{yX)KufD1>AS1*|8AQhU#pt)Au0;Izr%5i=-6s`}rMU z>Qra68o)+4VuP*B7BWVA+QbZjNGjdMSSf1KHTlX=@;ST_kJFeC>OljKXV)a2WcTt* z;YyxxsdVxV9XcSuQ|YiEXj<*yHcN6MFJMjOOa@4y=VUs{Yf~U#`%or)y&I2S&SM>{ z3ympglpb~H13l=N2Zi;MnuGc|MeTV5wHF>!K zi0@Vo^udhvGGto^HeiDYVI7c)ag&nIE6DSB#*9l@7pE=20G1&aIEV)70-Itq2Y;`W zXrk)~@pEyI!lK-{4xIv} zmSQoN0CsniWW?PpsLY?9Ph~DOV}CUB=#zR$5T$RK>^%whg7_Wz^QxU?BcA-!{oSQ< zqtz3WHuoDWGS;JP=@+MKv7bQJyRxJl%ecJ{e1LP!FWAev#?vQ;YfU_*iPv<{A3M4f zDD5+ob|IKyt9Pn}N{N60bm(2kPJhTgmUIoVnAtHh!7wpZt!tN09Fps|gEo!WOxhp^ zE;-zTQQ-F(?vHZQ_lE7;+>3LShXBg8>$Atq#%{Sq)}412YkQSQtao=n8n8F_@1xy_ z<)8y^V5jx2>#UFMF|LqF=r7*6*?r*{`&8O>fmq?Q8VxL4Kj4>?VUE@F)L#boi!8R* zP(R<$t? zb%M{gS)Qo#FpfP#mS_LyHFWlh`tc)ctr8`EMlvWGTO~izk0YlF^g%K+SRFH%e;=?!^-!nQiyJq{NVd{v2LTan^aRr4 za$X@PNe4}qRE?8^QJ&_@>R5LH3N^RtbiOh^YP=$l>ys$qz^gus?E6`~S1GbG#t(y( zPH&{pMWom2;rw&HnBSl9CHlx_2{t^uK`Z!<+rOJphyUy)) z3{qOBy9b-FV!J-h%**DS_}ycyk|VEz4CCUufxQOnFc>^+vSBqv!~kD1GHCA^>|z!;OLp|^WrLC?!3&tISY})wg66Y^8fjO+)qNZ= zTxNWt*)^|uvRQIY2fI__9yy_47)PPZWR7mE4jQbKE-$ODB#iHfHAufu1D=_~eIE}e zO=+SH9OuJ~oD=fP)qyZ=Mrq27@UJM2`y6LbWi zuF7`m5DdJnShllX&jY7`T3-?tY`Ctbwl^FICszxn9LjFc(Gqy9-6>X)7JCD5f5=Qp zJhksN+xqDfK_!wj`6b^|E3^kYV0h( zC8sHnR99ktbwo0#NPD2Bjf(OU*j%1k=p*kC(U_L?cvc2tdo} zDk>Qucsepu&H9qLp2iU1fXTpvF5_GEs~?>FtV2%l`93h@47ZujNi zYf9Z=NJl@bN<1p#E_`sL=uAZVzUJ@0K5=JML)pO50YYtEt?A&1(&3TN(AjN6mMADF z*+)Owyx=80G6|fT_VjMri>PMf>R*Z72Lw_Uz^2MJ#)S<~o{|LJpU(;(kVZYR&kJR9 z2Ia6S{4Fo%5BlRCW0WPa-N?}V_1ABbRX=^}!9dWb;lM{=vaa>@nEgG!D}s{iC2)FY z58O{cK(5l7>a|f1-xfyzpcw?3Qvv60vZl&99nImnzc@yB@dRI0S|rKD+7I>xsqt4< zB}@=2;H$T-^%MzLa?PF;&GH9Xkq$!6^t$RB85#FE3w5Ra+OFI^9IBaj+0qyc)}smE zYHm*u9$+53h&wr-M3>vnVlP?CHA2PBMa$nnj1YiVg z%@Q&ClS9&HU9yoJxfl>0jd~OJ>DuE2Yoh5DVmov)SOJ{RGJt|$WP!gawq&QHsK;qQ z)xPuH5}-n0N%grwW2*@Btl`Ua8A@pAXk$A_5p$8_Hk#bXV;4ST4`@j56jM;S1e7DM zboUjt%Vh+wkF_936$3fiS)qP)lp#&0Zs1L1fEIzJy3w_saAw=VR13f`%Upm^Y#38W z5oz$DndO^-#Yq=FJglitdK;0Z2_(Q_`GWi{*3%^o-bOjm9Igjf{kda8{!NV@i>!Bn zpDLZw38HELZd$(f{;Wb$EEyhOc8CPIkUw&nb2-2gCBSl3IYbU8GJi`t@ z%t)h(W?zRZF`LABxtNv{C~Xldw1W&vG$^3)PqJa`=c6;ky9)R}6%>$(&8~GXyYu_w zpheRpsv(SqxX)(jI^ePsnk=xjkIQR%#)|0(@mg21xjKLfj%2hf2kgw&o)hHvBn$Uq^$UTg-8D}%DCN{zNAwgUrC*x8$VfKw(xus6u0>FOF)_Bg58OrQ)| z(f5)c)PTNk+f2O=$Q6OQ(K?`#p2P{Gn)Xm7A2BS$2zL1_3KBv9Wf+tPL2D%<;IMH;87i6mbPYlxrWtHG-g#CtI2w9%eK9-$&U1k22jHx%zI~c#Tx7KUD8t^CBi;YJ{q?A^}&1v;1qOb*q->g z6@*ZL&N?&I^b9&n{O+uO|Ao<{ORRY4nU}b5p{L~tT%Zebk zKS{eHHFvl=K~0vj^(x(gtPbM`ky=XN3<3Z1-0$X;zRjsbWc=xGKyr?@zswZ6wC#*p z9XP)y?Z>&lnGRgVh^q_-V>D6maC+%vw`wZWm<%raS%Tm^qHFS#K^I1VzE|m8dJSQ# zuut>K-kr5MGXD8+7{KU^1hS8`HNn~V-)nQq66fFlw}1U-2wW8-yTjebY>cRt7Gte3 zS}ZHL)8%#FoODQVUW?T3-*(1xMME<#>*r(iq_e@NmeOzjjE9758`gVa!p>f&btV_w zjUoiHN@>yWP$6VEw||FU0aPw`3G@93s@g!pNTT^u3@8H}vhOwCN%d<2s!}4}TU7xS zY-QJ~J5ZXe2^&9|><|E==T|(SXPgh}@%O9IM6As(wwXdTM>~YoC(c4ivV#YWNLxRZ zRgV9yvXs}3O6zF$*@_*0r&3b7m}8VB6N}6XurnP(LLpVo@?)CC&Sv_!w?AgOZWS(2 zxde8+@X6HS_F8B}odjcDHS885uFYUd5d9P_GeYn%a_vZa9{8?V$eYGe@1y4{V-y`= z$cc!dIB!%+o$3vsUgcn8AAvWo6WW8_{Re)Q)gYmR@~-Ljx{I-5ka9N_s*6mus^RQY zIz#p75DEsBW(oORVnhWj2aWuI`9Q!y8?-r2WQ5jjI@POE9|fQJH((S263c`9ePs*P z#JK%^^|l=6Q)ZjBiK!leK-R?arY`3f*PD37)w(oN~w zFaSSf$>ZrZ0+#%;n^t9KwGOx*K)^%$p;3)$3KK9^D!BGb8A8eL)(fYzX~mu;Wv!U> zplpym7D!gViA&^$K|^rw00M%xnOUUU9>Ne>mz_@E!THw-eV0<6tIl4Jy9`WyDW$JN zQ_sRd4Ivqx=~V_UObWO!L5JskaPneCvca)!tpbm--?D|$KRWf>KMQ>6etRnmyx30? zq2|jid#QV*?EW%Kne>I>ZO-oZpdHa9Epq?@9$3Y=2R7h98UHh6Ee(nE7NFjEq&)XEiivLXF~PxwLMpWBv}VTJ}w+|`PRUiN{2lD zFa$0~h;Rh?vYchzDX>hP;5`?gGp>CEz{VQY*$qE>Ew;gaavf6A0kj$d)wBS#A=_05 z{N{CHJjpwjA?oasarMPv<~zsNh6t9<9Jwry%CdClEc( zDd0$UIffNkqyFmUC;rk1FkRD4b*Wj=`0rxP#vlXJOrVUtz*7S{GLC%VS}d_9R*r6H zEhA3nkkP_g?^sdUumL+vzm8|tdkvNFP?nWSqXdMRkFuN1oEICQG=3=kPZo#{LoC_D z10(D-^?Savz-m3y=!2Zf=+{xv5^9!zM3Ci38&5Hi3dmN%P%X1>?RezgL&}wS{sYLK z`2|2Rr^g4XBqtfDY&sv;+ALJnlbVKe1j`<8V5l`8J0bQtc>3$ttIQ18u=0jxhwr;xIWB&+*;QTd$OT||JQkv{x z@Vj7QHFi)8A_5r7Sb`}TcK+c^kb~I}t4YUAIj+pXNvrDfGtKhf&ILB4gEu+(+K1o2 zsUzEZxM`QbLUZ#dchDQASh+4ZnYlq*Uf?`x zBl46Ht=Gzq;8cgKhFSw>0m>m}87t*+sRZWh?StBCy%op_6ny{r{rls|JdOH0Q&aIC z35CjDjGn@wz)C>q{O_<#QyB@daZlQwMK)_*45Vsx`OIhnOlOD%EYFYwkREc3kUi)) zo)JK6H(A0)H;tOhy}f?Y10Na~crMsfv5O5J#O$7IQZx4~)p*r($t>gfpPY1V*IBEy zGqMRC1!nH|Afa;<4YmK=$1R!1d%XrUE!I2WTh;I?AYlMOfHAqw8a2sr7NOFBV2}?< zXhH@+wM%Mk$0;Yzyao>lg!1=Ef5$I(PsVS6a}Wz;X9r3n)qE=b+XSpRIbw2e_ioIT z{^-O?W?bK1Gd#+b4I?1tmeAJW8SER*b3D}9!WHnh0Q*4v(z&2b9vuJ?fE4p{hAmHfrzg zr(DZ6QPTrO=Am($i*)LS7KIZ}#L9-R zixQMhckBxospLYZtU|U3#+TBu!=);6i8i8&@L}RZ4Io`@`Td;_!D?N1+L%2qlSvDy z>fyy^1UKYogt#1mq4u205&irMo?QP+1ODDhl>#Eks3fcAeqWBbSiWrdQ$!spqJ)a=J%J&BD5eQ~V>yrVj=HkJrGnsFP~E8;FS&yQgD>vW*IW$LP|qXa}u> zkm>-VKmH&{VGzsfi>bt84c3Tn+boYAR$#lk0aXFT&01|3t$Gds-9D8zIltb06tqjO z56|?3nsPsFVBS&mfW|6y;y3YSfo-M(~Kwm<+_B^(OY z()OYE@cgQn+@%RBqXSYIrwH}GqXh5KOmqCMN^w}KTi+lV(Y{>%;VOX~z2~sK{OmT| z0zMcb9QFOSLmKr5aE_^2>Rm9KF8h;%_$A#?Epl&je~hsx{~8f}uJQTnV|hV! zYGT<6Ts}%w0Q_O^P#e#Ysq*P-vp+IC^urmk>@vDBrV-Gl?FOMt9VeD7Sq-Z#fc9E6 zCn<9s7|p9g=Lp&ru>CC_lgu646B^{fdHu%6T0fg590oNeW^cb_x+Bv{sUz(-$G3IL zmLQ3BmStbnh@nwdj8^t#?7^ainO3+`8nl3uH8U35bKN%`NNS7|-#~TscSDgtNrY*Dli7h zjj05;JDagr)&pysSN${7k{qjb{(Ghxhqes>9K*D7wi+|iC5RUbn4AP*0~wfYEkL3O z6(A7raK7rst?zaF}bW)Xv|@4jqMABsXInk5UU8^-s)s@@iv28^e>r^cv}4A)-H@UUFqJL^`? zj_JiD=sZ6c=#*s=uGL{$5zVxDq6v+enw%wc%8t}|4q^|Uo?Q$h{D%5AYD68!q{&fe zX0pnNs@y=1B)N~wglsY;+^x1(1eB_E9@*pA&U=6T`a`QzghKYoqmS-21`al!tZI=Xw<| zoPR&>!;EGDo=3p{tkG+SxA!^yk@K4go)Rd7Gsw5I5s9dkHdk2=X6%%apg35TGaV3b zmgKn^T_E=8&S$w7=r@~`iOa1c%i!+HNa&L5LAje(Oxlf5keq$b0FtW*z+QubWa zT3hxT2@L8cW&a=9_Om|(4t(C~ZxHk7y7RDqQFC2M7fT2fes=g2zKgs3fi%+;cV%LWj&QG%-}di ziI+0DZ5Ohh6Z&8hm6ZWq-lIN4POXYf06#+gV}pJy=_izVkXD@zMzH&mQOJ?a4ruI8na+7@4mjMI!%4afA9`tMv*?xiA$==K38|Da3KLa-0 zlAQ<#sw!hXRWEK;({)^&ZP}(KY$SEaNZ3fz7>!{k zKbRf~1$Qhx(8Jj>aIF+|tF}#Gw2ac3PQmVDb>|~R+oKz|3^gOZvv!p#R?v|&=ss;s zzmIU;A!VINpR!5 z4>V?O0z$qQ5pJ?pE_(3@#UnW4O|_9o<+ald8qqrgA~4~Z!K;sfms85wB_%2mIL=Xr zkens_@DQ6aJZF7*KuGr(K+as37C$pFke!Lrr3ix%l^hAMCD{=H3NS-gDp2Wqr!3TfzcNypp=ZU#_dtv9P9Vq-)|Whm3MeTlZ=|sF4vaPK=gDIP6(=X z$3&!;O#d8h{Bh**syg-q;#2~r`MRDZ9ar7s2^^W8b6TE&N6(8|RXHsFj83KZUZqU} zXhGu!*>X_G&nXy@jOZCDdUl+M`-glfgInzvo(Xn(M-X6%C7(=%tKqf}{TTc>_R7s> zTK~a`2Mnkeneze{NA6BJjY<!Qx^~w^&EXKc=8m&=#E7QAQT`#5ztMQpWLzvx$zuu}EFAwXQ%h z==4@ir%*Pgbclfxg5>6gCj$&TzOF~Y=x)|q;nB(C>SaM+6V~Ofd6i847{hu^<1v8U z$|}eu0AS%&vVywB1G$bJ`{S#dH|OPlbS8o7mE%W!eIgk6wl^OJZyqDMV25CL`anjmt;j*{1c(U+ z$IzXQlHaDz;!(R~(4 zf?lD7NL>C9&x~&)(?d3TVK_rIE~)}y?>?w8d%uD*swqUs7WOk`>d-)z>q-t)X#khe z!3$nFNYWRG)gS37rdWMqxNL_uNtqKhfO3CT+ik)JMuWBrCr($dp7cY{#Ot0%em|Uu zC!4r9P0fINT(S$GuYSE9O+-yb_I-*pc6>5J386ryzOt(HIn!fwHPm7|%augf6)P-! zzsjIhRWVo!1~_j#L-5eg@DKm=@BXX}osUaQ^m1@=Ot);Xn@S^Y3ZISs3-)9GEl`Q* zDFseBb+Z^cwV`Zg8)OWYSfX92Gjx%s7d^~~FP5e(Fw$gurA&uCD{(xZdCAc7I%=9d z&P2gUPlkaI)ua{z>&*?SH1Fu6fJ18+X(0@ob-0 zSlfy`W|tZCdMMpLy_N>Z>uq*!hk**P+V*oR0IKJCcLUaqtjl=1-dnh8c)U`2Pa%5^ z!f7cmO~y@|+2A(FQW1m=Gmlx{Wipt?g2q$<4IQ>Rvy(Een$MN@+}m)POa~z#YCq4} zOnSYS($@okeX(=A)28X;=O>S6)?O>+`KbB&UDrFQe5K1P)=>VICiJ-q!AcLhrr^fkbaJ*j` z{~&WCaKwhG)eTpvW1ZR4@m7GfFZL}ZW}ztsIz3O*YT`1oDAifDPkO(tdsDU$tAODI zX#93U-!|hk`u1qA4uVz2p%S;&$G`sg6{-=|1f3KR%t??TnF-dLw#_{kn`E0|8~E9gE@_b+0}x4rwaqn$ zJ3}L~Sz@~RIq!zMVV^iCyz&dOqj)vLN;ZpP(n}vYcl#wRbrJ(S2H(!W(@umyb?Me@ zhMau}MKna(E(CpnGPnYLgR+Fv$R`Oi+L{!2x|_mfi~HT6gKsDsDVfsrovENZ1Oo1MRfm^7zWQu+^f^ zj^1OPYqIP=ARQ+BRF+C&Q_}BQ=cy98Em&mRUY{T7AOh~{wY)(#^ac9HXIwrZYX3eu z0MS^2lls{EcSZ8B|C$EJz~Dzk#zOXYiIfVm{v<->M|-jjeJJhD4w0%+}jFm!<>?rpVKE0F5YU-=GeGiCITH9birj3d=&-1f4nf`gz;i@cX?}~s^sru-0 zhj(*YMWxnwB>QDp%tB@SsFyCm9>_K6=i~%4Yu6q*jL%%n{jqV40zQa=w95{(2*qkyY=9HxZ zBb+*h6womfj71Cw)*sh{cObl%CSaf*J(+2MJ?-8h-M#8kxxVmEH$|Tuov+r42kJO7qi|6;%mZ)owFj>7Z@lba8=}#9aKm z^j&kJ&z~w4VndtO+9U+EqCH5ujA7FkKgv7`jD9%ImijQC(Itr6ZpOA~G_s&MeAwiV zrPf$a>6~n8w$o-dge1{KsfNxP84&(Z*&jwmYO+Rn#=O=SjtT%zZ5`DJ{%9hUvSc(t zdY3@|l}c$0_$^ys^hdI5_*ONXKG1oUWDVNSFmn#MKWqKE*95-MzEASXOu7OKk4I*< zKMDSvr8_Fmtc1=Z*vx*Mbt=H7SGu0L%Gt&Y9oVB_!V~HejJz|Gv}qz4RH|9Jvj;NJ z5eE2AGUJ=+Nj|P0k03zBo(Lqvo~C7EB?5S4QBiiozxA{_2Exb`Ev{)=rx%AbU{opm z5=L|m+FbdL2nC=?tWb}$n^0Cgeq|uJZs$45=4_T+1CE61=7ZiE15KDYueurrsUl3H z$+x)5LzTU5HlNiP^gkFc3_TPfQ`w%GesH?}8xzDhrlZJ7W0pa1=zWq30gEq0`0 zRxZ1Az=ALs=@C>q?HOCdkPT68MMrYd+-Mq~L5O;v7AQlBdDtVm&NdjWrkzlOIx>5a zj`o8>FtQmLD3+X4w$UUI!L)-myjJ=kFu0rDhSEu#2RcTB`AD<&E0ppMM|epAseor_ zg2tvny;5s4LvU~KWJ@a#fuL9fO>e=YH?tash}+f@&1;$_1vBH4Z0caFg*^tpjRO_n~ z_dqgqTcv(!v!9{#KLg%GW&k$wwH-&`)RTU!58m%|fUPx|E~RMwU7s$M z2egp@9iJj3&YXh0en8I9t~fw;pl|XDD;>qkm*%6Hk^h zf_j3+1KxiB^%uZ5*KINz9b!~f%D{jOsc_hG*(=+R;28##RjdQSd+8Wvj;n?ktHYp_ z-@OTwx<*EqHSjI^02yUn+pjDJ5o!CBp$0vj+$z9tzna04G!PRG92Q8PTH2v^Y&J81 zJzP%U=_;Agy=w$pl&>5D%3(jey`HoLKWy>zJ{~am>+4r&$bw4Pl)a?EL9nyP;L^8P z=Shg1^95A)ru|c9Uj&0drPi)M@SJYQxBrL^f+|ZJ+wW6jL#e;o!;*Mryv3|L5T7I# z^!Y>`x&l3)rl++e5piDs*WaNDJdAy}_pgZsUL%MRDwEiasPYA>wg}0m>aguElN`V+ zwY1%n>{k^ASVrRjV}MY3CG<*tdwO{F3WR-q{J=gbVxweVj{V9QWs@B6OZ2tTy;`cZ z?~%;FJVjwpKZE}NHFjne|HhExA~^$@8s9j&XGQ_O{H$=*V*goC&*ne;^S}GE&^=f7 zR-p6OyRXw0cW;RP63gp)+DIE3aPb=?pBge zy;sG$y&R7hsCm`#y|_j=2+>%ky;=x*!iYfQv~bGX8_YyFCKO|8pq}X_2dBw*gK3&1 z7{Ea~c`y*#;e$-bR}+ZPn8~?wpA4uks=_@8tLs#~r}pmQvXtPxuH4OoAHaWKe-Ir`++^MllrPctzr0h+WY^IJ8XbjithMl#h3BWPKYpOJB z-ttBnTV}HLV}f-$i+Uz9-zc$}X0s;^OFhF{{!V2lj$?d=pCuLiF0#nQDnDlD1s-+Y zgVwAVZGu7tonT>fUp~JM0hz-=71kLg4$DDYwEYmU*t^+08F1+r{~KjT$TC%${QWpn zrqZ8dD=_aoFTJC)X38Ju3|zYGEJ8B4<~tED9>@9he6dd_TooXO9V2IVX!NJnXgF}| zxyF{aai#62WSJ-Y?dZm-1X&_KarQ#lC}mCL{NU^fsJL&*tX+?Y-F6^ipz+;gsa9Bl zDj*fwhggSDp)$Djdhd3CW#CAil+95v?UF^8!~}z!&3`sPRu5A7hD(QuyKQfhvZ?H? z{ekv(_Q+ZVun?$4b~sp$)+IT?wEkk2K$*Yy%0xn*u3)y_IW8ZVwt)%+XxO9sE5aaF z{!x763clZq z$dG@n{w|i73>$r0X8IllR_Xd@9MlBaR!W9?2}=+#e;vW^q-nn>b`s z{>^JTerD;$=t)CCY=jKqV88@2Ks{641E+FO1Q5kDO;lmL9M`JgGh_#r0-(m0#!i{G z50Cm0vN1&8Hym8XWg9aZ%Wm$2!F?+D7S4lB3{5hm&V9{W7Pqlc5oT#^v~Rg5BhfWo z*@kke#03m)^Ae3n1Jdq`p&d&0t0ZmCX-<_f#d|1)fQ3*4ltvKBkhzXqxR8RFqif{B zw8E&`(Nb80X_49h33T-6CGJKqR(8~bOQdH=(-*q_>%51?44%K$2(@yMS91v8_iiGL z%Xm}W>ThewurxE!favnV*}+P^3!^nP=4pefvFj+%=;a859PT(Hr_JU}Ig$E)K$-Xc zn=xAaOW;%K$!3!2=p`p)bkijf!M#RmsnT;Bfbl-=SI!;AMh8j^KVQVp$URx=fstb{ z%`#TXJgCPaxwp>F@S4ihG;>Y1>ZQ?TDloZcn_Hri0<2FMV8-q=qKxSF8d8oW5-g#p zYs@wllBFCSq$#-6%-}Zad#lHX1EOh2oy`i%n!157A3r)+7+?TYe=P=2b8FSj zjyhBtmrYWJrCgfbZsV|7PD5v&*P06CbnqRPi}R;WBrSk)J4^ghjz%iyzJvjN1~`2@ zUCQ!Q@=u@`3WU$|y*~p3$+61mw1PwscwVgic19rDzC_rz;rxlPBh6^CL8TW0j_fJ- z+D0_!uET^L&dTOH1_3^;CheqT;Pw9dB;&I;1NE}8RnOYB%5X^0<$rTpM$Dw`K759o z9I6vN0MDswl_XtY(}BVzceTuy{?}=m)g;+KPlQ1=l_l-K6)0d*#m1B;1z5EEbsFT? zV|xNpWir4aaFLGFHmiZyBv1-?1`onX6C(!cT1T#ldlb0FF87gspLcl3$f>D}@&gg1 z&J!e0HHhxuz5}RCf*{|QzT$BokpdO&uYg-$41*VVulH&Ob?G2~hd=_En!%BzIBEFx z*%ggBu|H=3eVKvgySLz$k=u;cX0q8l`V;=x%d5wUUx!Qd9@@dS1 z1aD`u#%RqLZuIMGBHKY%071$itFCTs*K>uiPWgL3Sv zwh1;J*rOe8LIlr*jy5vvyXEfPzYlsq&_B|d3&=6-I?9!>*RajNA;{{Z!4)J60uP@~ zP5rBTvXn2PN!OHpsFEF457gsksALl66`8-zq@z(nb8_Fjs5YO;+#KaE< zQ1aJ%H^#*G!`UtoCnl3*x2PvCGxQ<7kIvZ0j^(}xn+X3WLFXR*8LW?&HK;57)rtPX~f8it% zK_ngOW?izG@R8KHVPI2H0}UI%N+LbEyMECT^c-!hcMHMT*BHKm)K@iorkVp`D4!ag z^sC-Yv%0^S8rMiVr=1q-O(iH?ya+kvblo!T1uYhyRZ+RpfQWcmw8ph@V-T6Y3YJ!< zeQwA6{Q85iWst^=(EMQ?-eTZIWx#Cc#d@q364la9jti`-a;C2S2W4O7{| zoGBM_CTbuP@YFay;F0Zgbb|yj*{t!l6T`tDKBVDY1~jULU7xP^mofONabV$N;FU5p ztM%;^+Cbs=pWj%+dhQn^IIDh^|2yEOjB+yAiQ$NR5>0_f3GkBF2 zM^L=ssOX5*{FzqF;jwgDV_HhO5|n$)udh%Ieo~jDag9YG7@M8$D8u-lyjf=-Mrw~=*RM9Si{1t$6yVUEqGwIHdPEEo z6C=uCqu?NZ*A$4bd?*W7Htp#?gQ`AyG4idZf;?auRl>KjdoZ@LDFhm-DTX6_zvca} zl5f@NBY>fNT>BXj215AmRW8DegG&MxVDPyaAuw#zd%`-F50Q;5nFJn_okd1U0fbx^G6q!=eA{vMV$`$FK9rDVp`Pcj&ud_dk+e_G zvj1@s@HF{ZL}{)9$!ac#8qvo}_XwctnYmvj0|Zh9z)>TO`w_f5IH27*LC1%)+xOem z2j|IZ9Ol|2k9O#gJYLp;>%68F+3peF>;Ptcd1xYJ0HKyiqd?a7c^Ghpu-Wk+>Qh1q zUybZk(06(ag=MINYj@yRCC|^}35ZpbA92;HM8LbtqtIG0OD3U2}N28 z8-fDGXoUY>k(nGe_s~tJ27%itxEX^$j;T00@1VinLz4{XSgC|EipJ7Pr3IsHr6w-$ z;5y}ClONd(9bOWG%#-g`jMv-1fDTk3TY{EH`bcjEJwk<@(lK&GV} ztc@6)yT*w2eqkS>_nlo6I8d4wDNW7;kL_nq0vpwPufHjm)9vS_=fR*)Du)1)%*5wy zCh_S10T9ZREL?w{$x!R#&q&4)lVVf5E|9Vt+ji_+{ft3_&Tw?v-Sn#!qcbmkTV2MY z(l~((DTwM~!HzK_c872|C*tyeP>e`o*n@m50nY& zPH2)D0R)`o`_su&pD`Exu$+AkzzKAFT1hu$0*s<2RI&l!zAH!*>483!!9ED)0+X<5 zx6NGdeV=f4s;0;U?b43u`dYf00+S31sb@Ir1E*8g$YU~>uTLZ%w(&s#j-8rb3)uve zbWN9ah-EK`{_X~LsrqEf(x$CVG`kk*q5#oB@I~D1ZGudvIzyPcDHCU7JoX_TRZ8Jd z*^*??hs$KR#|=bChU?L5-^g}zVLu<9f*av`PwExE0>G>OmuaT`h$JV$rTQ4&4p6fJ z-0`!RRD@>Cr2MS+6VB4aC8o65&R{FMD!jpG7v90alK6M@@pMJN+C8rxRSCf0` z)S!M{89~ZN5M*N%^LEvM`>htT6D*L?n^d4NOW)pRu}7bsQZ_0Igqa+$jxh_M;AYSt z`K0I7-e9lR3@Fu2Ov)~ff{{yMk=aNZN>fp(j0}xW{QdRdn4oLC?YzH9X2oqOL}%L_#;+W z3&`uDux4Ef7Zj2~0LbURCX-Z3d$X2{3Lr2OjIe6~c@0{o_*q{F2NVm5IW6+8o3&5uchBfSzAoqlEij4PWKLCO8SGvwzGO9oT@KvUaFOpJV+4y?3TT-EJY^g9zXGO z1SH7Nj+f}rczZV{AOUNT$nDL)=L#=2INA@N>xWb5jOxwDU=5jO3ZGDv1(qfe2% zNrWN&&Msk7V3d2ij`gdWSyh^a2C&qcNoNUCRI;&Tdo$heq*~A2s|z4Py>#Y^3iMtj z2N~Nkp|cIFzph1noR-JoU#FJ$!2}eIN&WH6+&2cS=XNDE=h>NU#KfMSo4y1V1@yM| zSlNzErjz!WFFH8oK_D4NvxkY0K{5af1ScgRqEZME3=#&sGc&CMjiDe4e-i{T$QCfntMNPd ztY?kRxKSO#l%1tliP+@+Y}vJOl@fS+)8xYj$iV*ARH?U~Pa|;U7a#iQuP<=3I!mJK z+tWd|_P)y+(;&|fRd`j5Ycc9s>%$nXZQ|Z8y)ePW(y6@OuljImN=z6(S%>Ij3Iu0( zc!5p)WWP`WG)#Cw87i^DqeI5RnNzKwJA4w0{j`*p?XJF2g}4H0q&TPPoG|B@9lShFNr- zHv-jT)kmnu4?gE)d~~RvY(GYp!XBM|B@mj|IXRKcJpBwB7H$4*uN1hqJ&Fisf-|~$ zqJqiQ_AxJ8r4lm*8;d2%{ch^Hz?#kf^iTixPeoES;GRdpd!{ZK9Mu`YIdjb5S{B?n zE@9aKW@hs6fw8QtBa>2mZ4uW(tCj?Hd z$rSR>Pu6Y>Eoub1dJ%|d_eyLBBG~XY>5@$SzssAXX%9U`hFJj`vZUg`Ho&PM#XCAJ z&uhyt>w7_#O?A>Sr=wLFvSdy3JzITRK$F)USJTZ^J3NME14jF`;^P1buoG2(_{`n~ z3hfRFGa_sSbEuu{i6}@fzh+eIbP!78zcqoy@-_?r&ayt9c+pvjz1L+tbST&EEC?AP zU^23;W{ZOiVh2x_v5Ks?uCRPIfWz6UVI^O?oqb;K7@B?%U4xn2Bb-nRC4RWCbM(Pg zs$<+2AWzD`-f=Oh2%(bCl+wY=!HZGHwUIG6ht(X1^Z8Dx>pfI9HTBF4@-5R`>v!!o ztaG@ATeZ<()9LK_bLa#2wd!|wsFwugAZbG>8zU#EpxkrF`5a5&m0(H^aB8k^#E*5? zqwxu})Yo;{9x$Kxyl?6PW%l9h{FimUwMMJU zW(4j%MWjCPa=tSOl6yDNl5(g z;Q>8?D~6r)A$KGV3xKQNZ?<1o#<^_P`>7x@2(;BNgE``@LnxDDP|Y5WvWJ@>lcj5_ z0#Seu<}|M+#qeh}X$P#c2*)II&CCzi6r;diT!(`)v?uLP)VMjA#iY=~MH=vG(v4^Y z`>2r4Z11mh{!E=YP32>ROGG0Tq;Su(1A6^jpXpJeGgR^>J;i6bJgN>@q>WYcavf$k zAD+JfJGZEhAkrkyJMM{LHRhK@4CIevST{xu1Eb)5)DY`;%L{nR9~vuN0oL_Dsn@uC zd(v0SA*n9^e`#>0k4O0m*Gn=pIsnMsYvV(wP@0H2?Fc|u=qT)S013^wQ$Woyt@@5Y z7VWfC=bI0ThwGYGjZe}afp9sij0OzB1^_t13{99)XMZ(!1{|Sk#T7`z5a=KX7%~=Q z*0~6BN{jWR2VkG0k}={*(*PnulR?G}`p8DGtUxI$olyDkG}h#^#RXDrSOdmJjhJ%8 zThY~vs4GSrg)kFO;jkg*T5hsPRPJ%rum#hxC@)%Mv{}x>psiMJurwvaKB~Tw>7X%e z3@V8`J57xfR7cB2DCkKW>j>8OJN=BTNCXakSd^6-QR6^qf=#<*5LUPO#QB1PDTy3 z3Z^!nPnm;Q>v}IXClOq$L@!kT8jT^*FM`vWF+vu0NrCbryAD}G?eMr$`_bi8Vtvbo z$>tG=JuJs6`*V(e|7c{Xnm#)NCz3?O0|KM)$U`}Efrhj8ugYv<*;eO6XG)n+*+U(C z^_||0(WOu)(jfzvcYFoY&eBw8MNf8B^p)2n+;+AC`^aqaOViWML6JeOfPf zpFN^Rx+)J~Ih_tc3kC+#1!u0x$Y@f&e8C7r2UG!&#q?hBZX?Y!GU94LQ@%LP6O$_7(`2_Zzx<2f;IbGbK-HZk7QEW z{pE>UerMa33xFw>4P@&YfNz#jO!T9%9vwCrzGVI0JfxDcrr?VMGzK4c1A3Y?E;$M!rZgQs%?{@4{`Cqb5ULC2+nm>1EdL;IU->1P8x~C9*TA z+?Uf&1UpN@I2cR`V{G=JIgo=$*0~b(u58W?lt=F5BqSa}sUQXTayU3!RX30E%8NmP zCs)3G%3Lo;N=f)GF-=N3@t4uXlY|!_1AJSHMGS zZ8lx+)k?qZWL_TZQAUGGCBy8QpSB8|0ONJU66)RR-Z`9Vj{9CYenj#<(UuMx4gn88 zlT|PpE3I zZgy7CC-M7n8Y#rW0T==orhLoMgxOAj$}m8q_{COgER~_iW<6NLh#F!{ci7%N8vUhI ze|B)m`aqQgX}X0D8{3j!Ik)Ry)ex!!BfO_FS|bS>#-*>@dJ9J=U`LP-dMR}BaoK^{ z&Uj=q6R1TFG;~Gw@#flh3+ARzK=3|!vaU`*-tQgM6Hx86lX;je0&&u|Cdf1cZFj&^ zKxeltgTuS#-w#Oyo^KO0D;TEv2{TTyoUzi_T-s{0=n-k)h*&ADx7sn)NZ%|{0#B9v zO_d{Zzh&cexXfK&?WQ^E7Y++!CL{+5o*hc()}cPsr=`aB9kyjE3)~B}^zSV0dUOv_GAjmKxtjpeO$U8-bSZ&}y3q`?>hDWB z_cjx);Rz+%Iw|uU%|W!SfE1fQ39VZSOpY~PIao%R_yJDV>MX?vSLe_wWy&)oza z8(eAJ&-(xR^{WCdEyptz7{Hf-G>o{^98-f>#)q|-W_krjv?i`zkgrd@y5yN;RNeC> z2@#zI-@!c{wMVLyP|pXJd%>7|P#5B9co z=KMMRD9VZ}z)9LC$ejRux`|vwK$;W_D}0w7wvDU)Bt^3Xqmm<$sLI@<+>bp@(!0$p z@a%&CX`ISeDj-9-oEqxSXI}g8Ag<{7@%(z-7tN-x4`|G|`=~7M$1Xo2A^=zlJN$Zx z7Y=a$r+@b+7&nY79CXqcd`~towlEgirUsjNfeIaVBFExc;=2{+{Bhbox?VY@z$?7C zT`$RN4jJG!#=`(OLo;Z_K-L<(tBnRX$?HjDNzM8Zc`7A=2ZmvJKh`!YcCo+u9{=g) z(6tRzVK0-VNNRAS!QZ`kI!5~WnsuUIHQdrr>ZouDq*ApY;s?|CFhDA~s3|*#>)<|y z0uH`g)r^f!8)<~3N?_i%>vCgWYyvR{7-TrRX5N++Me8M&8R>OBANE>GxFVbq_5Kh{ zOr45rd1J;w1}9K==jm$Efes8$8epl3q?Ba@!TxO!RK7x)J7BNsfyuzVy+)AZaYgcc zn%(0Wm6@tk-Cj(862#MM%lT$>z^M!Ac+}JXpH~O9 zbZ{i6;_{&jw5thS4oUUgfJNt|PE4>tGxRN2>G8TQN!kPu8C||8`H8$r1C{MM!4X0D z6e}KG8}Gmd(?2|Ysz66KqnXK*uPqi@99(ahm~adi`OO6)@=9i=&1|Gg6VG zZLor6#@3XV6>8G=TzsxY@HEQdeU&0Jc$oxcOPP}XE{G3&vCDq)T2z&wC=-?Lh;Hzc>JG%?a6nRV*7>{=4vIH-h%)5Z(y2-6G)nq#Ohhfc?}b=VJ0J(KQncNlb% zgvl_Tv0VxTB5DYoQ++Ygo!f>b@ysTXGAuDo&gdSH>p8l|57*izA2koZvvfgup}lnP zls$di{rcI%=yKkW&Hq$c zbtCB}rZ=zCh=LUm!NA3V#4=V}l;eJvflM6B{G3gQxUeF9F-f;MYz*u3s(9FvH!zHz zzF5Dj9*XaE{xARIKm4hP*PwXoA22|biW8eeaHAQ@+Fg}G*rjI+aDV1jgcjC}P933K z0pD#vl?GAgP@Ez&+9EDTw~)%xZE+eF=iKg~K}e?w z!RW9#;=b>^kZ0`Z$TKT)R~pfdc|%b#c27oST=j(8wen@KHT6atA7OTR(&13kH$0*e~xfvpY6O zp-K+`4rLJJfpyw%UhCjS=*`Y^u7PVEcQ-nfajizV2&G8tx?=kHEETF!nb1gsncABQ zTJx(9xO6~?*OcMad|lPPYW8rBi}|5*t+ixbIv5X#?x7;orj z*_oFnxZ3=OBrEz9L`>F@43%Eg#FlhQ9%JjU);g9xE_)PgBG*|IL_}o_2kUeTa8+i7 z0rmlfoQ9(Elm_L?I*?AK3;1{4J{q|D5D`0`%RacI&McxFbCTsw>n@f4Dog9KGxrEw z;AC;sC?bSP{vzmb z-@7*li~BH36uSwcpxttokeSYu>=Hbv7py?B#B_BK4PXsBsPaqes{jvsuvA8>25Qan zcip&%FA_?F<%vJa6+*-eeT64n^~vCP|Aji}$@_6MV3A9d84D1;&0IwrqQlu_-*5SSEFYmMM8wZ;PpTI$9 z!#*WaS@SnEtiy(o`|h?3`&EMD4I6|;`ww+ijhiF@;|f}6Ih5_(?9;f11dI%qfF|dL zrw2DMxGIcIotncqXpyi{WcjdUGZg^tCUoz~Zz3#8s|0ZQ^VLw%RzTTfPbUgh00@^| zlavCi`VxrFu>CC@kWmCm$asrT-im$&A&upW>j0IehZ9z@{oQdLK|$bb^hyrmRf@c*xuQZ~xE#@TWnU?7?N2 z&PBdho4T)2dot34FDqjl(E_iHTrzIgA1UQCX4g7zGG>f)Ft3_GkPkgwQ#M*b73pSr zuz$~GM!lD!_03vS)#z$unUycXB{^oQL_yFvJOe^qji5nhf$7XaV_tx1cC(|vRDl;7 z?lYRKW^|STKrO9m?}Ebr%wbR;d?!Ee?q`y~4>pPFu$DBKVisdJW9HY6-5`Clz-@ZvQxAeTen#N`|wQ=SC$eWJz7*#nRjd=v~ z-cB4wc~a3godlgsG^?)$olMsAAy-PU&666VdrLA@E`fF2(d=4MW;N*p0FASe-%gts zI6uETqX6X?OK%^`UR{rJFj)SOG=K&67{KI%qqXJ0tI7RL7Wp)j5e$y1E?k+o%6cec zL}rI2dcl(J9xvBSt;_?B2NHL@PYSL0EbeAtzd@%kxG-wnF^RN@IyoFgSzRV zgO{Gp4lPZ*nb9?&VX%uSM$5YGI5%Zfv6t`rnJ1fTa3Q)^;-zVFiYa+#C-!gxsNo^tFW9M+Tq^7^nyeeBT_;}IT+%jH5QORKj&UBQouDrR04{M;jL@o}v8U$iqK zQ&fto`_%~P00x9#`Is0&mB+*+GJVIybJ{kb+Nx#0w1|PRY)AP-lZC?>CI$F8^)Bhm zzH}F3ap~6%1{nwfDibfFEC|K9cNu*;a?oDSzyELl`=684e`1}(v!}`KoR1fXl*3Dz zA>M>+f~Jo+x(NuXw%OzFxTksu-Mk|=K4gxo)Fcgf*^R>)@8*1=tV5}E0jJ^S%al`Q zgbFr$H4~F@)pa!xd^iRUDRVkIDOCN(=5q)nQec^e(VcccC0fpYJKurj^hHKL0RIHPHCS|aO0PEBh7!5K;Gm{ZIBZ4wCM%xkv;w(=(-#M8lfeDZ4 z+582s|GcKFDD7{3WOSwt{ zmKF3N(!*^Xz_Sq|rwA8_%Ooo~O=hUiMYfAzXfW%^HBz~1G9#{iKwuZ$5Lm`%+XqdJ z0t{x-XhI?S?L+*XKXoFm0Vo;veKF)i!vPp{1_-ArrCMyF-#UAN4ZR!SQ{za_y?s(YaI#rLcY!50;{*&W7KUKg4N_PrkE6== z+A>1;e5XjyI5-I=BG2<24+Kz-Mn=`jKihc_K*+GdX|raCn_!SChso=x{@X!}N=Js8 z(uTo|1Wm>%^}o@n>T(a%uEnOTM(Ipv!Q{+dQp{Ok~tAxL7iTU?eY=_LD6;Gx(BWW zBd?OJpA(5>WFSwj9bW)x9WVtA@nDb=K0pWZ(Z)jTPsYU%W$Q^9!yRVLHWhdC`CSX= z`LV;J2(f?DU{PCk$2^V{f*|yuxHskEK6>2G1zQ{sJU) zD5%}1Tt7XRI?42*?wTp-0S7X&C(nrSJkMRD>|`HUuGH@dc~mg6L*)(xaEN>w>=CG1 zulT-_m6Cbxo7S;>mq9=pAl?}n+bn^%NRpC5`Ecek)?)h=lxZ?mn1Sgm8SEec1nR4| zfq_nHP6i|C#P=|GRR4%6K@)(#-Y`V&kI^1UmPwrt1)s8Dxp|j>7={_=G>c z5G1@Gjl2t&=m6Nvw!x{4BIShk^ZZVrRzb~K>q&5`o{SO0fhu$rz(FND3hqQcm7`4& z7wUJQQ{MDqqst2i8`s=aDTf~*i@w-TAd@Zm6d1su2LM-1`9iZ@dN%bSSaCxI6}r*Y;Br z0cFotgFt*|w9kqQ2RaasFqX`)J0ZD9yqzM_8;i{U`v3U%f2w&!9rkAIs8W-2PSd!4 z6SNN;gkvuoHc$YN*8uzM^uIRThR`FNIBxLiliLu9qvlC(>e{IR> zE(fJO4}K8JOcPQTWFb0UI(cSZx)9c1|l8k`;CIRj%b zC`*c^$UArr0Eh8@Hw0SKYs)LmBXm*R~Yt*kY zJ3>41V{ULrraNO<6Q3qdQjK+;TFKy|w#$|RStEgu%A;0xrEO()JjBfd3k&8ve*h*- zY!D#X%~;LRQ(~;MyGxWJdQHpSlt9E?Kf6^|5s=S+_3MxL{rgiavJQr+y5%FsvzwGL z1?lnrdx}t0Aq?+1$nvp4G=l38ooU+5tO@|=4>5nZuYl)Jc$^{^&_f6^F2JtcAXo_y zN-9yrta<#dMie>-#oiyk`1|+gYD5kPD{V7z-7l4_GD|0)rsiI78n}W8ADud0_22_@ zwv~N8-5qYJ$iMTS!W+^_VFB5P(E|x~c25NCj_^;mzs-zw-)Al3 zxV_sC1^2Oh0y7}^w|4zoKnvW$9IG2bEkA(963#!K>^Aiih=iO zC#mugF<)XH1cc;_X?NhT^6FaVyKjQrX77efEv`jifRd7~vy}spArRn>-RY{-0W+JC zF@?-0dlJ}8n=VA%GOQs$elb_IF8p@|SgQNH)0U1VxyArHY;p@KVBHWAw}toZBkz;t zG}`xK9ThDP)^n#)(BCYHjxZOHmhqX`^Tx$gpeviPFGHs(AYf{ym8BwgDHP>6wZUsO z^Cn$fXy2j&#Dz~kvP+SU>pDmDV{+rUPr6$Q3NrWpjWy{h+9zlBeQj0{bLv4as{ z+Y$FT)gDE~l8INPE&_(Q7RnbKGCClW%;da!NTh25V16p<%7AmIK!|mv=XVdMkf@p2 z0iUxMI*^Iw1(XGa%9&S?IVbyK`f#v&Bw4M!Z3kIIy%=@WB}{cb0mdpS0337(3arPK zc|r+bz+PnfInSSyZiYXB&JQzD>EL`b%t5IanzZyTgEm4EJ0s{|N& z0DaViCF$m_o;4j-CHppbK7&TCY5skBE$d}NeE zj%;ww^!f1@dnC@E!nlL6=It&MfUaJJ%D|@Ln%LchWB9i=an924hFVhZYVix9nILz!rPxGglDYm98(8 zcj2>Y-X8tFvd7nZlo-F7%9U|vw^7o@$s=^kI(8nw2dkoTw@^l&B_t~S8IdMCs#cl4 z2eQ4rK6f@Z=$nFB4%kg#2-s`(mq`wWY_C8e-UUR&a!^tt=^AMH?W;5=ghj%-bpB(G zJ|yXVUkA_5lEgMhg)DZndp*lm(dKa3Sgp}WADq-gBr#vYRb()K&k=*M!s zcH1;f6WaX!hrJQ=3IHl7e7;a1}(QViJm@!2j-kTKDun8_Nltr6Uk zeu@1Ya!NgiSaW*Tfb9!EfDi=gYVe7HZz9EmDflrSj)ksP^F!cf?&NSHE;PLI4PYKXp|MD*eU`xf`nVhu_UxA@jDHX)~5KO96 zVQ{jQ)L#?ML|myW=@`3Jet6Z>{1Q+`DI+7gTpp47sv@e*N{Jv>{{@m{Ss^BX`}B+ zZR**<^|XfVQ$YG<$c4W5s7?EI{Ofz!bTQi_@E+UKWg^^I$`sQ$hs(vLA9$~995CqG zZ-_9`XlTz}=em-}5|eBflvq(WmAmR$mR}I{w z4Wd(Pp6QIi7RVoD1Z6RUBg((oX)4LL{Z^a`LiY7`OhTqiM3IB?X9Gr(f1 zx=ZEKcBh`2Sv_S|Cd+%uUQtFA?3AI6DI45I_vQOjR}V38WCe2C<6`RwZj~k}cf+LJ zyPJ`LZb3&68+7DK83~N+RFA>16UAOL%Mb*j@2)8sG1~3{{KH9|XG?`9MW4!!B-fJ9 z%-|Ea@ht}eC-R2M2nLA{XKQJcl*vmoYXRBYoz-1Sf%Ov#SRJgLYia}~gZcBfzyA8G zY)&2C_@!Enw)`s);_K4@R1et zoV6*54K{r5lHIaDi#C;LWXzr}qwK6kkcQ^DIymFgkufaU+_JOuKIJ=}kUyHvYH(r^ z*F9JU_ApB!upC_P(|4tyA!zqi^DZKAFw3KonIDHLR-^MQABUiMg=(G`v#{_Z%A!H0 zUY^?_JE!JXxWA)2?D2?n8I1ag&iN~_dkDTtm!2z-h{joI_IEkNrO+%*#vx0yEqX!!^QS9}VoxILz@Q2ta-R zk+04qz<<7$X_P<_3lV2xPa|BywHdsQ`BUa#tRmH$IMV(Dr+Z`F^x5rTRl$fzpKZI3 zk+1+{Un+Cj?Kj430`PqPuiqb6cA#$!czMxFy<~Q>vRZGEFLhs*M&Y>!$3pVVkqnoG z$|kC`M*5|?`g5=OU;g>u{V7DR=vWJ`a)$y^55~=H0ueOqY^1!os^u(s39(&zSvb9D zhA|b%>qD))52fRF;v&o22T?SJaTD= z1zl-p)dJcf1vW^)Pbm3@}Ct>7VkfH_m1+0BzlP>O#M6D1%dhXzLg zgT83YmZL}SOE#OKa-W;QRX`!bT8}b^?<)Y{(inceK=T98^zzhCXK5%`uI1Z2I-HE? z5FiYLe!0K%Y32aqA$1TDnd=vh zT&WlBwh)wUx>4uadOcbfqeb)(C9>T?V9@XK3DwMMLd)ru?qlk+TA1}P}91&x6*y3!qHTX>%oU??AP8sw$MO3JQ{N` zbC_ZQx5ivDqbT&6$Xr!sDS=GX#I^~T1oFRh5-r#Lu)eYvQ=?0%4<$!&0S@{k)Z23Z zLeHq70C8n##g^_49Jtpy{a9r_kVgb0I?Y=dYJq(D`&ip@b-sT{6pa0RyYymHuH_D> z=O@@--;AUnfy*^jNA2uJpU5iPJ~&w|r^Cy8GIi8Ig}Y->IP#?_$LRG0#G#ZE~2yxT_X294ORv5}-1j6-d8# z>BF(F{ayJ;&GkeSz++R7|#RykvCr5Uh z;~oiub*P7(>kcvmtcP`jJin8jB9wvqF`n-KAdM9)5!rFoQtqEhcRn`>lr&+Xgp_3f zaYd9b$Am4VnZ$eyS`5CsYS5FGMD^*YC4D#t{QVX}G=puXhvBEv;8-U@?rltuXmo>t zsYYZmN(7%lCj(}9l*6uU2*H)>_%@XE$Uxbs1mGhqMy=Spy!JS;EI1mAX-%&u8;_Zy z6R9Rn1Vwj_Z$PO;6Juf3R7 z4Lbk9Q&45H1!&J{s6FyE3qL>FGh2E`g&`3X4A8-9YptJ zEtk!-$Hn_l=S66F5Cg&EmW`9$iNO+>H@cY?&oYHa_7zZb|7{~JbS#OYZO7RJ&()Vi zn1gr~`}`u~q_RVmYrZOzO_F#5;QYQOGa(?=59M=sGOY&(5Uepv9CO44q3oxQUVJ@Y zUQ>LW_9Ya!4ufa?(I5=Sf-oC5jJ7(2U*K3xVzft%$`+NM-OHsX8iO5NyTM)>P0R8e zb_P!`?Nf57#4xU8sgz5B1c5|qF_V65$_V2Cd{=&Gn6U8>0R@XO_}paLg$?xmlHuc< zPy#yHV^sqzm~lg<0$GTMw*BCtlYNmbQ}2RDy{_%+7ujf%c7z&bT?e0dhE&P!nJOda z(J3Z5ywOadUWC9H(OyR@@=z6habr{~KBECZZP0E()yTA}F&peUzXa2uw02r0F|4Cp zKbx?`h(XXg_;6$83O7|@Lx-O`BF#R?v1zVvDi9%qF}fdA>Dli(A{Y#8)X9b#5mluyj~L05j*m)%N>i0it;XoZMjBBR zvDx$`M-)E=-!hJUc2+0balMk;^NMsVQW|m8sEH?=LX)g|W9x!Sv5Woc&f$Bw7QypApdfs@7aJ=9yAZ_sSDrWD{b zT{;s28>Ifj?+a(i2~AhszT{>yP3%%4vQ?=7JBRC_)whswXZG-lP*v50V-Yt&gc;+t zyB{SOfL)V>y6(LjMRSE2&xn4;yP-HQHXOtOQq{_$mQyEVs6S$|m1Q}_H+_43FC^Qt~TYd&BGQANacu z|ME}&{?EF|R3iqX4!%@H+q)gDoqo#DF>)ch5Sa~Zb{{ZfXGUjR&UBFFyjTYz(6rb> z$T7_(wA83m<|6B`m0JJ|oD7<52MpY5k*4OWaO0t+0Uwy5G&z`(#XO3ttgG_pGk2}Cj*N8`SFjf=X_#CN{ zGRha^^WhxeFt{{|$n?*&cQy7Z!Q@OcmG}~UX+K*~-e_>of7eWJj5vyOA9oFxs$ z1lr{=AX0fb1g4+O$mt=o_4xrHQay9AnLIJG_VsD~9?T9pt9th9Ecr@5OY(C;T~vwP z^Z_(X)kgQ-1VKqE19Hk>&@~jEoh;)&89W;#Zf8l>Ue=nL^c7);zS%4m^gZ@bqf7lX zPyS{0kXyjuN#KclAkQV`P138t=srfSG@F{;~wMPSGF}jPa?aMNq$c!#EtGA_H zynrmh++a|vX1^d#IP&<{=dE4~hGBvCY|_Ay2yI@_=G~)nWf!CqFPVPWayE>^Nk&Hd zqROIu(C~k{2~P$pG%k9<@E;=b5Qh9}!AD!%Q>)VL4}rOLnlNY=oza zaR0{@1ZDwP9ts%vSvRq_UzKl!UbJk=ehX}R@WWPL!s~J)m5g97!Zs|jaZG57#xOxz zwubLBiNW4=Wu9oOR6*vRyMc1W@*~f5)?XxR9puH}=*FI#hd+h)ume4mI{kJnIQA=g zPxQS=+q?6DBp#Vhmscqu95Gz3C9H7c-F<+-w>H4X(2@8QIK_j&U!8Y!d+o%AvU- z7D}l>?D1<2k|8oXS-xElC_O|qrT%=2a$HgL2OI)1gd3n~F7ReXsYT4H)yQogkTfI7hC7SZq87 zzDwQu`hMrrkaeyrHkj(fec;}_%4lr^ZIsJ}o9#z7_=aQOobshQ-_D-mblfly)ZWTw zoPF3=kmZt-OJ`&U>Ve+vtdiI1&e)B%2g|mX`jyT8(?Z%;RcXiCKWx4HApF2?mfB$G zO8fH(M0O0mpBPU8qr7CvK}67G9w0c&XW0&nCa& zGE2VK5WbtzVPXjadfa;$IMrV9z$5t&*#-*}eO;eVk}luU{^%6YI&oK^yL5azYbc+J z(o6PTWxB){azC5dtoINj&9YRWIR}Wcs}-I~9xo+$-+sm-7Z357T{|AKLBH9+D7j6N zC#*hD!>atHN}?clpV(Jf!gyw9N94aRwzzP`iy85qscrH_0d9}dX4c;ZP2*0}YYn*+ zB)zeddLHqU8R;x{ZH9rURzmE-H$-bwabJRwJC{WwN3UDIw=u^cW3 z%Fy4W4X(ii?77m<#?98Vfjak6aQv|d7m|x6XWy;1NbGt^%5mz7@ z4=S6imRNb!IfYrCK5`kSrlIMAF6=V)J%?B?AfQyKI_^3JXtsXTo0!~WIA?u6humj!(?aL|B%{uxTtu{xOHqZgAC01Nh8cGl%*q;DL zfxR`uort_qo&pCkZAb;g6!36`<}g~V&#Pun0o4_xjEkjGbMBVbr<4TO0QhQ+$DH<$ z8CD(J4!v151qSRf0ysD$1bQxo5PQGrr03+CD4^UOz=T!9%6W97-cL?{Q)w4w$Ohl1 zCS8nv*JNWN()|ros{ezAL-T=4ubCx4lQV-%mL{kk-lNa79+f_e3iL{^x0;N)ZV%29 zqZTnbEDNmT9WYK!Gn?O64X0u&7j1%q$FPp!UL)FH>>uCJn&yK#N2Ped9Lm_Qnr=0( z3{O(l;8X!}K7ak@l%o;%0bs~Zb?M4xjb~VIrvprZzLyiUHsuv{q~Xa$Dw(S_%D{ve z-lL{o9DDg7n`2sw&PE_4JuP6_ahUD1H-pRwkg2q;N5MX@aT^U(wdA?1>jGwnvHnO# z2D5${cIxs(CLSU@IZEtf5a6HRR#xQ5LSS7M%TLx`E)P46bzi?`sIhYJT?MLCGA8gm zIg0e?O77icR0P>J_LF=+|F7p)$u$Vt2D(+x|NZk*;|kf?uxnTUk9vi4m|gAT17KSx zy)sivV}PC=O`9RmO!`v?6R|Ilus!{z-aW4pP=o0aV*1znlbBI}5CYo_$jfFt)BbSt zeUxcYX21?&h;1CK=;_xtznwr3+*KA<{afUB1i-I8mynB5Y1QR82q7K^N# zds~t-|3`LkrU1$$0PL-7TLDy_=03lWDXRXJcXdW&z;~ncmO-JmjFd`YAyTS{fzRt8HTge1H@=f`XF)4~-Pa*fHYj0)jnk-Er4X2-K3JOAU^Yl11=gB- zp{zhsZ-(qs`GFoN0iT-o2g=+CZ%xXLiO5<9*v_+muyK$#oF62zQ>UzBAKWXpgXLC~ z@r-chn1vA|wDwnB`|5YuJntp5%balV8p^mH;g@=qZ!G+u{|63WT2iX$MoSz5(5!n2 z%EYO1O7TyQT&f32HB@FFBtft;$-JTQqU)Q==`ii3mo4L5C-Xgy#)MNK*UdP<$hU(o zJIL~#nppFS%|+U&4`Se^a&#Pk_@Hy(NoP~3Q8^%-)Rm0ZvG6!hWj@1z5@{_0$J889 zD!}MbUuOMuz|H7#pMhL^$eSV+q_JkvWgjIR04hGVKEnp3lu(Vo8CDKE?O;luos#Dr zH|y)VIWg>PHB)}WBBHVKMJNC3=$7F9C~EM%u+jiCOvm#Dy748*GV>*q&)Xn_!4O%! zO1>J{a!%|>*Ftt@{%D5J0a62nVDMB;Ep=q|?@-r2WNsU5_H>9ai}P@dmiAV-JJm}Z ziV3sFX0tXC+prAg_wISfG1N##$C{m)l1wITrFb(3oh8R#ec+F>AOaBR(0>rnDbR)SDTk)fT#%pJ5p#rG zEfvo;NH&ko4(RFmEpvEFc90Obc-DBPWn5r;*wAkSNI4Y&fK&H<>!h0B^$Zw?dg*cn zOdqCHl_f&`GDaXaxW%@2-wA9Mgi0)t7}Y6To6@6p3Tlj$6PB$3@WR?nIfIm3aD3m0 zP(x*1>(Rt6)fj{OlEc;U^2qe1uPxSSgxG4TD&;*dryqB{yVjk|mkunA z^>zBwV!yc{1N0`?diYUNtjn&huF=PG9S3VT*gXOzh|+$|{Y^ z=tg1s(K(v=6#hDYQ&vjTKQj8{QfC#t+039Tc=`V8|NO81!1&%xALCw{!61(JBU){i zml*;*%)lwGs$o|X<8lBb(h7Ti7FeU0%YX7xF84k1nyD&pxEtC_2g5ln_pq@D^rY`D znTUP)oG|d$!I1?r-z;WaHhvLEH#;qV2>E$wmlXV{k1ehxQ7NSB_D8yRN@GYXU}EOA z)|3sE%DSUWP33R@YpF37X1nAlpQKF*Hk0Rtg(6&HM65P0(gP(kgP4z#bvPXc*}86c zFJdageQwI&l}^phdk>X#;oc z5B60HC&HBFN!0IoPgA38f6f^=E(L|&Y_3Q08ByaN#E7+O!A*g|Qfj>&8tpkZPQvC! zzrBU8uFnmFBQ-B*qk|5;YW7q%c`d@^gXSZkx4T|DB;QKuV1fSjkJv}0u7h^Psg%`S z?&UZ+@j$bW6~T#}FVoU%~wvk>SF>fuXZ2b>STu=eX`5}8ru1>XU+faqZm z&n)-KK<#L!UGx9hKur6j5TueqPxn;0QF`}GaICEYh2d=Lhw1F3fa#VVSNQ$R59^U1 z_QHVW?2(gxR_z7H8IP+LT>*z|eF_ZD&f*L*^y=a2(~3b+E`s{`oe}u;$KM&`K=)*3 z(x6s)p@8AArg{ef%6a+3!4eZ{Tc|d7Q-1bVZ%~*ee1>MaL$?37|I7b1{=fh8f5yN3 z{wvgH<8w?BB^LnUIBj$7?kCxr;Ip}oxNT^Tx=I-JUVtI136&t2z1DfH^s_;)73A_8 z16gE0lba<4Ow%^9NwaM*kH7&oznity$01!oUztiw!*%`J`sO~QJEO(y`{sVg&Z<%& zu5vL=)&m|rHy?g3OPV%DiT~GiFoR&F zk(e4LuTs4yj06%e6Jts`vXYg{D5>Ncc3b{Yv#>6S43}?B@NJ#2-vwur$Rx5+TQaUY z6kW?b8C;emxhAAkRIEcsaVSkFkqpATbpsFJ561~>F!MY>SVbLo${YmYIf7~+!&bH^ zF3Oh~0pk3H09;aLVG|8ziyAQ|X@9B$+jt3Txq-WaNY*%`!(n8IJQWO2qtn?}6pnjI%I~{|r z8PNa;CG^EMZYy0nL(C$>Qj9d#%qbVto^80sf?JzvzuRrL>@faI`?pmXjnAhGJC-@%j z%&>E15&>Py`w;w{4z+zCTE@G@gJVEv2o5uBO8mKNjz`~eFE~f;lOd9kW=y#E;gnZ6 zZOKw$Ub^=FBRj78xXxrlLE!b>y^rB+)~5qzADPYiOxi*vH(^4oGi1mq2r%2rw9(WG z)7$0*l5Epk zib0cLNeq}9tI4(_2SwT|FlI5%=$hTqSoHk;EOu5T8 zQAvfw!T<-{KC{sEaHpizAAS0ze7HOhJKup>#j>kleSOL?|Fs!foYM_(a^G0AZ(K$M zoYPm}Bys+kI~8^-&eg$4G(;8KxrVcv&T>Hx%B;)MeS?EaDK~a zZsX$2J1U+K1Ni}G|4UlkU{r4XG%5j0!aqp4nG0imR->G*b^BW#!my4Ok zJ-nJR84~_8+3M-!@IWQAn4!ypOO{~x>D?e7B)zPD!k#5N+;^?~Tt_~Ek%NMIvq(DO zrq6}Q1rR^Tq!?YWo`?oNGea`~XPy)yU3(vim!@~vO3ev?7U2=Rs-Y#KQqEApLiwUg zARDZX0~1vI$R-r@Ji!|EFlIT{1aM%AWpdaE3^ae%!+Y#zeLLJ?C_`V)a8XUiiC!cV zas|vyV7{hLZ{9mM8Jk=M2sV9e4;Ep}5LBPzp2=JQmN8W&$KLhI4Bg|9&RWw2$vz?( zuF8^s6Q`680YL_T&P1K8ObLc55&}y)J_!{70O0R2TiVseHsSS{W~)&sxO zX~pvdMgWss;sO2eT47HCh7Ma3CEO})OMx6fuoCFBgvNK|N*7kOi2eYbd{iSD?`Hoa z!^{28TpfQpD?v&DYfXHBJH|>?DgP3JB1mCMNyn&@l0*r6A0+UEbG&#^ z06cGF(H2ojpk_a@8tg73K<74_$3Ja&C=DT)r(8U12 zW{}Y2ImEM(384Nt4jj(Lit7s2Mc*-s-Jys;0r4{PzneTWqSL@CJa>xZdD2Z}lN=}J z0*!Er0yM@9vJ-W)yH8Ce6 z!6ZjwOl5MQN+V^9NS2kYK`N}El&eR}Ek6TQ<_hdj?A;LrGVDEZYL(_p;vW4!`DcIf z^8uhBbVBjr2IeJE_>=)Fv&msw8q-J?wdW$0lDaj5ts)JC=i(ScBV1q{#{^XqV<#a& z-~wv^OA@F`0rS@OW|sAGY(dEl21Dpsm-u0fMX=72*dEUaM~0MO9Bq84h(RT6yh+JHe|#LC1O zX_@@N^7{J#EXDnKom{U(4#{p%yHydMip>dt*AcY0xhEKxQk(3`0Wa8Jx}cS|F6Pjr zMv)}hrBMukD?-W5jCm4Rhjf6_$->$af{O(C0l57+Yp{##5}NgwS;2<^<##I@=%fy|pWF)zirq3P!4f#1bW($D z8o{nh8|y9-6JydtLtPPL)BVfS*3#3auz(dx|1!G_8gef1x0U_%%qLde_lCZru znW;RO8D`BSJg%Dtet9Sc11NcD&{b-vjx0?{yGMCkY?3zanL`0-1=%nj?pfNA=)=y3 zl?fBBlVObeodT_em0T<3V+kN`)+6E?jx20W9<&lo*|IZWO_IkGZSmfg5bBJ#e#Vl- za?@j7GBW2*4ig$3g!Jh|dEk?_kMb-qlnHW#q(^P%4}X`qp6>~0O*uT-rB`B4&N@0< zkzX_dtPmXkA;axNnB9M9NxXc)tYjhu3Fh78?8CXt2&8qil~ztq8m9OAOslHQdKO54 z9>4Dz@azeOCMTwS2aOF!0I24`Oym+3`w3&hb;@X<07wr=pe0!CQF-d-{!X?PxEqMM zTP&o@e{ZCo5oc^l*P+Q7_2bz zQ$H@{>%##FEy+HDN7`97Q6d3EDUDyd!&({uY`carX zX;nEVl2Ol00w0-_3g@MCsOuiY-9V?02O}4eCXB^fI5H8fM!Yv~5M&qI(hiXGI>z9rXg_RFz#alHhZRaK-S5)BpV=2Qo=>+^EB%+nvvj+ z%ostc6q(kAXQ{Xg zL!Q;4x=(`o$sTkN$fWa3oSr<}L|4kDKB3L5K9>IX(x>rq8QetX)TXs$C6QQ50^m*X z7@ZS&c*C-0l!69YYP(*`%Rr8NRbSK=6WgIaX1`000FF}aNYyF zO<5g5RK-}~n)Q3ZO2MGVD@}nnKwwI9@L`0CbD^S)TCOp_9ukF}rJRfBMuawXsdP|iTWfrgjo^g8)8;0?txX05+uzZK zrq?JbWtm!f`(qD>fVZ@L;5MzNo|rbNd~7>J8cUCPZ&lrDIs@FGOr#{EOglfDb(4Ko zGul{leewM0(phFilq@(w|CsVOFwuIAo4W_uT;J5+Z~Z#HzB)-FkNb`CPmegEm_;{< zWb&{G(*|2P#+lChr78eP&QfcWT8@nf?7Mb$Mkm-^)8!GNoQ=BRjQ=3 zBfuOZ?&+g~YqIOLTU}rhLF78gjohK3G|5Ph@Oe64ZzJTIhNC*05M$n!px<*6>Nzilx*wvK=m5fBPEcS2iKm8J=V+!3Dj(oAz#vIVkITl z2V$YL-{Guwk;vnOK)(VI5^G4XCcLB~yj2S$)9`YC#T=nwQEBs+5~?xEKoTI(_7!Pz zh62W#HYTgyj4?+9J;B12oG02bU&~esPS<19$CpUJv;H#S7V6FoH5+)%?&OD-r~;g$+P-;gm*0 zse-kKsu_?1c~Y@H!1n5z%)M+eH11ew_WKg06zQ}IY*xXuk8Gh%JDvceN0YLcSFin@ z(My5jR436V$!q#+jF30@ZTqxed4|>|CFoeDxrc+*QNkMb+#`*GrGjgY0HO9QXE&FS zaFndL!`wArH?Re^KdjblN{K)){lDT9ymXw%glfM#*1JIywgt3OfK#xNs z3FG^LUfrJ7aE_u$S97RL{(u_ zzh=#UlBs2sCUcT-<{NPZ5^eIGC=jxg{vZ5TKlynbn= zU?E#8$&_Vzy1v7~( zXoojd^6N+Uy(lv{@?38xVb_Eg443))#Hzv}heH~n;|%}TNQC2DL})bTd933{T^{{F z?K+e(6e(bO@fN6Lfl2{jbE(@MDJ80s&TNd?n2yfM%4*wSWFKp=a{~ZMDJ^tp8**{~ z;QPSp`SwWgbGzC1$yim+8X{PM!D0|?9h$?-Qf#TcFD0LiEYws#T&K>e0pRpf!9-O- zjzyGebrvhj?7>!nG07hQBuZf!IDiqqKEPZb`bcVRGs=U8I#bDtpS@#%wpq`{Y!Uq; z>m5L`g5}0Nx;_ubO60`x!1(d{WOoPHpR~$!v=PGPI`0tm=snkE$jSoA;z?ukIy93? zN2+Vu)?lZ6x3vmO(65vEWM!x*B^meUdt34<6UP^ehXgsa8?g^j`?{l@#1qn{l^6#S z5=(S_l-eRrnV;kb&@AoHM-hgw&IvTQ{(P)4zsX?XWC$SBBptr)#+u1=6;7ss)R4=t z=YWoRnPml!jHWo4TJgkI2SRYP({{to`F<4C#+GL9Sb~lYM<(X;jDf?%>NElV>FnVc zPFutX9)F>>zR>AFB0Go(d%sn6RCbhQUf1uNt=w5#m+g%;zt?IXWYVs6geB?PW`D;6W}1pvS#U=hK}DEI@Zs zaGs55q!s6T0ctB5*<`*Rqh;JvkvK_!j{R6#nOuM6Qjl-eA_0r#GS7`5RSWu+^hCMB zT!o3nj6GCn&&p&DVl7oT?Ehj$f zS*nxhoJdJ$ZI+Z5{p=XpUNoiU1uP|?t1Es2cjgwoOICS|!j*%)iU z`=-D-qEiuYs-*NYD-+Sll0B_UUG&hP86X8fM+D-Gs75RPr+sypf9VagH1plvY~iA8b#OJ(_yIX zkfOGbo$}aZMi8#+uwWy~FsA;!vB=}p5~P8QIq8!L3u784F__{Zll(v@MEz&5nH@_q zjc^DOK=J;PpeP#1%!CYaoL!}vr~>ItX%&W8X=DWkLBPN;nJQ{emjunhqUz^Y35Md* zOvY{6LL4$!lip;+nn6qs?^uZ~LXaMqv|b5x^a#YFDN2BSpKmxMf&+r}tjV19ka#Wb z7qT+PL0rgAvc7GL8c-+fPEQSR%{87?r(AD2`0ulcZkYUH$OuZZKC_iR9p-S}1k719 z#7NbGOfvRqCo0}0?S8=l(WT5N0X}Tlh&+m5bK^Ok&F9#51nsr0e`!w5$T`7#_h3Ao zMOrQs;C7kF-MYP2g4{A?s7uA2pU05Qv<+)`2@ETFps49c7 zG1gb*TuAh%V9yFlV5|w$gE|ia8%oA1WI+a`AH@4z5J;C;&y~fJ3%c~$`z+yrAq36x zm==Xv)w75ViJ0tOlc*?evu2&uJZAn0WGZmbcqTDtr-$yivS0uRp(i^6kF_8Xb`#=u1_GMMCu{K{*kRJ25 zyRj{M`g3zO4A5_{uErs*S9q{-Ed^zO1AsHK&E|3>-U8qjkD`;gqXc%ue7ZafU=|A` z&TgEA;l$3QzZ_t^DdmRO?J5&O-Fiz0as$1jlPgbk@JVuU2|3W6c`FP?>fx6nqCy_a}zCu5eaLY5Oh zNU)!Et)%pr_8~wR$wC`jD_z>nA~`(?O@cq*l2$IUbBDE3idZGfBUVIr;%pw%b~1_6 zhZbsszHiuP1VCkCq<0-2LFRNIZ7XspI@$o*5?DKUC9UX0$T5jK{%~CFvpsMWRS_h~ z2(~-uwnfEur8HV-dU8R$z z`wqw!ddvV`OuSM;WO2@EoQ831j0Bc#2Pd12(@Hug z4Ea~CQenI9I$0~W53Cz#dv`jL648O7rvATh`QU&l_#nghu@}PPwq6a$J0N%xg8n#I zJp_q4a;<$=;CM~IBq%`xEdxpmR)9bQo-ENunGX}7J7xa|B$-FzRD?~j-4k5$FrNa1 z;-DsEAwBjHKAb??zn#%D+A}a)Tw_@?y{1G?GTMjw%XQ3%mM13<(5+{}3J)YQN*$ad z{!W0yCR|`>YioWpqCprF?wZtU#KDgQV`+dpN~1Cg7Hei>Wle7GZ)2_Uumzxqb=Asr zvhoBYnZB2?kI1~)dz-|@u454?cZk(l-BLjNz~oaYsYeyq@ldMOv|r(ObuOid2nf4x z_Bd7=K_cTcvMdP>xesH1MiGIjGfBsY&7}(LMBC4!5Z%(QF|mJdb3;Bo`b3@{y^x#R zD>=D3(f`im_U=}07xykjvM9*S;>O2)e|uM+9DN}#o_;PHUheS$`x7jogq?G}b_uX3 zwK0~_OG74(8zL5do+IZ0pqGwLvl)#X;yG%+vMgYF#5Jm1)d@hXQQ2%58`#S864j#u z05u%3SVkqK)s-MZ2H1HAnJIZ{fGhK`1ZV-x3Zn`guuRw19oJBE0#G%tkm%#HJz((|~oMnMCEBrIgM}ea(-1|761&(nZ6$Kr#$7P;XKG(T!;?83d z5OH=1@J2+DBxFXg>zSj0xpvz(=~_Om_T)_|3-hONDpkr$BugoBo}#*qq-}MlYzTSs zRANn8So?)psqH-Ed=kU?J^Y-D)xlf>+63ZCCYyGUW)YX!KDKVmY=diK(miDjsN6OlL$e zCvoov-m)$`jfF^?D|o!o>;~YqYilSHqmhFF@Es*YgE`>3^}>XKcWFFCEDM8sR>{0{2Xjl1!|_lCDI)1Ez{{jFEXG z7&BY10-H5LZ`ol%791qg_o7ZalC-clx=C_qVMod_4@$0GHuK?OlQvoau7!@3Ih!j9 zek%@TL3ctj-qV#&)+@$-#X%iqVzf*HN&-^iw#+2PadMdB@aUMA67$CDBGWR9tW{4I zFz^`@%3vSeIS8ksU>y}mSppm}S^}`<0}UpZM+B1hD|GUn6CuH3TOLvL+=%t#I$9Bw z0Is<<*t8}F@Df-n9sslwmBKbmS9W_k`6bc zlCWzXZF?zMM4?5Pq(u^hiJ*9X=+uQaIyMb3&I}R8l6FC)4Mj*X2I$5M2qUntSTD4h z?0vvDWwwH_z9U zbkQaglb{#_Wu$FGmn_p|35nf%5))ypEhk2`zmBuuo(EQ~mOaR}o+WTmA8aH)7lK1XRumH86MWI`v{^%)*& zx@k#JlfVq)$>)!Q7|+4~j~@_FRv>&fs2btHkpW|LBS7f#<0LJq>Ck1qMs3;8LSvU+ zdjp4ga1tbY1%{f2N=5?c7-Rz2ki<}0Rnq%nCsi738o|6CJ>z720a_;;4CY(t@h9^j z$VISZ6E>iUogd#YW*2qzE5KkRtx&TTx-@Kn9E-|G(B%1;EEmgg0;VRQy_+1y(}R)A z-<{G4Q=27taUiDaP-_~#xB#OlfygYB9nDV4q}B82dz0X+rooB*=vvk>)(Xd;Oc*uT zey7UBKEbFX$%*qoT_fa>alB$3`n{{~jc8*(VBRKUz;PPKkM@Gyt)H>pv?SnX6iP~w zX`*~43)xc5#%xgqCKx$N0VUUaRMCh%HxAH0L*g=HSiLZ@I^I2G8jaD6K`PDhh7-t~ z7%6Q%#WM~cM?J9~;}g}TWyV9uub!|(1T6Z8v#F>2&j$^0dMpNa-sOB_V70fSyck)h1iR#Dd&5jRY*z1xE_(Sk&6 z!FpmD-gM%-(&mQF5FL*mxlm-kN<@cyNRp=Oo5`DGxU$S)$MGS+f#X<_XpOCH>vM*D z6?>n(^)1<2U3VaE-+O&>EEfvQoyedZ%M+So-)wEHYc%6Q!D}a{msifjU*BEpdQ>1k zER>O+yM)Nt$z^SA>O(?OrJL?;5wPx4GDIM663OJ;@OskGiE$6GXLi9NiR=>IO~5P9 zpOB13WQ5C2>S)WTWqg<(LvcK`{)WV>$BJuOa=dbWA{i zbhE@0QDA}&1Lb@uictCPxR>wO5lOGW*B$fVfH@>`1qc{Ds)4+r3Jl?A!*a-+6P5y& zBrwq@2TqWWVi(Dv_WZ*z>GV5RX)JwMb=Jx6x&N^zqx&nzQvic1&5;njkUeF2OO}x) z=@8XhDBEg!eqtf}n4dSL+3;}gA-xjz&%ple*Z~%i*$&J&4R5Zc+U|+6#*~>+vz~Yr zxHPdyh4X-1h;d*a4iW)H7K>$^o0JxH$b%>)n{9QBY*qsIu{O{Y+c}M#9~gZLw=rzZ zPJ>yKwBiY?d>pQqmcg5$gBS+sk||^GJ?@_GTqJ>YV}}BGxlyK0VS>V1Qe)TZNf&9(dAy_BX|JCP7Q?UI(c(;u4~#jUgI1S^0y`Z_ zZO#WH2$}d)t1zq{08#Q#9*_XaFz2++KWf>vbr+wIQkpYS0Ltuh%jJOImy_xQCHE4` zdS&DZ_aZ}1yAh6MGqQAsnye=F4btnXXf?D#nK z*DOmGc9`wSTa96XLsr`!_jhc-Z5lm^gtWFEnD96)`N%WXu4f>QV_;2>!ZBbAb{x1; zTjRMB&O*pghL7xteRo_u$f~l@9wouI=|CCtKI=jb7>r>oLI)^zP=(~Mo;P^P`p&s^W$x%0ZBjJ;{W*XA?X zoNvnA@?KWDwx?-dyGcJ5HgBS1Q)Ep0+;;>D0mynpr;;qdxj?zWK*pO6LOOS_2?^E_ zA*nnodRejJ4a=JLlrk<$^0!~MPb2BIIO~42zGMIceF#^|Z6V5U^ z-eD)li6mRnhSg+v7^x2M>?CZBoEnda48z1m!(l-FTP(eXu_AA{!l`XIQ*gGCJnOMP zea&MIR}cxxj>sOp?Q$*nRbXew+8RPJZ`99-fAnAd@y}~eDlus84a{H^+0jw|wlYf% z;8ePi>>HmOH=Ksz8(@kMDGhr_Q2IQ`g@+q$EDn>7*M(=r~` zMmpxObMM!)xJ9DwZ=t5#fOUWck!}h`K6Xjs)++})(*WI6&eEMO9QRRT*QKl zP|5(UVK^D!b+hDV2awgH=?;@HJ^LRUC1n6og$bn&4(QC3(xL-sTtfGUn}-Z|B$d{D z&IIIL%ifR0);w>50**C-0hx3Ue|r-b0_iS4XTN8%Zr5c=P5Y+-<4&+8sN7-;KCD25 z-5n6l*oAh$`s~4Q^MI)d&cG9;WQfMNV+mBUbwka=uulmCojfF5mc~w2FoFXPO){Cj z)={R-D-U?v>!z_K2xkSCFp7;4<)O!Jat)Hj1V#vx&S=!O?fOY4IP5P9aadVL=n$jv zhBU$y`=DlcIlf1E%g0V%Y@c>AxiRhuhP$koBG?<0!ucHFa3*+VqcCrxHPoD&S`$|# zU>=~U9vmEuS^t;KT&jHRwD}V4np|L@!K~@uV9p{;Ixes`D;372&C!GmptBe@0||LO zK`n=xbFgqVG_L_m66*l$~nK+M<2Yt`ZsgtBR0&P|?AlN4e z^SyvSlfjMVGBcMa8nCo`(~;ysot+v>L~6m*wg^`a|Nj@Yio!Ke*E0_u8aHo z7V@^kbv_e1htZ8za=gdIGHmsXde`Q>dXNM5$!$&FN)+1-&2~DlLPUfKmURO9;v9-S zYzML>ny&P7-``O`TCel4kf*zQ4%A=1d$0dqWoLa=dcDZy&9y(H?ftn%k4!?dx4kdB zYYN8ozYS&Pk9H3n*e@0AA8c=XGpbcRWA?VT#9@-&XLY_NtNPhB1-!c(JLqOxqu)uL zu5795K-+?JjpjJQLb(EjcfbjexzThF~ zAa{Z>c(xIEGRT?dU~K@tn=q-Bwy(0vSIP6WR+0vg`d}`qM6;+Gn-j0lI?krUKarqh zDO=A?LoVA0mfIY%c{tolB(4kglvQMl{Zi8QaaSb9>q?S`#5XLQLGqCmV(HGR2hTi{5HT7XmMb8f z=wNXD2CORx^vAh~m&LhTVGp~+rbQ;5p>rUGC@%9+;_Qh67M{~EN-9^VETEHEupeVo zn0Mri`%iz~qr{Fk2I)J1IV_l!8Dud4vC;t92*b#3l58%MrL!i3n571*w6bd0FP!)e zVPAUC{y*%yWE3z-{lux@f#%z~>k^2j!65<}TM`C6b(X42DFPO7A%Kb(N=B21l6(DV z^WEevC7F0O_8G9iIyxSSgo24?CbTaI3vE^~2arwl)N7J$i%CeWRo1E|YC=fO4QnAY zJ!S! z+!*v->hxx)Cr!^h$~B^F7{o7m0F`E7r+VaEBef+al{Cz85IFc=wuC6M$2F_hNP?1S z=}5{OQm-y#`nzD`$U=@}r>YQ4M3RsiQ>!-6H@$JJ$z^K5lWiC7gQkaXG8&2T2o;93 z!>XWGwB&P@3HxmSZez@7N2&3Clnuo_d*S)mO2YAgAJA!-z!Hu&L1=|Gvj(F%{=vcJ zHNWv5VW0!Kwyw+44m=0PiT>B&)=m1M4BafQMrR3OW zS;rD#Y!7!^Gors=-HKRzPrATiV0nx=T6%89=05|%EH;%U@w7|-*apjvZphAnM5HX1EhjhrQ`KxBlNM;AQ5C8Ff^`2%%QEFt&){x+Rgmd=Z*jq~f- z)`6HyW*vJ2Y>p{oVZv~9IBpmtNiu-F!ZQkvZ~#1+kRX!e6A7KjuRvKu0r@8&jbuzR zC&pn+$IzeKLj;lB?v5QW4`rQ$mx`2>d{sn4T4H?hXj4?98>H6BIX-J@hANYYWI~O*n^Pi+9C~`vIAPy?*ktNNV~;?xRx3}JGKs8-pMLD*%?NbnZ@Hrd zj8a<^)5eFmgX=L3y^S{=EH`8$81O31*+4b8uFExEQnA7CK>VHMTL+eEEReT$EppT0 z*}GW~nu2#l$_hw`nC~EpTID8z9UX?2NKBAV06x~*@&tz=*F@LxM1vd%_LJRPxldWr zv;U|6&ENUCCCNmcR2ua`_{+e#gDh#`P%bVC{hjrkfQvK`g(36!9J`mY-FuPdDaQea z8m2y2W9oe=qoIC1%AvtKg9pWKjZ-#{&*aRMH-%};Z<)M{lp?L!N`btfdZMC_$w*+@ z2Qn(ygfix0iN)OuML#@IsA&S~`Ur@y8cvX^Yz#p*7>lN&F-onuV+=U>VJs2KVf|xz z>CRZrW~lcXHM8S}U`@xC!JUk{z%#7%BX){ST4b__nHa^AT?FVftZiY|ob$q)l*zkK z*;i}|I#pa>th+Y7=Vbr)O3`5b=BtKHqW~vBp%vTfzit7 zPOYdU5Jqnr3JfiA<4c(c7i%jn71{R#%0Nao{cKY6wQ1S7ej2MYe&nPAwiT9l>!fvT z#WPC)>yRZZqWqtYDUyeL|3HxMpmw4o=4$X}W`!&-b`xYl-P8%M)U=m8Sfy*aM8Q67 zxG26Gy256J>FifHECIU1Nt`A+alu$MoYFTYiV2VdYm`fAQ7FuLKLPf&z3Rk}qwE&O zyG$IUb{Hb53eG}F(A(Zk06geaa13KlOWKLJUOa^BN4=b2m)dR09J0(Fn%oEu>u$mh zWGb`;v`I!?-k#yDD2n~~K%Aepdhuk=wXepBCJLs@S7w|jNA{rMD3+S*^$ z^KV1h@vYUlT;ARWK+y4jbg(ZE>X=-doa(+`$cOV&IXgd=>#Iw>Zs$^+*Q^R2_y@xx6~n z=URLuGqaL{0y#j*h;B$E7DgDLv68K)S>Iy-%0|^9<1%akZ&?*uR0jzx2q&yZb9+*{ME(6X@yE6K}wQ{Y%HGd#YV?lxlZpSra zZ=o}LSrJwoV&rs6H1XUGlAw`o88r>?l;=}8-|?2wS+xSEkOUNW5GY3+5E=H!{&LK5 zCs21n5Bn?6{=SWAluRA*oMFF4X%4SDD=W+g6M*?49gf-zRz$N)k!dbTR;216C6!P} zkSHSaP~e!EYYXRhIhUHubnw4(?ptF%x zX1$wZ&`U~T1kXq&dj=N8wNMQ2V{C)TAk*C?n<=G%9s3m;MtHWhdG;wq5R{4{-~l)w z^HvgYNBv!PfaJr{pcX9XxNeM1Kk*j1$?Xr#v98!aU4k2|3K)tm$32*N+bFRvS%R&f zG1*2YQIwX0AyZ%_#N=Rr3-!HS8fCJ^O;Qs-&(4em`3~3{)ES4k z0n;9bYs&|aEFC53w$}9Q9SoMX?y1pk+Txm^sbHPhy+S7mXSrjYeB1+b8+z#4Shb<% z7|_Y#fx~qw*iY0?3-(Sy*sz~e9*TV{3BPBkBitq9%7jSPEDx5oC33-FOHEl2ot7n% zEwh{`Z5GxUouHI=jN`-^stNF?(Hce#xDV2a>82HwN@HDct*i=!WXaZ%RVI71q^*hI?mzy%L3v-Aa%3s?V{d(F4At9d=umaH|);Qa0Q=Z+d=*uFw6Q9R=K*vZZ4+ zSKz(7wJVSIp2+6fmdw|7lx4qFfPNv&3)|Q{ltqp8esg#0&%D&W>pLq4b>Z~cJFFWhUOc1}HUN6eJFC^0&u75M=plIl%4*jfp(C?0jj5<4=Rf441d)N@5-FE&K*aA52Eis!%1dV-3K+f+( zaS9r}8jFX81yY{La+u-p)JfSz;XbUL(8Y+eqm?&w8&^OQ`gfYGq-NTsealG+Y)L~D z_OF`|DK7CGg?UGw2tBj}_i!@8wkHu$8>zw3;q$OVI&+CwmCU!Olq3RkC;?7WyG`e+ zfDoX=&ii1jzJ=KKKoJ7I$23?0Y|8@uS! zfM^TW1fSgt`Id_Euq_W@IgUA}Y_=8s69O|23+5`6wuXdsR0lg>ax4PJK^i;3x&1%+ zuYdOQcu@=h7jf5C%#@)W8Ad4SxZ)s{j}COf0m5wV2>rIjnr0=v#V$b&Suz`~S=Z-v z$2g6$1}Vci(cpxMh$a7=ogQmDbf=+WRwZa5VVN+-m`HSj^NrAl7ZgA=7HJmDM>xCU zfF;Xbd0>+HLdBd~C*ZYD&M_;AJFB>}tp&85qYlKNYb zbcE6%)||d{*chr$xl^DmRLtpNfJT|hkYWut-J0ZK2k7J_XsHu`%U;;j+A_?_#RJ(5R80+7K}><#tR*ON%=slU0g#} zfCOwyh+HD)r0JK70~2fXb9H~~p!Nr!edW!CPL*BWR2Fuw;N@Hy=Bv9KXL(KTadCYm zcM3ucEH1244I+xk&J{|Pdim%V_Dj@3X08JBJ{Sd1(EhOWm+^Up45urUdvsZlAei=< zY*-T{M0!`dXxF|oUzfv;E!pT-oLM(8W`EvY-I6{1x0$cmrEDsrZ!(xomxC-F*skkZ z+tTs6xxDnpUffT*>X_2OX1J0046c4D>HtKD1PDI_u{S zs_mLvYn$re=zZpMXXni^SW}1R{mEN-xVu!Q{;@pKYa5flrp*6}zMBDFuLR`liq5q- zShuD}=8RaC8kgq5F$%|N$jI%io6D!qzmgw){u5>Px8(WbPvw(mU-??NxH?xy<<7r* zbH8wBW=$Qn`@07p%Mp?RvneKz+Sc#e+BJ#Hu8zUp?jw2f>~q=OJ<{*33!Szl&w27Y7AIybxY2TV{%u?hv-j5OFHU@$k?0CkE_H>ZE0&7%6lgG%%GzT;D2a#V` z(ZtQ7bUmC-DQP;f9}x9Syg|GKg@Lc3SWhI0rsEjr63H1zWBtdJcHw2Qo(GbnuvH!z z1zzj_%fE zqPwNzglj@%9oj?N&dWG7YbWVRI`b)Ai(p{vT$={X7!8vpXZ0&9xiBLkX(E-t|09qg z0A~h#es8SJ!KoFxV*p;rc>4b1JO+2tkl@;97_1=Kgc1$BCmk8+*@c_CPMh>}*(7K{ zQZY9tS*`eU&9z0Ah}Z5WhS>i93* z3tz(5#&}TP#D+M1GQzQhG0!P;34_$5c@U#0jL7v!vZCfXp1I5Q9F9%PPl>e*qgTfU z%&`)?wyY3MXhxpS2FJR~5Wh%k!;R)e6G<2u4<4+XA8JE+e@0wCouU z3y>x?8G71P0Wb+OP+;#m*HLfke>YZ|k@mflHispmum;M{l>t6Fe4=3QbFV{wq2Sd( z+n~VCjDoRPmQ34Y4o#wI;A}aJlS8dw@x@rpn7>d;Mg#1HZU32kVus{%%NMaj+1TEw zP!)6R@=60fC7P^dhfOfDCWlh*L#)2bzB1oW6eMr2tjqoFwG0pU4(itxwC~I`T40r~ zYz&=!R%X3hmB$LoSBe5nb3W$=Za-6CdMG=}NA_t($mf_duEU1OI(#JV%=VE*0rzml`_cXF+f0jv6AbFyjC1AE>fWO=tXcDf$oAgw;< zCZj(-c_(-GR|@*i@j6?EVV#CO+u2sUh$)-*v z>Y}G3Z1xXiP9s%oj>8g|gk4F6Vr~M>1{r7-vHt_KOZ#Z*#hO>0lmH(4V%6#h*_FWHGXOL3y! zJk=l{J8+$}@>K<@h#uk^I+J5Y2x_yqiGz9n$WLfpnn~=o%7V1zdXInn7eD>^2tyy? z*5V%d=z+~phq%L`QA1zF$;FvA8DMxP zCD;?cQ(sU9i#ii*D0+(UWSE`Idc%zsll0_jR+w%FY(EmlX%2m;bbDxyS?j;k=b?0?_yD-Y0 zyoxm}(_K$cn~6&@VW7c^)V9tF_MvzDwJ~L$!WfknhJiZ3lF2(kD94yl5|!)I*;iJy zDBK>wGIyn!KgxqDSX#~l^!vu{f20-1+KP7IBGYC?%uC2bQ5?cNHKGP{LBf7qpAjcI zF9{$@(<&A)UR(#p@(zoNu8J_@Ln4LM@h46+=Xk|F9V-<%B)}CTq?-hboTYt zci+YugYB|?=Si)rt1_)bLQOqM7bf}&Le6zLrliW5as{B~C@@*i-sSe@&dVy=9x?Ff z&5a%+|Hm}w+X`GeDQSo8B_Atj{^8y;dAfBV2MX9X`!y*B^33tm>(6!l>~8EU;N4JQ zxutCHj_hvk%Z38`=Z`*>ql0JqE?d&s^{f)g#*SRQeC5yKigDx|8PSi0*cn&o_>%)f$gT==jcG0eyh@=kr8X$b9Jpz zklQN){Y)MoK9+;+Ejj)0-WmPRKKV*^_aDpKH{Z&Ki+90D!|q#k9WUjm z(UZB3{jEAAmd|i=dlU9p#5L+0t2SSQm&a@+kR>b1Jlsdk`U`ai&eYkn^KL`Gcd)e? z|E_D#0rGP6ds)X>tFCi!@Wh*&-C2@r1uh`dF-ptF@oHv6lkIte^&l+eXls(vPLu1n zBMG}h39GHSIJYN?1MGngAU8-zbX~UOR3DpVo~=-y$6iA&5Q&D=Uo*M1FNj){=48XB zMirrv#v1kq{cI|vI%vG*Bm!&zrLbh(sjH5X*R7oGRR3ZGn}JFmL^_+ z9L2#ViN`Vlxm70eS4q1Yd0?Y3hal|22r@57&S?P*){V?&Ng_#(hC|ZIXbvN#D?v7} z<1HPrT6tfpLuyvW2`oy0UK7Lm{a~vy&&(V{b^%8;Fe)~-h`rn2+Qz#%c3tAql#l{P zjrLix`Tycy|D}`B-ey?3JRnAdBWJqdJUd?6FEU)g2>~$GnlDu7Y2ol5{viD78TClfA}7#6cvvK>Q$`Bz**4*4o>I_X+%`i5*RkF3ZZ?Y0zd11vLva?v= z3osi6@964AhMq7peaD2=mf*`e+O5J04srV_7!EdnVYjdb0J=0b^g4r;jO1TdClaiO zO8p<6(WMRj3N}kzpALoVkzLyw^UqDzfvu!oF|_QG&qk&pLCqM(YZ%8ooXgZHaZ;g5 ztFIm)&)?Y`EsY3R89HWfSKb@HYz$fwj1xIR3|ql`S4dDOmtx}&mi}_*w<~`DBAS%O znNA6(B^Z=0wU)Jp@pB-91}rlq@?;V*92}d&y7ETv9$pe_6Y;!$ESJIYOBav@{dcYkR6v6EUwk{k_)8W>S z>&h2ttlnhK2yTP%Ste7ICtH==#kTha_l@Q}h(`F&YUceoOKs&C0TdV|Vx)s0Md~zS zIRWkyrz^G&qI^O1LzxqH%huPHj^)|)jgO%L7{Q_A1!x}c{aOXfSug;|?YiWs# zZ{NK2xpPJt)v~&tHY3)+ic800uJ7+3K)9E*Uu@HE8u=py*jEoXa;D&IiLH5ebL*gJ z*FdW!U+OnE4CLy+-&^$~y{=VjvGFoMKUZ7*WMfwjR<~okOgC-&Uje>7t1-sA`X0Nx z`*NlLcCG+_Z9SSPZEWo-V}7Cg=0Pq_Pv!jNwF1c-{p_|^g4y2LLvy7n2Tz~rc&+JN z-Rm=6%GTba0HU{-{xcisB{aw5{oql9xw7PDMmM&1^mEs;|M(NRR$#ukzmb)-4O!pV za}aL(?e6AUt}fquJ@lK)3k8XzJpSZUx3Ommx?jC}DL3<89!9IoqGO^!->UzdUS0b< zZmTn}zP28TtomFx7bo5T%GQxNk27_^s)FK+>kGLsc3sDMP3LZBbKU3T^!nC2o<7>! zk-LYb-0QhCSHQTtwI?q>yz#Ta*!{z{)W2n(!Doae^QM~@Li-4HR_-`O;)<4)Su z-F@0Fv!lk48#BJ85f8KXH|mV6>iC!~S=f9IV`2*Xp8@;_ogX(_%%?Iy^so%F0rktB zwH0xF{%FoBB3mP{hF{U5$MbpQn1Ph((b-r);&GFYbqQb{_=1sg;B|mL`?qCC4}}t5 zMz(vGqxrS4R``8M@Ee<&4Fugqs7yK+VKQVk_v@M>Vw5KJ9FhppahMf%Vwc%J2Bjd! zCO!7NDxCw9N!>k!T*^N;v+7YpB!!}Mv)j(fDmf%j!nq;Nv$0$btuRT-n5E&C7@u%L z>JkiAMRTaWn^X=92d&a-N5{#K6HRg@NtOwS7spsWS3}rLDM{kFxT=J-#uX@4P{4(2 zH|(>Wp9>`YE`h5Ymzd4&3ZmgP=Z^?Rl8lY@LRn@uT62X z1~ts8<)jjTRA~zX3yEhE%aD!etmc4jqSx-wqFy{C5e+WV3zN1OJA}K!(}$K7;4u$K ziA~s{S<(QuC^il~;s7%?=`)nMOdYjgvRt25V$+WG<8h(Zwn`=*q=sF@TUbXSeLq;GLs# zORW=4c>pK}g)5<(EtQLkp*oa##JIbMkB_jF5m}k(HQivSp&TU~fg#_!Yno-egAhm+ zu%IOjt9!G&CdX`~F(1H$PjvgZ$8w1EB?QX-q(-(+Ot35!3?TKtOBkS#-3&q*81w>B zrD1`xj)iN4=3-3wM$<-jcz@JaA6srnRALAt&>;lsxd!ebF!8oa#>l{F z!0!c#$zYhrh~|t#V;LyLs);hgh`O$GfWs;!nJmiMI@knXhhR?lULmWCr5;6@m|QCv z$~4Whzgzc_&2l*as{=?Ha9pe+l7sKWyLTA@s2~6;4kwR#brIRJab0+YohS)c0JPa~ zh-K#JR2N8vG7McOkw-fy{D9KKdt6AGKY!#tD-{(yN9eL+-4*V8fa3r#SQlh*Ko&6S z7k`h)q|03hzy$!?-*u6|-QU*_iZS)BJtRY|LIoX5hR4SiN)A)*d%z_ZI!>4O4@uDY z97?nG2By{(q#r6HeW!DBt6=Y5!PCy>w#z*15W9Q0i?vqajC97F&n1|`m1u-w_qo1| zTGjw5jK(cs&vx~B9x13jzPgb2%Feno>5C#7wruL09IbB!*wNeE8FQ{bGh*cS;a-kR zbH2Xo&5afp*K&Uym0<2423cKSQ*ga2Y@2SNaQonKI2b0UxV!YVwNT)Fe|;zG_F1)0 z_sU-1Tp#OtUKJ*sZ76u1S>mU$&$|B%TrbqwI6rx#_qz6k&9#k9{qwDY@(1K9bndv= zxcJ^uFx2T;b$n?8O z)%V}XXi31kk903~&Qy+G|9vjs9lzJ}VpYzsujToZ7ye!s7J+wmR@v=35+%ZdsXyJ5Hu(x-spmb!I{`Gy}?f` zzvs{xX#rjcX<^t}lPJwiHYUNS7m%=_764&bkqb7AC{zI64DUSP%^03EbSk|PdD zLZQ<0FG1)yXzzp6;XF_&61-SAtd2H@Wj1!pT&hXMtd=u1;#qKib8!C0fBk=|!Ne#t zp-dw|dqEBK4qk$5otZ2ExkQ56EXH5Kng}8yu_26km~~)JB%}nPiw`}vgEybm0N258 z#er5QCnELspuii*9P(rRnMz9bmMf#vwZETPaFjM-r4r z=q_4qNAn}fKAOZM#&2nr9FTb8z`BlLHKA1-TlFA@b?B5trn_YMELg@EQ+vkFw5$)p z+NnWKL^2SQfGZ4R)I1$O0(1ow1+%~H=PWH+CxEDhsY(JPXE4zyC2W?>2_1#z-H*_@ z`@9P8DFDU@u|k*M*h{Wcb3_Jbblmv3!7`&!8n}!Vn9(7Z|Db%=$a$s1SR|!HZfvRb z#oEb4%UaVp^!3uA)FQ@%ksGcDkNP0;ReH{S=zy)_!vN;ModP@X#<*@sUWNdBK!m?` zJvh4}EW6co>>|ynccy=(ci^;y^T@<*mz_A{5)!$>HREdo^Mb=H9l~X>9ivS16C|S# zoWlo`QlR!W8x4&}Aj`^GM4oXv3Z1+-*NKcHibB~?<^Qj(hJWj_C|K{Pywx}0AM*p6 zV4Rc?E2RN=yPVhvzy-Mj<|GGa_SR?;dhEX;lg<`DY2@0pNBKr>l$GA3w= z$|4cgo$ER{QegH$S?vdCk9&Y=kC+Uxo~;Y$mV!G={kpllb{2X=|8Di#Nro&? zP?pqb$&5NrH#c{(7?;85>d(3inUAo+;fMynzIPk5s$+3?zZ6?N3;mhR{hl)J_eu;{ z_tG6>&n2Q@cAtel)1#v&p1gW>dM59`JC)t-O$Fa;^7PA3WNY`azuSCm*YEeB;CQJ( z(C%vz6ED?i4uB|XD&vAykp_wMp6B9?mnwaqO**e&{J(h!q^+~1uWi=g0t>HF^B$ul{7|K8;^dxuA| z^XQpAhcfRMr^=Rwtv!A9E4jP4lvm$=@8i6Eq)yA;zN~E>$%;A-m-S9T*p)XtT3NHo zFMD$Q_B+{Hn|pa!Yf7o4f)+*tJNUcr{x3}X~8)u~$B zJd|I4|FvAG!)EKr$PHhI$OoxNh_(ob@98cgb2E)l>}+j29<=6OuqQxX){Ob#uIh0AdfW?3{|1>;6T8;hNSR>w z2b?W|&BkfIM8^cvF|b|5tPwAj$?-9^JjgK)?udNUsSLPcUg5BMWSM&Zv5{L{L?k_l zc8t=KD^Nj1iO!_~_rLUO%{qkaN*tgWHUhY&Sb!ndTy}T|R%alg92l#~04l;kp1q3% zHUcdIQ$KwA=55y6?!+n{@!43^Ammd|jnh8QVYcFpmcLC4TS1m`!Umok{9&W|B26h#=V5yHs)fv~M2N5NvOX%a*7H?_-OK`P zbYMJJn1BI@lHF2E$)uA^Rt9L!Fp-4Du-3+S=Yj*k4Bfq?V-X>=;s&z<$ePZ0IWQ{I zau1^FPoJ!R&NY&V*jKV_wc(PLUd3#ru_FB#>gwyA>n339r+4}gA%ifUERZ&ThbOA6LGFs!KGrq6acqA zHPH-PhVeO|*S72h{G~(w+TNgmzb3T`!+A=c1s3?Yn1Df?0SV!Zt|y+V4R0YvT@RE&~*B; zy}PeV%sb>y1$&$M8v@&zW5qlhI*DL!NG3G>J-1)|Xs(ialNbwI&#Uv9%OlQjZXmH6 zz-}oRySw+2eg-;rcXm8kvVZ~fF~++t9lXu_5Z~V3HNmQ{Ln{qww>(v#=duL@UR@;F z4P%6=P2%8n=}S25x3{;_W1m=!_$y`qZf+msXlGNR|EZO5-1TI~;dUvP?@ztl?#!yU zIFqNqczr`2y?CJ@dduL7&-2~YP1s6xGOa;WNQ`E(zPs;hYN7Y7R5jF-EaMjS(%yaX4I(3l|~%)<&z)$nY?=WD|vZ->`c1b&l33%#@H5f z*36-s>-XkSLB}@pojN-AK1PGfLPKIr08|v%@4NlB$j;5pl_$;Gni(IWQIks&YS*1bIvG2=Vc<}IwV(m*y^qehnr*viDX7o`Dn~n ztT@9f&KI8_9K6iKRRP&EWr=h+)LHb7J0;sEe=PT1e0lh(Az1hLM* zy73shf}RTe%(RkEO;0iAnks;GMz$_i)o1yDd(!-9V6+*R?K`^XUn_inBn&G!1ZK5L79UaxM z)_gIvn(-w)L`i2RR^{7m|Q$#JGua%M@!w$8|+Vc~mL&HR=P(ds{w@n>M0`qR-po~q%Gk^iD(8$d)L%rZI zVdD}+0MaRwT$ld%BS9IW5~y~-%-L~lMkWji*@7YWWXFA2n?vfF;*Jfg#w>f;j6NDo z;Gz5pyd&ds(owcK4y?k%cW?)3)((?00gujfugn_g#eH2OF)Z7Zm0fFDZhj1xv?MqufK1T@A7wk`a1=If8a$I_Ztz_vp z-zz2R5)W{oat|VM(g8G+C}1TPlfKlUrex5bdvSlKKyp>~ti+-2t;>@S5kjvfTYHec zj@Wz3HhTBZLAFg^qVH{=vs|E6WvFkh9HKtKg9EN$n%sGuM}pk~Q41^Ac%wkwDx;Xl zhIutsg0MX3GwZ&+KD%?>@=}@U#qGWP8KUcdBp zzOKx?jnB>LsWRLvE{R!Jz-wb=pm;?=`;{`})$era4wmFw)TvtNyIRe9U16bt_9RJ-gsg_H{zjce)3BeOpUClhbtvY@g<({)BhIS6 zhQ!a^G0$TsPON#GIf=UV=7rU3b!vRmsLR)W) zwdDZZ=)Uphb_nZ6qO3?3FyJ{lf<)~oPlc@xV3N#zM*U!Kv!pflHmhraJxDugKXWN) z-xL%C)q;DCki~`l3-ZhNO8LH5LGY1KF z4|dcl8O^*A;|#elk-)jcTuax^7H>M|XXMZTc-KMd6l3R=byya=gmlp4S&pl42FCoC z#D+|YPeK}mBU$07-Olp4C7T^)#2c8%q+cDFyI|hq9B1zfPv6bz?!$fE~SWe0Z0$@xZ8VLv}XV${yH4jgg(!+TS06k2YJjgD(iK|&k4yduU zey~_}F}iJWk}?4cj4GMG#!NLZ+oksmXQXFkf~By@(NHCI-44=A@csp|ih=~Up5^Fj z(^zqn`h*vOURu13wBXUY41pCPlb4=*4@TLYpM?YRm9=?-Bx=ty(G4RSdffm)5wZ=I zK_Ewo#s!gd$C5*laMB4IG{p65f_ygs9UUu4z+;S3MJOnfDofLvd*cU0D}pTsNW(mZ zM5>iU%#F{IR8mnhKRnvh|8X17$CFqM$_Fa(;$FpO<7+ETFR znE)9Y;8DmPM8ZqoMfAnzJXwz}${ZpIv^fTG{iwkmVOG1{G!fH5z9ooa?871Kv0f#U zVI>c{q&8+nLb_FRFQl{wTI_+E#IO`16ILintktv;l{PCK+A?9zKq6q=Jw&NsCQJn! zSV*QA;>}vUIK(326Cj-Rbi=u5>!!njp7xD%Ej9Jm0*9WwMMO9#jS3y3ORUBrHT@$T zLxx;qoiF@;Lv4xKWYGuM;cSF8IVfpI{g7OQJ>YVnW7H)X&`HW_1!e>}A`fV`vx165 zRw2e@G7k!>#HkyIK7s|^@H4A8<@ROmU$^_D{iTk*J#*XJ6i#e!Wvb zzY*0(9&TL+ey`(YbF@^3-^Tjx`o<#>79IHZ*Wb(6zx5*RN!J9n2`06LJv9YaS_ga5;>5jt1hZDE^XYW49_R%BRd;ZJ;vn8T- z`V9T*jss=Wz@MJJm33v|&C!Unb|DvMXG%8CWMg+n-o5@t$4i-ajV|0NsJ8dLKD*TK zT_^yV%b)zce<)x5{Zx4-l;sI!?jkFtbfGcU%@*Rl-YZjl(f&O+z+?ovVZnm6cL z>OIdi8gP3P{Q$g3fUcoibM{%(NGsvfx$?1|c~ z$N=}=SfQ!zSYUu`ci4pG*y@$1jLy%HC=1DGyMfvzCAwWW7L`Hw39*U;MzRr9Fejk` zC=GuEaTyT zEmk|jT58VHnCBkvRVxdyjA&{W@kEP2mB0F*f^m}bs!Ti@Z7K{r_E%1u~fM!T9_V5~^5@tp!Z68hgy+eE`$2Za z0?+U8urCb^^a#O+yg=Xt)RgITv?X04D<2m#@^(-&ER*RL70wUdr%T`_vFU0>1FRvL zPv$cWBXzsMHby<=8On-6caAZK>I-t6nhpzD{nGd8z!7t^mNoW2!dA60DF{8r_!USJ zmG$Urp-w&;*3H_WL4I!1m?Qcq%HwR61be zIO(ep>n*B5wVJ|K(>UwON}b4vf?e=En3W9Dwjni{$0|}W#*EyB(I2wixU*qnYu-V* zNw7OSbV`Pq{T?L_PIK1#(zU}0o_k+flaQ2}b&Phk=XT=2*q0%axmXp5wug=v+mmPG zk1~yP+CCXSw!2tYcrYBsl7~emvx}rXH|fLzV{M0w)#mQH(&TSguU7HK{;T>~(}*uW zocU+gwzeGTttrcScKktB_jbHic5(Z0AHYIEjcMF%4csdToGatDzp)qVP}lf_GSGT4 zxmHKu_TpBq-d@V(r6s~Xcn8I|6ve`9k~R=4(Kt`3RGcWy5)6;z))z`RyR zWM|hj?sq;9n>%~%5PkdWuLIy~c>eL@J-JozKhuAI`{r1_e|apct3_`0T2ItDvUR(E zu%qw0s}9n-JbLk!96tM@Mnqo9{o>XWXAQ(#6k@K=ZgYFDp!odkjqE*su48%Qxd|&9 zR@vrU-oO7|0q5NFd)C%>g0#|qf2l0LvEK%YP1>@t+Iu#7M3>@xH;3ZICqGsv>9Kk)@U5o1ovN=+HEN-(`JFmXRqwICzvuF&I~`Z6)Zn%n(KDgyjqW~S$7Z@!CZPYh``sjG_>}< zC&1295=Xh@NNF8Oywb;a5lJMDpz}VPvGa0N?{n`{DRpD|w{*Q*b296MySj=hHC;)P zqykgK^F*{VBp0P|n;8}Fan68{LRGLHGC!8&B~ieFAVo@&JWRrk0w7Fo4f4^W>e4EV zO&eU2WhbtRhLC<+oq5oR6b$Vl!7Q7Rbg9(J0^u>Lue z_yq4EjQp0`92EQHavZYOepU{HT}^^d3L-SXx)}Rl*$bpPh^i#R5jJ}i&fx$(e)S#= zeh!va9Kgq(QGJ~694D{f1xJ!e&>f3{{MG;T-&O;^MH*vcMv^7;ruE9BT1$=s>wowkRq)e)vNU-Gq!pf6sOiONF1&`+_2xKBtCB*unBV}w+IOuipv929~B z3AqPL#sNtHxFM|MV+HUMCu|(xZVY3r`l)UeGfrn9%l~0PQEC!Kp-YJmR$5~>f#c2K z)#aFMBNNyt;c&nW06t>}&{C4^_l6$@p1E|A-RWxU5Xr=y0abH6EI&0s*boFs(TX|N zR%+2E3;_0tuiYi8gwVl@N&@f#U{D>f!TE6(ZHO^&9W|mxy!H&`xVpYe?Qhj6Z}P`6foKyyYdd{w1;#`=rzJ%jE(K+n~u@P zsfVLiMi}oQnTqV`fGA#SA5kXM6OI|(>9C)9NYKo8QHe*ATtGAjQJW$SM3;$VD{>AZ znJTpPV;h^v+{GLfY^@OykIrRUHbyg)LM(WqnrwZL5lnEMjz!pmihqyfKz9zhhy?VA zY7of#?NN~^^p$Q!@mw_-9XbyF8H|;)pZX2!Zd%n2y7sz*Okk|exEmvEPqVkT>+AaV z{@&M|C8b&^xzq2zm7)OLk|hneA1DiL%>4QJx$HlEELNR6fKGs@HD!qBD_gRrO!d4o zX7-mn{`;od zrs}(PM;ZBz{YY@NxmaJ{^@Q|(W!MDyqqgQeg5Sao*4T6&0C!(WxYQf z%kPwZU+R2ptabX1tNMJq^6Ov!R^GiobNgn@@~X1%Kl#a*a`gN&`Rqr3M>++Fx92Bu z{wZ*@^hx>81D@eXN`yl79znAp`eNLN)i;LK&`u+LphB{2=VuAko+Ny%- z4>Hcw=_=v0->Z{kHug%RAXgeWnCo-=_|N`&(--kJbbEA z2%TG9KPH+w)oU}-dVPBfIavVMhf8(PuCC?v@88J9#icqS>vFig<=3>&niFSool(d6 z;Yz=IKj_%3%f`{RY(IY_YdS`@W(^aF=QOMYRu}d?3EO2(qRsk)*P1UNsz^ArieO<< zB0q=<16moX2|DJ;_!&Q>-JR*W^=Oqoi~ZNb5oa|P`_-dtF2S2nnn`H~rRU&&$=Q~5CsXs^y+SLxt@py?=&lsqFNqFN^R?~)*k z^GAe|N*r7X?EU;jbt{1*!?MQ&P;_$K0T`GVjml^x=4pUbJ4#3k$kE={!%(HkhVx7b zhM&>+^3VUJ0{7A-FiWPXGyoj{L-2xyCje>%cMaHa5R9EEZ839jD{Dt1K_yrnOq{)# z7uZM0D&;yzbinV-NcIXQg*y9L3*Qjn0SGzJHc(|@vaVHf@$h(I^PylZXMPafC-dtI zW3kNUA)M5%Bd97F3TqlOgv_L%8PK%xLtJBkR+YdlH1lByS{>-7JuVZF#Wv_8>aAu% zY^4Vp@8g;7D=qnzRWg`}H_{s|)T6hBDezcrT#aEX*iZ&G`e_t_HDAF-5P)+QHjv>5+x-&G$%k=E#^DWNC1=*2)pco znm??G%CMu91n!icjOh#z{7A0Fg#(&d+Vd12%WY zrb^){CMz()xnRaQTi&;Z5ou%6QS!BlgMd;ahGA`fO^57^iaA?jR8bZ`_K!xia6KYgMJWlBf!x`wbT;E4oAzTEkx1+;ajjsDq9kSz1e2&s2MaX@E8QA} z3ACyxFDtRuJUUfJl&-9-`HP^5}rCYS7-0#Mww#k%W$vbVTsC@3aGuZ z5P)b@I_YJ7Yg2}9#hLz1z5j21@gH^VEcEAF8tFKa&8-7j*L}5W&RPxf=j`TOzIpkr zT9;sNjia2*sx^(XE6iI#-6*eMn^U}d-RWy?E)yc&S5BVpmu z;UWN$()CSYk$_&hJb(B+%y%&XTXg z!5>~NbW#%X2%9SpE#R{S$qiA;E<*It_Pq^))CflpNDhem=!1-s*}9P+5e`Fysg?lS z?T}#&&S2of(`}7p!b4;^v?@G!@m5Ga7#0uh5XL695`ET!E)L4@%&a2CY}V&u_Qhi0 zcR3~tHk$?bOc{lrp3weE3o}Kfk>VxJqBLNz`SzY2YC}g?RRCy=y?e$08tr*wQVVp^ zbpnto^vl%2dNjhog|%$PJKJxz>0A=!5|9AwZ48HWM8Y$4w4I4kF|yG550fnD1Yd1F zqTcipz@;|bp2WZP02$666y!cYg1~Z{UA`kD5_B+-MCzYkI16L*H4_@55zQiE{)3&4 zY7}%11GLg0)#mJVEYHUZE~T;dl`KmqEHfJ4?E%!_3ETVHJ=|5)E)?fdlZ z?Y&lJXtn_+8hpHuEt62$m?ZWAB0v>YcUGcPG95-isn;ITwUES!w9<(^BuriGQP-nS z*mXfz(bo>-btPD`7-RV;d5hJE{E%Ek(o#sjB7`5wxqVn~cp#CSyaJHVgC*8%36By{ zuCOz#is1F=ZU1*s_nz(At2iyWzL%po&Z*uIqB4$g;r|E`sNG;p`80N%c5QjZ&Db01Ew{T#Tzzw|ZP&pW@S zvFs-o`k#XRTV=wnqRjeg^w@YF_-`1zx-1LrhD?YfBlVo{-fv0_P>)4 z@6P1<=2rF;aDMXWu>=@Acz9`=MX| z>iS-vbxj_nB%E2y*yUGXMT!T!%y)}-H?D{HNUH<}OL=Ry6{$ ztMh0qc_(Yz2XcM-K|Z{BBd4!lx-Hr|Jd{oS@3H=8`^cQAOa073-^WT??pfE^*{R-N zofVBPJS?L0Xc;@tHQ3r*Qy{(RvXVr9ap7dCpGH!aw8DU7w&fr>MasyvY6aW!zfDIiB2$MKR{CJH`QEd4|s0wTulr*09S-NFw`wANN^l@6B?*_Rp5DK)nO|C=860BNx)J6iX-jcV zzD61;+Q2y_k8H>lf2SN0=SArjD7j5|I2@0%UI>3I>b0h7(xg(w})o{z7fET zrQ2qcY7)*SW+^pD2fUkQ)VQV=fLfl^7J-S5XDNB`HYP|QF~Gsp#j)g!77`s8PNG8+ z4Qd!-!u3R;kq(gQ;1q0r9I%3LeQ8V@Kfhp=5DZm6SuofPEm^kdm4xyRVTnZQzt9eM z95W%p-;*q3thT&oBy~nz&uNn>R=1Gaylb54{wwMzckNvO$~^iZ1xz)wwYP&{QJclVGH=$_=P@V3OmlOFkT(x;Qr5`*`Gr;B=(1DN(B%`ahXGi!oBR zwt8sZ#$}VtPzy|5F+USbA|ew2yCW(aWj$P{twZBhC;1NW<^0)}2#=Cg@$u^VTyFxM zo@bAvatoU)x%R$8t78d+FidhJs2A-Z`S2(foS58;s7OTM-C^^GzYy$nI8b5OGWsOQ z4ImSOHO^>6h7Tvv7&;|>*wkPr$l7!OfBbvNy5n&e8z79PNWti{bR*|JKt3x%fwibe z&Kx!m2W3X2Zo{HlpO2Ih*E)*AWg@Ow_t{@Kgrb){e2+X6x^beSKIs!@jk> zBaa_Fky8bF56Ti-GU}d!mh-bKns^7h6;w=&)Z%VsRKB_G;4IemBK`gPO4 ze>geQ-h&;I-?m$jUIxRghq9?9SQ+piU5UdiV#_GN8t<`LF= z{r4B2Kb1XWxffCK?CtAQdGqSTr4>id_La3=*ZT}|q%82^^G{^9zNc*WzMl#Am#6xb z6=mq(yNu*o0rc+EXUb+P^R7U0ZuQu8tnU=yUSFQc*1qY>cYQtB1=cpVegEE^odrpw z4uCQKojZzA=e!J|y>`a>YT?e%*1@ivpI>_t>U?ePCfCNuei_SeU}Hs{0lVf*L9RPm z?oiFV8>dB^jor4W;LgEgS>3dxS#_G`>-sLI3iPk!>hzsg1Tss!uH$v1jCE%fS9Dyi z&(ED5HYdTly##e#`b?_IRff*?3*L7 zzwhg1eRD^S-@o%pH@im?`X%RP{X}-&{dms z^hgE+XBs8y%pr|K!y^z|3hqtD6mrtYXENI}x9U2+FDh&~^U#=B&q!_9r}@gdeDTE} z>APRa@4xwVoH5A56Ob*o_q>k^HP_f{twJ1~?}FkOL!R|Z5-kFqI+^zl6}8+hibs^# zS==ShBEH5Vq6i{p2)pNUFxS(^J>$S2zCZ;Zl;9P7#-pXB<=3#mR)u3gJTXvPFO)mh zVDBp{VzEj~NTLgXY~^SAi2kLdR=T|YKv__2Sde4K0x3M7{9kJ$3FG>4t~seEk`W4? zO$Y?Yv`>()0pxTRoLeY1m^jrtI;(vQ5-?=XtvhPPoR7Kw!q;Jb=a|^T-{znH%m1#X z$5>^eW3AML2;H<~vShlbT07g2O5qT|VjRi30$g|q0s|BWmn2w?0f)!pjZ<28(E1TW z2_Or`nGB*-CP3E&Tx?cAR1=t#y4uj&2axWtHUn6*8VuzSBSJrR=&;F5C9tV1%2aT` zjg3)sCTkuQaU>>@Vd((?Q6`H+Fc$>9Y`_!XqzA|=SUA{}9RL%wbEyUIoBlTwUTOnL z9l%#7&7&i7?x+nD)+uF2%(f}b5Jm^Qn%DK)bhGp@hp}b?B0WgfL+6U;rpR{dg$Z_& zrT9|k4%RpmZ4;Q#lMB`OT2V^{fD71!GKSPY_j!rQ3|Zukm!2 zBk7CXSFgZ<%i17!7?Jp%G&@3;qavyXeM?J92apyTV6ec{NcIyj zO6Ml>Zp7sX0~1@Z9^##1Kh99TEcAB;jsc%la=ox}OH>MI>zg)UU=$}w1=tz~&q(#I z!A{lM98m)D408_YNoDke3>cP(P)?O33eL<-_8wY^*^+Cv?W17DpuH_^Taa1jnxX8j zPR8Cf`{Rhi)Hk2>dgxv$2CT1%c)R_jGP#laGPqXTwuOQB8~wR4 zho*No*@b=n>7zqsf^YP?cU~uZp#b6f{0i%}dWT8VeqSrdKfk>8f3Fg9LMuhMxwh{5 zbhG21K0lPtK09(Esqd|*&)j>0rs>SPl~w=wvx8Y1B+v z^<5dPB8vi4>lS;e@AUfHmtH+*816Olv6LHi5KffYwl#HgcjHdX1X?B%cB?T%J7>u{_f#cpY>cm zd^pzUSDCbNObe-DXD(o!~=aMz6v-W5y(j!5j<9weheEcAca}3v$FS2p?sy` zP`6z(NU~|)$^@WikqWv7G^Ub-Q{t`K{xwTf*RX|SZ3S8iDio6VqEv?RX|G#pH9IAzwM@VSUKo=)L+Q1W>|KQxt$`tt7NRBy?vN1ZNn$9S#>Co@h5+83 zF-*bAh1S*+*p|)d$b~TkBSxuA!8mYpGK!FHAP;J6E;iF4;OU{!FL>4^N*`8My5Rj2 zI6(>w@En`Q7eTNTr7^crQ6LgGGZ_XFYHUnIQp5%vl=R11hV;*FsWO+w2Jwm4fjc zGos>aU06Mc%qlYTo4t}ONhQ+W8|#}90pS|MyR-UE1GeE5GGP=8Jz17kuC;4<7SbGu zU>yc`&aAXu>x~eAoLzPWpA)__{hJQSJ*aNeY|F=04#=c?sFaQ6q#5UsD-EcTE12(S zR`gL7DL4Qn?N`kTB{BZkw^C9sN&8qQ(kj|TR?y+0lT-#A#!?&OPus~T*0dHq22~iX zY}!gXm~)$WV&s-b)V6~^Ml%DCZp-Hv9u(iIaKyEIl=NAfKuRT4$fa}b=;tsO2w&?(Qp)Bqe zn9lq22L*WQ6j&t~y|#gM0|?g6-rL$M7<53}NAAeI-up&Bv!Q_1s&DKo82{0i&lSWg zbG$y6ix20rvArdG2Kd%GPv*1))+1&1M`Nw@9;>UJ+@4*^(er1rY00$RO3eK%Iyu|E zTiw`-HLTA(I1_y=HwyT!j^8Uo{9d-UHhlbc4v!oFdX<;kTRFEn?fSkudVd>hE9p2_ zwsy9zk%_H6eWq=%$ntRhUbdC>UZ6L^3`vW&Zf(4a>8i~sG0nf{@C=b_WcdU`lmQMY zU&ssB)B&+lmIi#4ACfoUeyhNKOAa6FIOrK-m1p*zd?ssK`nl^1k4m1tdnv#F+h4nk z^;VzrOaZw$9xFON27W!_p;3g5O=H~GTr>XrZ{EtrhOP%6v!w&b8+pg?!JESU~gNUxJ{osFU6_b;?@#&x3)YtZd;wDbBzi;m@KpJQg&*# zwz#hc; zO{p7*4*Sk>%sS_6vgVe{Aq37Sule4{8J@FV>8Gb%l8@|>Ov${i5l)oXxxO2kei92I zMJ>Wgf|Nwh*j$m%S3_p)QDzVm1xgORt;4kVElUiJx2HXPm-7GEri7Un5^Nf4M# zMl6JbLpwBHt$KY@>Z8>KhHU?ZF} z*6bWd-LpF?QWB7J;n6ECSk#diEy<`(L5G86f4}fqw${HaT609rXU z>CFSI&CqlzmVIM%W4uuQQQ)`J(}iQl=mUZ2K*>fINyh~SrU7eg>e8+kfIXaq89;ME zjtSc`b6wMjvXmut^~{gRw#xWBft^=l>cWYlk>z`O-U@Vxu31NTm6cPf)O_y_m3ETd zrGcy^BW8GXJVOKhBm%;*oB?F|?udh?1T!I(iLJ0BQiP?t{9W=L!xIZhUP)b}OG6g1 z$H<1rB$+7Ld>;?U-74QD)(Df_YdUKs*G`zcI*HD~nX8cypWR_cRF|sM*&|UDk}uX< z&IBhoP_0HYB91-hHa^5sZbe#Hm!FOIB4|ff$I1?`*kh(rA8Hm?TNEcx-ylHNt$zJBL6@=`&Ufp;r0Y4^FjymA?zRixS9QLuHeB`==uD>zz{jh!u* zfIR=|Q!m44waH)o{-s}MU4i`T@7{Qq)MuZ5;tB1a{P-sdqLtk~JC8c{CNt5WZ|xqr z-g~Bi*b+=nzW=p+^Vk1L&J?;M#FWeC@kbZZ0DVy8dvbq0AX3DgCg^cBc>)dT$89;XD+bWq@ zX-oyLy@L3A1G)ECxi3x1Va=s3&(1tKwV0elKYRZEgP6)=q0Y|wdUSpr6s&C>K6cw^ zbLH_WEpLhq?ljBSM{Hkm}+V=fu2smFK9URJuH_r+J&BlCR_s9O@Be%P6-@lXN53j|# z%L*|Ix(=rmC0Vr`GE&@ivt-LlVj4v4q{%KavI@JJGQ%!PtOgkFTLcs2X`f}3n{5sZ zLwWCnG$kXAJif4lAXGpEvBF?Ha$r8eIcf>4B;Y7DWOX*;F~^c)i*|~%$a~zIFb;FT#o2p1IY?>>E@_Otto*ex#N99N-IVY_Ppin$)o}obM06@xr2&<&8=FL zAKxt)7ipvwb^Kjd8j(9PZxA?boH|fZ{b&aAlet^{Klx{W`g5o9SD-1CnxNAq5JDLP z$}#caBg{BaLmb7A~;T8ogj1g4Jwt97%B6Pc~-_7QA%OBm1Cb*Ti8Q zGpv@)8@kf&iv^khzZ7ZZ1SOp>0!eRyJ^{j^eMX{Oh5o;^e;<}Z(*t7@O%2%yLr{?% z&G};WnRFKUU%^OqsP+M)k|jnfla;X{`)J5z;d*|S&rdHr)^c+S+(CfDLal!fRyBOT zSmQHguM#AWu^zi_T0x1RvE<%ih%aO|k<6KUXx62aBj-|@gH4tp8DE>)Nl8DIehGj(OQ}W01t!?i3F;~jj+h&E#LaMLA95F;4=EUz zArqg4dnbXi(Oa z;RdJG-eY5CG7i%o-+G0abp@UVetHxau1o z=u%nhYq`E&I&izXzEvjjMs5|TzJGV3jHLqq#o+9f0VT6N_v#4j?rq7F$A@Yss%xhA zjBVZBlmq?QY`*5tVtR3Vle3dc*P5RxaI{3sAO6u73iKb#_35=&OtI3AtLl(!?d`kW zTHD(8#zIzO{o?g&xj25QAo8vJ_HVz@XFB!qxKjsXSMT-s2VctG<7b`&Vr=;O&YtWl zIN#hmQfBv3os$a%)prpc^5xj;wKx5q#vt4JvPMj|XQy&|qD=nzsXq6OJ4(kdzt{V} z@yNjK)w$d#Q*M%z>gVfcCiYC<7)d>uVYjIF=8uUc2*TNu}!t zk7Q%-&=dHtj^Akn;|)ZZ2K z?(h45j}%;g`NK~Y%y0YmtbvdLq(`4T*Jy*zk48UCqNG^bl_gQ)*#cjN@{p{B6w(M?icmzh&+27Qt zjU_CvYNTazw(2_OQLnqDPUvDp3BK^x-R@hY{BU>2*RMxUbT3)L^^-?W~AZxN=dO<4vP%XzGtk{HT5ogNv72}tZbDiU^Qg6BwD zLJI13v8P=qAKOS^4{$vmMeA^eQAH7WHprh2_Z6NtAg!DbAaP53NYc{m)5@ePsh|J= z*mAG7H*4Q#)Hp~Pbdl}L1b2XR@(=-Q%R?$zODZvDGnT>@VV@3a-1&%}^49U(2xSSh z2JwG5{~Jb&FZ1|_dz1wEDQPMb86^!ecs=$Dh~*yy7UzX03DASg$o#~MNn`HdVeld| z??5J*oXRFUWP&`bH<87}fCm^J;kj_}`r@h{y~%^JjtyLUL!P)<0CiUa3^LWr3)!;T zbWYK1V3yja2!G>%!#f4wn1-TDR{p46w1xMBoYhcjMcBQjmbSoStfeK^rqeOTyN*mI zkSHT$&+X-%1RZ3B6-H{XyS7;ALlV#+yL@0$-U51dBs#K8rf}1ZkPhHF&Y)Ilk{$~! zna0sdWQhnXqzJ~LAR)uq1qtT6M+SIdB2A&5eslvF&l$3ZF}1(|O<34jvPl4L=y`Ts zfE7{m!vU1npjI}2bNA58 zA6_UpHD-PH=upRSO^(0+-Ydj>IDI3(wXUdEH(rnCBfZD&z9o@5#PRid{^~n<^X9!Q z^*uYCL#x|vjIu=@_W$^YvUBuIW}DmImGtiXOx}L;d;hnK(=&PbyKmje+fioS0M*6S zoxD`w`NKc{v25-rn|}DrOI@D5dm|4zm$u$cKOD>Y#=6_1m3~dnj)m+ixLv3-cdgev zQRdz%1)W`9C;4EPR!HcLV4DMov3U|%N@}4q ziLZ{WJ0ZMG2ggXh@X3V~K@wgS)cmYXHx7Uw?D!&qDPdDKTA3iF3MYUQ?^Qie`fMZs z@fA@JN`~;ZL|7*D<`qm>pJ8?06>BbJ4$%@U?hQRPy)7oTdgyt+(m%IkkLrB zkf)@RG$!K^20N1MxCUqqA+cc82m7~j@k^i1Qpma5d~`jXr4ArF#xy!=)|8<5di3T( z%Vc&$YUYH9&?w@O=(N?E3An*DFl-p%S(CsRFfConz;|6C-XVTX9Imb#5G-KIgIV_zdsMTkZk-0T@duI9Lo|81wk{?JK|M z%p?SA>y~JM(vy`p4flotXC$XOK+)&6dh5q`vZn9&{+*TR3pVt^n)vAcy|*r+cXyur z=wPHoa^9`7kybnV@!_uQDIkA$eCn*`{=v5V{r~MB%g*MeoPW5MgGal{B47FQfBM7E z<@?`#C&#Z(T&Ap1yb@&%gRo_Md+4L$bWTa>eFf+n zUM_G|whs=Yez^fmWsM*17G4czRsS^RFKVAR=WaJw)_S?K`s(Uf&eQ?1 zv*Gsa!kJ~8hSlvIA8*sVZ|y&EVE=G?0Xd&_i`8hx=DvdAD>?q|TmAf|1Nu>&8 zgvsXU^7JC4EjnG+adoEGyuCR0we;vmKT*fzvD@IY_iyC%-FsiVbEU!Gy?pCY6Vu)O>+P?lPK9BZ*Q$Si4s+t#6f)>bxzkhWwdww9jvO%Y$+aiG+Bn{*qjGShYhq(ne*5;s7yRSrN1kB3z81CbPp;3AOdbHv_L@nM zHn(<^$-i+dQ1rb=lPGC);r#oz8Y#JvO?8ZR)Je2O`1IK)vcG@iIS^a>hjM;l)+L~Td2jNnk3_ByAXe8(4^4wW^+i?q=Rlt@mL$Z81BNnJ{w!OK6 zgizZTX1`4)WpX5Q0D|ubhS!K2maJw@l{3b*6LvUe9!`)X1j|LH#ViWQg4Cmz_>9{S zvq6x(7RYLx1ay1MXk|hFhd2Wn$s31Od8&qf(9bgFHI}|404Fm~Y~c85Y)TAIl3grd zR(q%Ynd`)xr1B%ru_E%(*;kY3v|r{(tgWu8t$A>q7R3bwHZ_RJiaf~*nMiPClL#|p zmK;M$7zb2m3nwAoEh3>vTxQcw;GiHAYxGW8E>nq;jtB@}aXdJrz4snQfAz2bvJy0< zii%-e9=15-><^JtQKU`|@f6Y5@SKDmR+ZH7lrAA`EJ7?Sf{>68;2@c`Dlp^7L{4a3 zE0X{^){DqzD`k=tmepn?S><*%Mk1Vdcr4Kl+!t{H3@mXi0_NZoE11tNi~4860+?|w z?v4|O@$vtk>LdKbor*D9ev2fl?BBCRTv>f3K3|alTrpN0XUPy6pefd@FaAza_Z{qf z1u!Pt$;}rz2^Ni5juD>BZg1FRvGD-5N_!7_kp4F_QY$MdIq@uQB-lm-B@)3R!MNR* z%yV{C<1-TQVjf)I=FC4F#ZnquK_{uepDNJrNvojJL+|con;>Hvr6#z>LkpQ$4lz68 zx>4%`Oj6Uwq($Zr2sXG^;c>tjnmi`=juYvUXRSj*=f)P&9pJy5FRNe6<`p4#Hf?u! z<^wdH>}biZs_YZcofdPhNNjVt7 zG!sHIJSNgYj3c`BflZ;tJnjW4N+A;jhkh8-Atz%mrAfqCou>wpkNXwal!3`oCE1dS z%0e9yo85^8v)wak*7mG2$zEr;#2#(o*qRX+meBO(YgQ4Z)I7ZXIl7XvDc@T|i*U7y zMo1Vaa1P-_jM$&-ej5?W&Oc-JOjyqt3=s1MXwyd2m+ugz@jMoZXQ(XKYimvcaM5Q! zQwGt1lT{+A6UNBaq_LTYJCEc}+2gCL({L`XZykKyzdV(dssL62?uRq$UU@HP%92}Y z$9qTvR^YrAFDVx~VoU1V-`!FGxF)~(`jyKkjuf!{{lEVcmofbA*Kg#%_$Pnr0R8KK z|4TV~{@9aM-~Rr4CqoQS&$l<^Cx8BDa`fzlkJs(xSvV8Ar5~=Z)LAxAc;!Dhdb+27 zJ_${}Iwm(~m$G=UswRiB^W;#+XI*a2Pkb!ztr3t_$FPYb>!}Wc*^>4BEnj!0m$z{? zS;)PD-SwRf**j#D#+a5-s=0_=y+S=?_7TOi{HrI;!<9` zcq$uPTTz4l;>N-D`MY;wRk5s#tjUdDzB-Z5K7THwt`Dn%W8-bnhu{73w{oJu{+sXK zIM`g%b@6C_TfwtMWOUwje_ZH$-|Bs1kM}zNry4EUktdJ$-2PdVWxhLC2gMSNSDblV z-C38Zyw!fUF1fGYojMD@rR(7rfAgJ;%7XtN{}2CE?)6z;9=~<1`^NgFgD|V>e|~fA z4Z#eU+1Y93DeYXd21*tw@;z(a&~?oW=hre^UCF4?2|GhJbo^J;S^dEmUwJu7bEs~Y z>R>ACdSc1ZiwEE9#+I98Yi(s+o<4dkFJFG60RPVSswGd~>%DK65%siR0|Ba$L|tGf z8wVrYT$4Xap8a>0kUfj)Pi8Z{Cqx|~v*^IW2P4HZqD-YUV@p^Mn}yQF_R}8!9$yS# z4HE<7?=~ga?1d#8u601HC>t1hG~`H> znM}31g0+^5dJG090OBG*iY3i1D-1;#ce0krJcn1&u3eh*7`BP!ygGkJ7cDI(&5dIE z;A~3FgEThN7yzzqwtKFHUOVm`NILZS)Z%lkgY8Ji7HhCVW<&{%mDw~S9i1=Hn5+tt zb7(YcN=|5i82Or^ArKiCmy1-g_yslt5wYQ8BhCgxA-|DKK8-nuwLGE$+cdACMg}pA zG@L{{*9i8R`56Vap?0x<+))|^yh9O6jIwHtcMxQ&aDjfZ88#GjDD9nGE7dR z^aky;r)*Z4u<+=JE6c{t+tByf;~`p_cc>NZHi%|>SC^OG zrP7iSqo2aefnyx%!P42A+?l@nN&&1%`Jf56F}S#1$i?}cSAK9Xhi;bl%3@#ZXATsg zTWxmx_1GF0>2q#aPKl2BfBIj(^9m?G`24B->`y+`wLg=8^Z)*Z{L{bqbG`3OzWc@R zNFMFSTB6DSEl^Rvn{7lF4-X%qM%Fy--*5(^qGAR2xEN*>|8`FHN z9LVa{hL@DI=00X$*SEIad9YH4RukQ>wYa-+Nz?G=#^--^ zdoOg(zW<_t!sYw-F4I_|;oE%oP+t7(E7{mN@OisA{os-bYZzpX$H}W#zTT|4)O-D| zNoV#B_GPy})X|>H$=hRJx7Ye!r>_SE@RthC=W_a+m+FX#{K-$hlGBSjugYTYU~Bm| zzxqbL{pLIQ{rBH1Ans&S*TSXT$eRzRp4j@uiz5f3TMEeMIxffW&*bv#%JUJnGXm!-}d-^3G2a|pnF}S5aGn-@D_beL=!>9D1ZCAZ{+X( zXMazgK7J;@{N`^xdHL${#=o~_iKkalT2#DoovuB7cLPW(YctO^SfE_s>i&)_XEuL2 zzPe7#K{(ouciq}LRPcSRK-`{B$44yR7n{X=4^Sx@2y#W`l3upI45A9*R(brvUyk4ZSWRpxdM+gZyK$B0dE zE29kApMu!O{`1CeC_hY0l2Kr(M7+YrmOS{!Qu16gu-#J%(zQ~Lkwn=_HK!aJ0JUEM z=>)P>lCL1!47CR^h}}LS3E@PvWZQT?J3m}yFh(yAt5)QtD{Gty9f-{UzXcNO4g?UY z_zlDYBszyi*Z|kWU%=GoI0zyLQ<7&yG#5I3PcRRM!=lfw4gqef`E0n>2wVq+fy?qr zE2c4`NB~kxm-G`K|3+373{l7u2+9!#LZ))i`l4%;h2!wRy0P4 z5J^w1c_*15Nz2-;|m1~Fp5>O2TL z30c|ryg*VF;1hsLBHZTABDWF1b$qa9QyT|_W2@!rN!(%w(C$+V}VRKoe0q1uYA2^%kWe6a4*QKS=2 zqqVSoO#_PJj$o5*_j*Mh&rR-JrbCjQ`7y!X4C!18l9dGYtz%wWPRkMw#0u6i=V_=N z!k&;5Vb54QXxn#I>wm0d#Ak?#)jSAVQ!lI;*pJAOfIQ3}s{|Qh><*H!2<-c=pR5;j zrk0S*u{-SoHTlUraSeNp2g2yCx3#F_a6fUrA_`*%#)JOZ5>qRpA+xz;PLn15*%-`Z z+X3vo$zN{nA}V!1I7@701uqqdnsa5{D^D-3T>JZARJMy*k>YKOnr+@y1>?sjdUwOe|Z)1?A(lVr>{=kfgNL@XUZj^4PaC}{7MnVsu+ z+?<}tZ~pCH>$4P30Np;?Lsb}MuGL0uD2VO#`t!9Y>((hTVQt`#cGu;6*?DL1r(b*? z4z=zXTUQUa*Ri*|2Lt>aa9D^M-6F z_}=;KOC8^B2mEG-E?$4@lDoV68wIhauGh8-IOagTdG$`C9)o=Klh5V-oA+|10DW8E zp>`|st6%ls z{Qh>7$6w6l=<#!%``79`UVDP+wX*TOuEA@4W?Qv?@{`Zx-~8?0%DXpb^7y&3;M=RR zs$={9&36ja59P`3k$iXm+UNCD*Uenl-SA+NtpT|uk-OEe^(i6g`uMX&N4yf1*{a)B z*;7ZvBH%XG7ndipxw9wl&t5reZ>;=zMm+ zZ)C*WyS?@}7w@fnB=)tFF;ct=j-3?-%J0U|xmyWUn}aoPvK7X`80IyQaa+1(?DxyN zdq^)}Gb?-30AK>k+39Nbp^VXcfenI8y2K&`39qD}!#iq@3kX36lPoF`QPvsm19CXb zG7erQx7NgP1nnlpi=Hc${W1(U4IL`KfVcyZ8WD4|VV%o{Es1qR&f}00zvv^A@4*5O z(j}oYEgZspqrfoC5sc3Xof$+l3b33-1AAdHmLLts+9N8wM6{ju6X3iA$D2X;8kjZY zvVoI4g5XiR_;==I%_!9z;yksH9QcgVWUA#~{OkX|vZ6&WLgD#A>ES=C&@FY&u(5L= zv^Hf-*4aaR-3$zsBsgICp9B>G&jTJvHUofuy=D5MB;VNTSBiwpB@zXtC5|GDTLF*+ zfQca_mL!UMEFAQu&bQ!I!SDt<*+Lc-n;~m}`a8v;&V~%Jb~+e_ju%W_auEXF(CxFn zv;&95Ql^b(3aeREXsZF{qQ>W#Y+!)p4n1vau(i>}njwf|# zJ!-joIFp76pB0RAoqF$S@LHCCPaSuynYb7U!mP_XM4fl&t_k9zHt>*b>_?WOs-~4uDqv3*}5Py3_8basCw8u%6)$2iL4WTtF=N+DE6ql7|So zJfrS1a~GJz&6>(}B7>uRkaL^i(n1*@WIbIZi81%2!a1a5hU=YqEv$7vPAd3#@qk(A zVWSf*(oMkl!`ufu1|7f6t&Q8llTYEm8^ADI?Q#&2D+P{A1qt(wRo4o4CjEMdL*HtS zA8v2?yPPU;w>|xEdK2}s6?~n&xl|VSPQlKtoGIY3HEq(3tBVV-)xEp3`B0Gn>vbn!2w-?uPe|0C% zzWPJ~@40^eF7iIA0o515%BsV9bA0CSY3%riH?L*i*m-Ltq~mH}Zi!^-yNgp#INdxr zlGURZI`8*#eeyvz6fiFCuH}QW-@RV@`1n{Z&#!zG$FI(q%MOo8O*i?{L#)GzQ#Xe)mq!&n`XsvHy5a z{?0%6sl5FDrAA5CWpi^w-n>20=U?%)wx*Gh|M1t}sI#^uFMt159zC*p?VED&Xy0=H z?v&KIx>Sc|H6#V^UY}Z)wijQp^}M<<_kCt1M?G)D8aA1&vkH3Z7+7qE_8vX)+Va+Q*7nWS-L0;xxjGP^$}1grt5US7^YGm}1^Mgxyq0)s z(HC{d258qeR-+TERYzjNyLUJpswZOmxeEXvyhtxQ>+5b)9>!qp*KFVE`rg#_{Z99i z$JtO+z!~-VOjzeV>cNj_G*p4fdbbNJ=$Psio2+pn8ZK238LU!frfTVluJZuZiy?t< zoUbUbF)pP{a%D!TAIV)whLBhrJz_EoEC7CpiUSgyWI#zgMWC|7`HS(g0w0j7g|45S zzT+G+X;}g2O^^s2;8Ae)PNLr=Ai|8t8iVv^S8f(`2^n<|KK(!a-~Z{)nN946NNFrLGlN@s z#l{u|V+hS7Lck31ruGt{4hLK%4vQQV2~Fq>A?%V5J!ELX0Y71mO`unan8+*OXk@}` z1*6SpDFp{@9L$-B2H-Jcg&F}nSLyYY#`b~vVq5jl6n7}0C;(eA4t*v{6i6{jYG9X0 zK(+ftP0oNA12#$rcF=zA6?+gtaB!c%H$pzM2@ucFi_ITG*ii>u8rzD{eSxkuHC1Ht zFb5tb>00?EZ-OAu<4VnOkg+zI4YYF6MtNvpH;_WgiU#VdOP5SBQE@B9N9j`eNMjwL z|2mPyAZ%B{d9)u|C5z}5uz(tn=Vb6j!)$KU;SEcPEI_5^Wxo^oGQ3~^63+~I=z*1ef|}X7OI1AcJ7r@Huuyad2%RM z`W<_g&An||)#qMaVbO)&YudZqZzU=PZS8I9v+T)yd)LcT-dZ!FiwFPS{+E9wJI_CH zz5Ii+z$S$pHOlek>#yY(|L%YG5|7^~!2VvD^|=DLlMmm);`~+}n>%lQ^;W-g za(=0QzxU_ff3&OrZATZ%p?Dp3OZdGyzm6L2x)zLefBN{5d^ow(pXqlF_ti02mB&XK z{ZL2GBF0vs#T<*@fBjCr{!hP`zyAMy;|;xL2Cj6?-kx5`+?Z+w{x@e=!JgW=jYyN9 zR~8Yo&z@a*6n}ej-S@%ivCgwPK$fU&SYrS2V+H=#zDJE1dGzU*>Xd%()r@RkSpw;e zI)wwyPm8)0kc8_iVbcs3?CJa2{$5{QNp{&QFuA-o8kx=9#&-br1FErgvab%^u7dgF z%gd-dHG~ZsQI&+nIzm2&=pnF|fQStHHpAyx^`*E}u`jI*VPFtDOHg?ZxP?U*JdxHD z)gfsV@MLD&jZgwp9+2&0Z9GeJ<6Bvf!W>(CM8J|s^sZ>Mb=EqUAS5f!BX)F;%zB9i|=oDokF9NcA>$8l9ol?stQt`d zR{mHnV=SUmZfwdCT4z6q;ZU)ZAN6tss`cv~v*D3@s>=X{Y*Jw1HUg_6v3S$1 zDNU0X*9LN7G{pXm$+@MpXa~Y(ZaSP{oPil+q8+42(!ib1Y1d_>haE1X)9DQ1tx8h8 zdBGU>aAKO)Pbx!m10n&fq*jHoh~!5^2ga6s>g7S{IQGT$wc*5!F3Vuue^1oR`R{VB zLl#ogDEer25f*c2Ljh9W6HZYwyGS-=XU$gnvpLpLrZl21BP3NEpGdxq?Q4}OQg&9F zA)sT*Zn2TQ-yB{Z0Kw>ov+7!PI2g5Z3}fwf0RA08bSddf2IFMUk6lt5qrq$P{BQ${ zGO1&o7+mZHYhJ?vWz#k`yBb*8AXhR=f&u7C6=warG0p^A5EDhRArTv_8E~{cIb)(V z$G^7R6EEMmjMmAfIXyZDN*ut z>Nt$KZ=>ugod*HIVvH0U0NK3v2-EiZIqL!%QOA%!TJt5FXFJGE2X6Mx*8I-KhE!$K zhua6C=I2iTZU@uxn{)3{IxIW+{i_f1{==!4SbR`0w5kB^k+Rb#XV(hKwq>Sg%&S-L zy#dabpFNQu{phKjpIpgn{hn2o+1puH;Qt_h`geYyKuf#}>e16fbe}p4SyI!7o1TB?*;AS6@77G|?($sT{^ncRQU}2k)pXpgrnqUu z4McYOt`>}$@9gTqUA+_Qs{VOZf$W2_>Zk8dWXt|+-C!*-)nrGeSzlCTwv~l`{M_X% z>)ZQYLB_`Q;Z{Mcg2K77xu(sv5|a0Nt@UkVHdpm|71VBQ%Upj~7$n!nuVi_uZ0`P{ zj^Bmc>UI9(zx|ttoJnZGegEj-pD6%6R|m$VL7NKn_MSXaM_|uo9pC)oxAH-wAzR8g z8-Zjb^Y-SpJbrp4+Z$^RCXJ=PyS_zpv`%)9l;O8p@$06Uzm4%wkbQal!J8sk$5Ts| zy-;WD-5VX>5&+8e+TBveIP~hKC%3YmA5Jf$ABL{kpZ)odz4_5>UR?8TiK4p)d&+R{ z>orf6NngsL-v4j@=f9QLZ;n0T^~XPaEOovuFTVVNynp?j{J;L6zfgzel{Z}5F_v8C z;O)toviuAAGUuEQrk_)49*_c|Wez8CM*QCZjVF}r)Id+N@$=tUXxZP{Aikhi)9 z&rQx`_H7m&fNj}YXIQgQwq9*~))ka*sFM+W7zWweFd5l{{udI{=lUGhz4qI8r(T-U z6I(|}57k*S+hm&f(W}H+>B;*bR%+BtX+Sa9aB=(<3D31_MCSjWtp8k+WX-NbvF+}W zA|gXa>dea0RY$h~8o;graR2-hYp=cb+QA_O`-xyY%@~rgz@7!q z>`X?WCdvgeuq<+iNJ^EYK1ufB*l-P5mNHii%*;ko=Chp{Q+KMd{VLN4MV$aW+evDj zn}ZK!lP z3clB|ojEz_i8=t?zwNmw$Fc$O8}^ic50dE|2l%D&J%!x%FbgjzBMQJpz1U~uC#no- z!J4h4A~GPCkvJfibY|*>fqKK1_%Mdk+iPc*($24+*$Wn!FWPctwFE>asvEcO$}Jyf zs%!OtEi$%S4$^35A(j40$=StxB9Y4sqTH1xuv1EhYk`xq-=;?w5RBn5pyR;7J>oU; zv_sXI@K_}TL7yXe4_qggE*0<+|EJ=Q}xbHMZOdj zLhxz#nI>g9>;y1-+RSKmXF#A67IzX@ zsV*de@z(fqMzPi4%$+0@hXSq4imi2S;NAGUcNv=R7l~>2Q?sh{LSx^oeO>FmI5jFE zl0YOcRkpQb??HzxCAZ1KZ6#?OY7jEpd^2N~jPud5l`IRak{y*<<@B$8^h}tW+z@ z9*QPF@zO0_ym~8*lB%m^X)1*Ycl`2DY}x8t>vYSE_$7l_tbyK}H=-AZg69Ta;2e;k zHltQ5FaTVlQe}z3=B4br{yp8b~kEDg#gK8`E0`zW_|z zN+bwj#_wgqtSYDinOBn`4VdBYccEK9q5ZQC75THTr1pjP00!w_etDpBNuKkI41{Yn zNKTeTHgWdqm;rUdU~+-pf4D1i1M(2)&x;H$VGmhb-IgU`Sv7_8D#6UFWau(U+e-mu$gz*H-D^*}fEg?mfCsCvOh;eT@VhVtmgz7<_a1 zmj2zp`H2K9clhT|PnPJo*P{_KKGM+ZO2+w==gcbJ3;!MZas(`tE^y#;!}GpN1rCC4 zFDp`)frek$(-%0Jxn@+o!kL@3Dhh~s&6G2dGG0Ma** zK}j=dj#Xj+j^MVqRFd~uN+Mw_1S~cy93I2S`>sj|9k;tWq%vEG6aIM86KBpvhnp2mn&SpWLr`x>(bUtzD zHqA{m9PcFsH!QJCy=Bou(H|lI!^K^+jG|ki)5TQpZ%wyYxImt4;@OHMN_R zh$!}^JCq+tCaDk>->Nu+6=0G_K6==hl*JfG6c5DqedLFmF^+OrMUh2~irQv#(VnEt z3pqf+L`TwPCNCxnMG&|=(m=47q9jk*JMfVvJ*hSn(nH)1a2G9UN`UgVxN%_Qoq><7 zA%L)GX%woQ$^KonYHHb-PR;Tz$WN>RQkpL?kzT}JNJ(;-K-(Xh1lS_-##XV;F(C0~G6oS9 z&upWxTe!0ewnCRCNP+Gw&F=$bM6AJTYQctesJC0@ugA)i%E3OhLR!~NTY-$vJ@2)k z0L}I7$__}a!Aw~K4_I@Vkgf-j!W8uDa1BW;t0t^@tm`aw*C>2OY?-MLJeiD6K17St zTv}pVtp$Bvuw-lm**f?2Z+nBxOV>@>9-}-;7FeIi(zv>AC>cFk)W~Hy+C;-Um&Wrls>J>9O$@bm6Ihogbq~r~u+(Tbb! zdRTw`@`P3x5H1y$L{b2Ek`jZe<>eCXzdE4%kM_*bXOWs)TU4sAF@QgnXGM`JWIrVa zj(BHn2EJ&p)Mut#x8ACA zAh1HwW+qHP>07BXJ^E~_ss#c`?qw-XXWl@Q=aYc zxF=1gQ1gH}S+6cj!RO(NBf6g4@caLSP7e5f`CR+nU;jCszkW_f97vs?_UMeCw>P{I zfW5|<49vB!zCNMPzdE6BeY8v4cN#Q`tISw0(;743yVZ=&kJ{AZpkimWMxTCt%yV!m z=R|jKEo*nBv_$30l#XxCBoHhW7Zog{^K^;#|HWmw-p%-y%B?c(JznELg75W~Ga9ir z(g9ez&sy(OJHMtz0 zU;!>>jB4k7Ytl`fOpX?t6ioI6Pj*&Jp+NNZkM{SdGZKQ4+S@?`h z*lE*2#-;-`>7J}@%-!2G0RG6b8D#6ip|R{SldO-Q%r&DT{kAX>=G?QT8 zlj%CsuFw8iG{@*$3K|DZ!JMX`0cK!PfNUF9zNZrJNLF}a5kW?Ki#JqU+4baCLJDL&@x|ZhXH=4JL0c1%MQs3<|*GJYFRd! z8Al;%b*(8@jd<)q=R^Y99)m!*vB2S@ur%W!D)lmT4o{g; zk40(#sfIYR@O@O7@rPAqW3$fJSQ0<HCLM)+%Sv&;ax2bWfmR47Mkv>s~NNC8}!Hb@6!@9{V2SJiw(MvqM=j+MVBpR z-WhbG*k0xb=G=0H7V9mltlr_ZbWKNJ|DL}1$>RRMghjWzo8H(%2Z2W&6C zeogE5?$U=JeL&BD{R`@zo$~XJ>697%O@6=2OIPx28ygiV9))8OP6#->OnE*IFAk~A zU=}3Y>Z1(_5MV8dVo`u{j9-(3h4CWfCnP~305{%wpEC^6KzB&Zz##tcbe&9iL6bqSCM;QDPFN;Y<=cl**Z?4 zBbjK4wO}kn%Q3wp3zEqCR^@kEX59jOoJrcTY;HiJySr{0eBKV-ESFSPljW<<^%HJ`4Kb6Gg>Jx zlKUS=w~$FJGqZjv0oZZ7M;8pV2XN?+11uA-cDQi>K;7G2qy3W$+Pt$tfBwCvbo}~+ zp8fI}1Nkxi^?&~zYOa;&mp^_+4QA}$ylKTl`Zs62f{$F zaF8!ed|NodjARCa8@J|Qlvo7zWPRd#t|Sw zVzhDhjn!Agl8{mB*h+Au;4TkhDOW0&seLgF;mju(!%{ zs8OoW@d*cYl_I_Whwsx@zxqNXF_%0>ScLGp&-i{8`F&NIYaCEiXmD|?(zzIbe2Ip) z69H_c#exJ0*Rus`^EiSa)vTKC#lR0J$c8t6w4nReLafrZ+f)lM(dY>$A&SGNBE8gg zdWHG5QW6Iq%uh6Z(z+V5ebJ2&>`aIZe5anxQ{o}mGTYvTucC9UF!*!YN9>D*f_G$9 z%ybEPPJ$*?QzI<3elWEfAF-dEMM6+wuT+OSS4Tt=Xt=F7xQ?lvv*L*3N&&&mE_XD? z7bhe$3mPKDhvF89dql4l)E4pn=0+fi75w6R)x;r_&s0K5fRpaqQEKnVvITg0_ieX& zOI0NpX=6QQ#9QB#8)RfvYHX-Wf89RWEx46^r$7#pXPsRuZ$w%sj>Fk_t4?gmU;gbU zKTsyxfwY}*G^f>_PObH7q}`{|EJz}>%UcwfQD@NuK#yFblxyLgiPe9LLgZzLHKZ2A z8N^cXvzeyQ6EmoHHY)#552wT!xY%_2eyvE+LT-mfaqHET&d~3 zj9rYv_n7QRfQ+$)vED-*z3KRk@Q3u3wOjpi>HM+iiRz0}TRW=U8pO zm*7Vo#X)P2mVR-~IxVg-%f8PtQ!C{VT<2nF`sQwRE#iP(?Gs$#x}1*0F!zW)A~S=WHH_OsD!K_v%S}+ zeHtIPY5eMpuGol9nxGykxE|m%rD6B9OTVo(pSzQ&abDzO`a>;CS?@|f}-+!`A-~R6V^s^s+ zNjtkudc|N4+sggB8{$xsGN8Qw-V^O-z=!e6-#??fAAU?XlOdhGddpyboyPs1%!5m2 zuMxmk*46~j9{m2f6u_h6WKNrltC)QxF%3%5Y zxFgznH0}X&USLFcIl86_1AG+PcE$cugW>kuQvg*!s=sOKvTYn=f8+K+^#w%fPe1!B&ySsmH-Xho++e z9lm%&oue~x*4bmm8dSpg{FE-5Z>sZFiZiM-cPjoh>@y&&N2Tang$~-Y|o{Ai)Y8 zdy1SnD%Vzobi2Hm@UIK?>gO9Nmuk%FuhE!U_W{pK1oF^-Lk~ZZ=1Zj6ry`F(2R${O zb6~7*EF%jE46HkE?Oat;f|$0NEo#+jyuLV#anX^0u*{i{^;U~PdqFZknE`9f;u-iw zmM2p%STG}vkU2C4H#5b7A!U)aws(Y1z9y`N?J)V;NOdR%62_8i9 zVOi-!RSaUhVf(0HGDw>1G`pMhfnIh8Iz2 zt>lr}Fv}R2jwmAX+5{PMi9muzQbB2I0MMN>0OEwTjp7i6IqRY~l$rBK`Yu>B7TgcO z$PSS($!1olYW||?1fsw)@g_x*xKD5r$mTh-ffBHlDqE(}i?K|%nk7g@!<##-2q0Wq zR4tZhw@f>4vWqORj1(q_1Van@T$wRl#@iaW57SJloTZ(zXDP^J4bswirp%YSS7d1( z*pM|*G2oH~@MXn!loy63J}Hwtb>oXNu@q1gAV?ON+&FRYp%MlJti%r<)@d^` zOHI6=Sq^?9Wi*3E*Z>?3%Be)~Q64Nr{*E&8Lf@O4+rVfiR(-CAwM&|^pe3JK_5i^n ziuP_(W#S8w0bI&KYaAO>U|9&6LN@1VzB=DCC!`XS+1zF#pb{S1ru}o9E@AI28xfh# zFwam#!A)jn;7^y3fzMQ%r$y!l0+tmH3M6ZKHn&6i=IHFYYPp5cn|a_)A@J5mH>p}` z?olRHO3jkYfuk07+gh?cg$#h_u}dO=hGMr|wXu?@Hc}~y1#l{Dv0I;GVWiZ>n0R+z zk!OjckeL$==+aWi4CPKXF}d_i0?WvpdQ9%)frKqmc?Xhti&efN9ZDk#+H&#x&)f|l zGntUjw|ip!p$88(Wt7G!T8uRz z3P!LuycD@xe+=8lE4j}d29KCO*!%80SQD$ieFkCE-Xbm7z3ts!V-TZ~6v#{fR3IaP z90YsauYdE3{^tANroG4SOCz9*gF{-~+of;+)t}SNaLC}Z%Pjc{ubFF^qt_QB`OMn( z8g-A)>9X5qR&t4A24Z8hx99J=S^y1T30@Aa- z`hrd#s-H~~_%o%|%zxs-* zoXvRn!5*{7MM7F1QWX^FE-=tN<8e&lmsD=lY2(fvS)W~g53sB(Rm$RGa|=Mm_j=3o z;Hn39e2GTP?!yKYf!BcN&Zl4O3&Z)xfBFI4d3=xR8>=)KwCV5u%}@DVjOppqEjoI6 z!fgE+Kl`;X)lZ+c=zsj*{fQJ9#vBlyT#V_ApL2;>@%7r0NI| zeq-5umyJt}3`iV3iY%);lRX&wBG`RN%v*Cn-RrY}s#U^jSR^)?W;P4%c8;&` z({Yv;lnSvjozB(439Dh(vW$O}*Y*gODkzC(EEHwty`IETPOKUM60(x^yWe{n<#JKC z8&(!73*>6pr(>@hQu7GkmnFLzYt|Ln3fT`*!$q<8N685^2{0UuWr_hJ%Vh(|RT%$xGpR<4Qw;%n$!U#QJvn(9U?uAX6+U$gg$l265noG;; zZHm=jAqhVloMQy2XMx4^|3W);OW&&lM>;p^Rw!$LM=2~#&uOc6Wl{4$A_`j4ykU@n zR`+Lj-Ed_0P4+T9pom=8YmwT_ia}jw;S6P9^AdHUND4kNJe#1Ce8KDt!_V6b^`JG5 z)eBz1sQELeX^K}*1Ut`ISr4fTp(td{qRfN3{2e(P;@LQt5IW-?+nk8wI5=tf&y#P=b~W{5 zx6klw!_4GKi|Qg|Q;)ouE6D47ACxSMXZ&){cDv0`WJZ<_PwcRZEKMCRELidVf(C#L zwi9N|iGh3fphL^do}#G^#<0Qw426ePG!U9x3!99+71nx7i^}SirC_umPB482!Ts@A zJBr@i$dZ7j{hEKlZ+nG7>2Q2a%cTXn%iuh{oH8K2m0RAQLiiZji)d71?Y`Om$d%$ z0rij1s0WM5^{TuBfK}M$Eim8ya$uBX5yEsKRXbt;q}!XLi~bDiaXm2E~hsfu&ev zIDNj4YX-;_28}qR2b~cO7@T5nT&b0)#$&X&SY#HuFMuBnhPr%@c-5_qCM_0((vr+V z3BbQu5oQ<-k%|o1*LSw%7i2B4wQSwJM_Z4c&@MCP2o{bHkHlGMrM|)}e+fH{_{De5 zJ7Uo}?Du)BucUF-5~La&APqZbw8(&drO}Xet)BBEap^(84V%Xa&kZd1qI8&DqQ-iY zKKk}!`jfx@bGq~JkvQkP{^B|P>;K;mMKZLpwnD?fCB4}{ryB;_BYyXve7GY)9h_o* z^1DM>Q(&V}LveI=CdJ2SOw{8*4_bBf6?ns$Bh1ycdXbh3Dg!|sM}Isa@2Ap)#b{-P zKK|pU^nd!l{$HrJUgjY0nBIGDOPp@5qXlsn+Ip}@HO{agFs*R*ATzLqeWl;+NsR=o zUL8k(O-D_~lx`)X2ZtUM7bByDxwD{?S3o#+*zx32GctIGRy>aypTTIP#in4^nT1z2 znCOh>x{x0L*Ze!yC;+GkVe)i0|UCUSPd*x?mYCe$~8ACAz4SEvJ z^ei8@jOK{Zyqmm}cy6B_M4XYEl|%tMVUJ2I%kDOv$)A6pfqRrUrg7`LbmoN!#_k&L z6w0maAfd=lpv(!hJmnC31D^ao5%4iq%|T6 znt20`exQ3=eO~t!08W+}i#Byg9e|c=quhbvT|eqL*E=SDe-wh4DDsz{Ym{U{8nE$( zHTJHRy`)@&9eJv1E|l~%4cP(UfYlFv1p?aL(p$CXU^-IyfTg7(o8e^kEU?D@9%i$^c1zZc{)r?Ya&A>YyhP=} zPRaf~o&(%-&5^tTjuY9eE-HBdll$Iga{(H8AYyfWozDx=PVQ=DoFw32Av%BnECC~-p;BNY1UeG8TVH& zkEIy(yWe|6wOUo|_!f#KW^s!Q_(seGUs7XZL&jr?@A;aUcw8GYnDzVURyw5N=>;{m zsuI+oIJ3+QJ|r)L^MN>?fobkCV8porpgZU)GhF2Bfn;g7ht%y|Qk?;9W1}oiCKJw1 z+*nhx5`W*@H>YA#h-^c1wL;}qO=Lyl2Ep&(0?nHa+ais5{_0rjdrr;EH)8Vub^ zU{n&9okDSi$EhG*>B3%Gz03^Yk)N}{fx+&RN3_P@d(B{bd@VihsGuq|*+S%O_ zx1DOe#(_kI-@`I9?+vj^*S}OFt)6z zt001Hvznrjsw5tg4f0BW;nkmOJE;S_I zC9^aqZ#+wC$TLVLb(5xf>8YQaP8`Z9Wq2pEMo4<5xcoYsJ4-XmbWaUpTHPW!p%e#` zk0?kX^+ZveYv*&6pCzu=a0fakeNsoy5d}$hPEsnln9Y$%-VY`Ve~*ke%rJ*CNtLD! z>MVT#hQh7wVjGZbPBfpI%SZrsHmKfsM57i3jj73FG_5~%scty@v>r4ES#Fgm(TX{> zc$DN|)jv0HU#o|@ywuD9Y@})TU@)V`m{K5?#0w$K;$TJEtJ`4e^D6jCTo>=4A@2&n0dqm1+EL9cRd+Kd#|Q{YF|DNpRR&?qwQI-XnaFT_ zlZxiXAo$6W*U#95Oi6ramGzYJ$vi`3AV1d)<{Gxx3#zASNM*X~k*=XEY)~S7u&!?s z>|~T{p?yu*vw9nQd~d-lCTAA(_-mJKz=IXLmIn_WaA`&=m%?CvA+1VQoGr3wXgDbf zwIQ)ZjZy6GPD^7%HbtprnB|hN+01o+v9L;BSCGyXG5h>i z+0d;>Q*6NOy{4hYLVe`5kW>nRGi^Sia;}UhbXtz{v8F5pm06bNK_7WwViF+>u=L%} zDA$>$))dM!j&@L58rr)N2H70x-j&38@so7BwZl)>?#!;IjF!La;F6^`CWmec`35Xc zc_9?g1+=jhnUmj_`a>}CZS2j+vg{oMJS86 z`88)3Dx3*uw3<>h-de4R7Fw8a9#gQ_7aTa$)+@4~ca52cEa{Bj6V^a|wM=ROoN`bD z_Pj|M`b%70iVR{2*D1om2AyEhG>Sh1I`cJj1m$eWh%+aXuAJFP2@R!|WD#BsdcvH; zqkY0b&!qR7e@@pnq&SbB-ep$!Qr<_A1Enue9b_S zS!W)j#p)6@neo5jcYB}5ad^sEkNqQIP}d&r(V*StE8b9>gQs8o_66PW+}wMzNB`nq z{RIR05q$_Zo@7}VX+BYz?eEY+%J(@qrw{&ci7rPy`o%B5BH-2C&0Tu+woCu+C$EJJ z_}kd4?+&6!dO(!?-pCTF}8Kx$$!3wYLp26bjjLncG^^oYz1!!V;^ zU!28JAyRXK$btY;0W{Kf$-nsP4}YL+sOc)n(+W9*=H$`5mOZdo@;zBd#S7@NgVVpu zTkw({I4-sD;)EP@hi^0Xk|=k3h{NgcKPM4Lnjd`Odm>BCrxvN%WC5Gvhg~WK820a! z1>LX*4T(joc?U=ba!~-k@^lu2q@fr>wa%#*^Vwu2i%fkI$-TyLU;sTO9&k;j4NJWG zS=*Y=0^1+t7OuON%s}>T@Z+qa0j0zWn{a=sp^dGrxk+(mdD8>;)sC%@HoTlDAAf&` zl8s2!8$14QGBE~hO^c8Fzm=-*IDDIC05VHyk%36PchyaM=Ee#cO*WFhZ{t;sFi!(h z6^FUufrtcCq(krW1+OV^MnAGN8_fkS4(i-ZCtNF!Hv=Q=v2Rbb`I9r(WcTfM zW1hL1|1a2-MoFll@PbosJ@0Eei>&5>oaxByaF~TaF7gg_QB0v2*jNhOk6WjD0df-7 zs%CSNd4@l7Yq4A(=~kjLhoqZwqFQr$mv|u4>^t)vdy!ZEf^FZK*}BaF+wTFQrgigm z?~GCE&l|aBHO?w|&;~a5pJp4#4n!35$=8_iikUr4nJomknleiX-89Bw z=g}RRR{*lh3=jZ%P{fEkeD)2q!V59AS{0EuK%_bZyU71rSW1L_Ux1?wDTrSXc2Di) zrVJ|JF0;zOb)8w(5;KlR2hb}Y3qUU}tEAxYtV?6)=9z7ToTkJ9#OB_Xu$905@vmri zry*Kzu!}Qh`OiCj+Ga++&S0SZcApv0K2?}qtusSBIy)1V9nA6eqkDA1p#6kF?|XlE zkFJJS@=Pn7S-`<}!(#wB2y7z@OUyKHH)zzI(6BdFCXmPU@pqoktFI5}m|5|a@{%~9 z2x-F1F76rjl#ptS84!0b#&Xz}!JIQ|`q`(iBmilEb%)Lxg`CTa;=7$mO_1$({C-B9 z^_W?aFf27iYNHc}mX>fmzQ4^HmHB>G`S&848!_Wsta5;W=04>Gx!#R5rBX){u=9|p zBumVSml_l;@Xs{YXl0$*{Pi_!?Vd^JQ(<7Q(Xi-RBuCk78bHwp{z zOnkpjT?VWju07{3>3>ns;xF=70M)^e_JU&*GiKjC+I(xKyTKBI3w<6po04gLFn^Iz%3XD{ja@Pszk zSLo#6RK{Pnn5kM9{D@CQ2m+&_8>2Bu+Yz%~Vj}yPQbD?)JSqlyb0l z#evtGZw>_j7177#61x8$WBr*F%}#iHP{?}5^S{DD&+^i;5N$YXWICX=XtSlJx6(Hk%crpWAi@c%wrN z4va_^l7vE5Su^8KrbXtcWdx^VyuiH2;i&OaN1A^RMpS7~WtM1jWUR|k3-X1?+J>iU zDHfUIho@SC53;eCjz+w=Z8mpEN#S4=g(B3<{n?FGPOS(aGISvauK`{0;tUpgI+@(J zoQ$0kH;9=&m`(_zS93(6gQW3*6hwlRlqM>vI(^6uXJ$tzr)DCRskZ0k=0XVHia?^G$_#qmVw_jn!2RdHzvI?aA@~RHuuFk zDw%V6N%J5mwJcBMQm%+B`nKX5GMhnu&oiIj`7Wm(=Ta0JYvye3nImI_{oSNyO*u17 zJ2tOb9ED9m^@o}%k!DMcd%?ji{nhz`HebigMjKSYesRsbxVDZ7k-g&dm3_ zEH92HJG@{?Ii20e@9w50>oP7Fn`K%~1kpDBGf7(~CTBCbOq7M-UUaSt8g%=i84d$$ zyreQGlh{R(=~D~jomM3PV(<|yEoqUp0E}DF9j~kaoM*ItXMSB-EPx zYf+jyU7TLg7hiuveaKpFW^}>~FXq_m!;WM|TFlCR@ZlW>Yz%xERB5k_h<3MXbar$h zYX`ddE`Qc1pWNr*Va(vRP3@z7{+W#SK6)TcmcRnmx09q%RayXLvt2c^Li*Pv}3ouMiJN&FO27-$kkn`SBZB(etLCZNBF)>>UUv{wW zpa8eGR+-5jGVnjrU8{+5~dL6?K7 z9{js-DOvK>+FT^;DWTZLT(G8373F zE~7-iv=U3i*{7nI7IabcJLq#T45t2)b{~941A3A9E%4Vyym4O9v@nru#)#J{);GNH zmsiwHMrs|ZMadGt?FMTAZaFLb8F1(+6qXr~7wGu*g#T?S`_Y8Qr_OU5b92bdJ0v+> z4w^>jTM%hY0M7RXvs4zFSxN&*BB0a?Q-uhLOv!+=E0}UPj#7eFGsa5tVm*t6vSgNV zZq4Yd*QRw2#J5`wddbgz2f@dk6muc~E10dVoEcCBSmv9IC0A(Vfkb{DiGn{e z?RTt_7TG;`^Z>QD?NwEX{LlE3gn}w(YZW-uT%`2FP*JU{5#DEilpwZB_oQ zW*ld~u;sF6`WDQEpLQgDytYkWJuy2JI;(0D$z% zE?Q~#29*c)2uf2xNI6Zdp@EwITalSX!7d+ChFGiBGy6Pw<*^s0DL~3>4y!~UwR(>< zuy>iimn@f|ND9UZJc6@^-H$E^9bccM&aAuKN$&er8yf{MWg2hkn(LvXMVcOAx`+N$ zx-=F77)QVa9c~DoJTlGXB)Jxr&;O&Nfxqe(m-fw$-w>9dGbf43V9OZo_JaEp^Ae-?lMd-Z&|Kgbi z-~3tEhg}S|6wgf=Jg;rmMY>XD5OBf339c56wVHs1-uZ~U!0rfLQLi#uqY)mqJ!5RDMH13gCotuN1ME+;gE4D&M?oOozUSyTM9ZcCII9pJiK5= z^us4xoKjC|ok8)__wLi%XNUB`_dcP1`+}bR?ki>InQ@2hh~S@{J9*L&1GJ*Qg+ zH_(G)6E8JuJeL>gvVSEK3`kin2iLT~_q@ztS3AU}bip7VrV3~PwEt=#K$wYC+JD_< zwz5D^zWqere)sr{-W;6M(P@u5JU*)oKsAF*^xg+|#QyKaH>V65uV{_`ZI#*EGX~e= z(G69Zb>7%&h=gdsfEoc|r!%Cx4>>CUtIY9@u$LDc48R||wOSFtgC9buW5n7y9zb)`5Ma-_)x-SjW$EeBV3AK&A- zwoG5W>C^c|m+x_bmI_z&SAY3E>306Z|NM^}6t-#7y{0yU^i2+ewm1_|7B+oR^y)}! zA02l%W7MRC$GpRV+|fRReP+>XsQ=(K52*&SPblV=^OeVEb9;kMIXGM2-4f#Sk^yvc zV~5tZb|k9@N!M(O496wU{fW54fMthEo)np)fzqO4g(1J!DfZfh1=(v>5Hw|(>^<05 zM)+C2{~HGEm3mF2Q)TQ){7yRjv%o#j&;t#XI6y=2dJS@muZcj6j6s$y+%oDj1HGPg zappHo{hTo59J#Hs5w59bOvCvWQ7AOU`S{Vj`vOvb`QmxNl6v0g`6$P#vE?8^=%SVCflb1AiKx<^CsR;GOjsvhWiNAvFSmi6TEcdrg z?B&Y@vabsua1c*nC9driHny^eW8|< zGXqW9M5#btA)R=~t~d_zpDc2~r_U`eGvoydv860^DI})Rb@p7JFA8Jjg_$Z(GT%}Q zW(@7<_{{0!RVSMmkk5m!Xg(No01+$5NNqJacneIkr+6$f1gOp;Pt|BF2vqz+w zFR!Hb&xx%mlBcm0$W4Q;J})q|*>02HCtr|OkpgzFM9(a%k-3$U8^`$jPP0(FEZRMj zaY%$Lnog3#J&WfeVte+)p3&!Oz zKr}B4vFBG!Vq!pF1FgjB6ao_<0GF(?J+erjLZd40?CLHfUKEozZ?gAcSrkvxsca}; z_YU&?k0JY^w0#K99c*jug^T1YBR~}7E&h)5dnsu1!A$wul+Dw0;8GZ6UH>dL^lhKQ zd63yr5Jm6oS;EecWfLunrR1?WccF0{4{6pLySjIomYx%~RSpcKbBE284m5@TN zsk8jEPz$8{Xd(v*0w4T$8|=|YG7#Rhifk-$8^}D{rQ?$+14DXXrp(l$>*>`gAMArG zW)lkn(3;HBmY5~YrkW|~Gcc<&a6#ji&RL%s?JH?Ebi(Xxw?CmOoHUrFfBMOuSmFT? zqrnZf)ArezRvGX&*H>wsS?c=_H>K#d-yJaMxTU}QkDoFt-R0|yC4;%vEHfAyh~vw> z?ItbqGe7xok6MkIXsqk&O`2U_)6akSYbrBXLK}Io)obfD37%@TiUbgC2GwbYX_eX3VP_=z=k~=w_WFw+GtsHegY7#_3@IHm(=JVtU>Uesztif zX3#DjG5P%>0D&9K5@$QA&7u_9PN#`Dtz7Xt=Rswre$3Bt%b!~``&XVP%Oxs6YQfKr zGq>Dq$|6Le?u4^2VA_}X@0aZ!t)OG;jXIxTZuh%me)c75ZLZVC{XGWeMSf2iHFq|s zxxLHTjVj+qRs7v?CXCJw#V>x5GpqHDb!PlqRID_VP-7s5U=LG&k%PTrd5IpscaK@` zgc_U~*x+k!KYC2}-+#yf+m1BYLecK+c))id~&U(p=+&4_aM7$dSwC!Pqv zybb%HW;)a0oF!k63qhiK&Chzl@2XX8P=m7t7yQnmIkJfCoFa!8Y3`clWN94x9&Q-` z%Q~m7h6p4Nk+T_ipJ`-LT9emGRawEL+Q2(T>NpXSh3Aa}JMV0NkSof`ZL-=p2~558 zeIcs@wevHW7KC#s4zZ7(H+c|)!^9=anPJX(R?UlZvspG*z$#G!C4cd^pZvfXGdV2% z5W!cH-1;Y*Wr5L(Z6e5lY+%M;wxlT$3`i$L5;%PFb!)K*nB_O9sCJR|`t z@>!8JfigpXmx6?7&I(O)X#$xqG=-FmK@|HrOIgJVN*w%oA#B0q526iEl8}<|rb0=Q z7qq(WRvW-*Dkyi%(fOyvreuYu)1bfA=b8ih7NLf0Oq3V!c|hmVsCZ7>9$Cew~%9|f}z~l};8k4Fod|oi@fuvo- z=7?^7_HY3Iy1RcJOfpk<(vry;YEPG@dmh7Q$ zoPg~d_L0FAxh*KbM3b3C>;vlzlF!fkqJIU;c*G3kfI&P0?|%P=|9mS9_uU7p(x9h* zF%pYCxLnj=P1xW=nA7;{n;Xo0Z;ON>S}s$!-KER%HT|1^|4Zo<4KMU6|9p)>l@R7Q0X-qn}Po^DAqn&t+x#XNQs2F2II zYiS&`aes$_>8;p3USE!B=fMsG#|pKWm4y!bnpypCK7A`X>>H$(d2Bi-1A6aIo-&Y( zq(Jrh@|tR!O*c$fqQ#v47?{IpTTE?pR zEH8op=yQi0q=5a-3^>4@29}wqp~Ag_F@*MdZL6+c?2EAg!5jE{le+Cdvatk)wN<84 zV?{usWNi4N{XPTBi?RIN?D|GnbJQ$cjc-LpSYK-}z^zf88Q+ES3ZYQ8uuzo!eA4NO zwIKE_SQNsMN4lgQpU9YB_Q8NpbpMGJ;El(ZGDg?@y`}03J^k({R9{`C#`>ld%V7<) z?%t03;`;W1|b9a}nkcAjG-70!CjNr zOI149Cj4H}Hv)|QEsrZQA#k67X1%mjI}}O=~VK0(Af`pzVtAcuEw&z z?XGTe;IJ$~`+DifzSBh66wZrl}bWOl{vNb5=yRIPLyQQBIWE25jfJ z{-?ElM!-ank}g{2*Y z8y|!&(rK307!n2fat?CIutpZnLcuw69oa=nlV(AI;UqH|mW!>9PS3xYJcFMRj!`nJ z161N`j<}u9j9FKl8Ico)d2b<#q984DEMbgYUYM&-9nLC&XtTV-b||Km`%z*z`4@lv z{tpxwlWaC*5s#x){J#|N;BUf?B|!^4enN`+EJd)_EGf6&)_Gy zHJ{ByWi)*qM0p{k05hK~Hd!sxM4pb4h|pP2lXrM$R9PG%smaGTHfc<3#T5#g=H6GN z%&t!2Ea-MoT&6{$d1R})b(#YmSzw5zn3oTxU@w@=G4Qd?u2^dlG{BmR6e-J}XJ%3* z$}=9}`?Ab{P!6zVgtN>77<;~S&d$-U>%f&P5OHuP3(4L=X4Tq?BA>q&P|WRaUO4SK`uT3L>Sm$~Pk&Fte9@n^kjB7eY*9D)b+U}+Q;eaz zTBu4d*nIH)Hwxc3^TJ0fZ1K4;KkmtbGtarE-GAOA$Ha*(#d!e zONrufMHVM>(;9qHY_3hVj!hcpR%X#$mc*^md|u{7?MYat+LceQ8-lt_=Zo)Qi3fnr zruci$Cy z4vgmw1D{T>FVDZWx+3*Jcp_+uAt7k3R>ds?Kx+}UcFg__E;=+~mi^@I0c|~fkFFAC zbQx@SFS^1I0z6zZ3;g(Di<4Ng@Z4S7y~m6#gXhwUfXqp6NWIR0pKD5| zrvv`n6$Y0}wD-|t2D%ew)`#*Qm-w?+nDHMov)^TARdm)2x|;l)`}=KinOSF0Uab{5 zThOD;tpF{QJiJdkpkBP+~xe{T~1t0S7$dN2jOMJ31EpgW8E(2AYir8xqK!^5=CA z4ybo>DtpIDWreP~7uNqJWnjNTwXIE&^1$I~nHgyO8H0Dj0U2sDZbkztF_0e|pE6_K zrz>WkPxlY_U0+l0;*#FH?NXz`yl(}){u4K@%)m5N7!|)GV4E0Z)IP*Vy5|Gcu6h3_bLZO5AUsuR{WTQ z-$j$!4iE@l%{ZV%6S0{vx^Qs99)xT3JAE2;ItIcLey?M7>%$m;d0$zR;1p?{C1}_S zMLWl1YOG*9X4)Z^-}@rE*7Ea2d|zA5RSrN_sKes|oP|JeW_#e072RjkIp;ITNM;CH zie?f(@^knlMYFa~%3g}PGM*oDhTz{93gK*+m&4K=Au3l8jcDhiiqY;ylhTgVgjr1r>J&AAWt8zLW6aSzfox89uTsw^V% ziQ)}&;xH);6nM0h<<@#(!q~k=UdU-6*c;mDA(=C!apZ@gyTs&?TaXA?R2kanM)Qt3 zmLxG2&wb^?JtbP)7v6G~>tf~mW)4;;M3nM(SwML+0tZII_Dhv>8_`x_k zGT^6w7pIggwZcmWV@cjLh7?q$VccDQl$nc7?r-g&GGs;^@LP7nL5T>fA|h|r6qy7ivw56aKp6Sl4x4oT8NOCRlcm@oi| zIWzLpF*A+~>IzZHVEuxwdRJ6uAk=KFh&#)J4<6ca&ft1`n-+^zs;+Iy*rRq}%zzH` z#}(gSn;G<52B6!!O)7KXQm)tO>^VAiE>eX-b-cJtwPu4}fBi;$!tq|AABQf!%`Eyc z3S0T>O&*6A&(3IznNzT%+nj{}Fb7D3GudRs8H$UE$n2^-Zg(GUtF~Tb4U6K~gFpl8 zNMwN${KW#!(F_W1EENtc2Hg>L&PO6Esnu4bkPp%nbhX9z!yg{s3lDUF>9y@uT4tbK z;?G3Gtb-SA>Yk5<<-Z!OFO%K(^5s`Pm|t&U{!cC9$9x|X0#c| zCsv@2v4t)jzUfasxK9(FyC~bb(hyLgP@JsP@heOc?2S_Ep4zdJ;;T410 zm>x2?$MZ|T0nI&UAON0+ye`V+MY`mS(1f2I^&n68wi(E0bi={LX}d@F@3!dcmuC#P zOX8Q_=YS6D<-PAb;P=quKx-oN8y#b@`Vo|0@;gUBi69GW@%HLUy4?0Th#C$$;uusd z*Lij)bl5qj+w6vhx7X5y>VgB(Wxn?+l$7B6G{uy=rED@ddNUo(GNYE)&@~B>Q)i8Y`@s zM&HB0nqTl5e}8*j_Mt8Zc@FB`Xd@UX%$?_{u+Fmpbp2ov%VMkfks~?PakdW+5*fXx zC}67`5Jy%xtO^im=wy2~rH;1(#LdBdmJ`T{xg_S9^^n(ZqxCD~N*ko=49fA|AuM=6_UUac*?>3(v6>A)ePIVze0c#l+P6xm_u z5tJTcet;&XadHWZ6*Q8Km>sU++Rh$FnyL=Acb+1#&j`$#;xf4>U-T4$pxAWX6b@%+ zYc-`22Vh9CYmlNGAZA&>Q}XZR@*2}@&81-GS#mE>bUm|cyfm`38I!qIJ&zc3fDu_? z1(83D7P^{#%bD>gGR&d?A&T)YOIZG)3$-Y>G-?_ZhCai4#FXm|kNpxW1BY}pC&wdr%&?kBirg$D~_SpG)$n2ToFsJkTL{0JuBrGs13a6E|W=nn^jua>c z95bMR&0+gY{mt>Y17^S=Sy|zq+1+W%`>dkC6JG87KQPV5CmjX$4Q60B*F^pSiA}jx zr^3IkzrZDA%A?-i{6A%lLrOGqiuF%`Cx zcc1PuE8C!J9w&AAiG^jy(p@S5c0h^0Eeb0SiNt^b;D9q7g5>!f0{lUu0*`!>pnN7Q zINlSAZ=qj@6ba*oy=-m0LL+{UBL)b@UZjj zay9_91C6x`1N#+PV$ca2Nr3EPt3}1Nby}*|7#wr(QHaFj{q~0EDQ6058z}nRp{;wn zR9$aK&~tcjF6?)Gm9q`2O=iS5_#H5lJnB)*YiituC;U|G8?in|U1pw(3sM}L@wo)a z(X-#Yq|V_19Y237MVX_EHqXa`oJX5ap3v^o2h_T=K?MexnA!jM?|wn&uU-l8#^g~lbGb8GzPSDkAPOc`uH+~V(R)AN_74Cskj^Rg_mbsi7&TKL)L zuc*ygnccNIgW@8c^PfNX;2y8B+dv~={2y}AhG*G-buMl%i@diZ!_wfa&f4lK2g@Zf zWPk-{xmqEgKK|W@H-Gh$MFT;SV*Gol_ zpB+Zb__<+ZPTntr4F8yv(%cDitP_WNBcXIGo3F(5e6uAAWUh}*W;i9b@yfIJPH4^q zNT-G|0jInE{LQvp9(KT5%K?A@x22<{j z)MX;LnAm$xtVvL0?4dKxKBiJ9 z`Ju3q$mU31bnQ|&-Dvb3Czc(F3YOyY^$_Vh#TrA+1mtr%+P)4W({<{~e*OQMahRNpOQn&u32CdEWqkjSX?Eeac1D5gq1YoZc92h{G8qXDUP zuFG;ST#E8d+Sj>j@ilv6vb%!4E6P8!U@gVT0~zw7uZ(i-y{^r~KF?)tzE<<5S!vi8 zG}w(i_SU6=ao{}!U|oWLv`c5Oh=T$05m*{t!w(!i0r<~VW?0LWiZ+MiHIGi0!Z6-w zqohKjYX#|dSjGYHierX7C+-u6J$$OK7+luD1~b^H*XuIh(HXPC%=Oz>`}Fze&js*J z2G?@Wb!LOnOa?yfPe0g{Jr8an`_GPPb+;xA@AJ>j=+!}wS`7MDn#;_juh21P0oK>c z^yI@wboY~wnJur-RwX&`2pQd#YtoaXa9&!_&FCi2v}yOA99ATfB%x6fBKC2 z2ZzjLCsLQN%8dTny}MLqus<0LnBC?vK0X%dL~XUja}OO{Z{(a`sMe{-p!AzhpYxbp z^E-P=Ya3-`A7JJ5*R-r_~0t@C-m}t95$#V1u^rZS!?kXpe)7 zW?XZtRN;b(`#)kkz3&x^3;G5Y^L>4(oKVkEp#epoH7sCsg zg~-T(J1!N^X-4xRGz!-ioi~{bz+NmqURptm2XpQfDsqq6)Ie5b+L$bWt<*qb(AL`< zhzv{$s4{yuXF;)9sWu$XI5ps8X?>%gQ)lI(*rGTx2a;I;b9v`clXdy^2zFvKp{)Ea`2FBLiD;qBe}mK;rqts5}SE6j>qNj2zYpR*9`Om;tiX zq%C+pDU`Fy^ejX{7NErbjAUb*25)}11`U#_D2#fZ$q5U=Sa5QL7Y7#_@*u>54=u{H z;4O;O3m%;*trq~qEbg}-WFlTnDh@BVrs*dNp^kmDqu`Jsh~}ABV?>jDaX{zhEsi5E zGE8;xV$LMi{L4Gj>V}k=em@G})1NJ9#Wg&VDBf*UiA*wK5q`ddPymeX&F^k4WSdIl zSsG`!{er`7RxejnsL)(^6~$&pmTyv$&P>hM zJkZUyG59>sQnLd!{eJ90w*~*P>f4pQj^EjQCA3O%cc;|lb2;BWS8T6rwz>-_>-4T{ zDbF|w*|AWN?yjCa^vq)F){Mrgr!(J6EQ{t^O_~eLZBFU!=VXNJe^dC2U&$O=EG#jg z>{HBh9Sr0WgYFv!lY`?fRqJILuZ`7)v_dbhROy6)n@mOCSI!tPLhdkTu(PtfKxgLz z1|TI`K)}GC3G2Ih6YbiU#m4ZIK`WkVeWOZ4W`rL+xFhp*JRH-;!^iZ)|M){@s!v4U zjBcQ4yaLyn1_R1(eG4ux1v=Sp)0o-jdyh8g*S~yCos)?K4tIC!44%u>yw{@Z_Lx5W z&U+Y9s;_U0hCNBaI$et#=8%H}G~MA{nC||;cc}OFIdzXtq=8PQRb>{sOao?Dp}{V3 zhGD`$u+(bOG6UX&FJ94*fi8LrR94Hf9u}D`?=ZuT{q^YeiP$`D?XJ=dui@JIDlJtS z66~Nj^61%XVY>0s;jO*KthU&=-OfbMe|XpxFkdPc#Tv57fdTd_*dsPpmSi453UkF^ z8M2zg*B1;f%c4~u^afH#w9cQ6Mod$&BVLf=-HT421Em%5Qop!BbD>C>O|b9?>>#}; z^1q!Obm*#oO@q;u>=9d=>r~m=6jmGEU<>AgvCn|`s@I41jV{Nx;%2hBv(CWklEFHI z;npUttgg{zze|%|hpziQ>Yukc@TrMw%&>jIK|ojZ<#(QJP?16JEx*?l2I9%$GIb74 zIH2T=0l)M5MpMR?PYhYFwI;56!60=)ougxM#)0eu$Jg4uha8k0*&a}!YKs}~m5KyF z3*{1LAW9rWaB$U!=AAPLl_s;^9bxo~^;IcoopjH64V=-%(Q^T)2+Xi+y?W8+Ik`kT z49?G)h5yN~Uec@63wpBMpvMf>k>x-MGi(#T`==jK%47Ba`v3fp$9RSQ_J8n~r@H?L3W-p(dHdjFmj2wxnZQ=x=TswLWg-4QtpY%viCA8~-WzFwn^^$q^~H#mW% zP#d5ga{+-%bFE3ePFI{+K%7M4-lBwAz0pu98ae~d@Sc|F;QX8};9P`#3}eJ&yj+N6 z|LHOChi3m8?p3@7N2F}6bZJKannl#wXyY_E9${a;=5r5OC2UFfI~d^6_)7M3)Um8^ z@ZT)0(1_T#P_kf>?;61^M?K z4hkVX>P{xAvroNnKec))vVEK^s~HF89fX0~4a@#+WXsgB>&#u$FtU-KM|v)5eaS3z zi_I(}ujED|MZr#91#D;MR5pj*Vmr^pTg3JM7Jx)q?*H!OF8UjIUln=2X&UzXKrm7C zjs>x28*)p|IXFZnmjQ5>Lo}U}Lm0S_w6z(O%RwV)06kdruqOkL2EI%qFJLM2VnAgx zL$N5CLH(Rfo~MX?pdD)P)=4PA9DOX8`mT;8M6r36}5iSDwdXg<)9{=u^_XCj}JK$*N;enuikN@W&Gcy3C8hHonQP8K$Jch5fZ4~novBv-H1RQ_f~bad0GwLh4avF0K(I z8)pf?W|n1frXJ%I$03MuMju0YDFlOzErm^6yYNwv^O-rT5*@aY&#V^$#uaVn z3(R_ncC^>yFWgF2q|0Dr%3vJeb0O9YT6Lw&jA==jK74M+oQ8sh%m zCbPPI+N{^;5B_M6!Pzo1@~6xsa}aQw(eFP!pfQ7tb%6E8ii|C+A!7~zi%ZMWBx?7) z_o-BE@XwZ*h3!!L?OO)u9R`pSYCO3og_K|a_;<9s%dB*BMY08uynsc=d#f>6$Fso$ zyVo7j$%_+etk*@>0|Dq34FMiY@t^g2TZg+&Qm z+WbDY?yhlWq@=7rGnHe0Cy-y@Kd|!vK)dffV89LMo(V0XBWnQ-jV2Tuw7F}R{t zX05^e*47%FRalgUJY#;(7mzt|(1C#C{?mK3w$-Bc;VB23%#gqTMCSZTbCs5>ExI^( zNtYKLy5a1_*}*wgm<>nMDg~4ueXPeYJIGQ_k4z_EJDFWJqWVb<6K#1&%XGD&Q2>n6hTDk23Hq z@qI4vTp665NzpMn)=GELt1$;IZT|DM{Eq8Rvnf>@Ejs*WpXW)LjySlvIPcNRgRbn| z>zuJ^az~bIs@e8n26G=;S2>8;e)`gzrrm zW71CR{6BnlYJ00lsd)WJQ$2uY4qD^IMUgvUPXRfApx|Ppu0CUAsmyX)ekAoQXB2FM zm8qV-iy_|0fM%8*%>)m+>NF#BiizT2Qj$3aH1@?^TC$n-(8zMRvh=W#GtG~W`EX~Mw)I3cGGhpo#mZYjph!uoi4>xuX+s@>_}G39BW2YbcRjPlPTO?gM;DH_UwZAKK$ zY1jSWmSLU)y9%0e%QgkuUQFu;JO#;0X3U;{mZo=R7WkN+DmKeQiy$>+qJE{RYl4kP z^p~%4k&N8x(D-3}M}e)+3rXeQ%_StV%z=k|dFM(Bz(WdLodGxbjEt)}YXqR@!I>2m zON5<71|ThHF{xG@UK~?5sW$dm1!P(p#3{Wq~A+%W(%@uY~n8Wj3XKl!hwWmDo zm1g9fO}(wXv(xiUljI)aT=wCG)nxY_bna=CyXr&~Y%x8`PLkN9B6Ed|nT>ZGg=_lv zs1<4&q-sI37G`Z^t(fC*kMp{23=XvLF5ig48nrcHYefkFAHVn=ow%=o5NJg7j&|Eq zpJeYwu9amWK-JBQ0>G84n#GvLdYJ{{QD8$t=E~$hUXP;Vr#F;q+oQSK0ju4Jl|aa> zv4`$cStyc@Y#WkwVnLDoc{Ve7lj|n4(AwHN_j+~#-6(BkTO+O1g7Yk}|6Z@*4hLzL zg{)m<^Gz&dEfW{g!uUSOFc=h|ksQWBzz>gUrB;#vW_rskr%7c7%v2UjWoB*r0*0l;apdNBcG{0G@tk8e@PrsyYcc4$n zbGyZ$vdqBx{r9(Mb*)0}^FB?OwV#ZxIcQ+El+pd>>Iz+5O-1JMtv~sILB%pZ$4rX) z9)A1V%=)g=ln?&y(IJDs9-X~-OH1`Ct$*iz8h6g=_0K-1t(_I|Fh^HX9IVjMKc29x>naBLUpZ?vC=+zfr5f2a@KR=Q2PSId!Jd{qf zYkRw*kB4Tv!VLTZn!Iw>V0L|}-;2g~GX?3@jXNBul;mA5GTV+?fMuSuHxEM8#{ zK47N4e|#Vr5zm0n#C@hK4UW*r3fIQFp3QhIG}dUy83wHW4$nmZX>F`E6OZ%(&&%Dr z+nf!k)BpQl|3v2q|9Z)ptF5)V{Ct%&R{!C>A{d23(gghnZl~flgoaqMmGk(X^JjE; zokAW}FgyU#5`7lX5DZ;gSBfP$>K6=1F47L2!iRWKo zp^)!?IPdt{(DkEZZ)BE+*h^Bwejpo`jje_U{T2EbWJcB5UKgaKe(sTqSxLy4DD+kl zj$>vds%M`aYEphK`9YrO{3N=GvrC#vx=3qJX192G#=$ z$t+lRZa0uZ++qma5F1GAJfzldrjMK3SVf)O7hyEh+nY?9~%7P`wC z*wE|8Mzoqvmb8nfI%dRS;<>Yp1APZw@>!93oJ-nB?B=p?|FbL$lQ;{{o)_B&*-#Ya zAkB$ZjZVltMYAw2%AmNVrF?DXzN8s>r8I^!A=mH5#xmxg?==wWn{F&{HkT@L!0tf~ zQIHcj`0A*a0OUJERPXbK-rd;q!Y2yX3~RMeFgYLD z+Rub3Da@sAeJpfqvh1Vz^Xr<7!d{bR`B?hrD~qG=MBRbh;Ys&2sX4;+(H)Uf&B30O z0r)Zl2goiKps7b-#P^CrA3zpF2f!xu?Rt+oZgmFRHD(vV+U{(x$ur^5`RdEJ!XCrX zt2VBzxhFsQ2XAZ+NUS^ts?O z4w)^{Xfp!})>_{CQjuBaQ#yTfEDj)d9`6dcxM0?O^X?8c)>di%#Xbik1JSA%mo?jh zg3)zmu`d`L-HcU2AT0T2joH^l38E?tuGjDHFe^QhRDElMLHDxC%v2Y>D78ApYMJ&v zxKE`9e1INgd9{)XPhBdeozGb%`E+c!#QMH7eCA%#POu&<@Yese5?B z&&l%`?j1ajCf&YBMBaS*N}4b||LqHDq6FDNsa%ytMUYs4;Vd^dIJ;A#Ye;3fZGLA< zV*k0wK??%P?%OwX_G+Ix{O)?^oOR;O1iE^7)58}Ys{_I1B^+aTd@;Ar0YI-a`rxAn zB0D?e=lSx@A>HA7f4sLrPao}2`>ai;`!9(&C_qQoGX}*&)ROR6yn5B8$&>sv@#7DNIhGCQ7Y70w=1Ip{=(Q>=G*y$|^v4BK6?i3A&sF-359#q+boYq8pD z$v$y*d@RMyf_Hci*yKQ>#`j<0pg?K_(3uu;IWvQRBM&l@CC-*fQzi!EgWiPK+oefe zNn}>&qFjYLQM1NtzeE)db|G)u+kGI?uL%cAMHH9vdxEWGh5zklb}O|p*y66?l60#z zKX6V;n7wy)n5>QrAX0bbtuD{xZ!7lI}q$pu?8-0W~OHLnkPSF z=F}LJ6Jd%Cym-^pA8BgmtDf1?JkRCMneWSHSTIktWE5)pD4gBtJEU=DL~~|X!44Hw zg-3Zkp({vIlcBo&l`N+X+AK56~gNf8gyXsRuq1!i{M z*&;G{i&^2Lxh;PGHXE%7oN%Pd6eelK|wpg8E~bo!V)$v|5~`9w~Pd7roR zbXHd814Tje?b#$}L_LxZMJQoz`a++DHpuhLbZ{9lopuld8JN~Wpao?eOcLa>5WQ!W zf$11gSP$L^ObUH6wMz7P>+U}ks`(8t8=zFM83(r(-}qdY7px02?f#jV#45H;AlN_J zrsL1=4l=SnJQHR?od-2q$n3#v6ap*ncBh%MGz6N71su`bMkk-0S>|hwf$@7+$yR2W zMy*W=X-%@$;2{Wdy?GXb8%nd_@Z+1VTt4=!m}>e{mjGqDSLob{!X_OB!b68%od~9~ z&U9_dgw~)e)-lYW9UWeZ#u}%`?CMqy%aX9(B?cx6e#Vm<0qj={TuNefcP-aKcSc~Z+0D+IH+1^! zg}84t_x7lH?+#rY9@6=ub71&^~dz)*|9wL>QsE-_!H2 zkHoM0VE;l6?0Tyr8LQ*{t^yebv6#aEV()R*0qlFjicK$=#RZFsd&T~7aoA;`saB8+ z{O|WZd?Zb=I!9;X&N4V3iZ$Z6%>fF(=ibS=>{+mwY;0~xN75AzOm-gKXBN23&s-Ge z8R*w%{A}>FAD$l3@fTmy+h2bn9{dYD?wB7aMnxbafs24I^@uO8HROEk@Mmp4yhr=b z_N6~Sjk71ER)g8z5{)@%Kn4P?Ja-;%aG+49od?_W;DbFOXrgG5$2euM+LYP?u)G}E zanP|z*PQu5r`9qDV)&p%&cH0gafP27(wh|qxXA*V6{%nS;&O=r=vaP@Iz1{jcr5wf zWRu|W?;Y;b?PMrxYMH_8=G`qhFSFS-o$)+b-@7jbwinRpGk`olX-mMe%2}TVgJ8^q zF^|>u&N}UGRO!v(xpd0Cy__+qU8MVWH#xIYVuqi=EoW7_-LYh-?(VG8o0G0I_}W^n z(l)>24bI#oW~B_TcNC<;#p#Nf^#KP8HoAXDKW3vwA0njW7FBv4!6 zdq&Mmr3fk7qPQicaVni+VF3$5VS(q(!g5jiH0*6|a~7a4zXBQ*aI#(vo}K5S*!P{F?g@=n)5m%SkcxhWs!6x8A&0opPM?F z3|C|ZDl;b&_0087=)Uj!`5Sp1W0t)G+KsviQqkCmUq2VLj?fxG#fE1yGH-SR`E!O8 z`R5V2`9v<`)bS8zex`kS5;K7y!+!$a0~wha#!bzLA)V8=N1-s*4pjNOFz%|0wL?9% z53!cr0UXbPc@1#%@8TuxKpT%#$WsAcWGP)Ylbj*-6Erel=rAo<^cm~sgA6=t%jr@t_!NL`Y<6OP0FVh4sjOd zO=JbGZvB*4c4X#VNELZ1U<^%nY-wgD9g#6fLLrNL*L!+RvL@Lq#8Wa(R;&Xs3HOSK z<_Us0$h0!sEuuLVJ$TVad2prUtbkD6ac0KE$2ssd5UlTX7T$FhSmM~8|6QxB$SURC zO(wHv_YErx*CKB@q%|U`+eGHppn2v0e4yjSohpHgb;_zuVw%|}daxdc_e!?zQ`eZs zvCZ)`1cRQ%2(=EBr$6WALPYsyFTtzq392pk`jj|}@_;nT@`EGtnv?v%k@6Sa&SQ3d0BoxoT-e+LnmI7C>W_R{l^ybAW z4H?uwe6%UD8$9Qj*?lx2imk)oczn(5bcGhn3H|CvZ)tU#!PcF1+PwE31NkfZ@<+cC zP4z-~nOXKaoxOfVKl=ASrIX_}b^AjBgplmuU_)c5Dg$-w*^qQ#usQ(H3z0C>7%#|z zhRl%PiUS4-8x407%w+(Z%h5!dB3&{NDc6d$dw*TP*Xi36nbT#ymmvoUUoikh;pf&y zMRd+j-rJ+rW<#C_Ye)*)`1#5VLa~nfg9$ylw@%gdn(Sj8cJn_WTuJUqM-C|BVC-%c#}ZT$l9;SC(?KMWgdG z4n&qX5Na^^FN)0Nc7ldrC;UB^9AMtkz4xAQCgE7*9{`_QoH_a zW}nHjPNz#F2IZ$5V14=gh+ZAE#nXTP?HOm8#$r9Wy-}xi{x#*f)8;_*5d-*Ca0qnU zi<)iWaY1o5WM^=8TI6?wbFIh$6N31R*HdqdfEb;1ujO3CF92Qa>ijx6h~n(j?G*=( zUAZQTzSq|3vg4p>8RRY?=uo`dx#;uf4FzChf1F&7X^n%;jjg(5jOq;D!L%n*gc^(9 zeSyaw`v4>|*e4K(qfog~U*~DVpF7e3%NsMHs2Y~6cqe0?+n9sVtu|eZ3f4Ep_EHDY zg+$2`6ba)$G${kiE(RAu`sq7q@cc@ItcZlozn;!ZWoJro7`~ZV1~w3%wujFvBBW?G zDHw6&VAp_g7N8@k_IwryI-!GPBZ7(=akYP?MQnao*l z?=l$&#$B1$#3of_O!I6`szmRACyz{0Yv|)+>5ZNwN|v+?+51g`rb~t}a&|Q`rq(}! zw15;*`O>0AfckzMX!<+ItngU9Npo#~7Hs(<)2iG2q4@#~N1u6+6S+)gIt?0ko7uW} zEVB{h5C(Ld8I5fd5oyodHTC_NYe?df2m_({ZK$Pb>S-$*619E_jwCWvnvtU{M9}%Y zNMM#}F^g{w(VV8;3!N>uMR}oOB&=XOC!cZ2SJ329WZLu0qtXzViR%w#7QCimvHLjr zW&P{A$wWHeV`qNz0LNWYLQ!a@83*!=R5r6Q@rUA)Sx+3sw+vlxNT1GT<*zlfiDQRT8I~34^xX zofb7)WqSGSRJ5!o$35{UH&Tgq?zZIjgI5E(v%5y$`je+rV_+9$3-sxK`UhbJaR=4i zCjH`n{-qSh4f$T-cRpdj3!6{?A{5}3>s4XRZ+MSDws>$hq}m4DPnMan?$FW81Df=; zQ)-M@8K4YL0@HLyl0jnAz{#U=aZ+*Jl~-)gX+q1LIoZ#xcb1;9&(zsy>(`PhxGQF zW7#jaAMHp(q)MYjozoNQGmCm9?`w(K%^8*I%Tic4y-J0B?=T=AcG~<7M*_Owq2As< z;%oMqksr#OfQ{waUeooW?l*)BsWnm!+5POYgOYq-kpnWqQ z(AL9kzUEj8C)>w;+TiEKxdp8_|DY7+uI_Eo>dpqu_#SRK09fQX20*#@NB)*bRy=Btw@pJK{5UeNSEpP?_bmTnS$Or2T{F?F@65*i2mTid(wRAu-%nF5zUXAQb$kDlDypx-|`q4SF&Z8j_XbNlp)8GW$GXk=DEAtylY6jG@MHCNYYjWbKF zItMTe*iYMi2JpAk;h+Z&E-BwbnddI*7lu5pko{ba##G`lkCzt&I4?>Ub0ta>L_s{0 z);W7oL^sqaWG)j4BDy`!=J01<^Era9y~{kV2+C2^4lB|P4%$)I0?&AOz29;+;PMI` zdb=D5bfq~O&L{L3C>Zt;5+l=o9|Dm1elV6L4sH?rV@E@yD?C2}gn~Jl0i?rX7C#59 z0aqK9ktm?Y{&IuQvSy3OE=;Fpq+t7<6ssDM6+6BHX=_BHLrmXuwSiw^*w4=+ky?-) zs0R3b57%?lr7T{57;4&#*m2RNpQlbTlb!jwtkN;COJV1fB!%=s z$_2T<%x{3_z+W(M$2aN=Qjq8!C^I{to2C|J9Rem!%*Z^d^} zG-vY@2No$rCgg#FLA(Gw;!rI4&b`=SnFc0W0g8B{TWUV0D6dG4$%@315Pjv>pd1+B zA}NKVHc4{8m@{KpkOX9Yd}o0ql>gkaXg1dhKBVeNfs;#6)WdzQ5Y1RkuQ`xlrjStX z{-dBW7HxB6(Qg#S41g#xCV0M!rlhNkS@ub2q^Mj+bb97p?o6>S4Dr?`3TdSvov`eK z0>L!MKHS#OJJLGi>3nN!@6uURXUbjrL^LOTh}>sdvk_hePF74(us#AFcm|n<-J?h8 z`jk<4Z~l1{`Qo9RJtxW+y1OaiYsp+zNzVhyvb-h&Q865SLLs*Wbovep9y2K5v$bI_ zioAe1ncHk6P@(+4u$U>&AZ0q?D0ug0x$H)Q!-6)n()}WLX!7oOI#xM@;m$_0GvRqcD{jiHheR4S zzsQ0b-y6gxcB+6p1iwBu_N+-Vr-#hUI<*kfyep6YOk(aWe*G}c2Cioo6wGI(AY+Sz z@$e5N!1u67cZ%xW#6~jGY8~d_ZTC+E&*OFk&@kGS3*iBCU^L<&wb` zZqpgJ9cBvq{RtoF3-k@Mi+8qL@^v`KpxE)*H~X~B3}0enx513?C8QM$fV&q1X4&OaA@tWOCa^LfA?dN zqx8C$wDDk_e)r=q=RMG^N?PzriW_E0M`u zilk(~0Bk4#7>qgQ1jYf(;^}@zWHTt3g>D=Tj&84R#A6*n^EES&HD<|=UR}_u&yQ%6 zGXm%|+gz>FDhC?f_COf=ItNIL6>UwA0HU>xd$^&W|NXD%>#q-}Sy`g(?NtsCy5i;D z+F2K=&agM;AfZg_{M=yUR_bNyo}Nn4EZ#f7Wx27!fR%ykS)Wcgg8&cx7LRLVy(+Bj zExNZdK*id+9Pz#P2hs@@-A$J((7z9mCgJgD@x9eV=e@L2kzb3;W&Vt1(q1VG!ko|0 zq=(;2=NN%OPnt0e+8rvdRcQUumK2bF{$V<0 zpf11b7eDzW&$+P#MlU{lCCoq8`07@TzWbNoqNUOT6*waU?e~b^(RUSmC+4dWGyj_#!dT<}+J_xp1IQ*V$=F~lO0`v~ zUsz=J8aixbj%2@MOn`2+2d@vM{sXLZo9`7ip2vr0^vMVJ=#T@J7yRelH3Y7lnPITG z%)w8Q=YO5ED#DDT!4ZG}IOzQnjlXz4RA8CN>mD7BpS?U*|9*bAYaEbnY^}+kC%l#+EoyCS z@H{C?XJnkQjaHM_q87q};YYTkidqAn6U~iv8eOR!F$x|pIdj!V5%+B>WCUtuZaW>C z@_uy1e+MWQO*XXisTQ)LD=WsTC;<@fZH$F_9H>lrUPEei%l7~|4dh-Ru&{rXAkX1v zLh&?N1{1~YaI(=3?V0${BVdOO>oiqjR=cLAx#U_;3q5b9N{FH;Scpk8AF(vE5;jic z88Micqm4&**1aURS7RkK@za_0SIq$GQtfh|bHj{d*ku#9B~inAI?@VN?7a z8MSvXMwFlK+NUI*JD2i~=aI>XlfU|xpZp;AayI>sVF+dUEE>pE(;N;{`2-zQ1qu{^ zteS?1B3G_EGq9q1UIUB{`Yol6!%WyP0q9v^&g8R05g*yHOsa)Wv};&m{^CS|&&?S} zV@(wo>Axk3+Z1LY0&>7C44!nh%*+Z;F@(ry45%v8Z<^^y*|FH=!SarjF~=lNqB)S@ z%w%Lyf;?s#bl%WP#{P`41CK03aNfdKK4X@Vw}+3-I#U7*DKb`OJBjCPJJWm;Mo~ud z?Rzu#KMfNw3jvtJ+tBhjvO>|wnkM+qkb@S zKPHpjL_r1=`Q))V=#7MY3V54@cbRe5mB(QYM+O8{-=yI63u#E@ z`y*kq2wjUQ3YF}Ut+AQ8`gj&C6wIXBtyqHbM6&~u6^l|i_%nN_A&AqiRsm*9;F>BB zbt}ct2f*KTteaI1y(t8ip{uFMP;458H9ey&jGY2~EdcVMOs-);foHVb=2be!%8s7| zQbJ;v#Ea&mV6!QKBT-;wVk>SAVY|^k&Y`$u@r zD6)nnw!fm_lo?z&j^J0s2l6>HneZN8Vt_GV051VrX74GD#OVY&?)wk#2(Wtj>O_j- zwlinxT!EWZ+9oOQd*Wh z9v~P6abP}w^wSq~%&a9?J^=OCZ_eoMW{Vy@*`&Sq?s0~oNk9D8KcT}n=i)W}{`dcg zzW(VK^wqOBaxfOmx4hX}VHUZ_%rvylmm07jpm@T7q&H-y_=aA5c}T|xZMkP{`j#@o zu78H5Yx{I)&J#ox2FzgkW(=G#4=*pL@^8Y%W7YmD0$h!z9AL##?^fH?~08WPk3EHZ=J0hFGep{?o=={YAz4_HM`sgn| zpbmrHA{h#jT1^-BwIZ{~Yn(YMGrKL)Ar1g;Mg!`f zobjLgvj5$n5gD(KUVF$ucR~KVv03A>9n%eeLz4rF@n|9}_z4FMGc-bCP!5~L65M>4 zO-C)sDhIarcuZ=wWtrb7>~1npu9p|Z4iqww3(oj_{pzjw)nm_Z@jGAPIW&P~Bd-yF z)ty$A*2+cdPR2A4i4O;s$UwlMh67L8LxCZZg0T0Jk>%j6&l!+}#~xXv{lfz)msaF_ z7;r{u%-IQaP)&I+xn-bx#%mBvK7I$AKEA$`nxyGev!yq3CUAhue?~#NV=uTnp_qNj zfeR&y_`seEXoVvg2m8`!i!(UL@-?ef4nCHsRjCN`j=cvmG{|Iln5oA1SmFQ>>!}R; zNK%5Wxl)qx!rq4BVhI)s*3*Nsa5gGwYRw`8PKkm!M`FaJoHKC}D4A4!7-fw(;Y)LX z+aywUHf?KEcp+kz1=ce#l#xZYc9^NByN#y}wMrt)de9b0K2{Vaei%2i z;>;(s4`H4;5ilv&v$>N|Xu#uvij0rzvg5hGyPU!SVTiO%S`g>bf{b$JJa^8~d6k8C z;hJp6?@<7rxdo?2%&KL!!pXU3lX0@nYVLuKKt({KZ8W|qILMUjjk%-X;8RDKG`yG8 z++lS16JwuqN13n(Sacu8%z&Z3t2oTXD9DZ6!6|2&W4qtfH-t!o3!l0O1{^@=V@VV& zHbZ(*QseS=9&jYqQ8=|Z=RFy`*xff{ z?;Vlbk9p9f0fPstk{)IjciQbSh#kuPqfrtZA+X6;D<#=mZWzEKEsdK;Fo*ZiWL6QD zg(sZyZ!tst>F=J=7K1f-dLN#2MVotk+@beBxXT;XjT|m`ZggaUBm8yhqgSjH$lLUuW=HXP|lfsx7|a zZ<$G-2rC+kw>BhLXkQP@xFG|XUT-9gYA|-=(XG_>K#nrGn(^~?X~^S;J!rxQ^Suvu zXz!zk3^-Th=Y|}t44Ik5_+K%*c*y|okh2ux#|_62X0-R;cBJ5OaVe&1DWW}QkP8gB zw?BL&-DaUh$1)h4wQ0iFL|{F{c<{ck%%4-{dmWr}&^5kP4KoNXo({vIHg!S~E$+R@ z;1}Iwah6p%s6Y`eWDeI1)NhAfsUh^T#VPA42>q1);9`+FQ@?aJbnaLEKC{wC z%)nnthfchswL9yyejh-*AwdH4?Z`MZx3}o{*(-hzhf?R!*lIBVPh`w%%r1|+ZCOFk z+habRy*=YKG7%>iNQU~|AqO#u6iwdez-qwr8o|=tdpiuACwe}313jMqwK8NSOFX|4 zk*mN?6Lzo7W{Y0GZu7c}X>V_ro<4cX*Vty3y((VrYpXT7x84$leTna{-M)}>8(EkE zKg%+Y5B8f2WN~&hgDW%Di=c%BE2+X>77idkt{;!nX?R08n9-#F8*kk$osKKV@<<@ zsqNir#q0`&$mEhr_NLxDh7{@tEMj-5XI|!z$BtGb=VoTYL5g{TGnk(vM!HFc)iJQ0 zzcVK}an?dA69qOgGRoK((Qp9T07j;7P7L6}ZVv3FePC!NB!^5K*lBO7GMm?yr@?v+Ta$4r&FA z*^WnpAYA_~F{{Ji8j|Hc*#2{Vo!rOUGA70{2WB(N*-r&srWLoqjVQPC z^XyE3Rrc;=yb5t}a9I?F)}mngC;vtHqKpg(c`t$h!tDWK1CScDDYyW8K!m@|<})*- z`tY#s{TgH}w*l8QotL0k#-`x9X_EliJ;i2$sWFDF51)&+R%}%ov9Aq{+@i|w)#tv) zNg9C0a{;vj+AO@YP#fVvFZt58z}ViUG!Kh(eUk+Qb3b7LM4AUTluKbW@QFeOA`Np< z-)S7rdDGk2yStMzCMN%~@%OnNXZc!@`ItJO^;fQc&pXvw5U1y@WS)eLpV{V4x<|y3 ze~toUpO0am$S7oMuq#xfB66Yl=_1a1LZBg#~XV2*(-_}d>@|= zIn7_B`;T|&v(Mg8hgtP2{>%*qhGhn4IJ^$_yUg@6pyyy?EZ|_u>|QDib*-+=az+!C zFNkCaTK&obHP=_DwY?_nH;PNg3aS&9Zr*|9DOlSM!Pw0jL@`zc^5obaMXBQ&Nsqi!0OwHOl!p1mx6YD zU9EEvu`OErYaVAXz#9zw;cg_jfq`Xn?+#t@Tt4{vKpHKLx&t~rI;Zo~zWD3|+&9)Y zY24`wo~X2%vW|+CCEDVw0$g-@XI*BYuW0MhJt@8g6Af?p-uZwIUhIo=PQ>hdV`EL~ z9>ACbY;NpsNY~l(!wzQ$R;3xz>1mJN9-dR1vsqYs4Gy~AdvsU!2RNYMIXBj|p8@tt z1hQ?;n!J4emb&LBH174JgX+f4I&I%!5Wlx4*#bDiOnCkDIBOs=IBxlDuh>&dO|U((oo%5#+iI}XrV+jr#5xni)4nieqna9o-R zo2p6xWQ*`TEe`z3E6ehAu?hxbzN~c`*pr652Z()SArVOn3RAIvZdMz#7%$L(GZ|tE z!8eLM2NtOKI|zZR+Z(!`YT%q2CeoU?9DrlzTqr2{HWddw4n!EZ-%M31b2FV8%bfQc z(VD9`$AGEZ4(py@2=!kSB)?8H6$*NW21AWN?xdmHs`e5vj5kjn#guEx4GM)iuR;>Y zKDA*sHyW??%bBTgep}_G{Jdlof}GdSN-}cM&vgpe68|AMH402I+h2TNfqP=e*>&N9 zUm|lsn9UXC`8|nSfgRMrVo?vz05S8dJ?wv#k+VY7q(1yd=XX z0m+Lq|8Kjqd4FU9P*z0dKGB+L3CW8f8;A^?rDoF;t`p~gRIzME^Iq`&LRD8~AS+cZ zmNRvBt7esF;6QZEmSv!vamyWQEX8Bdoxf;(k=i^5sd#U4<4m;Zc>#*tiZhObb~%78 z&kn>I3A)_Jt(ru$JXQA(O-1E$5!aOm?H4*w#<@3oY^*r>^ZMw{(mAbG6aprdQOt5r zdy2>l{Q`V4aGx09@wy3Rauajjup*R5E%n^qGjCEg%b8JU%?)I_$G-w9ljc|;ntFW) zMLEmuV-c(Sk22PA0NM_|T*vKy_Vr=gf$c~3_c-sGssPiT-hxGM?&KiV?^lag3zkVx z$(u@O;;_baU3(pgZdSn}HS>aFeHYW26~S74gO>kBq5vbE+7y7Zls+8)L^Bkt_GK94OT(zK|v93GQsPXLn%#d$VPzEy&RBwQo*qHSMq z_O*P^%52sei4ca-nDRo-@P|#-*mtruplhWNf+Kf}iA{pzY>^)fk^Ov->rno@@&On> zJ~*d*pravApFuUW(~x3_l!nI56vyBdKtK*;z87>qU2RpwNdwPPtuON-$omGr&t8vN z+06>|80elHjfGKtat|_s75b3bVCZjGR;tYC9@9^M{+xj{gWYf6q5t&%|237@EA;Z^ zshmR}eYnklb%8$r>`)Hh-L<9wjR~jn0m{Klo-#Rn9e;IPjD#woqtKbIoZTRy`Oyj-HG6#xl8A2iBC21Zy*B0rd13e&gE ztSnqh;5^g47>XpIBeDykCwpbS_W}dN4VrY?blD%!^>{3v+5qOTti-xTAu9afkuB)* z{j5~g`@6#+zSABHs9a?5wy>})?;hHC2?lu%prOxFrONC%gS19jc&)+VvAoOTN-VzU zkrV>X#9?M~ams9dTRNHIXObd{8W|w>I(%;&@G$Fs#X$e)?J51_AAirNis-{XywC6C z13Lfuh=wP9YV9=XF@tuHRHKUvelKMX#86PWf*qL#CvCdr=R4-i2SD=1-BqbEzzzU5 zKFbnXfBJx0cXxGXPj9tQl3Cu-d52D397v%tWL9rp9@0w&(j^9$n;akwm>nPT_n-i> zBs%yd$q-C9&^-M5wTvs~Y-4v*vRhaEfdJ*Dl?DUyBMB<7beg-nA{|3hqb`5WgQpKU zqj1UDoF3hMaF;VIbviq3i%bOtlF|v4gH5pQ_a5v~o!M$MG($F|$xJ$o55~M^4i7Kr z;e%BH#3%qqlQGn5oOAGTvVTJTUY8OHpb8=b27n$g7zglQ;sB!4AIrIT+U?Q-2Y6jx zKax3P_8XZkWS@GXnZHr1z-U4Cog%Nj9%tR&ynfArK!LWNyw3sKPy%v{F|0JJ;uN(g zYc??2{BMx2Ai%G3@KvoeC8$B*3qXygRA9p4T;|zfoTY2!x&ZSrzjp~c3YvYudJzc^ zFaQDpZw_f^s5m1z!C}n2y1XflO5FiE%0wE6wKz-jo-FRP7P7TLT4HwMfwVR3m?D~-Gl<~UyoH)02CY?XqQP988~2mr&!Ai1?GSUuAKPcAL-!&>Bp`6 zh-Z0)FtnIp!6IYpRLbs$lpfNGS(L8!#w|e;?^r7(${GArHYw3g69teV=WePKPc*fO z7DPytl_{Hx?t-d>NCP_?QvCWCJ)n)TOYGiUCL;h@{;pBx| z6?CQlm$OgX9`_Lq*An4JDpN4UsC5D^$yiZQ zF4G(!kp_-4^AdM0b!uO~MYR&mv-`?!zr!$FG@ArgT`TjwA&%U8q-m_FYuyZtVPLS) zNPrYY!Mip_(OjlFWUz?}=FLTkw3t$xXGB4=JkUAdnF)2?(O^fmb<6(bR-3V~tuFf!Pg)C*f}{iYgB}7j zB`@@uzeenHGs~M(;8t~W)u1sn+=z{tkYGvoBXxqY3`L@!4TeX)J~!Wd&iM0aD3#0Y z$nIP29EGEWBm~e>IGzTBly=qC8Mayz}n6 z`%Of)DMU^(%rvlADCj;U1@n#&C=AbXu^@$c0-7%v@G+k2zTb7peuy$-8>`N9BXT#5%X9{g3zP(UWc2cFw+eEo^&*0qIJkB*7x4=-M5y@I`7fU_9c$=a2)SI%h`^ z{2__}XotT)GCLa&wm5@Oqvh%~^^cA?1Hto!=Tox0z@UAJI&Tl?v!8uK=O-ij_&ax{ z@b}TfJ9H0ofP>Jroef?yu~>L6SF3VfKmXNlI0)%8;H=2|U*y1G!kLnWIIG;!xXXdY zoi*x18_z5@8WXj)H>L0xu2#q(ee#EYMD4?U2LB^!t#MGfzDN5nzoGT5O&Sh3C_BI4 zIkZBLI2*8YcT)2@$TS23&Aw~-UT zdGuneZNM~h%$r8cOnFEW)qD&?^4p1+e6e4z}He#VskTas52#9iq-WgV} zL6gH@?2)37hWCO<*DJ@)#AU8$RrcJwe%VK;Uf$VVkH9EzUZkm#?45}2zm+PuPRpL# zWf*Z@L>k%HibgDS4b`khWKm1xz(x^Uhz!GcyDmI1t2uB??K8cbnWnJf0Gi2w^VEuf zGxIa`g(MjkV~T0!n&v3X7YT?Gmm)<0oT{4+1rVOiJaV(SXmcZszdH$8H&g|{7Fio} zANhQ=cQgyksNRx$)rW4GhE6qWq1S)MNrj@&ant2!S>!1)3X9i+Sploo#n_t@`QrC% zP!^cpoZ$~e;+FB6xdh1OlHb2>929~!x36?*hitMYM~mz;)q2aa5{7Pr)6N_NpUhY1 z+qj`bR8p4qUu-&fmCVeP9VZI1DX=d-A6z5v866E8bZ_wvxAWEaL{WIwcz#{Z-LJaf zFr(sZyl#Ik7Bd|fDFJs8I44GQExSwsnvs%X)rmIrNuqEI`Y>qdd#*n zpc;-Q68PZz&Y3O#lRtebI_+x)X8;F??N?SC(!w3ZpEzJIdY8i9d>2`F6}cQI$_|2CW9+=H2q=byEl;`$FdtOMhz7`&?roN+4DWgX8nlGxLl+?Q^yEU^YnJ)5+6=nS&boBO zY%=a`b-hfDR#|K`8(UR+@ZCL%0l3}_>BSdqI%{9?_`v$IAzEWx7oDZyS&l;9_R%SQ z{_}4{D?N*DnV~Mx0kh*M+C6yNlV(w{FuY=R_4mJiO>dqb(aG_-$VxB<(7Nxu|AfjUs1Tn%g@(hpuJsfX91tcSqLnErY%x16w@bm%n*I58vOS3IkF! z_Sx8KQggFKiwv~uo2xQEFWww+c8Ie+XFUe-%QElLowdvF=HLBKzmoCz&bRN<-lI)g z+iFpU!q--VHt*dP2?rc=;8zZL(Tm^xo}XtXK^<&7#|+HT%xV4pT?uA^p+@j|uhr<) zm(Rr?yt=+FwwI$$N3{KW_aD%+&%faN=Zq5v1Fg+%S({7667>?lZOWR2=Q}bar<`qg1u4+wn97owTA+TPpZ5}tsxAfG&5S(gwA&&# zvlb2<%r5fvR;8f&6~CK42X>+*$J&B-ItMDKp;+bd0OWhhfxxv%SHv@(gNO$ITZP$h zoT0}Y9F2ysbnJ*$y$`1w0MJ;aDp$AK)J=^yQVzWP0z8Xl4uVPu;x1(Eh=PI03g#0D z&WpTvjd(twgDL>ajmb=;AT%R09mw)7+i4o=>9j$k?$?S5BB`6fUV@IZxc(MghIn0d zMayp>KXd$|3FB11Tt5ta&WV*5UCj;YRe0qur!-m}%I6@+SelS{}c zCzvx;L8#7Maf5^Z0PHER6$6nS@PrXPnswHFUw&k!O%(-O%XmfG^V%tuA|?O) zfA#(k;v`S8D^oWOhosxyC05**+uc~&Jx%kQEvQd83cY47b5X=Hceol(Hz1f-@8+ze z4{GE%%&1)lvCb|_gkxUPiQMCY6~z*TieWo!@ioze8xWnDBbO|f1BGJKNGCvKz(UyiSQ`xGas)Dl)KdJUsiT>91J!gv z0R7>=Xl~5B$dj~C5Ptm*=Dk4H$!W)O6z8&?+>4qlIM895rC!{T1H8!4a$p_}*J{yZ z5&|LbTqcVu$)y&-`#L;}Uptopd6Aym7kZ5V`63J~wcV)IN(6~Q{xIbA6^Uurb4EO1 ze~YwT#$g$pSzg?l+5fylr;k$(-W583vVe;s^VwI>8k>Yhq%A%kM3ybee3p_1@7hgN0~iY9Ci6SB2R1Sx&GO=Lvi8;Q z`0H9W&G#hLy;G>)5x0^o4WVeLb&+?M=n9H7u=fpE$cjjVV%O9Qc())4MX8bOT~=3P z-lbs_09i*v#BhAx?_+m;LP~%Yn#e&L)QxJ_Z73(-~OZb>4@1_9L{}fovv!YRIKC<&&SL%7X(;8dbBS6 z5q3ALw0E~buV0>1jam4Y{5u-LeDa4+v=uu)^WXjbXY~Fj+oIdPUGjoA3i^hlF-;gSjTqE{B}EVhNl`2S{e}aQ7Hw@bq(}@}arm2$ zhFU0yZ0pWCgZ7mLs;#$Z2_0)0OkzeXGXO)ACfHBDVpjU_xW^3Zr35{V`U-9CwW!!E z%ik}~26X)VlulpwnfV^@^GCFMwUbHBKD6L9DscGtLMyKM^bABdD3q_ zJC*?Og2DQyzdz*hDNwyp6#K&jc9AOu+S+T4BVipcULOnLfM@&k$G_+7&4eC2xhwkZR0oe z{h`bA=K69XTKF-)gAHc#ajsyDh8KPMAW@@D03Gz993r8A=&xQ|Mgdr zefie69@A@P)j#_71N!oJUrQ!-Z>_?C+ahgo5OFaW$UA#|crF>9baq3vTA8YxiGkbG zDl!=8l*;3~&(HMg@KpA-dz?Y}=+Q3E7u_T3%-SQH(B=T?pu<@NzQ#X(_L8ZP0+ZkVD`3PMK0t3sQ#ZFY|8HGRsZdFT6G~G(pGLtM}mbz_s6j)=jVoSkA zM&jY?72cn!JV%duBMAc1%w@~I&nltggrjbek?yxyZnvx;oy6rV@4=E93F}8j6u`0* zJ8oY&^LoYr5mEznS>Wd!hiaBKKbQT?(Cf{#0bi77W67|rAh5)6S(KA@((@$IB3L!+ zFc=e)`P%Dw>{(SI5dZuC^|ycEY;Kn3Y4$w2N$rF3lzcFQk33Ca2ed_9VPH}n6mL}@ zo5O`OwMmi}vAN3v88GpNEcpw_qZo=~i=1XU83GHO7s1Jy9c2by^D{fgZkh$~C`ti| zrPj%0CiJo-i*!~mo$vT*lS1t#0~8P7E2N*yfo2Xr1%U3K z7lnYu=7-Ib*ot7uZep!$2&j0c5<9STP?2U8lA`aMVUz&PBp zJzEx;e8GTr5{LH}nmI(dwmk>M6f!*u{A2rC?#b;Lkq}r|CAqHw%H|5GtpP*$b8NuW z=3Zv+T^M)MV#_NtDVjH<3hN-t46{d8!R~(Q9uiZ|N|;8rDN*O zxk|gicE(Cn<@)ZlZBO@yk3sxfAgS-h`2rTR~eBYXPt@0q$ zVsQofQ9eIHhQ$H^@2LUL<`LSRGYGA&)rGCT=09iXa>z{IG9Su#575)%z{LTNMk!#> zPMJ}@xzV)*78Z{RSqo$wI4oe*_~hxf0DBz7IN(42?o;WK3U?D}z%)(eutjm7fZ*yP z^#_-=r)Ypo_(km31= z!Oktki^M?dlGhLaY^y{Y>nl9A%OdNXn7joU4rn!(7>uEb)Z$9Q?|VVI)n0TjCCI&d zza{s5=Wa`w`qoZM8sMxk6OOrYmqGSYsVtV7uy*V+&|TkY(6e7Yr=xF6@1)^v8etA?@D3L)B_U?iJt^>HgmF znG`pc8VqQg=n6ZQKmcnD&9TM|jPKlSazMwK1fG*M2F8nP+qBSZiMtLDG6z^ST44}= z1#3qBy}nkZt-E{DuK-{P8u#`4_aw*wdwT;`zpq8A7biVhX)x>0K>8BJxNuZywWxP` zPTh-+=-lr-cpwdqmdiDfvz#Bj<@Y?Kx11r^VdlS9D~e0YQwI0{)4%x#2H91kRd`bJL+S2PGc{Egc$z!(Bh-;TWet;Yg-U)dySuKg|Bfl zRS7lr<{}4>(D!F{eq!HRDK3dkB#OXMXChwmfkBJ{*@!a&*1HRaD{Bnew|M?si@aLF zGhArG{!E601eELkDg3sbZ)79|8F{DTAvHc3|z;eZTGW0a>tT=VTOAtJ|+rddf9 z)LBTSMSeJpV{?H3D4wbgiXsX?%cG#+^rB~d=2*aNp^;&cl=f!mRpLh7A zjB-Yu^Z<5XG|RL=%u_vuB)1!Kkf_c&u77vAjzlK{>@x?Lb77zWet+rqyLVr-o7Sk) z7|qOsDFdDJV-aO@T|y&cbKU7DQ!pcLBcuR3e@(eWBeP)&4ku<^7a2g)*XIAGvJ7%S zL`pom94E5R42#BY)}3=G^~IEft(nOy~2W-X&QonECAd%fU?+X8{FPB%qKH(mu!oJ!>|J4@cv?B`|yP% zSVs|QSJ+(YBhQs2Veu1rFp>mt64~5OeElTK_(r}fL~#gMb?w-iwJpfASn$C1pjy9X z8yh;{nGVlEZj@z#f%kMLKF))Uuvgf+&Ws!gb0AZ8LaZrc-z;^%N-ap8w>gy^Dc1s7 zQ7+jUPQtYlBOD@gjLGJTqI_IkA6f9gFv{PHZ}2)zH60ryKp}9B!rrBONfI`5-)pre zgU(&;sh~2vEL>dchJdCjsbI4zt=w ztD_tQ`dC>zQa8Zhp;nQCHn7#OKYa4hJ-T5qTYx?9LXjp6gdq92W>$VQ0)Q@v45r7x zufhPg(;3P<*t)Yy)2kVsoe$^{Gq|TG145S4}uTN#F-F>_*40!weLj2<4;GoX-vNY*0K!nqZGt_KfyXc+;|(Ye@Q zo?VQnQ9(1A0t2oBt*@16i?a*Ox)vu;CX*oYUqc>k4idT2Uz_(Z`FcVy)drz9u z6li)mrROhTrFcs(U!Bwb+Y6Z;t!9;WI9pNOSW%fN-_J7NOOe^)RR-Y$W~yIvAb@cg z^-&nvr&G>)tZi24pa08`wD}ch8${#F|GOF8%Aao;*Kfb~h{vKt6V7U&3oV*c6>BT> z{Fl#kUs;Uk;U7QdK;oYE{C%^M@t3i7oJ(V>H zLCLJ&=XsYgXe=pv++$G6*Qhj_e9c9XLjkAUFqm)c?$D&$m2sMx1tMw#Zg|WgyMnw4 z!4@?9)mD=Of)4dK=*8SwsW#-g_!$in`iXJm-|%W zb+p6p0CNq^$PPHrg$*P63}Dad^4dYR2CRCSvkIt_z}&lkcUR;)D|}rPruI4egDe6X zC1HmubEW|At-%sN!fOHHFha;$l9Rc>FiYE3}S# z;(fpJzmWA`O_HR^l_;oY<{sgkga?nvNLH0q)m2^1fCdJ4Kzhg>40c6U_GN!h|CoK+ zr`?woS-EoM4#NNgpm`U|N}j=~a}w@uwtAF&<~g^3>Pq5aZuZ$njvhUFl!FE|XzHT) z8+ACSr64=^DDOd&#O~UnCx~ZHolw)D+0HQo)3M1;y`iRpdOi1CW*u2QpJN+$nQ?sN zYJwbHQGQmtc}S|gQyivCM!aA+#w4D8ufPIXs`k7hNhdo)O=b)hKNQe9kt5K;f)AIK z^8Y4(^B=$b<%b%!BRt+xX~kBdAlEd^gLk+IacI@0(-MfnTKRO9MZ zyFnr%%&)P+HgK^q+cpG&-N;rLE(Nhk0JKu(X9sK&bnt1eDJMPfW7A*BJtk4EHKs_? zp~`UU(Yy-gGYc#Ne-=BSGd&kohd*GRpOy7gE;4XX0Y;*7x?@bf5vzvqcR3$!{%4$5|Q4nW=n+3G` zPR)hK#!Z7ZYtWO~T+MWxMT%kpa~8(izjtXx+j;f@&j(i2r&g&^v_KKrVCwrDEM#~fF~=wNnM&|W3mR{U|An(t>xpb!{8gDXIiwQXy!}K zi-@Cq{%S#M!NxcW5-F|e@W3t$bt(?TJ>d6XTMmHWXl3(0ay`E7ZRCuJNpCD$iT5TA zldKt#?mf0oQJ%%{flzr}enhwvL$<;u!FfYuHYhM-pc)qwVSVO&2rp7*nCH657o`KE zHV1-yWzNhTf>+#Zy{${*caI-^xLRV!9f$(7o=A{_1akBpouxe80c`{aZS} z8qmM}fBcPr_yq%?^UE8~3M@o-zq!+-CWFiO?=GY;4+UCa*5P6Urb{gNtj7oRy4TF4 zzPTLIn~Oem8Kfd30O<+F`>r>Y?y#c~GqIz4alU|cU%AHYJF)`^VCGAap+3Of+9lfDs#1eNFP^=KPLX_%Xj2d1dc%Rs%jXv~ z=*<`)7HNY&>%r*rub6G-fJZgTDSgA4hdXB4;qeXmOr6fU!73Op!4XH1KR)OBWdDv`SJ}t z{@IsQW=4EAxTS+9d-U;-o=|ObN90o&gC4Wc6S(Z4!Be#=K=8ghl+34qCElOVAgRi% ze1(DZ{di`3E9y3u^qK>RIcHyRXhF(Vte{!dCbf3<#rbA|>=FMLjxt3K$Zk)rE_xHCsGf|=!-!hnI1|E%&3Jl1fefos%u2A$kqT8Du2fAZ||qp*RE3(RTB}1M2J^h$ZL6odNno4#IH0oN#ty!2463gASZI6J8H+(1DYW zD+Ka$HYY|!4<-awBms{Actz*|bUS8MNogEFxRWxmYtN0_3EFhSvVpv&6-oCB8LEGt zSS_QuDH@J(LfHYg_T{l_8NBffv_hTS*^Qh?v$G-fGj`?7_I@UU%l_&=eDO>CMs=V| zIe49pcXlXLZ8~T(v3_POsHCkU1#|NErbP~b-zH4ZL;JyHjJSej``&OUWG@ubXh>Q~o-3!A@r4{Bhe>P3&8`JEs z-!!XIIlRmn;BauqE9|K~mreo-&l))cYSX}(!!`kBr;7~&KiecbtRLb zOsI9)rF=X!fQa&_+#+Px_xl_nyI+@#$aq*_=lAD!JV_|SpctIi;%7CIY9~@ zZxRdzcPPHM=~Oa|Dp%4B5dimWtRTgM9;_QM@1q%*r1<-c)Tk1H8-Ii3G!GwxCyUuIZeA24L^u zN1L?8;J(=|Q&d``yR*I&%}%B9llpPrUNIQtKbt_V!wmc71qxDAdiL>-%(n@TDO}w$7ny(}q--B&NM(rN3_Hbo4KUjE@VRrzx}4>r{5b6uqr{j;8U{%`NL z=-|;F6E-Ef=im%ZApqO(i^n=#XAoIna4sM!O?B?AX@jR~rzNZ*z+R7oGSTrj*5vOK z{owB}|Bo%}qKxKBGVU?gf4K{aX&$ zI`rsplRkR7Pj#NFwMK(}_iJX_Uz|{rvo&qb4m^B(zyVZ=-n@D*tnUbtEHsniY>0aq z0Q`zCJ{l&?)Yh@WjCOiI747-jx{{Hj{!oH2wdLh30)zRTgB{xBOcuQU(YOemO<~Q5 z24GDNwk4Yju$ZaK8M>6B!4ra!Hjh`6-_OqOo{ZOwgQhNz@o1uw92AK|lGWeM01w#*ov&uoAUkP9g=^_-BKI707AMIkSSbeAwxTJnfd(J3Q;B_Y1=hZWOXK`E;y@ zk1^c7@2wn4dVZxV2S(&l%sdEiOI7a?6h-c)XBf@SaA(UiX)1_wE~T6wwk&B(9}=oK zKm1g1+ifGLMKOSLa*+nS8LG;RM0MN}`gj-vFOb2ovz(uBxiVOq{Po}c@Rwq($1ex^ zFOjdvO?fk*WzffJmnhTqNI@mh2W}0qc2RUzTrr&$d?p6AJSs8$yJLHAwv!oqC+{NF z^o9d3`F%khN3^B=!qN{}-saqj1GTWuVMi8NGCvT75s$p^O@j{47A#j&?&GQ}Kbxj#hlhBYz&7oF?fIpyv}cv->hIV)IPzJXGWU1h-wnQlMv0Ls8Qc}c3zUj?N}s3pim8sq5P zn;3<65K++ahpdHfv{v*J`3CG`>vbt{WSxaW2o#)HvdDpQ6868mB{T&qE#F7*cV2{S zGd(;Hc}5`evq6KRyjVCCNyzUL%Q%p|L(d+nM&IjpJg`>z1yaUJSj3V|^ttPR-{*E{ z_>p<>e8&pl%Bu1pm;IW!d3W5N6>+<^R?%+xz`l0 zcer7U$8%63r;69ydjl+5p`%-5(fLs^85 zxvE*z0t26$lL4JF^NsZYmy_>)e@wQY*^*gB#A^ZY*;H+f=ht z=U|Kh9iRVCfAq1;m2$ns@0h{qR!8~=+`T`clds?Lyj+MZ3&DM1y~Kcgjbgt3lELbL zLG=W64;(a=IXHluO!t`C~rShk~1ZE(U4)GP!xM& zXCIwcXR;r@dv{4^;_fr2AN=qUZSQZhigrL~+cYl0K|M0svGMC@;{qOS}c>-)4A24gF_+(;qPuHB+?}Qz*Z?fU#*tS6 zgZC@C=W*>`U-KI2itMGz0nx`#A5fduAwYA7gGB_ps3T~#HpFri!3WmjHIMaoFFA{K zan1L3!SkdmK{*O!>l{$*?ruw=XQN)C3J06$CS2oyc59OXGq3S>qfL8xik~4 zI?)>c+u^m-E?15OuFlCW=RwZMcoC?jy2h*(-l|2EF5M6a>yGg zIWZguT;hrjJyR5GTGm{G2hTV=cu|XFd{@D00>!E4um1h#zx0%Hu-CDJ9!x^f>>Wd) zn;pXL2%+iWSc-j|Datjbf5u;&51;~)^aB7c6C(J{XXXQ+Yp}i3rw^j*xbybxsWIdR77Vn+9)`r~u9HQ1 z;NSq#0}lr=g3a8X(R56T4y~}4Jc*$aj$~zASAk(D;SKf0d=v?v2cT1$m zfQK%cEJ%Vf`*}@2Sa!v3*0tSUQ0EMzXF8nujm>?dU;-U{Sj` z7EIf&a)P9g1P3GX1#0iMU@Uzeb=&1az~C&Z0w$=b#5h6jBApVWo}a%MR`KQH>t?ef{~I8v3dO~eXRGe%&bds zL?$6pFzAuIX{j_jLmFh!Dj?1Bz(p$BJ#dY3P5B4!F^q4NyULI)Qp<=e7v^hD`FHqu z`r31E^E`+s1Z|%O%v$)q)c2CE1VR*9)+v#_Bxg_b9f?hu%^iPEGPc{biJsY^6)Q@) zujP_LH)WeUBK)&}0I6%Y`I67up5k*SHX=Z+He>l&x24Q=_4Gk8J<{*c_hJXa_3s&s zh+QTaMFuYL)CM~@=?=xWn`}RTLkkKX@m=s?7fDD&QkVwW3oHgl!=>0NmiX5w<`iFS z21TRkTsnrL_4+$z9Y6o#A%Au%djPcUj~{lJ_3crEfoGWk;}tWt9R`43e|<_n{`>(S z$js(%)fsg4`Fo1=+us~BFiWJk4&5rxPH*|}=6giZCj%iAWrA%RG1$jYUH}xKpbl1- z)1`oRuxwLa8}AvkPXWqfb=PuIC^b1IMOwd6wh8zb6)e!`?`x2Yhdj zKHU^4z?+vB3;=8N5xT%~a53u7>G<^>9W$^;!6o*JKC_qr#=Dzk0aBL?;`>(vW`Da3 zkW(q}Yiz7hg8}&DZbAbF?Cnlf7~@ZWd_c=2qunRl%p6bX>XTWELqn#0 za~~e$JijV6nlU2^J4GpIW&pPJ@kbme)PxY24Z94cuXwFZM2@pa`FkGjQ19ZLu3sH9 zyFOx&S)wX}N4WCvd+y&11&l)PfBNlP%GOBg40@ainK6)k`{IqbC$(V7$uGaT)uM-= zeN2~}JwQ;3wTtFW1-JlBMtnWaklgb9#hLtlVx$h5QsJMOWC|jgchQZmV zv$sWG{qB3>L=xTgCSs3@;_hdUccc*e$$pc5@Y#{bV$kmZ-G;B>Sj6LqBFtx>JmL2- zq_b-coY5Zv^K*N%CDxEbp3`8um&<$k`#uLAH3sK6TT;#%0AC4D!E648uY*1Z$V`+t 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

    <&VTy6TyGUHrma_|C2CS(R` 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

    OwZH?r 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 z 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

    vt=_{6Tx78@il+s=YA=;J|l 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ċaY&*Pc`wBVnKp2Xt9=g((&3 zOQkg%v@sx7D1wD8l| zxY<_gt{Qnc2mLPOUyy&SI(?q2S5mX2g?J>_c!#qAqtPxseDsJOJ$fi}7}+66z~*4< zdHh6s&;P4Y0|Hywx{(+pW4oFrER^>T0ciG2q)6Ega=f+^bZ@8%hYe;ISb9H?C_!Fr zdpl~fs7T|WUKt%1g%uJ+xFN2|!z6mUwH_E@- zU(4MmjT{rV6uTDh-{OHnvgg;-=jon{^A!d2@cX~IIG5~82CsPEvdRF^i(vJfHUMg~ zUb5kCq=52|dXo#XeQlIwneRc_^<*^(O5h1z@cuO^FNl1-PP$qcOIfo=4dBxL2^*PH zelC<2yhSs_aOg&c1(J~qx#1DH?5TNweQl8g5r2ZsGuOo)(sq!LlC#EniW!)1){Nh0 z{1f}k$Q%5ob+FCSvp9ZIr+@W?iqL|z|sEt_B|>~551 zB-ZA;(85)GUp3{8{#!sW-d|GGrAk^b*`@fi5ElvYwrdqA$zkI*J{A$@5H#sPs%uOw z?49o#!MX$lV~DW8)TO{cggrPMLegs7AE`y@QkZ1X0Ti&&cB0IRL`{u(6sOKEP2^QH z<@fn=Nq~B(hn39+T~IpN1jvY_N_P&t3J1-`(^-WU*(G~^@>zv3>xF3=%Rt_Y$)%K4 z<*!w(V6=Il0bCStGo8-q#ph4x<>M2&odqnpx33bs%r zs*kry3eG*%TLfK%WoV8g3BYQ-*U~cx{GUD_@Nk*<@T(_uj~QmTms}wD+h|axOC&IB zzRpbR1^<20Q;%lpbkCo#$M-hiIfVj4u=4=l$~cy^!=M{X(fRe1--+48Wk&$j+4)Sa zcfObza86brMB+3v0Z>nB35TmdBO0PD@7-hozhW@RZ2MBz74BhgZ-@Hho`A&O-iXFG?=zFmz-o5M*@K}x69GlFcIMq& zU#Qy?ukATAsA;XmkrD56?+7U0V4O2;F?4 z^$B2+MS22DI1X|!UMOr`ldcJoiWwNFEUhYydu(q&W2!D6z$iEt7AJ*Vw7fPwDToHl zg>JB}yY?Ok?$!YH{5iuw5_rLRWNqnfX}V-i6m@eJ$YBA(d?_^x=8{9^ie*fWtb>&T zbOq}w9|Xg{uC-`eJAA6!MTh6h>u-IRb|*)ib?I}Ew!>MGW7^r>H<=>&#+?HoWwmU~ zV`>Z=oM|mIz>+yoXdObqfkfpWZUaIo6JPFDW5+^koL^$>b0qOpX z$pS0Kl=9aQa?sU~B@M7>+bD+?kc+0p)*vZliHaV5dVX%Plr4a+^QGLLMbT=}TC)pZ zyJnXCi~;-f`dUblVB=wm6vGEvtL1e}!Ri)#grkqDY1;)qRHe$mG}3SG-6X&&S+TK+ z3O+)9Zj{Ht9cuEk47y*az|Y)v;Cz!j;H+&flSrf_Ti}FQVe_=LvRpMl)C3fzvE~gd zBr}Ol6RxBqKFIbn76f?8N>jP6VKNrL20mD- zT-hUCoQgc7JiM4{1Edy7$pkge;N0{TcAS6K`iW2YAUlSn01ziu^#Nm#hDx?+99A7)Eo0W_JRwUDCVTHF?X9} zY`wCOrcFzl(oZ?cEOLydR$U!+tjU|K-5*(&gS12KV!oo&$Is~Lqh}%=sW)oRm=B0( zZb7yQ2oRS|BIN}VZDJSgViQ{wc1PrFpv?cM4j;>fwo@-;fx`)gK`>bN*^<6|c1Dv? zk0yhz=#ke_B)pL^Ny$^Px;*4^Eg0DFUuHb1Uq71A-JAO~=li>u&E%QR7@->wLHgQ;uCOsNK8Up~sl;ZgCE>)u=X5W`I zJiJ5e=>H_lHd~GQ#)iU_diblhHIrQ1#E04`X$wB9kX1BWd&=qM;F)GZqAUosmdEF>d_l z&YgSo!SDVF9o>Chy4~XXi_DysLPlY{z_`N&1=(U*6BZyf$FiQ-dVCfQj1P$#t*#y5 z8K5`&r2ooHr=KMb`VDxvd_;jKk=J$k>x)+c0M~On4)CjO0Q~m99ZdSK2EYY!=MKqE zXB$DvBvmr9#t#k8KChMwy1qWA^OMJPael$`aUjL<{<+#Dsj;CH<$(MpiUg-jrf0X{ zy>b6&@QVPfR@TM$i?)2Dt#xk)uHJ|(7qDgwtr=_uidxVdTbO;2Ml>H@oy)}fnW}{n&H$r;Cnz5^=S=;O^U*5agvRr%fqeQI$w%3uL?v>gUfB8 zo`0oAcTWz~Q)*pzqO6!GOL9j$5AZyrkXqyDfHjXz(lzOFC7r_|e?BZ`DbL0B_-J6{ z-G!soJ``3Jo$;bwhmyJaSt7HEj*&x_7^SUSO{)-)k^m`W+9MV;xDDHJ^_i?Ub?PfbO= z-(<2CZM4*QnR}&v?S)U0?%Om)t8y|ZgYIlk)k#)Jk*rhST6Eyim?$k|Dor}1(YpAx zo5MriM1rOhH^vN#WQdIU*=VLg6f1>4c(t@Mor-uYqiIMAIzCkhP1I_WUA1D-S~~0G zE-jVk2Z29L1tJO)j4PA=Eiw2FdK+QT+ z2TB(nfc>x+glU#D#%jZ+vxRuIdm7Of_ncF<_&!`;0QUOuxhBnK;F@+AG(SB(rwOOW z2i*;`?E?Ymkm;cDkZvG4pU0D-XwC_@gazK}VJS((+tmUK9*L~5}?kt^T#m_HA43s91K%$Nh1W3cxRCSpZ78TUn- zdvShE`}@0ech2V**UbV7qsm&W`1v}A_##)EsZCYEPUsLQPG27c@ScBs)P)KO}4 z4PE;}t?c;sngM#r*?{Tkg}M4D@IqlVq$v0kj~xL*SQiIMxCiR%{U=tut-_SSJ}K+km~idL84ZjpV8ioP60f3zNuO3AH=y}f2-~oaNp<|VmZ~@A z*rg|P2*D*9zDVcK=wyh>XRsgKe*I1QNB{VLNq6tOMV~(Unx0%;(~#%VYPAsAntRVn z(82G8ti*~z{l)Z3vOCii0=Bg{^7MEtz1t@WTSWt3sn*>AEDEmy;Fr}x0!}o)LencS zmZhA7<}vLDW*$o^P_lY0o%nEyL5&FZy6gF+?0d+-$o|9t_f5XH{hdAfa|Xjd{m*|T z!6kxV=^|*!mOea*Oxjh*dsfuw`ZLHW znuA|}rtOF0`)|-&-}#ZOJvk$T+JbtP7OpV8L0{@wsv&XpNCt(K5b!GdR4yDzN6-^ zAv3HhLr}>OGTb;zl(;Em|5|Wn?|ODZoAYN>U7b>|=DjyaOAGPak1^%*$}0b?M$VX7 zBCFF!fB_$MF@?#%2k61|iO*HSh z4fG6B;X!5& z1dNuPihES%VFz_pLP+pc<`;TZu1|E*h+*Lx7s&ammv2{G-Y zbnxr-&#-xD!(CO@txQr~r4A^$W)K%s6y(An_n~!(f<6nitx7qnqiipjav_FJKG|e9 zrqz+Q*R>T4sT2d7cy8EWzNS)mW>$i7DsAmh zoz)66cJ|07m<5#u3OJZcE7S@_19mI7hb(ndcYQ1+XT?ipXJo_ciZrtsd#pSc$>Xx>miY_+&$xU`$B} zzM)v#@|a0bT37r(hf6TOTL~SKqP}g={Ab-TW?IKs@WYh zzp2ztg6CSG@t`A3zcwpn?IC@FO9(9cPR_36S)joYVyAwk+u7B8Lr=~w>2Ta*HhwCO zID6wE?T+;xz^V^>9hqZrp;3EO1sGUAtECo*PR}nzgFW2YVPF+CV4X1I&S_ydpClCh zG7F8at+)3k)P*jZf9{wWbXoozYdT_U;OV0mbmR6dKJaFA@6CJkk~1OQK@X`032G2* zJbL(o0ez2d9Pdb1SV&}`yT>{JBlz@-XBgUP0s~5SKWb( zO$mMb91J@%=N$a3;oZY)r$3npcz4EWG8)L-j{?A$?PfN)ghLMp3e(GLnS1z51V(FP zvV{?rxlu?*TioYlJmN8ka==7i8*=C*O|TIFAUadpp+w4B%i565wa_(>;9Ith!q`Ij zmf3#lx>x-5zls{9uv})16?!A2mf_Ipe{;&SvU(j1`ysI{l$WlUQjpjl88FLO0F3!*C z`N>QA{K*q~^5hX`pPtY;2ZkkN2BNLiwTyynactpn-0(HV-iThmd5ey29MgMu@6){_ zmEfrC#&q`x1bDpx=);Lf^!%aH@k>pL-VaB8=+O#aNzz()Uif)r4yV_blDUzd3kEcf zjt}XN{_u~eHyP7k{*V8TgRrGZ{nmM}>jdxIO{UuoR;X;u9l5SuHcBIp3LEZ*DVDt? z7@kVA7F zL^)VUEp~P5mobjc4m-FjO#_eRyIL$HxWB%7M$40jRMji$VbHpL-Y;r#Xj;}C(9m~bV5K}y*9ukJU8VwdTv$Hx^ZP?+xO@vGHnG^{_plU_}ugE;#)C` zkHPlH>ew4lYmc1+xnNmGfAX(t)BW?vuEnpR0n_?^(e@b+H1t~7u!Rxg@iMOpT(VFoObpna*=n7FdR^HO7v0-BwcgQAnjzyFr;=xf0r>vSpj|V!fRj z?Y?6jkv`j6OsSn^Q?*Fa8*9xNzh`rmNj^vA1I?$>%oaayhRld*16pUSqoEG3G=NSg(4yT(A< zHx+CIojux5~Ub~2+EkDk-)gg4xkPG$)hO4#OkdRkd_Vak%q zQ#N4RW04OWZ%m;FR?7aa(u^rboEk{tJ=QwYrIkDmbKc*n<}vAGnxfPi0UKY#Y^mKC zVXug>hi)2jnn22^mPs|mAr(20)OPh+xCVPkj5nLnmK9 zrHhjbzDEue>yB6pu0_fcskgr;I{r~W!C;4Wj`npUW*t&><62J7s59Q@ zYn^a#F{bs&r^3pXklHY)!~Dd&z2x8qjh3LJ$Micrz2r>Dlx`g!Nwxtb!Nu971PpNE zfP6)JJ$NdcbWQmtmK5wRYh}BkQ^yM-O)4#0s7-ewUGw!Mci=&$gvV^m*^e6i0I-3E zjyRMoqiXL(rjQz2MYW71>3XY~Crz(vXGSs&YfyKXMG|Kxu+Y>m%-g@_`Li}_$sl7; zEEZO@uJSqb5|98ApV}YD9E6DwG6iz~{Cgq&A(p~&f9E%UK;M4iIKz`gldBC(r1Tvm{ey*9V*`-s2$VX2pQNM7K}e1802@P*}%DDJ))Tw)2wb z`^BTr=qDfljQ*0xaA*IB-h1tJ`mOiBN4Ia@ln%Q1wcsod=K3{X*A9xnd0c}zb@-VY zbLu)N@#8yjS!DnKIo|GMkFFR1!!e}SE%TnXw>zOf`qA%;r}|(2r~e?|*F#U=31C~w zeC@r&OhG_GK{+L!RI-W142e`n(&|xbP@;iZ(^MvCkT+0?DGBWQmONWRX` z=+iGgrMs`aA?r0c6Gyu56_)vQf<~+V8#ZpMc#j%jW?NeZ?+(Znq-y}z0BCA}PYdxU z%W~!y_!~7*RckC?VS8J@UInWDcQ4#)2L}FL-o(i-$52=+$gm6vsWqz*OS~t|t}l2m z_?qhJ3o2(!6l@k$4GyFRNCWdivPA2(%9Z2}%}K_)>Yv?$_0+J}HRYlma_@V`M`eD<%~+bti{TD= z{^qP$%UPgUs_~mQppP>uxfCyD9hxW+si`~gI!mc_NdBi{FehmR{W{5EW2gYL@JFzv zCXsO_{mhDNu-n>F{F1`NLQ{~w56Gq%R1YNk5g40IZ3C(YtS}%ZMNsgqQHc7T8yjx! zDj2(UTA9WOgnp3c7cg4O^{V+tEqi7k4){Z7Onks zvyr7-F|KSnnA=)@R^)IS?Z%0su_EN~AP=tS?0peR#(=Dtw6+K!nH7-!oOIeV{giHc z#>$HSxE8OJ<}%~5m7-G`duZ8_s3~;;k!6w7PjUd_`T)Wq5rO@dd56oqh?Y|J&Z0V~ z!cJw2B5{`>^1|X=e1wCIk@?lr6Pi6gr+TiNL1~egr)yP*7?eTG8}^EP*?Djy8I8Jb zBIq3PYk&ym9BFLnJera%$tZ3PD`sws0SW7gqQ+g`=%@U(=Nk>OToWwTZe?Nm+aN_} z5zTinM>g8v1J{T59r63X)nu{urd%3;h;TJoISw3zIgVMU$+w15V+e2(@v(Lv>_B{BV%g-xL25i=4&1p zNP<~|mQ@>!DY!yMRJ<3YAo6~dBOwkSSDcE+TwdE=(U)RW4N}vZBnu-A)MCnq zHwX%GcCqw+X}U+up}36FNfm)xucv!nIzus#8FJ@6@w`NH2(aEn?7FCGuJfoszx zB~SK_ZqoO^{}1TBcfQTRl6vy5q=>oDqSVn2J^k6=)8&hY{9Na>%V7Q8ensPMrCprE zLifsA<#}qMsQUf&jDxvKn=$S1{p{@w={|#I5DDj;x%uMb59#M0{hV&zzC+*p_IK!8 zZ@)*oVCVTV;ZAhM*NJOE)&_GcH`BAdx@fU*S*J>k$2a!<312_%8ICcqG__-!1A;#N z?hk%fWLf{|&;GqgC~6~TGS;wtTO}n{bZA6Vv^iUwgkTd@zZ$Cn2PONoguDwHG(5{P zN!A9gMYUxJYV+Ne%nJXxf4EDNd-r*L@m%LD!^y=N2fRy~^t!Z766sNhjEGo879saK z$+}`{z)GMke5=4DPW4Rt^W5(UiwWk8z0*n1Pa`d16OynIgclg}t#oG{D2mO2M!3MlKf z3zaVot4IsR3YS2ZYmhV~dr!!pjrFq0qmly}F|i2J-Byu+db}5{pG$d!3kmMBKHaa| zo>OeG?Xms*TA)*iN()@KaEoN@O`>b(w3ne~*+g^#&4Zs;06ICKPx&5o&j=Q%keyc! zX)VA@jq?&dyN-=q!vl}nwB5=P>iKVLHu>Zq@CKbuKowz}feh;D5^(sSi-Fod+u9^PHM> z?sYu1#^iElMPHFJQu!Hau#@s4R}4*7KS{0qAW>*77I}GcJZoRJ%#t+5{DVLF&Y$MN zv4^5-TLHE=K$6J_rpM$LDJ0vdy{ld@pL7Kn+JV!7bzu)SS-Q+_Bqh_X8!H>_DF$WQ z{S^0wQdr707meW!?6cpEJA4-FJJg=X^dT}fV;BgW3H*L z*56J0PdOGO0oa9)PgORIj4cLCscxrZ7I)szL`9gT6&QMTddvk3WL9=TUt^%xSFR3W zk)0l>m2!1Skpvu8Yv2XQ$ta&--&fLKBiYItOo>kRu3q4uDW(R0#3u$1w=mAez$THR&|4Co$8mR+h!De#Q)eMJr!0yQN zL`r|P*1)IN>B#usI#zFP1V~^MyUe`1ZWyd7Y|a2e1z@4m>qr~s;5y;Jg2GULc3?Ka zdO~O16E~SeBY3gf+Q8Q_EG`X00I+}e27~W~G(v&{3ZCK7?ISv4_8ZR(fD#~4!1HWH zv&#kbhh3W7IAm6RLS1HbH`2!5*hsX0=hU?naQ1g-dHMwp)>44s>gt5*#hfmlJfW{Y zeMA>8&uGBeiQ%}TU19lNCX;~_sN$B;Yzp%X_W)TzT^IC{vk)iO%p6~D7)0svEJ;}z zJl`Gud4P9hG4>}rnPBlc1b|0r9uvJTBxEoofX_C>)p{v})W!nsQh<3-x1!PlYZSy5 z!GcyjXlo02MK_&YnH1bfjfy$Tz=9NWIvH?0;lKz%!XA9=DM-LZq`fElJVtvr?$G4m zkmry#z^bh~|!c^_zCQj!Vv7@pUdas7V{Cr?|=2w9oVC`uqj`-N(PAUp#t9 zN4tA8LG!IbNd#$# z0S5uU{+@NuRIuaL$jN|o16IDlY=`Fj$@`CiM}Pi)D>7LacP z_4c2RuU?ge=%4mpTcEwo-iL4etlmFKRt`3?m*-FD;@Ky(e)4k))0fh<8tYdatB|QD zJtr0HYbFI5l-WizErrx)8HwWS`xT(;dgNHUA9s;Qr9Ivb2k~1$ZDFPbDL<0*UwB@@ z-c#04N*OcYSEL5$2MYofM7JIe*;(13^;|?t+b`44jgi_|)4_?W0DPay*JZXtGLaOHIOdP@3R`m;(cnqJYAp)4~qeS^y`ss`}9NKVHltlh3QLp#WKX;bn)!y4e)9t+y40)|(u;<9?*TPqe-^^=zUP7KKub`5M(b zy2@45!Gfs5Kwc>at~tV_Ml+|&uaJO4{}}|_U4He1E}5AHXxF)6lPIWdo;Iq{p`9~3 z(wVIV2xtpn9aBuujZG|k)`n8n=R2dMGAjpPiQKn2+4Dem)Hz?n&WKr7X4zw@;lczU z6&2z&ydz2`vaDFcL%nR(5o-S$>RLQsc6$j@PxmbipF#L;yE9b zoDpEae|df`?lMbex$$1Of5>leEnNvNdfLvLtY8@Si|Cew*D~8)BTKM%Q&?vd;cXb~ zF?}h{RI)B*I@UQ$qwn=PB;sI0_yA8hJUYBDi?xu#O?9VEH}E& zdZkHBNdGKFnt?Rf%A7xH@QZb&-hr5Z!!y$Qp3SF~$FiS9E#0|AT zT{5t3J!^#Q&9+S{DDxWQ|5BzB_X@rZu&cm9a}|NrJ+Q{d-=PP4ECY}6P}pYaAdBA? zWEQ1no}mrsfRV@j7vAhk1FkH&NG_W&TmrKUip^M(2P37j-g0BxR;T)StbWYK2cJ<{ z!FLXV48P?@Quu*FpRsqH^=BY|`W*FVgkZYyXVm9!0&AxawFuM*yH@rp_*@It_a;Ng zW*l;XChMnZvi_n1l zVC0J7AMcv3uaEh2$;OaU6Y%KxIN+|gfU*C`tFykD$tmyO)cU)!*7g|f^Kt>V{kJx( z6_Uxigj6PA}S!NHdF#sV)1EUbZ46;lqH zOw(*y>_UsOlJp%9xtduu$yS8p1vAEWt1X+}5!g`iC@&h_U9@6@e1T>qnF|u3-6^%* z@TL_tBgN$GXhF6>un^Z9N!`ol&|Vl89xC%zkrpQuTMJI)BdfIq0KuX*%K)GmO0CUv zM2D9rrblj?O7$Sda=3YVnVK~QLR!MmE~_mx$zsm6`5y3S78Zm*LRRsCf}?k%4;FWa~z!@}R2Ud`z2 zt7mlj_$kdVS5jjjdyNH4YH5`6`V(nOR6E8&$MvV0LD*QN>03@kzWJs+&N{3OE0iqA z@_U12-6ATZQgl>X43N`N0T>if;IctD!q8+pS1Ng&LiiSIAwrOu?hn_OijDrEpHQxVtZ!Gf!&0UJB3ypy= zORMVzgRO$jo<60$!vm3}T%DeYo6BTxk6*SHKXmcYhK1hswX8QV!}zm1V4%T(p~oz4 zpMi+TQutvAgFPJ3>9Z5szjKp%416Mk?Gb-(%0RittpE85iUJcI98F{{497#A;|!R( zqaL%aGbs-1>>SJ7)V+gOFSDZc@`_f^E*mf*U{o7V&Cky0`eG(UzyOYySL#I%uY1ZR?_SC zjCE2r27z~7mDZ_O3)kwSA zrlRaOSIj(r^ve(Fi=Y1umD5uykqwasXAGXvQ5KmMo(tm}H)wQtlMZg&qJ!Nd8Vn|) z!I!1wOFJA8 zbisz4PP z(lO7~7d+qR4E*65X3Ie*j_sccBFhGZ7}CglFwqu+N#u1=cD`9=(7~cAF4GpsY%}NX zKH~eOANqmX3?DU!=(<#B7eUm2?J$G3&!!_@TXPf^}3*VhQXP*U_G({H!1KHZsCI%h6Tm+PX|i z*%Na=dc$TpyB=GPGV-XS1;h5-V`vCe&mQ=5%2?LO&y)*jb^qFAC#GoQ*3`{W(GZ7g ztN$tLlx0C~AMSIyX&z;3rgoyro=dG`MixMk?Li^WFOpzJC03N59i>JNWU;Bd&Pi^a zk2W{07KNOk4S|~6Q^-?a14^y`6P~hY0-d%bTgcnOp>*@}IqtA$PL{>Wc-*o9iuqC| zvP~mHrk&PV>+eIM74#=+E;i(vOnodG9(c8o4xT*>kM5LpQn7xS4gQPF97bcWoxyD) zG6kHWZ6lSmioCAfa!4PNNASX$_-wOCl5F#mW-ZPbhbBR>NPLRslEP-lrGavgPG zDQHy&^Ql$)$yDfb-|uUtV7gGY6+k`Yg{6&&(7b8V?F#6dF;D^++9>Lvz1^`~+s%W0 zvGtoUgIA03hjO`{E{_F+)>4e5qX3n`n8*Isq11YSaUJjP2(T`sLD@=}Z+N6*{$oCZ zX)l+h0EOGPk3@DdyVgR?{-iIjhf57+)OgaNv#&WQ;P=ORoE+}aaCahwre)Qm7f()w zZJy7Tbj<);3TGMoF8SYO#rMYdvAlRrz1;(8o`bPiGFX(J5719DU`fzg^Y?0IXjl9m zS0~rnDc5wY0*^Uxx`eENg9EiH3ZB-@L*JcDU6^1--06Z}c^Z9~C z%=-T5NB@ZK+_`T_IxY4;ySSvk{F}d^v!DM3jq0TWI|L^H_8idcym_C#_5N?t?OP9M zFxruN3S>JaXA~N6=s~X^PQAfcSS5h`ciw)Ft~o$__TmYB`PHZN^z+YXGn>h0&8{vP zXavHVhc89^X7JA!3pBX!9&YPfe zIqW~$6QfI`(S*(}PxJuwb9?XZZTheO#eYZtXAVeDzkbBmdyigw?E&5AYkBj* zI}F-y@_mmaI1g?N<6A)|4Cc#=Yc@myWBs!DB2nJwk*a21;Zqy^=wO?3s;=6xqSXBikD9q zuwTmFUUhh^JFuti%f2ba_*Ip!NHUfn1I#c&35Al};&UKQbZSzNHg(1rGTzqxyC^gR z0>CcWWIN*(%s2ktIYZz;%yh=V&p-o+VhDs9v0(Bz(zDjF68ZQGHgk=<**@pB*6bma zTC&vCjGtTxq;fWvQX`Y1;2w2{(YYh?7D_F@by89kf3rO(wxlT0)})BRY9%;9AmG|p zvCdhSLfqKuR*+d5Uels&e7{q;_k5iLK*5W6O>A;4@@Y|tk7&V^F0Ohjd*I-=wBSgP zNc4RwwnEOPt{{tUOc9ZiR=%mPe`*B*BK5+8Jzt|4$v43fCT_AW z%09=Fg~L)W(UQtg3(v{>)%yBib&ui{nDadj=C^|_n;O*ADp08s85q)Db=Ou0;U8#(`XVW3xoB`pAz zxB%Az7m`YC$^f>ZRaU)zQjm;*!|W|n4$bVwB_g$d+VyE*q$wHc%x8;LBT5C`GK__S z>pE&TLCPBP>qcrdh$A~3}$3C;2L9;q=>ZnC)9%OEy>wK@!;B3Ti*AsoQ%3;J|hBPoF%V4-I zl)KrCN9tfQVsH;%@D4LYy{fC3As)Y-(Lkgp7>miMFP4zFMu70yaz%TSfn;8;rgKi$ zcNu_Bg{kh1Do)Q2nU&fwXg?AbJ%~(z+41ueW;(AJu=j%> z{2sH#_jLa8d!j+nlc!(PkN>BCLz_n*)2+13eU} z*=lOr^!+fdZ4YmXB?Ss7AmB0F-S6?dIixpUe}|sG|CE05(cjUNuYN`As|y*!GY0k7 z(`&kQ{|(yZ&;RkyeoQCK$p7O%_#-K}MlX(&i*wmtQHRhp_AA8MC0fC5QyZnyozeU<#u*GOE8`3HYQ#(79I##&|%l?*HL?26wy`y;h@tcqb^T; z^%~kg*LK6vZ-qS5u-`!bH|NaZ<@qzZe)$!x&mK}(ah9*_YEvo%Rnjq<|J~`zILdvI zW|To37T800oul?52w}H0(4%9DELXqS@P1+FHoAAcUPr~GgqE2_YuKpc;$z@-WPV?2 z(xA0T;?Iygi;!}b!D-RjtEO6Glz$WDl0?Nlg=O6p+h|d>bN9(<-YkK56|ClvEQM^5 z9cx!RBmJunmbDi;1LEfh)`goAutAJOxXm-Gg24zX-U~R#ZDS-7og3G+xYlVm`yRX^Yjjr+3 z;J0QWn;j*&3c>XiQ31S}m#B;|n8l`(wNY!$N_8I7yjP1cC&MX3TWhUZi>gMEy*JvN zbyE^|o-+Nv1E3&ZbMT&8Yc1rpSN`EY`_7;0H*JG7>m2v{byIjvrKB7cc*j)nAdfov zRH9J|K%gA)YsBXVS}@?LSS;9t*Bgu?8YCbsm@QP+Wb1~67pkqhg5PMb@y148 zjN+YERfksOO_1#RHnCaY@<@$7kV9j=X-!@)@UXzeCN%D)w6Rj{xoP9pDuF4Brg4kE zmlr5_#sXsxohsP@BCj!2?%+J9KZ9;Il{Io8kFjhs@d8@ipv)yN z^zN%RIXtq&=EBVG^vMZ5|KcmUJdF&LmBAJ^9a0$6P4+8IHHyD=t&F%B^6?xQc1yF$ zQ#;6Y)Q*+wd=7;?L4$ogS@0O_o^eewCxS9d$h$}im4{)%AWDpoP}sSt^L^mHR^C8| ze|Cfn1z2A+GlHv!t(US?c1mOuNrMsuBq*@l83gfa7kyeJ>0DZy6U}%y;*|VQtQ%*{ zR>LP9?*R|@z1duWLXu}wv)J3pp&WSrBQ5L;ow?OMB|*-ne|++ z6a+v|tNJ+x=KEv0*8Wf#am>H#^DEjpu%cMmW+DxCcV+W}G;GLBx~yfq1*dweURS!U zc86WHamD*_pn;$64VX0@sMTZuizN{(KmY3!zK#)(Syuw@%ZFdn$yeE z)s^H}Nt4}yJm06!E@?Jh3yZGW@hIJHuNO6)Fvx#&x{zi}D?8s1dmW5B%;4_QB?kaI zkd}0`>u_y)@UAg-BJB%At|v@N4awdn-A;wVP8n~Qt1ttKQuY*OI+{XyvW;Gfzzgf& zfB?mS7}hY{PlT-r+QAl%Klq4i2I4d5+t;YU=+k&G(gsi%^Fp%-ljCFBx%UQRIhEvn z@a^BAx8MG@%nu0)`FVWx@Jsru|M>qRdh(e#9*H{&f8Nm>Z_y9_=)a+NzWoE*J-jJ0 zB2D#&E%2zDotbC$mwIqt|>-crol;uwu*yuU5WOCx{?3})S{5d`P^sj05)sLyT zc*+C{_Cd~qFuUGGgRids?t*oPQ3K|Nbz=`j$YFpKo=O8X1&7#+qn}0mdx83wSSqa& zCN8Y5Pc?Ol>J zidpF8kx_FUEziGV-2auS-qfs=HxKHv42Kj)H@L^=q}EsDVrdcysYT)XQ^N8H*e*3{LemIk!&BA;#pqt) zTIA5UsdxmL$IA*tROg;|o}_wg=?ZGmrVoJJWK9-X>W0$jnJm(c`jCmN3OtZm?zrE# zv*!x#U9YXzW>F8Be|)LBew`gb^x9-ha@+DLv<&>6wf93Xnj}Lu926N==1E+Y#*}Ni zMs;hYZ7doHk;##yD`V}29b}d84&H4dC5^;91z1b-7fU~TbS4YdCa$G7L#gfH-K|14 z2h+q$3aFs0Pt$$JHW<8*I8Q`cFd$n^(TZIsG@cps;`nH7p4(cAfwKD#qHwV7LHw+l zp#(E+lQ@#Ehr$Y<4Q%`3^OZ@`HcH-e{)Zve$Nk4NFJo6!u&kw$ipe zs%yxqR%=fHE~%lG8Vj`++?duB_R?cCRI&gFAaA+R`6Pz~U(_Wt=|=}D(ZFYcRR@Sf z(H|Nb$r^~-33bVg_HdvQFGPKooJ@v&nQP~qp_$KD63~Dp zpIxsE$ZL`G`Q=PD`m2T78)E*gWG{&VY`v+Q%PAza+X6-l4vNuj7B+{{NCck#6ph8u zdJs6CNNUmdCeti-dA==@N~-FW%HH}NmDM2_-FPQs(rl9GI}vDz1gg?TTG5#?(m7=g zSGYoG-Jxxtuak9M4VhiS!Kk$gJg@c-sAQHMMUQX1@eaN7&UYD1c4eKecv3%o{x$vd z&;LJEJ%7l-VkO-}OAcJ#{|A3a58nGt>T@uYH+b9rV=IN90jV829vEkamRf+#_cePD zC1#=ocDHZeql3Le`sB_p=;wd;H#9vxkvfRSUw%Tbzxh6W`>l8BXJ39n|L=eIZ|P6| z@DFHje_yOV&rZ*!C?44t-#5M6r%Mg|Gky2K%jOKyQQv_;6JsjP$*Qi_@PJV-8ZcfO zQR9HL30jC6d5VMXl*x~^bn@*q_nwd1hH3O)sdbHbJ){em$D>}K9-{F3>Y8rw-^KYh zY_rwww&8o8?ytobcsCL*f6f+2aL`U6>$mg29qjml9vbj#U$BESWCx%2Gf(lGKIO0e zYQHzxbHk@V7B%C{8YEoLPS0q0aY9|x#z>*>K93QTSWJ2#oWVG2CZsPlJMi7k$6wx0CE;lYZ9mpj@&*Pze;x&vN_jo z*d?Gn=)I5?5R;9A2qKWp&Zmn4C(2zdQ+|K{++@$pi({praZ9qK&#?&*bvDVZTJ|a0 z#&rGmTkuj0C9T(6Xn&MDl_N^XAnoUaWO_T#2WMZAn*~USd&jnjYo~iJ{ zXaV>Fa!Z-xUdJOQ4&>2AFx|e-&6t6=?@JyGWSMvL=1@BRqKnA$t!Tz6X4u%m{;l9w zr;N!Wn=`^CG#>o;ScO&?l>E(U3!aiQ-MJ@%uTT4|ChTt3lh>r=LffRcRQ~CJg_^y@ zC!J>(^rI~JNz}|&U-lNT;Pq9?43tV28pC%I5DLI4;M`dQO4bC3Y;vjnS_XciVXCy? zLBMNACbC3MHduLg38phE&9bQ~j5*ilMhfON$}Vk#b?@~+%|MFFgS@zLd(l*vc^8vv zgB0WHHkzzEs=ME4@RCGAknhEwP4Wno^nv+7L8M?Bn-V~DX)Y74GsCOpy)6X`36Vte z!5DVjN7?8;<=unIg-UBal`NuEX^Ey2u_}dWDT{5#0SrxLzVlJ9Q#x$&0Vs@6QRWE| zf)&4bluVYYvvCExAkv>i($4 zPi(qNqa*&gxmmI4qiqEa!O}}Y3v23V@RO@rUjv5{ zjNBXpS!w6gb*m=i`e`}YPR||g49)qw61?cA`fYX9cfOzWA1GI;6?#yoy=WrP__!(Hg= z;!40MwCT`tFBl9XxWVQw-6u)s&1$2mTKroNzCg42h69}r_4zu6ofRGL40&$NdNY$AiA6+ocOH>OMF?!hwZ*=@cDbtQ5_&yRgFm82~s6C1-EQoA=mZ!Rr$2YoEtz zv4%F?8ZVWmF;80Ju6rv7A3WCGs0_aNz*p910I!I8;2~&$D^AC3RF|Cc-CWpPa4^;L zEtI@Vo%*q#bdt`zu@v6?PD$w1YCy4Bl+Hqf?nD0m=mKZhdc)Ngd<9#}XyZ|>hiA_XxB zDzRrEvohg;1j@FjFHfXLL29MR1uQ2m&}=fzl%I{uA@Y?r!%wfW+R$0a62Y&n_4Dn|Nv*S=Ud8cIGh8^g&UoK>#ti$Tr_XqgS@9lB5?Bs*Z}HFH zlJ!xExdlJk#hHM3-jP)j%X0zLO%eJE^!U%f;Czl|Xpq=;bnF%#^kdL&r%VyhUU%Pg z7W^-s+MVSEEen%B82EA^N5-H>n-64jSmmU3Hrl8QHPk>b?a$7GKK<=Z>sHt26#Lok8O#vgcO)VrtkN8Q5!JUPfT92Cng)R zwxpJ5t*m;jfO%s^4_R|=^QE-v{7`7KLS1jk0KFEE;%CuI7?)a_ASPJjAieICr)9gN zst1eG_|R~t%YAf-sDxRiHEO-#IN5hCuj^kBiHJSKrCEOPTyzIx;*DQp$CJ$d6Pix6$xo6S`xu1w&< zZ6Xb{hm^aTdPXE4%w_S)flan3HQ*A)J=n(L<6mk904yUw|H+f5^yu@4R8NyshvPMi zja%e-swkKyRX4u1RhhdJ$Dq=CT5XbebjwB+l+mnhqPHiuG~P)?K0ivE%(~%)9KjCw zjo*HAmwHHv*M>T>3xqd@GU<*mv!;m*A*bIUTR=e}hGJD~Q80pny}pQCM|;w35SESr>3B_rw)I_g zUV>I0(gFdmJYV{I`_zX62w2UYx--CQzQ@{pLz&Orjkj{>{nr~iphT-#sZ35%-Rg3% zSSQJN+&LJFQx5hZfP$3(^^zvzu@yWg$u<=#S4z>1g*XsJ$9AN5xp($n*kKVX(i>@xOXnLs*FjrS+ zJRU=O_qEqKOYnk$>~nhK{sZ}JWFIhh`;fC_n_QB8M{GLRDyu>83xE4d28F7(?zC~pwzcH<$Fn-;pd8tk z2Y2si*Wi5cH;QMGSy}xUy&`jPX^saVjvCqlm4f+V>t34leCsleSib%!=#2W94Tu|Y6C;kAPEu*bna1NDTOg&tip@h}|l z_sqpf*RjAj-UFx7MH%FxKQ1@Ra5AfHOX|H-Lec2I{dp@+&~b2rP@jp7or5z9--u@v zjFJ&-DU$&y(bjp^6s6nzat*bu%XXmb9hu;A3kRmRw!dCI}C2e)3#OHI9IN;w908M0m@ZGS!yHOQk0ux!cN*c85K z{X;0r4t>1jS;uBR+1EmT&i?)(&yx_E&uO-UWS`N@zVg5N=imEN-%l#jC}+?YT#Kkq zF4_Owz-3!ESX$$fY~d3cCf*->ZS<@}dB(u{e0DEZf7sA0hW3rcMz`kLDe1T>c%xkq zP>V$*c_p#kz28T+JoF|KMZ@??fv87i<}#r_V~#PF#sk=Lji}3qWW7XN?8(8sjkS%p z1T&^Fj~2)Ti%3P^>=sL;l9yatKo+$YRvd@RfTn)E$(wUiU_^Ohl*Z<3lLh@5S$L&R z?4oEf38B%QI)jC8Ezd9M%a1>!vqu+ zs^hoO?4;?7m8Dm_t^Y1f^SF}x*2UrV0KPyxQUgeR|NF=EyZ_|3r2upKa%yQxEy`2C zt&3Hwxk=c0{JYoHKl^A$pWl-N6mIynXtMOi&9Sh(%hggkp6WrS!C}2on?XG54ui%6 z2C0+rNSek-0Lg1<*zd}~pE1)e7J>Zxih&7SOOB6r831qS_M5LUc;2Da^<3s8-h0iU zTeQR?tLW&whJ1p-ps>AzzOeoBYPqQ`)J zgASs?qW5WZaDz6BYnoq73H`r{ZYe={cX9;1k*?p(%p5zIUBAAht0&KBdUhpJ9e`fw zlIy4qxWLSz*fM0`qQM~Q0s0(pEcjmJ5apm4@}F}^X?Q(fFi3d8S%_y>D?XTs4o3w& zxOYz_S5f6?kjaesy@zn_NxuJBaW?5*wh_C?jut6eZOlqC7uwMgV0>i-->~+C$Gx;x zC`tkDC^ik&3EKC}9tSrF-VvA~P+8mBN2Ug255M*)U;lKu;NL0<+Z}dkh{9k5Mf`R< zJqGWPTropi9Ujr$J8#f;-ur<(PaLXOmzVVOzx^|sKl~*#`4uzuYZ~6ZOTYam|0_Da zd0#Rz%7V8XyIO&HB5DB*%C0UMyxBbehD0PZ2U)}N($?3a6>Fmz)SbHzBuIJj{A<~V z&d*Qj-o4l8&h6Xu(@#E@%*FjXcXbco?_*scu$A2{>i&tW)XHiBrqikX2Egcuy`t_- zS%+$8SBwtSwW!O1x&kN*1Y1BOGsr3BjGd1W_D6ti-En>2_u!xMI5mK`kpqbA5N=zu z1--a9qqpwem-(0+2pHok0t1utv>iyAfFo`JoOTAF9YnRCA+_$Uoi%A>oc zXja1_wr6z;=0H}c9q(p+E&FmzWgZVd+e@=H2A;wFsI{kNS4)#KY44XpvOzvYY9|3n z&ovKj96XZEpJ+Hn=dul&J@;hTsVoa>J4oe8oS$b?o~-AJV=n!g*QYuDaoG*o`te`U z0Ju2NSc61|$kK2P!A-2~&nRnlZS_@P;2R)pOWy9&@1tFd;_F91dhlK+zBiZ~VTu_H z`7%Je7LMy*A!YwOUHH>{%Z z7#1*$n*s~EiB?UWa#u+Co>(*LgwGL|y+>{y5%oWHOONVoYZZ0T_1tMNTA_|VO#a-LkDt@SkG`bUg+4F1wJ30hTqdf9 zI9QiTJflMAk`@#N392xRS{#^!l}`q|0hl+b$Qu&bL5)~>9aT&3_(GFlI?+WR&cO2R z@9xn*{KN0lgLmJMaeV%(N6ZS7q_h1D7v>>BvOto0)c{ST`_hC5fVyXX-`Wm9+n?V) z=+oY)C!hlo6zLdDI=-++oUhc{5UlT*+3E4lSOWnDC*nrJ2icqt^(h~8aA=ub&*+R< zcL2(MzmiRF?|4s&(qm?9J)4QG#n(4qa3C?1`3nE{4l`a7 zBrd14o}SYD^f4_jU(o!;Q~uhV&d#o-`4ft9S8J^yz`8)70~WQG9t8}xS4p!8i>0hH z(c>r8jxQEb*!8pNoIZbXPQQ45O{WX(V*BQuBL;&v>6{r}u;ncKRNcBwhqvz055E7qw7YXC2kz|p zntt)KAJdDU|Ao|PtQo)@Jb0Ua`yc;H+CRFfU?DYuxgSn#KtT4rE$Nwoj5erie^0(; zX?*;0H>Wlr%(6r~0RY}_-M+&BZ9^v~CzN5i*w3ey0`ppa-V5qvokm@U+s-VuQTVOp`}9LI zY=Kq(8Cg>)WzeO&zn$v-uNJ~e)>p#2(N1|SJ$(M0ZXO@e(f(fRdYq}#*OzuSrB+d7 z*63PIRr6dzE6|{=U`+04i(uIX=Iwd#>$58Um|NeoYk|EY`UpH{HvOZozM{YW=|}YF z(Np^J%dcpkGmI173y$}9=#WVY^bFXYjKSs5E*N?M@^nB8woA*TC zcZSTy&o@gNRy~z1CX#gp5(gk2z`avw=6=E7M_}C)8EfEJ*9%%Q@qi5OruG0%r#Swt zjgg|vm$gaj5Uh*LE~*uB?LSAl){6`t3u?2YILC6sMZ*um?mOVM@rxN4#;ri?)eO#- ztU~s#7PFpA`exKtYQH{XtB}bt=}?-YbwyU-@A9m)b(lo{A#eRX-{lNn~8TR9+TFrC-#g?8G*3zK8a!HbD+asZKg1SD#Lgy`8Z zo7Bk^4WW_zQnM>vKq5B}6AsUUfKQ21GSIJVii+$98md%pOsQaderwXvjJ17#N)Mb<4ggOs6^0Vp&= zlL1MTi$FB!h}LPLUHYBh`+)Ah^%|96D>ne{PncO=sV{6R6@~zC zlhji;)>;HB)_-^}X57V%CK#(ws%_}ox3q~204Op=U;)L8o9}VNfDtYscsM;iMDTU6 zyM;(D`tn-L(FMHD`C`r)IKSZE_{`nWfDR7FW{;*G`e?8;*xgaqn!&4!)T9?cR5?{N zHyRY|`6d)0_mK5ciJfCnI3rYB!7D#U1O}h!~|PO*NFd z(PO-zSC&qcNv{pTNgY&%^0P-T=(Cp`;4Jj;IvRH9&AZ3K)L+jQvi<=00p3T_fT}BY zi(tQX)7CYIECq@xg@iDFZn3ajDWDeZJ`N>P4L*uo-QA(K!%AJPh(@En$oeq15gbWz zEj3Oa2nwa}*^0AZ|A`K|n6Gdm+GpU7&&3n%6e|6p;gCjmUZeLv_zimP-n+6s@G~!- zeNCVI^}nSqWJo-3dd$lI@E`xzba4A#&XiCK5M**BZOc2_Ol)e9{x{gwY=3C)g9Q-t zq4etkp#NL4hx~jG4vslsV(`tNeaV5`baqYOdiw*BO#RhIKclzrKM?f<3GoKt_JB5#__yJBAjm>~AU>wpxz`H99C< zp5XV3LS;yDiblq$W6%Oh z^Yd&!x7IUhz1E+3)~+jOvh{qL`!4MITUi$hTjz=B;nDnz=j;^+{9kYe?LYqX=k$}G zeMr+67yL|L((6aZvW{;bA4?G0XTkvXwlJ?iU<$d)0LBMc&sAad7RquL`FRz#H<1Lw zl9dS7ql5pq;y;l=n?t@=X%~D=du=M1RZOL% z5oP&Hju$gK?*XP>g24MaHlImq9Z5D%1k4A@rWDAGfk;u!dun1`2ko+!VxvQM1%QAA z{ZO}oR06HY`greELtbyw!cgwOBLqsJ^=O5;!XyW{iA*?Qu6m`-8m>YJ~I54GxzOhqeV}Y@sa#BP_?y2g9kGjbM2-Ic~`Rf}{sRr7MMTG4y^*sbkS=-*& zdZ4%|*WP-{UtDac6}?ijw!`wY6=0k61x%t>aaUHn2PRgeG^KizYj@U8UXZ~KDBoON zpXcM3c;%qO=F8`&4C+>}b5RytqFiTsk~UyM1_kdG6~u_7Adz-5MWG}ZdLq$7!X6OJ z`%0J(k_GIw57Mm^7XZR$_8?QabAzVm zGs_<7Gc2ssx%L_j25?}8!PMZ_q~GY?@Jou%dRiDfhwNdtlxGYOF<}N#8d?=98$dy* zIQB5$*u=G@ZK1{-bO+2rzF-#dCG9Y4f4!KAjvktI9DL{mJlPx3 zN4jFRodW}CjBs7O(MZEQJHZJ>R>pQ AH5b^xLXNshWuNQiKxDLIXuIc6Vnp5Wb9B^ol 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

    $0A@7G`K8sF5li>$>pn80G5DL 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 Dv5W`j;EBU7qmU1XqE>n14o#TSBH6(uW*1!8o^^ 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�LI6={Pb;I$s^Ea<%U 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

    G)USF2YQs1J0E$ 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 z + + + diff --git a/app/src/main/res/drawable/icon_lr_arrow_svg.xml b/app/src/main/res/drawable/icon_lr_arrow_svg.xml new file mode 100644 index 0000000..9dff686 --- /dev/null +++ b/app/src/main/res/drawable/icon_lr_arrow_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_male_svg.xml b/app/src/main/res/drawable/icon_male_svg.xml new file mode 100644 index 0000000..83fc8a0 --- /dev/null +++ b/app/src/main/res/drawable/icon_male_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_map_bluetooth.xml b/app/src/main/res/drawable/icon_map_bluetooth.xml new file mode 100644 index 0000000..7f218e8 --- /dev/null +++ b/app/src/main/res/drawable/icon_map_bluetooth.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_map_gps.xml b/app/src/main/res/drawable/icon_map_gps.xml new file mode 100644 index 0000000..c73951e --- /dev/null +++ b/app/src/main/res/drawable/icon_map_gps.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_map_navigation_svg.xml b/app/src/main/res/drawable/icon_map_navigation_svg.xml new file mode 100644 index 0000000..f4b6868 --- /dev/null +++ b/app/src/main/res/drawable/icon_map_navigation_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_map_offline.xml b/app/src/main/res/drawable/icon_map_offline.xml new file mode 100644 index 0000000..525a797 --- /dev/null +++ b/app/src/main/res/drawable/icon_map_offline.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_map_online.xml b/app/src/main/res/drawable/icon_map_online.xml new file mode 100644 index 0000000..fcad34f --- /dev/null +++ b/app/src/main/res/drawable/icon_map_online.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_map_satellite_type.png b/app/src/main/res/drawable/icon_map_satellite_type.png new file mode 100644 index 0000000000000000000000000000000000000000..086ea047c26693b211b05b38d12d1d333e52a111 GIT binary patch literal 25272 zcmV(_Ptj*SD}z|1{$5vxhM4WZ zN0NQKc8y#j`-WblAJ04lt9?;pN! z?=1!YiC^D(?bWaf$E(nBQPb_C8f@K)u7#@#_$$EX3`48r_(K_0U4h;1hN`$xE~mgB zq40m=OSSm`y9<>{0=llt=jxCTfGU47UQbu}3yuG3@&|}VYVsF+D4$o=#7}%xn+i?* zU9Uo`R{3WeZ2XPQsbC1BEL7+yCbsC=oY;jb1)RytgXfNKtgC z{7=3#Y<9o=lUB{i>x8cI<#-i*FY*2=|6An)#Cwa262G_E+`J}UgQh3=3X3*Hxd%o2 zuv&G!{*CVDy zuj*zL@EZ8gsu(OWp#0Xw;EIuixGo3Zmy=M=;2;0>r?EGmMLw_L@BLptMa!W!xP1=e zO<)YFoEt^npcy0z9CnWkrmDO*Mcy+nKu(<9;pFej#@q2eI7M=9t=F?LAmm)iKvKS| zY1$wD>^uK*@jo=)_J7|WUS&oE;k{I~Ie)jRiI=o9BJ|pz*>qztZTy|xZsUa|pfPG} zjuwMvz@~@#38vI2Gm6jz|MO2l8JTZHgvePnDOwA0NDD<6n70RvzgxTg0I0 zW@O7D(#=8T0N7RW8(mIfwOZtCmCzh;!Rz*7yO_YjR+bk4IGv6IcWXRfHz!_Br((Qo zg%jbl2RQfvW?M$Sm!_*$q{vAS|E;Pb!&Lq&XT%6HrD|NKarxg;RP|f0{@4H2cc3}` z@ZXm)>c8uk-+Jv^-2nvd@*RFxvqwO*=b$-xaV~e1ljVe3NkL`l5EpHg9P=XO#3{PAKQ89KvWl2LiwITu3zh)+FaJ;e zUD2wtyci)WUsw*RqGSKb{OW2BqL9|$<|ORoIXS*MS$=A7WDFsU(xV$$vR`CTs%B;B zvpf8pOqcO@K2Mi#smkm(u0b;=)tCe$vvu=QH2Dw)^=q(|?!Nlpe7pNUX+r+yfA@Q% ze4!8cI^7I;4x*id&HPY}OSFlnh{=U+Dt^|?i4hsWQe@4IF<7GKh|0u?P!(B@tPDl%z7=!QjC5CZtrqFl zS4VvSrF;o4mj@HG58?Fl8W}7OXNY%Wlh0N~u*ql^8K#;OrCNh1-=|#3%QEQXy&3sx zlanC=wU)#3y^ZRi%1kyUU0k~+v&#lKwq^B$S6}-tNB@Hp@@-~DHMjaxzF@bJvaIaI zZ5hF0QpB|vM5AL0mlX#uFwHk(DRV}d1xXpfZcif{Dw|~`BS)!H)#VL}o04VD2tJ4o zq{_V3HF0H1Yf@YTvSwnFFqyHD9rAqzV%N?0<>7=xz?9n62<_RBXjl zaQS)dr8ogcmVM0+Hz!AwRhhWD@jfzORO^*&@;+r*s}=}e3UIp`7%WaRlXV%a5_*X8 zZe=#JN7d|Ra4BZ+RAp)AZ@M+L`qNim`)sDvCgio(z7$|s5L9Gs4{TLPE?gqtjRbM zO}J$Imu}t+N2AI=md%MUs*f&TM@E~RD4QH4T{GT6RWvzywJE602q%~TqPL?3WoF23 zDu?Y@oQ>Kp-&5p5g($F4*kiw`!sBT(dVn=4RmIFm%`8*qw<>x|T;vb$+bgSx^?r)Y z$XMCO6yskDJ1J&a6XT&9q1DY<`{3!jR01&%QWT!JJ`zJ{WTOwnZDP|W|KHj$cvYG9Nx#pvnAYv`JlKB#9lXhmjc#fF7g z2C9SC?KW>)z*d5Q2mkwP-JWptcSXatvst(~0}k1^y|T`0=Ikou z5QW^be4@<}VcN$ym@HZDHs17R4Ma<5t{QzpH>0IYU{I=5EwhZ-1amMr zfJ|yt{!i9#SW&ru6J}xHU~sCeW-h0VQz}ZFEH5H^j3DT0jxcEK68=uj6L5G$nb~j3 zqDC69)EI0{FR_&Ev2Xb}IYB5gwa^k<8oTjO&8DsRn5isacghgOlb6GG((eDs)av zCbxouj4_ShRh0SW1-@T~zsvK7UX}IWf@UrkI{`Rk#NeG zYt?unZ@_L0jOy)n{>q!mfnu7~- z963K#62cO{RgyhHW*xj|0b^nIR`ZGG^Z4H79LFak$)Ol43q^_)tm;*xbnC`sXtHEi z%}FwxKo9<+B8@f!&yR zvl8gMCf$U^f_rF!?Xx`D6rx8@y;-)j{Xw_Nk7hoe)xhB(hh{_9b>n)?E@+}d-K-ua zA~X=}x1MGnS1ES9>Z0sX<_wFA(adxd<;uoXb-KfF=p;wTA>eC=lHZW>h{DFN>FHXT zV#gu!vPo86QU#MYYJNo!LiQfNwiNo3bD`zj=u3M0K(NDwa9GZO-4_A2tZRb9rstOS)x35DXGEOky-osogMW=^7B zE9J7)X$I8i+lGB*+n4QA^D7qvbq!eF*hFL035RCFvuYX&^&q>6trb@@`vhySO_VrF zAo?~Tu+VgP6Xk;evyU>Y$fr(UWgFYVU6D>lTfu ztuKTEQIKdj$yG9LR|s7#6Y=?+YKDMmXS|?ztT!Q6Vz)HNHdLRaL>ouX*$YN{Q zO(@I8%-X*hCp;DKQ8gc_D4*dglC!9v4Jf1B8;=*0W1vCRgs{eS$(F@ZD858_7kyKw z;8hTO8Oz~nYEv#qiPLnxGJT_8fUq*di(jZ#z*BBFusP%-91aupe9yyzlJnJB3? zhfku^0>#WK47o^N9p9$J@e@C}Jq^sTUHM8j#e&lat7$g#neF>bXGS|4?Te?LN5EZ0 zEH;A^J)P)jIn2CkV!>?S%*Wv-`s(u6VIrTBDQAtfrFvUIt0^YBFjZSwcI<}VAb5a` zP%)XJrt`aMspc@ynYaNLr3ssyWV_K*6hqFi=FV*6V8f?_hxl$$v}_NBSe2C^4}Fw(KPpHh#iacIQGdg*=iBL{-;ozKt~;!b8awW1JW-GosnF8w?>+fD6&^ zD{TBiOS3s#^11fSofx{hLsC^eJ#Y%|-?<9KQ{{tf*xHVvwIR$18>bF54iqN!E|f+@>E z76zIK>#Ce{T}FR@TLa=T0ZN>hURg6F{HocftP*m73>xWXkWkHP_~Or|RV5SL~G z3TOuh{$MZ~#9FsrSJ$PMCnmP4nLXTR7Q#*?qUB4zde z@y~ybs*Cy(YhT#ihzE~m0k4K|SV4!^iyjWhPpFQTE5;3osMF;D7`}ipDKd_YLARN3 zPPLixjdYdZP&|BIRbHU@y-;5(a(slwE>c-s1A{3kUuziM1-RhQ6Llt6=in39gJ!P22Lvt~&QsG1&) z00UJGmV;2%jcYQHo`L>!%gizBscQB@10X2oR1xkoBgE@?yiIKKNvQ(pEQ4jfzWNt8 z?%{`T-NNSFHvaZAU&gUY8@6VPh!8Vp>68V;ngm|d=|~G6W#i=QRq1J45LS_k3KR)h zRW^K8wHYYMW~Hxz;|P~37tjB>%((1e|8H=|S_9H+b~p>wHHbv5O7*;M)Z zLMafkiVc$SI|xYJQWRC;bvXz;R7CwgW;HOkz9q-UPN_#)FIBzf>M14)u~4EW<$qIC zmVCq}f3|F7BRe!1(Gpr8a2s_i;G_&Az=Pmuc0&t<2_h_W&Zt*})=sX}&BzNVWB zh~1OT>jIp4y3QJfqF}aBt_xqHT>g8nFB#T!pp;4>Ft=ar_@|Yc>EJCuzaE9qq!Qrk( zgh`%0&BYOlP{(pB=y4Gh@FEw;SG2-DviS8c-7HRWa;gp~k5p_WvkaLfN!M$(sG-=Z zFvLK}5~k}eDG=&bDX=bDj*x*zb(XQJP^IN4RV4aREc9fm1-&g{R0DQbF``>H)dnFvYJ$+JYON&8Wl*wrYG$BX zrOswrL)NMqliSqnVdENvx*?ux``iEEA6)V@G$Y(d!LX?lp1MYykGgQYF$yOqshKQM5LBvm$Jm5j~k6*Wd|pqAPM>&pHJ>9TBT`1LQvVl0|ogVXlO=}q)? zgwfyMiB!4-kGqVzmIiFh+{JLH0V#UktJz(`G`-gR!~!s_Chsa{6nyp#jh~IiFZl&C zpdt{IOk--iVi^kr87jbtA2WukMoHWE&n+^@f9+zynoIV0iLziAQ#IkSA{NnAQRnyK zliT$CsZPIlZxa512Z4}>klAUxrcD3?21V7F49(P=U{xT^0Ip(@f_`9OhN0CtjU`dl za*bpfseCX{ZRTUmRVa%7mnK8ijmfGWuy|$hYYNZ@A?zBvbsM(i1_G3<=Tl6b=A%&k z5d;+<4rd+kbD&fYd4QWxlr>loII-5u&}cvVrGMtXP5PsoEZH1fRW+hnnnU6dnvmGb z#?nyDV};nhhi$2_LOZesPB(QY(*%;f8o85FcA`B1tjD&nmD+|c?2%~9?hun*fkh%} z?y$12tr-(i1!|?ox)JfF4*7S>`K&EZ(M=L8dx_2LBjz|rVrkzW6m!C*&m#V#YP_-a zXS*-l#K!G~*XP1cEQb8T3hqyD!Rz(l@squ1Y3s&7q!F&^6{s1Cbi1pF`50aGZn>7$ z=^^Z7$*@;wm5P;#=8_m=$t8?N2}9x#9HL_SAG&V#Kt_nB*-gw|kw~km7+EJgcLU$+ zwF!Zh5w&PE)nii(IMdt-3KeLn&tY+EkE*pxmPR|#8JnOiK|&QU)=-&~ZXu$YNNO5S zq92;&kzRx`V{#d(&Cs8;ii~tkvDHePHMi1Bfw}lpG1Lbss#dG}1X;&0%}#a`ifyT8S4WK+^rOhF!>`4Z75 zvQ;%(fS}9O;JP%k$c+O(BX-~x5bx? zXCzxLIjXYu3VT&pw0f;+>(+Sg`xpln7HB07pgnI|!`9NCiU|UYf!}v_jq+zI6LJvz zWdFZ?{umiehFr-h&8mDlk6jMFgIVH`OMh63S@J5Ss<8%4vDG9TLnAcbKsU&oG0^+= zf~@+YWXdvYJyh5U73`;nWjYx{U28zPrMdjNm8Y8%XQ`1N z9n8?uOmlGEwn}ZaNTs6I{1NdhF=-;w1$k6##o8s>Yr>l3ADC`klH0G%;>m0y9j%OgY4ZU;i{dFD++NErctFCrL$6(RT5((_jQRZb*uSX@vc`<6H;YAGJ&w7eYU}x)4Y$(c<Bfr|O9?x#NNzi}pj)wK*ur5)K_ z9r>NNFm$R5Cx@D8Z-wyElWzGY+uI6mErjv@mD_kwYQvf1oyaBA*j~JcCf_!c#zSy6 zp2F4lKg8<#2WTA1qrI;c$4jkv${E1g>KbNBDXbt(E>Mv@qgwUS_YljEDxXDW7SS__ znvD}!uEG@lG&x`b-ik<7Z51hQf?812r=TqKO8$2;S0M*+!|mq_I7)Jjt=Ny^^wJfr z2tQo7cZMLUD}Om^Ar$~)LX5R;7D==w$yOUwO|p9f0PL5&>iz`lRv%JP+e)EZ3W522 z^H;Wi{!jn$rTL8#;zbupnTopBc2wzk+#XxO!qN(=+i~_64fk)2V|JH4rBp#A>P20B z16rGW^c{S-eElKbcz1@5qYr1!pN3K>qRHdIT6z|D=dNQjzlJ0SWwc`u=Rz$A=7lDf zL&d|15Twy&VD)mf0@b95R_!)`iO~ehN?t-`2}#9LS8@9er-A$VwBeQj-OPyOOs`)Z zgCk()wbJX6VxLAy#fGj-1>^G>_@f@f?K5{y88zHi6C71bNv;(Y8}@NAtm8T+6Z?%=tB^PdE9DRR#7JPnhfJfB*0Q-Ai3 zO?|PRF>PDJMtm04Km;d_oWwv&8+zeKqwYpAokq!}%EjD9Ew;%)rs5<$15KD%L`un6 zPRb@uQ3?4wP3+3DISp@yU(YaWojC_mludqd{Q)8r5q$wM@D(&Tt9UZlg6-7`hA3oS zzBvzX!~rM!i?RE_Cb^I?*g6h`w>hFVm@C@MKUqsgD>cp{ml4(S2DQZ&#$pe1LQVVn zpbu?QDEWi!xfg!((!cobd*mM5h%%Z6J1L!<8o(!)KgElW575>Ppg!Wpg{Mxl$8e$| z9-^zT4CkEh42-G~7+ezZa^epO{g0xPZ@Ux%2P#3|(L;`naVsathPPx#xcdG?ny5?GBvUfg_kn_<9CV8*oxICPnP1s} zvbv6`M|0@vs7DK#Z7R73XDNYhUikGJi&)<+;r9I%Ja@65VqFQ3pFT<=nZR&&Gd})w z5iealg4k9HQeL{kHO8dCXH{K=a?p_Hzn*_~PLqtf@(?2}iPO4y>Y^ zzJ@NB{_H~_bC3no*Z0ei)$jHxo}ezOw3zoNM=?2w*-wnlVJ!Wzo@cJOv7LDOw=eY! zA4XsQAi^wJX_k)!C5MHz6lRxK`8yxWQ3j9ZHb@Zj=6!(AHUx&5Z=EPo$BIXTj))91!97ax%FnZIwl})+sNfD(?E^@G=gG6?qz7_do z0+$~wA;Ihk6zq7lr5*1-*uzF5hS8&ksY>`+dgsyG*Nm4RJA?(gmOGh(41P^&blB$+ zB6`(>4C=F(RnC)cD881SWBKI9?kQj&!s%vdGnh*470o2Gq!v|65+Sj{3QiHMkD_<* z2+gTI>3BU{F5=!?9EpDwLk!V*y5@V&HSYIFY6Sd{4ygm<2sT91dXYzq9#}!s#BQc_O{da7}GO#59-A)>gDwlOTTBH@xgNyYU!-(5hlRvgWx|WQ3H-6*QVQ>2w0i z%k%is7hl4W-ex>=whzlIdstsxME^h|dqE1Z*q)TJ?~G4iXs89vjbYT)xe;(wu(=mQ znNoeoZ^zS59;Jf3gK*GEh*=`RV|!;*uW|x>p#WB>oe`ZP&jKFL(32@8;qfqfL9PWmzXsp|PY- z168EHWu}c$-IN2|$>JiW{U%pGYQ{bppT|qXtRig-^|8l~p}m1(VPX-plQ%Ireh>BG zD4sgmj#pniig;`XAy*C=I)*N%9RuCntk{YrnzEru$TUf_cDXlofvQgDoH?Uuv)S4q$ zOAo6esU`}m*?{}cGsI6LBdWD!NBeeRv0Ri4zPX9^tyo9!!c(tY`t4Uvps~3DXAd`F zdT{}3>>YD+%Xt6eaqOjaHs=;Btt{hnuRMjViE&&!)rZc;APuYn{^ad3+`9h=Zpz+6 zoy~ITP)qNCTz1*q(uDOD$}#oLSXfx(4HnSb+a>?q+Kdqad9h2lTrF!z=kxGVdU3I5 zG&Z$^avCR0XYXle1~%ZImjP9>a1fi?3WfgUntM@f`)< z`(RA&*lOTS)(5>@+k)pvcz?EbA3NkyrIO*$N%KqYuQxmxxhq$=fugZ%<`SdN z_!;VfpVj@05OU1Exo(Jyy6H5+5I}2N@62!6XZVmjgTv?X)2$6~QpE8W-g=^`6z)v# zz-jm3^Dm#{HMuY`yMj9pA3}dHhyFpz+9Z3`wHT6DuOh=q`qk|%Y_2C!E~e1mJ%m^y z0atrF+KJ3IrWeuK>6N8wWo1sX@#dxhR0~-Q_P4>uCecoDa&vnZ@!gD!j@_LYc9yo_ z3`J0CI*iG(2Oefse>jIOBBeZ~kUp;$UpjvgO4N`0WApghtIuL*Z4;^06bChkKfC-f z%U_Py(}xa%>burmJ1YlqO#QHP$ccJ_}lwzkTcTb;&le&s33;stziV*y2a^8v4d9sb>( zOUPv~*|H5ygxnd*F~wvB)4`K?_GBGy+_`}|cM^|XcnnXm`SNMh#tMk2J{+aqHg%t} z4;i>ioUOtjnqS&LOM3&JKHEz;K91w;aZijkW8C7F3gjh6TFC)UHdR&hn zy;H<++>Oib6asaIj4l^**mQYzi(Vs#`)ot5OB207W>!_o>NWbUSbIdwOtAJCVjo=@ zj9!uNBmTOxy9f32pL-HXUSJ(bS|PrIfR92To2)zm{j4_DCI){MG99e(F; zeH}gLkKhp_=ho^b8*+)fBtd3hPl-E#rPXarT)%>;D<9zPH?I=&(;q39P#3AgqkA(b zlpWYD+2KBZ9D^5MfdBL}Xz*#6xH*TnetCnXF%31~k_#O&9K2g&i}>R|xq`_JqA`aX z8yu84fy4UP1L{_3`ZQe_IN67suw=TJNEj&ht{yl_G7B$Gn>5+_zTgt;aLueRK2pBEa@ZbDuK z=Dx?u0jt1h>DG=HV>9;tA8THSW@L};AOHUEUHb6NcX07|J1(5;K}%x??vUKwzcYn- zLeY3Kgwo1reCr#ZLxfFqlgMjxJH~%Ac;aXu_L5or z^rHpLF3n=(P!GDP0Gw?LV3ZQbBFjN1iRIsV`7vy!3z(l>Cj2c^`VZjVrypTwc?*M; zN6>ffVoriJv9+bGq8PSxp1RZ*DlxS?kfi1LF-g@+ z&z>jFr?0^J{$OGnXCFUIeM_SjRl>$j8e4m5%sgDc=UzAkdmxJDa1bMX?QnBq_A*I~ zo;w3i>mcfxRg(`_aq?I%JqZ<$^|Ln+F0brmDF7xhL!Pm+vWnT;k65e8Z%8nksor`S zq2~vE=xTP$_t{JqFg)Ca<-H=w>Kbm}8;6tGD!dJiP%};T86yjiR~)$ea2C(Ka27$D zH{3pbg`%0&TQd=?Lf)0%9iDu$ZZ#*4EA)KxYXX{ zMK6_7jnO;39LG>^CnEjF@NjIFP<0*W9zTi0{k?eNL?5D&fULji^fvzUZ~Z1YhFhYU zn>VLO0N3!`V@F~4hmoT0m9IMaxD*+359*X8>Ku8wd4GK~PMDm5qcMW{PwyhPmqVD0 zxh`16H=pW5Z-)~jqa#?kKPk6LbGmSFhh>X>&lON%m-A zRW{+HM?2vm7n<4J!&9Rdn9*w}Q}XqPIvUVucj1lY3Ea!a zrR^Fk$>Fdx=@oBqBCXJ*rWZ+CoFq3o((HTn@3e zv4Kj)h0->2p5k69U&hSLDw%O!uGDU$Ruu}@Q=h6w8{N3U{wNN2Iq$ zvlI4lz-Q+kVY}aht;H=AIj|wB%{Rw4apskyv@~`Q5R2r36b~0@f(><}-BZHh7tX-% z2@woraXUe2XP^TuAs-GO?MC40L;U#i+wg|SpMpVjy6lM28mMm$V`*z0L7x}H?TxUp zoc(~MbxWwta$TuiHfg!XP^>#vOOk?kseFrr2lgn>SUb9;^sk%7n%FaMZ2OXBNv)Af zLs*mwma>nu)C0?L4daVy`4bn8p~QioV=3}6OVezAAJ5%~*BvA(N#erj5tOMf!O;!} zVQ+G41+%n9dpS8mHqR0J3qkKbS@1J|=SxTxb+qxVgOu;@+`K1cl|nj>Pi{@3YO6yt zxz5w=8GQANFTmjs;@w|f!NN_7flW@r&n$aM2}jQ!k_#2qW;Q@k9|0G$B2E8;a&eIG zx4kY&oy(27wk8gKlKK_k4hOK!3Hd9pzJ!tCda4Usc3Zkk+*Q6tP#>CVb5@4mp^m%+xF={u30D6MaIn8~(py z6e+QJRXUK0j{UuqW?Cpl=P;IXSu5=K0fP7vt8Hv0XZIyxKX$aY(BWe?5W6RcMkdJ} zLiLR}eP#q7{rn?rKX`=I*(J1fwc)L+Q)rI{5pid+w=sk1i5WJ|DthZ_a#b|B*{4vk z;is?v1+%7wwY!A=&VF3EN6~U|15cbC!Ku+cDGjY`Y$IOM`FcJ?iF!r^-wFC5c06RL z36(rlpM8Qkd&p1xNRlyLy)}gvn^=ufMmx(*CRIj`4&-*$h6aC?93%>V*o*OrRg%~q zOx~JCl%OC(0+}Z%Y-eI!8y?Pbt`f3fLNukSoW6TyGsspKnGK5(pYWUVDkmqFNNwl z@TKQY(PoVi?uN-PG(7Y4SsWtH7pdlS@LQ*#m)^tTqj|Xv>uD;bP7x_t`s%#6p1xre z_f|0dU>VmRjN{t{-Pb1XS z42Q#xWSu{+)$O>vzKCl%k@>=C601n;`_ZbE5o9Ad z6|BS2x@L499YOoxG4>k=yzGxn)YcbwwvkqheI0V$v1Y98f~oLonzhhc-Cwn$0M;54 zV*{&R`@IFiY+rumbC=p1qqsmM)lEX>c6;!{pMOF$vyH>U-Gr4{bg_>_+sNk0u$!BG zOnc&NMsqQpL^B7y%n5W7xol29#D_PRsLv3Mae#(T45QgwK%lW7qbEj?D?70^w}6dQ z5zECQ7FYM6WfXFs0DC|JP0=vwJKNxDY(~)$!b;LcfDwY9Y`RJ^=<)inwIkHxI`)AE zgzB6mm>xFm1a42Kv9i2@p^k(q<`O(HQriz-m z)z?~Zp-C6gQ7z(Vv<0W^0kn6vqwnw$xR@d0$dLlCxg>BVp;kEIy#B@*VYIXBMn3!emuN4 zM_5Z~o;RK*o)0n#{SAV_``EY>tQzz!f{m>48I*S8)T$WiRSyzH8@~9`8SGLP85!!6 zZ~Do#Ye;2vxdCY5!7LUg9>VRdleN34tp#6r<`@M^4;{)d(H(C*D%{F|Tn*!40QiM; z!}}PUS(C>;g(I|Z6_0UH4S`3T;9{V~K`2g$OD$`2WfQZDF$@m1;s}XpI-SK2m!_#4 zm&~2OMwOTQ-&p~ALQy>K3Sy8>=n#pk&tr#;7PZsqWuMG2I1?dB|*cep6&FCf6i9;SAs6?3R$DgCc(qrWeT3`agn zV6eA1kAL}Zu3&y6g&nf|Mh?VL+5m(X7#eOyHB*t&`S)JGg6E$W)KfUEPgz=5i#J zENu=3MKlydk#din#(qaIjD<%FNYbsWnrBkVPN6INn|3s#ckJ6Jn$b&ilbamaSu7>W zGpC1HTUGLm02Ucdb8CC364TeY*(g(0>QbFVU2gPlOtYL7F-Oyi>}aW2Q2?Njd{8U9X;g9RKR-yT}k)S0%Ky)%KOh zbH9}80e=vN!)UQ{%VSseJxSZ=Kli0eV-Ly5Cs#2wzevnZzQMB9&B0!t+rkSZYEfFM zdx;!A`eYK5Gt(q+WYs=KNbevcHb@7 zY?0(HOEav5z0E~@;j7;uzwzNnUmb!joocdzwnjgG@!mMXER)V+nl9lUVr=S8BABN7 z5GTNfd}0G<`t3M&@+8vC;8=zp2BSF?iEz*;SW;69=n2HD0hU%LwwBgFp#c?_A!jHA zC7tXSPlOxM+|WuDUTyhVI%pL-fdfL80s?>zniEaAyPI;V&An$VP zLtO;+L=h8Y_+o9?K}lX3!PY@(`o5WEEnk(_@@uEi+2bT|6H_zv%afD~SaQM*INdQw zHob*VKtb58;V-VJj%&yF#6;y`zibokl~enasR_2&#fCNn3&g+}=dlq&1An)*`*7 zDjqDY!b1b9gEyYcuH#5Ey?bT}#Q?cH^;aL`w1BB^MZzIeQ`=aNZxF~h zDEwBWT%$Twxpp{H&axt?IQ!T+jQ`mTro1%EYynxeRCC#@wICc&YBIc~WEm%88z*E} ztwj$1@bCTIOJ&86XtW(R`qB+#)q@>jD3lP+pKinT8;|hm#13Vh2s+3IdOAtW`uZpX zk!P?;KU#f=layJSdiv4G6pm4+s_0FtkEnJxk3SUHskolDtddG={oxGwQqbGr%xWi@IV)x$PCNh9YW7u^!GT? z+R!MsD!+AQnoi!7DMP7hz9bsKGJM5DWeG@14ugDt|S_Ami_@jSsx6(^3JKxcP{ zl)ZiRtt`(edOM5sWY&3|9f-7a%4WT_K8un77$lzZ6l;j%3dQ1VhxANbZ2GQH2yOld zCYR=rw;6jyRMjd?I;=A!EdjE|I!p<^wj@YQNLTk$mngWRgOatMT%fbjjyBf$Lp=?6 z_woeZyt)8aBud#NNIAY8XU+|>k?vxT+~dLK0*>{JqLtjm&(w`AFH5B~OXTCy3RsJk zFtu&N4$IxcvHSS)mtVvxkx!bSAw=23LDe;p%VC<6a-SA!DPKe(n}^e7qti!*&XVGy zyis80oI5#!i%*}#OV2!xM-!8H@!26XG}lwpO5yEmGdR`XA`dESZ;4_nM<`99)20;( zf72*?qNrmzoSayKpIPzr`Ln#%EeUfZG&CI9hNGM#_K$uIGrInfhdKvvm}Ia^ zL@8X%tY-Z5&;A4(rCs>Ftr(x$zzeTDi$2=AA78sq^rfO{s2?-bytda?aA7ElCO>14 zAfUdk9*r##soEw|dHARvH`jS6t<*`zYZnBJ-m}gdZKfOf?mHji<(G~bTG#Cb%&cdz zvXiHym_b9mAGc>7(xWG2bw=SWZ=0!DjV5=162J^DB3-fc^oJ0*>T`hRDwuRaC zxI9{7a(Y5G*&bgKM~)mOfukAaWH!>b2s;amNgaWNBGi7{jwqpOVtV8*e|5Wuu3gy+g?-t+}Cj?xCLkyg$%kuyE>BB?e8917Bfz z%#ff8|D%tDS18pv5?pagcZQmqR!GYOYf>btK3@>q8;|Ivl#%51*c@JRuCQFly}m=w zggRIYl?bPUD9jUt>hqw9Sw6P2L&E4ZH|4-QXaM^{qxof=>9W6$S(HP&?sTw@FQKp1 zgNx4}rh@B{hllBGxFs4m<1@?fC^?B@c+EINCLC+;Ac9hHsNF9nmOce=b9#!Fte16} zt|8G#n)1URy>X3gB#-5XGi3Sw*jSyxUO5BL6C+4$ts-C0iMo=QWf^N9`Q8_ z9H2ZhdvVI+jKGK=ahACEKN>@WS0`t&;|r8|TvQCVs8r9a?BelbeewwKFcHvNR-^9J ziKwqf9>F2x7#EGLs@sknC#KFzMU`y5q0vY56p(ul(=@B*AC8eX)lu+vh|k_YE*8h^ z!&~xN+$4q`ZvcLl?v?Fr#+?H_yq^la_m#DEba(a2^Nlyh?_njyh-H~oidqfs%I&P0 z;Vc^aBvsR6Ik9imMl3$t z!_QJx%qlo^xEFag&TAiB$M(uYh;`4s^wq~6%t@q_s}ykcgB$QrzdCWGANAxIzPd02 zBPkci2`_ppmO|IS0P1KL*jCc=81Qi2aoWiZ*j=5cSlT2P8m!OHB1d7+%l9u5!ZwoI zBzHF94uqtHl4JRaGy59(`en-TMV6#|jvRuM<)m^@E|f7hKaXayYfKt7TF6};u6^$UViooIBABJy^RPuittqvG`f7aF|~_OV-xP&nUSw| zP0qBXOV+wmymVx;Tl!mFzP~LcWeO-Z5{ONODwayNYIp02`ofU z%-O^UyM;XpOGuwId@~^9K4SRGr~d1C`FUaMSfCW zPvyC_i_(vs{VFRDkczOkTpfRaA2Yj`%c2jsO&Veein`f0)B`IbEj7{H2z0<{v<(c7 zUMeMbI1nLp_R!p+_i*ybC-KblPqCS0pt9!AuIylm5`hbQB#AB#*f==`aB{Gfb(a}c z=I)3-r2zebCf3$@dYjXSW38YqL;pE@< zvML^|6y%cA+hcRMadR9qlU#LzA_x+X|a z-BKvb5&=5AF7l#I_71AYEp6tyU4rFAjLP>U{`BEE?$Z~NC#uRb;8j?MohjB?V%DKE zx@P($nu&c6Xk6x(t*QOQC54J?|8OsYjM{;LJ~Va@kSviH1w%68-IN?Yx_*PHP8C&L zj4I%&gXJlQH$Iu7tl_42;zxi|#UjhvxzmSOA{IHJ1*qOA28IVIT2ddPUiHbXHN5lb z0@mVo^tSooh%ZWKj=C|@WcOqDXk_VZ(!G7G@l;szc_J(g>)YaVHrlY1)n9(`sQmrS zySwB!OK1-2csQ|4cunISIyGSHU3>Fvto-8%7A71+yZ*Ht1EB2_^ z9k4#`LYiFa{^o?5D57KktWfOx>`*@2N^GzG{>4k-4j-zXB2KsW;@w*_xOr!RC51eI zQR8ES8lPQ-o{LjWE#lGgE@Dja=bjkFW{S|#-vY%?-=f9Cn@D1S^884zSmoY?&%JUU z@BivUynE#V(NP)U#ttZ)ZLZ+#JBoduupC$@>I(#}}VJ z3+j4U+t`u^ar!A_9zRrv(a~;ftZm@qv7(e%j&uice5i>YyNhtPL?TzgGC9H20h1zZ z-C|lcULWE6kt3Z%LsVr+Ru@PdePSIgBiG>}V`rby$gTVYIJ(nCP-92;;2~y3$lwMx z>QthQrna&51!MlQ&>^^ycFGJgvP3sgL$EtNXwWN zdo){54Qq$OnjZpq))7lj&TQhJ{vY3CHt0BcydT?CPW##-xOi>|;}2Li^6T=`YWjQY zapsf{|MdGe@$BPg@a9iH#N%fv?nPOD={8pLIo4yL;I827PmkdAp++p_Xzku#rcvZX zC*8-@%>lWK)C+k8h!sGxN~DtTB4%%huI6%LL3!(Hc84o*@_3-&LH78-;X>az@Uo} zp1a&cIcZK3gT%v$a=DF7sYwPzY+(+skKe)qB@_oym)$y$UqrrU8n)(A61nI{S88sc zwMN)DFB`CS@LFrNtokM$!{dW5T&g3Ee|)$fKFZ(^$pggMQio_xb@z4AV$C6zD9J|M z-`N4L@7h@;+Dm3ZFI{&0Gv50i^azbM$Z!c`DcSUqFgAqk^6`n?HGFXST`I^s>=y;u^UB2bLO84odhz_lb_#kS z+#g%QCu3Y=dgQ%UcUzQyUbA_X| zCEYlSMXzy?{ZB|Rk5e%JrqoIpGc3~3cj-Jm?j}ZNdj|7QXy3LGxu$q_6 zGM?DO_x{bFqb1_v(zL|G+` z-}#MG@)V#e*XFR6@S>TB%Ryaig%)js233JJfPljJLKX#22U>qoF_mC5GHn`}{QMx8c8t#u$`E(=F+9r?e zi$;R@^Iu(u%E1eGl1TCb3ITztmT+%;mNmSYWuzYW2vtuUIgVl%%hJjk#vamp_x0k` zGe^)F&(MO^sV9~2&XtEGV_saNTUg(77%Q z|Ia_g|M2^N2P4BRSXfD6eqjb9$BArgb(p*M9v;oD!An{D_~}vFxNP!NNL8}r8xN*X z%oj+g61c?-`WxRqB6mehQ|awtSrW(bwe>i#v_a^4p%-2C&FCTDm?J@}4;ZJx<%x(~ zls&e#)-g4;#i-xHF=lKZVRU;a#r{!diOFDkIf+vzhRDkE64saIF>>w#+6yzVvr)&hE=S{n=)You=7et;6O{Lnx<2D+OloBJ`fW=A}eVq@Kvu)3|Da)noshS)oo zKg1jFkKw(`pHdIoKsp|img$AFJ@}I!{R&4rZ5U~9zzVe*TU{r@0S9>vo4v;mFL_Cc z@Ho`gDfgXJ$RETfnXF9Q;iQv1MqDJ2PE3!FQCeqaI0Q-v(Jl4S$9JJbrv1lvZ{r5} zh3fXmQ>V?<2PUtu&I{A!;WxVZH_e%sArEka%_lrJ_1j`iy3NRZodcbe|Q~#ae0oczlzO`dE9?A28F)M zgwU}LwIIc)6uYR>6#hQFc@G_jj?xWxV3Wl0>dpHE7b`e4`UOJlQ`pWo;0J&9V+^*} zp}n=4<;i0(a7r(QWRm6+<$HIPyh=f9?=Y@UY~w10$};(hSgGa|XRw5tu}A--LW{Xf z{*xo`c%NA*h_GPds(I9{VJeB?b<|cTnq1G2J4~j%f85jlmQJgzSqID1ghcGG&oW+A zuN~(k*O8Z9tk=|~s+nyp&urt)TpZ04O%Th2V)WRbeC9dYue-2^Ti_!Ubvsz|helAW zW@QnrutarJ^*ly!5Up<0`b=QYSw@N|EYjGDwe1*&j-Enuwt`RZEwL^a5g=L-^271I zHrlgE{QT_?Ie}S3>P}K69!3L6TX$zKE`0L>GPx|?|M)suj}O8@vNoHnVvla(`dTZF z^)kBkD01u%ckeHe?AgeyOA?V~6PpAPk8oo2I4YgP@<4&jy(V10dl%0?+l=Av7TN_a zWC)}CdIm7eM*c`knLC@zW^3&HKyAglZtS#D%z>OD|c_NC$?`q>Aw=pE=rSAUmOUmubvisdOAbmK-&9KvSWg_$unz|Kx= zZ0ulmGmd%s+@m98-sKHSBHMWV@=bio2^D5mCR>nib#rbHAKzTyV>dBInW3|#flg#I zu3x{8&9!a0?JG<(O7}IRsi6~J{=%1#V8m`vw0z?HAin=+zrq{8d>2PXN9eh%;jt6# zQ1|9BH!({fv5J$28sKXgmIo;}(%0x{ZIZ`H4feO<;xlJte|qow3_N7tTP3$Nn07XI zn3=2u>pO@vcfi9to}OQ$KTPEa?3IwC=;vT_)z+)D zhwJdG_io_XCx#Jls<<_|#(_!W9{bGbkrobU3l62|yft*7zdMBA`JJ!gU;Oibjk@}F zAUi?X-AgC04l@jjuRq(1$Os)nIHFYK=TqA@<0ERKfI(<1A6hP zBP>T*v^4n9)f8b9zK259j=ugjk~ST!Wa3F0PfN2q*yDf*NKAo?ICT%7fBG!G{^e(A z*Y;3-&7+&{-SH!XXl-thQIm)>(*frh@H$bI4eMDCr4=7}$}ZM7_werJkFi0W z>e}5I%o3;!bhl%1VOsJA;lqs5$P%BLaQ;cc^}Q5UHn-3}I6%QX%jSQWgqIdDv!sg# z*7*7oVZIsZx?-+0tQxzcpqPZvSiGPes8aGsgK58K0SMtSGTg!d7bi1+}(qGIlddRAWYJS#wZ; zSH&{PYDK{#dJPFm3EhpfK^NC?f0DNAFmJq)g`b?HpVsb4Hp6}nPMkhNw9X@!+9b*z zOg@+-63SDYEMcI*gFrM4Ez(MalS4MWgA)UFjMi41JJo{=XAV&_i;{~}q@ujNoxqt6 z`XqEMcNSLh!H<4~U;NweqGR*|W+w0QJt%);7mtm$vS016*=G@7y@S!7fLznt-PX+V zW1}yVXTxrwvsZyqv6&yJtgu|sYE2aJ)Qd0T*eNR1EWhvl{7>=TFMh<#ox|awPAa@U z>R=JMVo@l)nnJ)GDB`I2fJiZ@;^-q)t7%R(^GSD@(QY#D+UJX?`(?`fw#jwa#yMKB zJ~`VwDOx``A>yNfFvcgASQd3Oute>q z>5b<(kd*m@;Rul&k&-uzi>HptgK_SY3$<5PasSPq;?doY5MVanpW4LAN`feC5NA$y zVrw^!Qa+9M-?@g7vyY=K>_yxbK}q$ag9z+i><(V-8Nr`!%t}+v*n2Ma9y;Ww{unx= zZm7KSKsi+&P@~v&`9T4Sd9IcUWq&!TVn{1uEs_>yEr=Kq4 z8dj-8^-*fM@Yoqj{&qAw*Xg^oGKw>J^R27AYwK0bgb z5@hdwbT+l(#^O6T-c888mO#v5WQp;4Cl+iqj$)Fha+i$HK$J*Hv5rpP=PNd=fy-k& zs1|tWQr7vAD_60<*t(jqee-Ky{YF($o1echjP5S_7IXv`XXo(D7rqEzi5@hG)6yET zdukJ@c!CybBf1*NqI-I9;)y5de_X}p@)B$F8c~@|Zjvc70PP`HQrLno0 z7h$KB8%Dq@KCe)h3mfXm6;g!D;xP}|czY-$iUXNbls6oeEqv{TQ8@_rCg*YO&IU7V z4=Zaa438Wma&lsOeGAv`Ok;dzi-0eNtUHMK<|^uod&UtR)e^zQSv>dh^Ar#@Y^^M^ z;kQT-Vxyv)pP!+lsMEjShNGziQAdFi66F(51NqesZY_O`r~01226;=`VQ##!KJ?{) zwrjH)vWml@nG(G9i3w&&5~xf(#-&rV1WrX;;l8^Fm1bFt9>3itx4liN-~7fG?|tR- z7m>*n<*P2vFXQBylkij%hQ-N?80zalU2`{)j0a~=^h^IB5T!uZ(2TC$UR)t7e&eHA zHr%32z1F4x0uA+WyXc){a_FS2lA^}6u)I!TP8=JWl?xt@9j8Fp;6-Z-A#_%prVy6d zrj*LaEK^~QR?I~L8sgWUC+l49vYNqZ#8j{ec~fd=k8);n)MrTz?I(D3x*qm<0csQAefCf`JI^t9mgxnrDQA1j202h)q# zSXrjL;*){Y-q$Nn2%m2ldj<>jX*ID^edr$rfkgr?48=q|eP zFdJtE!{CSVBmF8hR%hWQ<1ApKM5!)Caz&TVg|l>K)s;BBohR|NFTMJG)gA~v_?7@a!4@}(!~b-QJazV=`TiH#+B$d}9IL06Rg zr<3J%VjNRT2&mTUVDg6T<7T3hh5^peh?6p5N>TpXNbX5q$EQ!I0^3~W`|Cw?{F zVIIjL_PdMY=Nv1)8QTtHh#BUaS{tBLm4?f33| zm}pkN`Q7fOrq^!K&mJ3}Kt@}@;}@U88aL#-c49lWhMn#VUM7iLTAo7EAyA-(gCCn>HFa@Pxyr`v zV~~t;Y?9j==Ivp;@Yo0)$}H81c@otnDAfI`Jt4eZ-bPNhefMYI`EEk)1zz7-|7SPv zufEn!*>+&$2$7K!6=wkNF642p)d?>LGDfqgg?&UsYNjYAsfg!Jwc_OI0bIU4k5;nV z)Mgsre(?;(A1pv6N)hX{#7B#^2ZLyBt>;Z;@zK@m2zhLH{M-mW_tIIqi+N1UtmB$E z{$jq|7$7pIY2WG40Z zGBVxx^v)eTd5liu@L}w%t)sB9#j>@E&Y?pjlM&=-k`-cc*cuz<>849_%V?&JTMhUy zzdVl!C*ov789PM{j~)IT;r;`bwK~|Mgx#|lQdL`R7eP%(7pDd}b$NRGd|eDJY6rlOH)oGn)6c_Ay?1xE8Wji4fW+M^T#2}{dhMDXX~AvA^q zL_6Zsro*yyM9CX$PCp(znuj>Qf9%dZtgr9U7@|jR*U&y*ekm0LZ*&lQENeaV?H4ItdP7avBFuJZMP%bEc!*F{iA>QsmtU4#_+L2;XXQXsYF(OR8Zrg zb9m?NPsB&9AV7rRr!Ch|A3~pxH^afLreboP?#eb{r#*nC-T|~7J5JJ-lA9=(=Emfz zz_ry4M(Q$uzem}lPOdDOc(j5A@{>|#3%Ot~<@`3B?p4i|7;MHfRFJD-I1={}ani|* z9>dc71OuQG6NJI*>m+%MWVc6!lkR4QBBS^W_!0+eacvXBycV%}W^O$rm#JQO?n!dH z3jLB4Y>5pxDYb{9A+}3hPDH4y1#?uO!;~Om83lE`esPaE&4IAPjypGRV2or`?A*~R zhJhiDda}EX%;=#iaHQ@M;7P*YPH-UnUJsr;HAqy%i=m}@ z|KTc>o+rpZXf6de$G4ZTV2Jn_$+ks5v*0?^HCfgh03!7 z7XtN2PR5aPP+4e;vRo@@qyJN`vfK*5k=?^vWc>HDqB2y)sUX4xThz6peR+3J3-7V+K6}0wGi2V)^#SB9CmUl z4xKuK!z0J(E;<hy#qmM%kRrVnr%-*9*vf^FT)4vLY+|oK^QPr7DhF}2Fsg&$DEklPo2DpB>Ijm1 zaol~dhPj0;disZuWW!xv-NAeBe~k5&HTgmJX{rDMP>7=jZ;gEnrAS9pqX!?xz5KUX?eIv}sQ&~4|(zkEv8-PzO zQ|)llaBHB*nMH^2eP}nov$cd+sU$bn%9V^xEK<(@$`Ah6A50ybgU?Ke>?g1PWOFm& zdYwYztNx%noXU9!&$iIl7Jx!I`knW$V`?deqAf%Llyx#GJd1ja&n}_jj>1QCY2XmO zmCPOzi$oI-C$P-yaZ+#ch8vL07qNm);{9%#T@gfG1voaYqRzR4-XZn~mK~SNj_b1u zikst@z5lU1yg8;Ya@}?4Yi~q;X9atEd)Qee=OMNf+u=g2(|_%ouOJliAi*s9@f$ah zBvcotpaw`n@7$$JxfLV0VCP7u>3lwf%6{VB&0r<1U?x$**N2ICPaKK&fZJ>wcr2O-|HXjbgwOKp6_n+v4$7$ z;kzFZhGyk?BMY;$c=%wRgx5pNO*G~9GZhQ;w>{Wo|0vmg2z3k~(mjYE(b@RiDnWsU z;Lx*jt8|1~PLFE~naTH%SRKa;U;aF!cUM}vt8Dl?xc~}N@57~)r6ito^|BPSAV8wE zIX6STLCx&$9P0V^3{ln5qod4@MSSw?tWe2YLd}HeREIl9hLI)1E>HsUx>Z!@$vf!tr#H7zq+>ZuF*Hj(ubfC> zJzqsV%brdnPwXg*g!y`8>HX0<+}c^dJDUqgiqAO_+(dqWvs8t@ld)&M`EUR5-){c9 z#{S!-u>;J0o)=$3s*6GnB-y7_22|Fv9(WN*@n)=b!-iob_P2|%tq^YbfFDxUu zK`GrEAxw0#(GkXF69`742u14UF%+eO!3hT2LU84l5J=5nWAY|SL`UaecnXbd{Cji; zBNR7p%n(9kV-yhUq;#Q>I0k#qQRxkWwMiaE8K$H7J&5k)(Z0PYfZy6Fr=WEFIJzQNDS^tdO6$ zAl*hap{Uxwqy+iRAN)^0_~F!Lqk;ebnh@*j)~zdvpT7RH*MH+H-~MOLP4tAGRXF~V+l;G+2nyUZkB><$qiTiAdy-dY}Jw^gj*!0m#@#F ztFH$=4Gu&IN&5x|<$B|r@4bO@Cy&chd4BcFKW0QG=%XBydYX8CfKgvqeT4ht%eZ=b zffJKQq`ny^M~4uh^rEGc&=Q+8-e{Qdzg0r{V~2!l?UKh+C6$o$V%8r#K*w-Dy1N@$ zy6Gj6bKP2-#(P9>nX1@`Vq-bd-=xI;oop%lcYgH0{pj`aE8~g(*m(bcB+O^bP|2Qk P00000NkvXXu0mjf>1$Uq literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_map_signal.xml b/app/src/main/res/drawable/icon_map_signal.xml new file mode 100644 index 0000000..112cd75 --- /dev/null +++ b/app/src/main/res/drawable/icon_map_signal.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_map_signal_svg.xml b/app/src/main/res/drawable/icon_map_signal_svg.xml new file mode 100644 index 0000000..0ea824d --- /dev/null +++ b/app/src/main/res/drawable/icon_map_signal_svg.xml @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_map_standard_type.png b/app/src/main/res/drawable/icon_map_standard_type.png new file mode 100644 index 0000000000000000000000000000000000000000..b2ae8515add639daf2dd5e774dcb5d0a23bb73b4 GIT binary patch literal 20627 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 + + + + diff --git a/app/src/main/res/drawable/icon_map_zone.xml b/app/src/main/res/drawable/icon_map_zone.xml new file mode 100644 index 0000000..cbc4997 --- /dev/null +++ b/app/src/main/res/drawable/icon_map_zone.xml @@ -0,0 +1,40 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_master_card_svg.xml b/app/src/main/res/drawable/icon_master_card_svg.xml new file mode 100644 index 0000000..a75c712 --- /dev/null +++ b/app/src/main/res/drawable/icon_master_card_svg.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_measurement_units_svg.xml b/app/src/main/res/drawable/icon_measurement_units_svg.xml new file mode 100644 index 0000000..d3b7133 --- /dev/null +++ b/app/src/main/res/drawable/icon_measurement_units_svg.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_month__mate_lock_svg.xml b/app/src/main/res/drawable/icon_month__mate_lock_svg.xml new file mode 100644 index 0000000..9ee7241 --- /dev/null +++ b/app/src/main/res/drawable/icon_month__mate_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_month_mate_unlock_svg.xml b/app/src/main/res/drawable/icon_month_mate_unlock_svg.xml new file mode 100644 index 0000000..3310ef8 --- /dev/null +++ b/app/src/main/res/drawable/icon_month_mate_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_more_sleep_bg.png b/app/src/main/res/drawable/icon_more_sleep_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..92e34049079b45b86058e91bcafeeed2713b4b8a GIT binary patch literal 444825 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%0D4LWy+^7ap}yN5G+(#QC|%CfECZM^c;L2 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]v*FgWaS8g!l+uz+Y}At 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 {~|}sAM)A3kQ!4fs42A{c_)LZWaRV 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 z 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 + + + + + diff --git a/app/src/main/res/drawable/icon_newbie_navigator_lock_svg.xml b/app/src/main/res/drawable/icon_newbie_navigator_lock_svg.xml new file mode 100644 index 0000000..fa3f975 --- /dev/null +++ b/app/src/main/res/drawable/icon_newbie_navigator_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_newbie_navigator_unlock_svg.xml b/app/src/main/res/drawable/icon_newbie_navigator_unlock_svg.xml new file mode 100644 index 0000000..6316f0a --- /dev/null +++ b/app/src/main/res/drawable/icon_newbie_navigator_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type1_small_svg.xml b/app/src/main/res/drawable/icon_no_zone_type1_small_svg.xml new file mode 100644 index 0000000..082e6c3 --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type1_small_svg.xml @@ -0,0 +1,50 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type1_svg.xml b/app/src/main/res/drawable/icon_no_zone_type1_svg.xml new file mode 100644 index 0000000..22d53c8 --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type1_svg.xml @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type2_small_svg.xml b/app/src/main/res/drawable/icon_no_zone_type2_small_svg.xml new file mode 100644 index 0000000..8058f9e --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type2_small_svg.xml @@ -0,0 +1,51 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type2_svg.xml b/app/src/main/res/drawable/icon_no_zone_type2_svg.xml new file mode 100644 index 0000000..a0268c4 --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type2_svg.xml @@ -0,0 +1,54 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type3_small_svg.xml b/app/src/main/res/drawable/icon_no_zone_type3_small_svg.xml new file mode 100644 index 0000000..f3ab75e --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type3_small_svg.xml @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_no_zone_type3_svg.xml b/app/src/main/res/drawable/icon_no_zone_type3_svg.xml new file mode 100644 index 0000000..4b8fbfc --- /dev/null +++ b/app/src/main/res/drawable/icon_no_zone_type3_svg.xml @@ -0,0 +1,46 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_noti_svg.xml b/app/src/main/res/drawable/icon_noti_svg.xml new file mode 100644 index 0000000..5c7d6b9 --- /dev/null +++ b/app/src/main/res/drawable/icon_noti_svg.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/icon_notification_svg.xml b/app/src/main/res/drawable/icon_notification_svg.xml new file mode 100644 index 0000000..9fbc7e5 --- /dev/null +++ b/app/src/main/res/drawable/icon_notification_svg.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/src/main/res/drawable/icon_pair_tracker_image1.png b/app/src/main/res/drawable/icon_pair_tracker_image1.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcfad21b0b651277383ef1ff6c6c29f5dadbfd0 GIT binary patch literal 35711 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_pawsome_partner_lock_svg.xml b/app/src/main/res/drawable/icon_pawsome_partner_lock_svg.xml new file mode 100644 index 0000000..ab24178 --- /dev/null +++ b/app/src/main/res/drawable/icon_pawsome_partner_lock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pawsome_partner_unlock_svg.xml b/app/src/main/res/drawable/icon_pawsome_partner_unlock_svg.xml new file mode 100644 index 0000000..bf32dc2 --- /dev/null +++ b/app/src/main/res/drawable/icon_pawsome_partner_unlock_svg.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pawtential_pal_lock_svg.xml b/app/src/main/res/drawable/icon_pawtential_pal_lock_svg.xml new file mode 100644 index 0000000..28d3a06 --- /dev/null +++ b/app/src/main/res/drawable/icon_pawtential_pal_lock_svg.xml @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pawtential_pal_unlock_svg.xml b/app/src/main/res/drawable/icon_pawtential_pal_unlock_svg.xml new file mode 100644 index 0000000..4585a97 --- /dev/null +++ b/app/src/main/res/drawable/icon_pawtential_pal_unlock_svg.xml @@ -0,0 +1,20 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_payment_credit_card_svg.xml b/app/src/main/res/drawable/icon_payment_credit_card_svg.xml new file mode 100644 index 0000000..d570985 --- /dev/null +++ b/app/src/main/res/drawable/icon_payment_credit_card_svg.xml @@ -0,0 +1,29 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_payment_paypal_svg.xml b/app/src/main/res/drawable/icon_payment_paypal_svg.xml new file mode 100644 index 0000000..886f4ab --- /dev/null +++ b/app/src/main/res/drawable/icon_payment_paypal_svg.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_permission_check_svg.xml b/app/src/main/res/drawable/icon_permission_check_svg.xml new file mode 100644 index 0000000..f6a449a --- /dev/null +++ b/app/src/main/res/drawable/icon_permission_check_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_permission_error_check_svg.xml b/app/src/main/res/drawable/icon_permission_error_check_svg.xml new file mode 100644 index 0000000..10a00a6 --- /dev/null +++ b/app/src/main/res/drawable/icon_permission_error_check_svg.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/icon_permission_no_check_svg.xml b/app/src/main/res/drawable/icon_permission_no_check_svg.xml new file mode 100644 index 0000000..d4957c0 --- /dev/null +++ b/app/src/main/res/drawable/icon_permission_no_check_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_permissions_svg.xml b/app/src/main/res/drawable/icon_permissions_svg.xml new file mode 100644 index 0000000..2b471fd --- /dev/null +++ b/app/src/main/res/drawable/icon_permissions_svg.xml @@ -0,0 +1,31 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_pet_fence_svg.xml b/app/src/main/res/drawable/icon_pet_fence_svg.xml new file mode 100644 index 0000000..0411803 --- /dev/null +++ b/app/src/main/res/drawable/icon_pet_fence_svg.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pet_foot_svg.xml b/app/src/main/res/drawable/icon_pet_foot_svg.xml new file mode 100644 index 0000000..e093a65 --- /dev/null +++ b/app/src/main/res/drawable/icon_pet_foot_svg.xml @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pet_head_edit_svg.xml b/app/src/main/res/drawable/icon_pet_head_edit_svg.xml new file mode 100644 index 0000000..182ec20 --- /dev/null +++ b/app/src/main/res/drawable/icon_pet_head_edit_svg.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_pet_height_tip_svg.xml b/app/src/main/res/drawable/icon_pet_height_tip_svg.xml new file mode 100644 index 0000000..b369c2f --- /dev/null +++ b/app/src/main/res/drawable/icon_pet_height_tip_svg.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_pet_share_svg.xml b/app/src/main/res/drawable/icon_pet_share_svg.xml new file mode 100644 index 0000000..11ee163 --- /dev/null +++ b/app/src/main/res/drawable/icon_pet_share_svg.xml @@ -0,0 +1,37 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_placeholder_image_svg.xml b/app/src/main/res/drawable/icon_placeholder_image_svg.xml new file mode 100644 index 0000000..5c487b7 --- /dev/null +++ b/app/src/main/res/drawable/icon_placeholder_image_svg.xml @@ -0,0 +1,28 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_point_bg_svg.xml b/app/src/main/res/drawable/icon_point_bg_svg.xml new file mode 100644 index 0000000..d043208 --- /dev/null +++ b/app/src/main/res/drawable/icon_point_bg_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_profile_birthday_edit_svg.xml b/app/src/main/res/drawable/icon_profile_birthday_edit_svg.xml new file mode 100644 index 0000000..172043f --- /dev/null +++ b/app/src/main/res/drawable/icon_profile_birthday_edit_svg.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_purrfect_partner_lock_svg.xml b/app/src/main/res/drawable/icon_purrfect_partner_lock_svg.xml new file mode 100644 index 0000000..89502e1 --- /dev/null +++ b/app/src/main/res/drawable/icon_purrfect_partner_lock_svg.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_purrfect_partner_unlock_svg.xml b/app/src/main/res/drawable/icon_purrfect_partner_unlock_svg.xml new file mode 100644 index 0000000..c92ba56 --- /dev/null +++ b/app/src/main/res/drawable/icon_purrfect_partner_unlock_svg.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_red_dot.xml b/app/src/main/res/drawable/icon_red_dot.xml new file mode 100644 index 0000000..bb578a3 --- /dev/null +++ b/app/src/main/res/drawable/icon_red_dot.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_refresh.xml b/app/src/main/res/drawable/icon_refresh.xml new file mode 100644 index 0000000..74a4c93 --- /dev/null +++ b/app/src/main/res/drawable/icon_refresh.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type1_small_svg.xml b/app/src/main/res/drawable/icon_save_zone_type1_small_svg.xml new file mode 100644 index 0000000..e784a39 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type1_small_svg.xml @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type1_svg.xml b/app/src/main/res/drawable/icon_save_zone_type1_svg.xml new file mode 100644 index 0000000..1fc3f8c --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type1_svg.xml @@ -0,0 +1,55 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type2_small_svg.xml b/app/src/main/res/drawable/icon_save_zone_type2_small_svg.xml new file mode 100644 index 0000000..87b4a19 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type2_small_svg.xml @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type2_svg.xml b/app/src/main/res/drawable/icon_save_zone_type2_svg.xml new file mode 100644 index 0000000..417d9f4 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type2_svg.xml @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type3_small_svg.xml b/app/src/main/res/drawable/icon_save_zone_type3_small_svg.xml new file mode 100644 index 0000000..df8556b --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type3_small_svg.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type3_svg.xml b/app/src/main/res/drawable/icon_save_zone_type3_svg.xml new file mode 100644 index 0000000..dcfb05f --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type3_svg.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type4_small_svg.xml b/app/src/main/res/drawable/icon_save_zone_type4_small_svg.xml new file mode 100644 index 0000000..e5120c4 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type4_small_svg.xml @@ -0,0 +1,48 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type4_svg.xml b/app/src/main/res/drawable/icon_save_zone_type4_svg.xml new file mode 100644 index 0000000..3c4e667 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type4_svg.xml @@ -0,0 +1,51 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type5_small_svg.xml b/app/src/main/res/drawable/icon_save_zone_type5_small_svg.xml new file mode 100644 index 0000000..18a8c00 --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type5_small_svg.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_save_zone_type5_svg.xml b/app/src/main/res/drawable/icon_save_zone_type5_svg.xml new file mode 100644 index 0000000..7f6b03a --- /dev/null +++ b/app/src/main/res/drawable/icon_save_zone_type5_svg.xml @@ -0,0 +1,37 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_say_hi_bg.png b/app/src/main/res/drawable/icon_say_hi_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..788a7a97342c776ad1aa89789ed4b2a3774ffb11 GIT binary patch literal 99395 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%0Ai=Yxk=!n{uGv0=LLJz(++eEgK0>{StbfA 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_selected_point_svg.xml b/app/src/main/res/drawable/icon_selected_point_svg.xml new file mode 100644 index 0000000..4575891 --- /dev/null +++ b/app/src/main/res/drawable/icon_selected_point_svg.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/icon_share_activity_svg1.xml b/app/src/main/res/drawable/icon_share_activity_svg1.xml new file mode 100644 index 0000000..528e792 --- /dev/null +++ b/app/src/main/res/drawable/icon_share_activity_svg1.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_share_activity_svg2.xml b/app/src/main/res/drawable/icon_share_activity_svg2.xml new file mode 100644 index 0000000..51559a1 --- /dev/null +++ b/app/src/main/res/drawable/icon_share_activity_svg2.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_share_svg1.xml b/app/src/main/res/drawable/icon_share_svg1.xml new file mode 100644 index 0000000..21f5c91 --- /dev/null +++ b/app/src/main/res/drawable/icon_share_svg1.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_share_svg2.xml b/app/src/main/res/drawable/icon_share_svg2.xml new file mode 100644 index 0000000..a7691a1 --- /dev/null +++ b/app/src/main/res/drawable/icon_share_svg2.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_show_password_svg.xml b/app/src/main/res/drawable/icon_show_password_svg.xml new file mode 100644 index 0000000..5dc0252 --- /dev/null +++ b/app/src/main/res/drawable/icon_show_password_svg.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_sleep_time.xml b/app/src/main/res/drawable/icon_sleep_time.xml new file mode 100644 index 0000000..7cb7436 --- /dev/null +++ b/app/src/main/res/drawable/icon_sleep_time.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_smart_phone_svg.xml b/app/src/main/res/drawable/icon_smart_phone_svg.xml new file mode 100644 index 0000000..dc883fa --- /dev/null +++ b/app/src/main/res/drawable/icon_smart_phone_svg.xml @@ -0,0 +1,31 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_socialite_lock_svg.xml b/app/src/main/res/drawable/icon_socialite_lock_svg.xml new file mode 100644 index 0000000..d533ea6 --- /dev/null +++ b/app/src/main/res/drawable/icon_socialite_lock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_socialite_unlock_svg.xml b/app/src/main/res/drawable/icon_socialite_unlock_svg.xml new file mode 100644 index 0000000..13d5919 --- /dev/null +++ b/app/src/main/res/drawable/icon_socialite_unlock_svg.xml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_sound_off_svg.xml b/app/src/main/res/drawable/icon_sound_off_svg.xml new file mode 100644 index 0000000..29a065f --- /dev/null +++ b/app/src/main/res/drawable/icon_sound_off_svg.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_sound_on_svg.xml b/app/src/main/res/drawable/icon_sound_on_svg.xml new file mode 100644 index 0000000..12a6bce --- /dev/null +++ b/app/src/main/res/drawable/icon_sound_on_svg.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_store_svg.xml b/app/src/main/res/drawable/icon_store_svg.xml new file mode 100644 index 0000000..8a602c6 --- /dev/null +++ b/app/src/main/res/drawable/icon_store_svg.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_subscription_svg.xml b/app/src/main/res/drawable/icon_subscription_svg.xml new file mode 100644 index 0000000..39d8f84 --- /dev/null +++ b/app/src/main/res/drawable/icon_subscription_svg.xml @@ -0,0 +1,30 @@ + + + + + + diff --git a/app/src/main/res/drawable/icon_tailwag_explorer_lock_svg.xml b/app/src/main/res/drawable/icon_tailwag_explorer_lock_svg.xml new file mode 100644 index 0000000..a352579 --- /dev/null +++ b/app/src/main/res/drawable/icon_tailwag_explorer_lock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_tailwag_explorer_unlock_svg.xml b/app/src/main/res/drawable/icon_tailwag_explorer_unlock_svg.xml new file mode 100644 index 0000000..df25eab --- /dev/null +++ b/app/src/main/res/drawable/icon_tailwag_explorer_unlock_svg.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_tip_image_svg.xml b/app/src/main/res/drawable/icon_tip_image_svg.xml new file mode 100644 index 0000000..282090d --- /dev/null +++ b/app/src/main/res/drawable/icon_tip_image_svg.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_total_distance_svg.xml b/app/src/main/res/drawable/icon_total_distance_svg.xml new file mode 100644 index 0000000..18ce2e9 --- /dev/null +++ b/app/src/main/res/drawable/icon_total_distance_svg.xml @@ -0,0 +1,37 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_unselected_point_svg.xml b/app/src/main/res/drawable/icon_unselected_point_svg.xml new file mode 100644 index 0000000..cbdfb37 --- /dev/null +++ b/app/src/main/res/drawable/icon_unselected_point_svg.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/icon_upload_image_svg.xml b/app/src/main/res/drawable/icon_upload_image_svg.xml new file mode 100644 index 0000000..b7ec900 --- /dev/null +++ b/app/src/main/res/drawable/icon_upload_image_svg.xml @@ -0,0 +1,20 @@ + + + + diff --git a/app/src/main/res/drawable/icon_user_head_svg.xml b/app/src/main/res/drawable/icon_user_head_svg.xml new file mode 100644 index 0000000..a2fbcd0 --- /dev/null +++ b/app/src/main/res/drawable/icon_user_head_svg.xml @@ -0,0 +1,18 @@ + + + + diff --git a/app/src/main/res/drawable/icon_weighting_scale_svg.xml b/app/src/main/res/drawable/icon_weighting_scale_svg.xml new file mode 100644 index 0000000..80490e1 --- /dev/null +++ b/app/src/main/res/drawable/icon_weighting_scale_svg.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/app/src/main/res/drawable/icon_white_back_svg.xml b/app/src/main/res/drawable/icon_white_back_svg.xml new file mode 100644 index 0000000..e4b2f89 --- /dev/null +++ b/app/src/main/res/drawable/icon_white_back_svg.xml @@ -0,0 +1,16 @@ + + + + diff --git a/app/src/main/res/drawable/icon_white_time.xml b/app/src/main/res/drawable/icon_white_time.xml new file mode 100644 index 0000000..8d09c9a --- /dev/null +++ b/app/src/main/res/drawable/icon_white_time.xml @@ -0,0 +1,14 @@ + + + + diff --git a/app/src/main/res/drawable/icon_wif_location_svg.xml b/app/src/main/res/drawable/icon_wif_location_svg.xml new file mode 100644 index 0000000..7e2e3d9 --- /dev/null +++ b/app/src/main/res/drawable/icon_wif_location_svg.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/src/main/res/drawable/icon_wifi_zone_head_bg.png b/app/src/main/res/drawable/icon_wifi_zone_head_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..faff19a8eb9b042976306694f053e7d5770259a8 GIT binary patch literal 25450 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_wifi_zone_home_type_svg.xml b/app/src/main/res/drawable/icon_wifi_zone_home_type_svg.xml new file mode 100644 index 0000000..d2b5e03 --- /dev/null +++ b/app/src/main/res/drawable/icon_wifi_zone_home_type_svg.xml @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_wifi_zone_office_type_svg.xml b/app/src/main/res/drawable/icon_wifi_zone_office_type_svg.xml new file mode 100644 index 0000000..d0b4578 --- /dev/null +++ b/app/src/main/res/drawable/icon_wifi_zone_office_type_svg.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/icon_wifi_zone_type1_svg.xml b/app/src/main/res/drawable/icon_wifi_zone_type1_svg.xml new file mode 100644 index 0000000..b675691 --- /dev/null +++ b/app/src/main/res/drawable/icon_wifi_zone_type1_svg.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_wifi_zone_type2_svg.xml b/app/src/main/res/drawable/icon_wifi_zone_type2_svg.xml new file mode 100644 index 0000000..df4ac2f --- /dev/null +++ b/app/src/main/res/drawable/icon_wifi_zone_type2_svg.xml @@ -0,0 +1,47 @@ + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_yellow_no_check_svg.xml b/app/src/main/res/drawable/icon_yellow_no_check_svg.xml new file mode 100644 index 0000000..0039919 --- /dev/null +++ b/app/src/main/res/drawable/icon_yellow_no_check_svg.xml @@ -0,0 +1,7 @@ + + + + diff --git a/app/src/main/res/drawable/invite_family_animate_image1.png b/app/src/main/res/drawable/invite_family_animate_image1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2ddbcc7f3c85e06430d8bb9bf3cb0c57a7a288 GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/invite_family_animate_image3.png b/app/src/main/res/drawable/invite_family_animate_image3.png new file mode 100644 index 0000000000000000000000000000000000000000..f90308ed14e27b3f4bab9afc60022f7aae5922f6 GIT binary patch literal 6368 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 + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_bar_progress_bg.xml b/app/src/main/res/drawable/progress_bar_progress_bg.xml new file mode 100644 index 0000000..7f9c60d --- /dev/null +++ b/app/src/main/res/drawable/progress_bar_progress_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/pwd_reset_successful_done.gif b/app/src/main/res/drawable/pwd_reset_successful_done.gif new file mode 100644 index 0000000000000000000000000000000000000000..37b9f34f1b5da89a297ff24c2b5f6b5accde6346 GIT binary patch literal 762867 zcmZs>2T&7H+y1@jp$DXc5PFA*QWd2r9SudAfQiyY1f+?mp;wV6Ak9#u3!x)5^o}$E zK`<0)f(E3c^7%aP_n-Is&wR7HvomLAXLn}r`<(0gol8egTUiBP3ME0q0l?73Q);pL z$Klt|?IFo;HO0FNl8eAuubmDEbZ-k(#& zl?LUN1|oH=Zg<*xz3brbY16Oi2j2%?Y>&qNoSHkBUpkm4AFO{o`jP%~boBVg;_2SS zmHHd2E#~W;{@WkV{_IID)k!bao&EmNc(B%dur_?O{rm8X%yOOVa^1=C(%HZB=!?`! z9re$#>`L9)*;(c8Cx^{G@2!!uzsIxtbJB~o;XfzScV?wl>l*i0C6{WYmTIM!YGsyc zb9ZOwPIf6LyOPVbQp>f{%e6AgwQ|d~XUB_Izcm%@Ok&sCC0A;tS88QeYX6-59oU;4 z-J5;9HJn8KEd8xkYO&_*bgS?1yVO#R^iqw?Qcc{C;mzNNlFKz`N3+r^H2?sd{QdXb zAKXTd)N+mVa*fRLe+C84=x*LHGu6_--jJ8YKtTT)I)=g^|L)TNF5o}E2|%0?fZ&kO zu<(e;sOXs3mvOJ+6B3h>U#Fy|y-Cl=%*uXC%*oBme^*dgR9sS8_P)G=R9RJBQ(ITx z@S(A(xuvy@+}_dI)!ozE*FP{gG(7TgbZmTL^3&Ax%;(v;FY^muDT_Q&|UCyASu*z{Mu8%)LAAIQ|JE*Q>Ge!Tgmzq;__TlEmy^ZGSKV|lts zlC}di#S?|tJpC;F+LBMDmesEF1GS~o6}Zmm^9FTgpR1iGN^A$~-p|#0oGlMz8Pu20 zH~IhCoFA;O_}WH*(D4~IkQO^5&q>)0HB>J5#tRu_8-A$zHkfwt!NSmo>a~wVtr$L| z#+r?ZBGXd4;l|qU)1>=@*+xxu+j9+%zb_0o)&KlT4x!_}+1#+R+?OPEccl5lueH%U zgSR(Z8u!1?R6qDS($aMJlhPT(f2+0m_}BVG>D`a5EvJXn<-xbN+FJjd9{u|M^<$B-S#$r(D*u{8x+D zvI7q`*4`4}lIz4!cGvZsNYRq@+*rlU^}Kj($&LJEbJvY`X^tfu1)08^8->Jh$<3nt z6xYq-qJommlCrwZ%~Dd2<_jo`$S8(s)iK5 zZ&i6#F7=~fCFQ}759V_DKC~-kW;x zv*l>D^k?hugYQ4v0E9G^4CQd6wj;&Ls2%i5ThvaJj`U6!tA*RnSvRLs*-j6y-_}kq zIzoE4PdL?Ww_m)lYij^NN#VY+cT8`I|Jzhz+a6kT*=2U*X zn(6oBc#Rk#d$OLN>VC3OR9JqpSyun!l*f12*L(G3=M{lIAC1uK)8yWb zk2K5|qhfuFf$@~ay?2CpGvIvODxZZOU&yBK9vXTm*N;oEqnE+s?zt% zoQ+DYrw69~EoJXLUY6Rd=}$M#?w9)ym)ac;Ot+rwR}dJ=a0r8$4(12A>D45316J%N&&kKaT_)R1+EAJL?$Cj;9~g6dApDwHTb8YCNbVy?pQH zWH2{7dr;Rf{NCMfaBkt`pq|W7?h#?|Wr_Q+q0gw?D|PV8s_Nl~(U;}kg$DDR)`yKV z!{xs9gY!QE4x1j3%luu&Fe-L0n>vE2aSg<)Rz^3YX)CWW)EABhAW;Q4u1W6 za@Ynik_ZSx3Yh1JjJ!z-<`|;DFCVp|;z(zqVup*fcaAzZM@ZpHLyL@0k2=wem61Az zODq{jUE((@qb-J(*qe^JF>#f#PKL|eb4NYOBb9M}L(6=pN4@HdRq+vqD}p@7eY!WR z5>tm(L@yurW8ty9H~mFANnTy^mq`*Se@2uxGJAR*Rk7)K z*dwkwbIou~b?$h?f22D5aA@u7>G4MbV+|2uw64i>G8%caCYNJ)UHkIMSbSVfzL?R5 z{+*NYw2_(urQwa6PfsR@jI~8NMw=!XCzC}tYfCJKH_e+)K9S;T%bbk9ThEFmr%U0wa~w)@l5 zISONaL$A>fuZ+_#>o@Bgr-y&|Hl5B>S$@1!hN8VsD0~6pJURn-G2a#gOhvHcv9O8H3Ch(A?nQ0SGP{cz|-36~( zk->~z5kdbeg|2|rz?XoF|Gwb=l|ms8J)ixPLeZYO;s2yisF%6Pf25F!o!718oP>uD zZPP65bpJ`AQoBN1&)jOj1aIPH_a7{VCQ6%uGtG%(q3VdC)- zU^3DD^tI1Xx3h-HF^jU%?AB1NQP^+mW3$=UZk}@sztCrE7KmEHZkW7EEx~w+3*@sq z!jkC}n^DpY28+zq0Mg^mK74Vzbl}{4mmmO^A%W#wndh7~t?M)Mrcd-J(_++08 zqm?2^-U|)|iC(?&5)K}2tj=$sJ=sM0kS8u!npFAM7t+du0G%RPfwU5nizo-EX_}p% z-p)mF!X;OQGaSZ&0Ct_V2wt+k-s9AdD1f=m7)jm0zHMn)sRi1-yEzj4eAwU~mW3cr zC+qP9Od19ddUkXy=p3Rwc*V5C`#>`6<5dSASCaC$7nG63R_J@x41;2ngv6zYMXg)) zD+~Sf>cn~Zn0VE5LWoY`Mvk}K2D_NyP9lLD3GdK(6;P@w2T|;5aOt?zpCJ8+R$aqW zvCCx-;Chco*ZAtJA`c?3aG@e~+;V3BSjUQRTe z?~K(2=iHlgol3TQ`s0`o!f@B@qSd8O9v6Z*ghQEoSP*X5t~XArefL?O@M=ULETuI% zT$AvL1`5w6HDGKCGlULWdF2aTZ*VB)pyciIpkTOx_XWP2A+X4WqXXuxUR^tQc_D&DvYD{>;=F$!9|Qcl#W?{_Z@isG8Mk@|AUV3e z60Xwhc~{bcYK*+x$z1MfLLibo*jO$LAS&^%C+^)cN8oW9|f>yz-rc}U2c;oez zrf`!Fty0n1DNw(@o74wd`) zQLT1Bk{;(n==+xs(nCR)`hxyHM&lg#95@{K=LY{zcm3CBgquHOW3yl~x3zuA5c5Aq zBkLiJMXr~vg~>moVPc_?`|x)5e~dY5d3 zF=a-q#P?oOj+R|vbIk?a9V`#6t>D!!eFM7%6MHBn){9qogSA7~|wU?53ZcX~oa}scQ z;qF&6-u2C~i&m}3!gZys^6>gW>{88~@hzND@fgn4+V{qsQ@VeP}<2;L_Wj_M3jN5H*MnRxNf&rJ+j2cM+B_ityC({2cl zO|;?&myR;(>E+-U8WlQ={bxKf#csIPX|fwIrghUAnMYjb{PU3I-8~=wb};fbBWDTB)7o8|UZ1;4)G-#Fmb( zv&@MQm9*n~L_uB8D;7zKV$0e71mnk#y11}789D8G6UtLs3udhTMa>KZ=OaMOy3k!eUe0ye^gci}v+s z>Cu5$?XzjY=VC{Om{{(HdeR6ef4`(bgCzt?La<%!5ks0uDQp5iRSm%(3$vLajHTvk zdlG)U%eVOzaHC$i*Q6^;XSTxId(pRq8BBYnkfUA2*DR@uUq*@d^73tsGPIf9)tw8O zl#n@c6wXuzbxm76DGP|5q}KWPMWtGh92|3Vi4TAVK;_~N(#^3GigTXhf3(?KEdZ$W$6lPJ0K zi_XyfFB8dEsf%zVK=}bZ$`vYWCm=$5IBpt)_HwRUOR0ArY@vdFe2QRvK(>HGEI`3iK>KDo5LFoDdTH?BzYJB@SzlerwQ%c}pr{Df2*h!w7#x&~oPA9ZTMUy+Y&juCg(9xlhgxBw3 zg2$6D)a!&QMi)L-NaNZmS$lbzHXJME0Y+`VfwFR|XMMjnfj%hYYNkofj!PC~jjtXN z6JSt)t81$3%z%P}0a{^a(cnhm$aRGpMrHr?UDXpo6b0=}zS8~4B!zp0o&w{2x$e(N zgv+AMjJhvmIMd>R8@^Q#Rkn{j(r6uptPV$|`{sToPbT^P;FyqS-_2m01@GC6eO}9{ zcG61&gP)191w+c?%&FmdBOL z6ftRza>W`QGGN~*_DKe_YA8Qc+k(2)LST2z2$;UxYSE*8jg46Fg(5G%nZN{i2j+6W z{SazUHx1-Y4E|@#G)Wpq>MTc3m4V z);^CXt6egzW(}#ghxRPS=LexD9+1~R;@(x<*U)XcbJY+ka${(-6Do^a_$07@Lx_|4 zaRf`;qO)LgZf*y!hpJZFu35fnF|!!dr!sE7CR6Pma5i&5cP=|{+6Y*P$>baAl?`5h z>2u^}O7Y5jqeu7p>2_XF|EyV7{0(-dcrBb^ouG)c*URVI?VS1MY-K}&j8t0-cQcRW zp&g&PB4pnlNAczUTyT*M8<#Vqq%Vq6rsGmS>h%_V(9+RMTi|; zDu!Noa8S7~L7rp@#9L$C9UXbK9&XUA?F?1aiZ9Z@YVgxOJ3+LH%Diudpcc%Jp;Gpv z@DM}oD2%c|_2>P^xC%j-vIk@!nkFQ-l5Pzw{pPL!u~(<0F6`xq2f-TiORuP&6pSkv ztSD}WX}2^XBiHDS$shGbZI~~Q&}TQU)+Ss&69Yk@IYL)7g7Fd^Fzm-0nbMk_bWk8v z(1QZY`nIZV*dF0x(Ur{c3zAcWAwY-%3C`)T?hiHTiiiSp( zVz^V7B$Z3249c_?{^2!{9jvI?1pDhcLL&=A528`;Wm}ODF`b;R4g0{io>v z(M*|G?Q|+x!BP%9?li|4~f3 zc6F^)h2{T+v#ey3X1k&Ok$-@;zo}`Y=Ra^Zgu&zC2RpaPrm>;rwdHSP>!XcpZk}Gx zp9R{?{e!ddUJpHgRc(U*3uhbcZ!OihOz6DrjF>q(qUn%Msj}Iocm3jwI*(Dly`;{o z$8wuL#$+gAxv%P5kL#qHinw0&YMx@jO2goKRpCd1ZfM!{@f#__c{);EOSQX&6NS79 z;ul3&ia!O~FKvYm)Jo}GY-+T0d0bm|L7Cxqm+@-t`?F!_e zzqXke_yl#XmE&(d*WK7Ut@oVsEMPPU_ckb89!$G^Kzr_9m6H~ut^=P@`sdds_SbHO zKklYo9w*KJNSx@7+-$ntsOxa9Ny+izyXGT_z`4~V#IxX2ySU?;WJG7oM00N12cID? zK?8oPf!+O|FZ+jG8_vIVrmkOf61)4?dRMt(V(`#aJC03xJLdKV+l$s0MJ574cb}KD zz8-&p3>OR2gqA1TzM#=wH&wusrio&gGsPCeA2}#Zgk_Nh!u)ts)<3!U1QqE4i1hWP z`|U+Xy1W+X_PH2k-&#t9yzD)6s0y4Wl{IBAP1jhMw%Gpc)~8Fj6#<6WhLz--4jju# zK-p{I*EUtcY$?FZ%(pbdlzS^S>WRgxszL`Eu*m+}hSf|s4f8bN_*g(BE6~;c8|1jM z(&=p|%Zkm@0k#rx4c*Yntjri~>zgxKM_}{GRO2A?Jt{toP4|e0QR8FjD2d7PPvD+iDGQ6IOpc; zHF^Dg&G>-+c;Srxpn)D^8eY48-ugl!!~`(-QTb7o^;_f0?3*n`d^2su`_ERbCuq zaDf*en^VOg;-BEzD>vdr!r z8D}b-K|;5@asEP)=ZC1{I+LH6Jt2HQ8zKA~nv*Xh*up8q-V;}7cK=z6T1FBynh zc)tsuA!vcDMxVh~w&;k{RfwSJH|uWMgqao!@dA$xKzGgAh87Sf(*|rK6)}|Xp>W#M zA}LE-OS_&Si$*2;MI^gn&WbD+lE!w6)*g9-vj?WhoT3hXI-0dHS=hlhD?_VT6cW=) z5y#HlG8VYR#jlGC;VA=XVg3-NXSz2kTyXT<$#-2AOoY$EEzipVe zx!@5Zt?$fnaj%Q{bTW))k^;vLbwDMGdan9zBOZ2*MJn$=r>{$fa)*#1YU&X}hNG|I zYk25MM}ozcIkXv6&6f2(#GD@PjK<@l0IiUoeiNHI*gg3zhhh#{A&Tlt>&gheqP;@9IgqoxLiQ9gB3PCtC|dnoY6BsZ2My5slC+?Lvqq}w?X;#P za1}P@@TczLFZ9JVb+^?+MdK$^oQN896g?5;tD1PzO-&RW7=IHSgisRs#uY~m5h3Hj zw!3^nghpYA4Fz`bjA277iMIcu^J3P{7E3v|03ua;-9tX!#e5rpmly0Htww=!9qQnn zm&L5N{J}zvx+0QWAchB@N{r@R+b?2pwAh(W24QtDB=ogm;n;Vk91k=V*K6`~3Rr9U?!hFO%jY9diKbnNChi$EqDg z14)Do^ei#O3<>GF)Z`{Zm4BmpX)JD$jw?^|e83>>E4^+y3CXUlMtgt@$KI(jlC@43nHe9&q<{&s zzGy(X>dOHgzM;V&N=EFiYUzeZU*}H`&bw}DPPT$+#ZL4Qz@hcf{XgK(lb((u8c%B5 z&jSdI8)BpY!$dy{&|yh9mIlMFbio!DiO~I^hv9~j9HRZ~hw!G(MFhH@A_ejPRs8#h(NXoCMDlb-{lEh+0#rU8y zm-mgVW%xO0Wz-eK;*Sga46sn`gA-c9qaa?GPS9e#)m?i61^{)ETKMRN$!c-v?ztOK z^)@AF)Nedn=R;e5NSZn<=5BN1!km9<5fB71yIhSU*002&!h$QRq>&#R212Yt)S8v6 zGaUHoY27)J>z^*lSufGWs^M-;H#!bEYLDGFmjIx^hFpmj|2TP1`SLTLOO`<>qQpiM z+6KwCB=uIcAT$+Ghm?QCdwz-vt1_6!Y}LuWJ@F0l>O7jjpgPLM?t7ofLZ9lXs%uR< z&2Ido4p0yA%ZpN6@J=~NGWyl&yf!J68@Z#HCKdLL%>g*qphils&uHnydW}Z#wZ!Ct z8GmQn3f+}s!t~)hQxs#+MJ>0?NbO-NStoS&JP(^A{=_JcEp5ASdWeqA-Pe0}gnp=LjDw1?V8J&Cx>!X}J{Yx*4r=vab|O3zM? zq>7pD5FjIBCi6~e(l}tx-dD8a((>WcXG@4KxYI>8@9!Znjjk7T$QOgtG;k7vzt?5! z7yPM*3TJ~rP|&k{F%Sat=(`pI;qRAZA^1}Bc|r$5gM<;nQ)xPQH4P1mzay;+i46kq4dZd35#J<#)y#lsTV3Nv@(jJZeg*dA)xqa zHzB`Pf?L+YLp}+a|zwNe_l+659Q}a|G?ToDnDm4;Dh=XJwbA zLJ#mpC_4qbT6gsV@r6u|>r_M%5&TFL2$ zJwazAgv1^bay!F5E0}y=hTK_HlTvE9Zz-MO31!vGvk(K#}GgYnB6v)oQV2`w%Dwr?{G-3g@f1*Z@28AKt zta>O0q)G&?N1)fNIH_-l5^n%1fL0L+oQVuQNY%rDVT6lBE5NzM2MH~^UR#9W?I<&+vd1PgGj@3U-}`Wu;If0Ry!4gn&J^9vJV`*aWaGf~ov z;??=#sst8*nPr(NBBk%ig$X`g=dk>AblE8$wg^oxWQInlgQy9TVxHhd-3%x7xYAXvB zm2|*1H@M)tJ<)L5WS8SJ*spx#x~9lbFSvm-#}5L_u77>*q7~`hZ8?>Qsl10SRzBJT zdFi7;`zp9K$Gn?Xw5sMvF6-MY9?2Yf83rn8GvnekqsUf0F#&s!O5asW0Kx8X(NW0C z^mQt?D*PFj<%K6|rf5)t-@8|%CiY%5xf4-AY+>Jjfy&QihiwQojwL>QQs~)}b!9!d z_!Cm9AX0$@j?oL6o`BqQmF9ehOid3HMgyq&H&eeL*~N-EB}hV@xQ{xxz~!N*i_#?m z#Fy=YN;FMHiTIRo#uPlC!wj&AfAOwxQ# z7xKY8owO{q{bh7YBliiDoeAU((|{y#FL08eKQnU78#Fh@5}9ZpcWf$1PZqM=&-y)^ zC{KF!Ldk=_QFfA<_Bq!4O$Q84gqx<{9^1T3udYY!;1M0GkQG#w(#`w+7%t>5_r8SY z9R?E(4uVkgwmQLDjj}NTWy*J~IH-wFT-6Hqio=4T%;8n!>*9CR-5${df1fZjpA#F; zr+r8kd?Tp3-&@^y6g-}I-h!A(#5p96|C{8%x=mM&QI);ph_o)+08OnJaL|2n9CLmC zMG2Xv*)v)%OhTIra32*B6jsu<4BBv%c0|D?!W9!)0`-AnZMLk#DQOeZhjL1TcNI(x z(P;fCtt2mec)aF4ng9Brm=6HTP_1qI1ux2wF!g0%q#*e1n}jLg7vdz_B$#V_DY1i2 z;4#CPb~BmQdn^j(0GHy=V;Ia852V6Ax<0(nq4Zw>51omMlqBZi?5fIPk#5`rp*ooR~)0@wN0WC6Ta0St_l%gtk!M&xlEV!#RV<_ zp^fHU$CsZ_A!TB=bit$}D&TD`Xp4g&F$9U|c9ACW;EwaRV$kdd5%3cD6*h_0(z6zs zE&g}CjRLPLf&FJOyD}nU8AFZ2(gy8tnl?Quq#V-AOfRYE8u{7JP=(Wu* zdQ#_H%YX==jCj%4X_HsOHXyR}hJf-c(7Xp+@6M4|scWB+(Dm$GAFJg+e=y^&yLMTu z#zesJLd^rgZnL52dzlDMpqEFmN%ulY`%2mE{;Llt1+L>=4m({zfe?s)Lt7pw>awW$ zZnLij+*VrH_9>)bAX=9fk}75XfyCX&V#7iJbU$20lauWe9g`B;e!@Z0#7?l2nhvJX z(T3J*i>sydy$25Rp_H7YFY+>@HXGE}ejDu1>vT7=Zym&or`C5@a$twf1kC=;9K=o! zKQ$|lJ~Kga=PO)(*lVy@p($^x(Ezna>S3lPv{y{{))QqlzCD#Iz5Vj=GT%Vu5_Di& zKwN;HPaqU%wFz{h)H$0ss_hP_bRZ@yE1DjFX57wKlM^K6W zI6wRUFp52fmag*`!pd5ri_AGW};0<-4;g3^5O}nPY7WT$j5$vm^Q)~ z16M#z{S{z~wwW@ouf1%G(7?bsMk8@pX!;unnhN2Lw^T4a>p3&7^Up$xCr!+{0;(Pm z2nLa&hJcWv22?zk*7Qcg`EzqKF;w72!emQOc}~)-X%^aqxp`7#HiG2n`kUVdJ6CJV zqzq%WGoG$iTw_^s_InE<9uNG|+G9 zU)?S^+@`H~Hva|->c`KHupn+@B`N1==@K&>seBtPv?|8R!6uzQ=V@|srvJ+G?c377 zdCL4pp6i)0&UM3YsW0B=j?46=?~P`M8a} zm7x##Tuu`B3V0z5FQg6)4L_FsJV_*5hY9jkhTm-=g%o|?ix-?=yNua+ICsK`B zwQrr5)mWA0TOBhx--e~L|FP=vgD#)A3g&CJK|%eq*8*DC0$bPi$uJLK<>z_i|K~w1?>e7qK{ow_n_l%WlLw3YfZX*5aND*XKnP&@s?oWs|Vj^URnoDgn7-cQ*s71Y%Fdb{E}|E zBB7?-e7d&N(V%z_X!-Mk(Z2O7Q}$Hn?L!!n@!@Ya&IObAG(~7R*0PD@AXGTVt^0K5 zoY5+_mI5#yX5S+|1q&#CF*1{E945*XP$cLbX=Qu^EZj4r%j<<(8jDtLJiNYbo#e#KX<#}x==zbzw$KsbH%iUBOeltnV>qb`L$2qKn%A+Cy z&%8amJ@3^?2;5`Idcz9~wC~8t@NYa!;=R>JbB9-JRYE+b;Ll{?TcW_^0x>o^LO3^2 z=F@uqPc_;NE1m+~je?G`aTsreo&KcyhKH-9{~LefpdzjA#rfRAo`AV@6U$1bQfUWp zX<2hgxFu)K5;qn|OB?%M+4+n$nFLY`-KwVQ;rXh6+p|R!j5=mmU9s!Ki`IVik9c3V z!X3`Z`%lY#dHt=fl-r}UV2+MA?b61NmZBSaIn71h0y3>YsjqNb@zH}vWaIYwRmH8Svv4>4vdRx8UG49>Gmo0S_Xt1TNAW%hx}ujQl)ANR3Mu8)yCT!( z_V}hQRkT`YYhkO};@Wo8V*#!+w;GF`OBinf8Z(Q%G3;fZOf~~L%^*ml_WN4X8vQ!& zsXGxbt68V}GyB``6&j6KNk$lF%zDHm>v2A}-0Jnb)%(6)bDV`2aCnLsiFdaP`M%i} zEcPP~^(Hi4b~svRf$=@tazNcmT79Qtsk_sUCzl>u#ECDwO?BsOj5NVtUnofBW8&d| zTdbw3P#>qVtV_Hp@-}krN0aoMNLitoHjba&tMb0?%{z}xFI~|b)Oi&@3RYAu-z)Ew z-wuBMEaK1Z4%FEHj9?r2yJau3HV3`4rt`Ks_))!F%e#Y0*|S~MJd2+F!_(}j9|Ogv zXDd3Qi|z0SwLG}*$`gp*<8WWv45_a2TTD<@8=Vea|fA&(aR}izsXm znZ_t&)VJf8r{mMW9W73l8O>$2P}evY!XMX2HFuQ)vnyt}D@(6a5X~ZyLirJPd?YR5 zY`HKeJpEbb`qgkNn1pHmy}dd!HuXwujL;AlW6UlgnP43HfOg72(qEgdC(r#lP5b$( znVw^=`{IEF+<6&YsZCpZ#YYtx545F8M-i4HzMN`#73A z)?FQBSS*S8?CxzLC|Ul(Re}vZ97Oj{98`zdzrDg3c|ApvDM&8;_H~}1uL%1cO z#4G3*^EXXHwys6RNA8=M322KzdSt9+Hf?rtAN#!lAWl)*^to*jgl!WWG4omH&dyP? zQnP=nDkmieJ`>E~jt23>1G!8xBCy*1cxP~@)%bDKT#*yrkrG2|)ahI28aF$!iLdQ*D6!Wd z6ZpxLcN`5GG_J1L+$)3hx(#e{1IJCOp?F3)w7chY$>d5pNBI+CCjv(VN!I{~r=)fc zj6STqe8+0}dN=c(-Y`%zt~pvp6ER|d`;@Ighbj6FJ0MJ#j!(B{Z?T=-n~bFWcI?je z^hk~{O$+a3Kk6)nX#{UaTkwSDKozK9jX%2a-Jsxx6~Y!=3PvH!~Wt!5d9i-9RwYf~xZa8Q)Zelwdl52D>9>Nko@G$0_qmDOnmO`ZkyDYHb!s z*aNIm;Y0R~+k2v;9>R4*1dIuq-ktHc=h8p0viRPSG@q7=;iQ0Fe7x_A3~w?`v_sVT zYPeGf(-&T`b`;06-TRHCz4uMt!-qhi=Y2oLSbs8uzDiBKaE1$t&Q7cFu=G4O%=xaA zz2x3~kxVUei$=kNZ?c40ku^u+l}!3m|;cHkKa{4EI>E*c@Da4 zyHPzDLa`kATF@}?%+ST4-j6{V8v=9Yc7FA>wECT8!?q|1ddd4~uM|^b*2ExTt&Tub zQ`heOFvIGJU^{-{S5~LOma`PypUtx8uB_6R;WU|+NU)4^de!T%`g>FUaAiWv`S~EJ z`+v3*Z?@CZl7o5Ff%y%_nBga%+HXM@3ni6RUO$O{bk@MrI^s0rMGLlbXPu|O>3`ww(ZMNymkOsL!U72vCqNTY#VRq{SI+sgT?8p& z+$xkpL!HBfP%vR^Kx~z&Lj-bp$5e^(xI)Ym#*Vs?hPZ|W>&=Lxdy%SQ;@WuNDK+R` z+LO}P%;sreF=dHo)5y0oAqE)eyf&1f$hyHlS_%tE?-OrnKr&Kq-oOI}Xnz&O$XDN3 z%>Cim_@@E>L6IIW+8_u8%o*UN8>NS1{oDZ0RFo*ZBoaFs9&{hLPlV1-nXg&0eYOM? zNzox4%CH$ERr!$tB_OWuzPV?Z6A{$ZC;qeZVv;=D9((xhY3Na8JU1G2juh4ij-Off zK#4g$v`9E^i2s#J6B~&HZ3v)L5R(mfcXZ-sPT0Akh_g;4CGv#=4lF~1%TIG~0>Co+ za2AN9e?ZozQ8PDPV4O@b8AO9n#H6 zg2MS?D8Guo_xgQ)G$^^B(I!4az6L5o1X-cd@@ejQ6Cet}g-lJwC`x*)30sQT>u$Ex zs|OGd3gfp4*f$DHK^=@j!C6SJVN|#`Ds#0P5cZJlNk&#!UQr;xM_jDqH|}$*2hroR z827Pvfq&Hj7bihENpNl|9F5L?q>%cxH}GdTQj}HgISKmcIN+y5rZM`hQafV*7~7lo zS{Z;DlT!Hr@Dp?zhG117&lD9;?D^L@Xh@B6LShPx6P<$*tAa7hi9K_T|>X6hEU!6$kqm#n7+-iYXh!iQev$p^Z2P>0G zx-@bWU?3JkDkm`&L&}rl2x7-zdzbjz8n3iFg7x$rm~m%iMvc$`ZoZT#V>|(@jDCNO zn)+eD^&bN@MuXtE%+It%!SUI3S|;m<0q!C$+?ar$R3@`cm=dP=DjBfmP7m0;pSTa_ zz?htbR@@a-6TVSqW*(Nn4qM=0kkxp54rS&_f}2u7-tqoVW=Vao{jJF0FP5?`{(^&g zY{L8RRkQ;W4{~>PSU+vRGzsp)Sn!t*U@R86<^k=$f#4o}Cec&eG9DAmt#$_k_d>$U zQV>$WJ9CYB1QwwY&Qv6xDdsi@l07_Q zJT5xw6%0b+PsNc+A1c1yj;rB-oKtRo;-wz~l(=4OL{cB8f4|Q>(+s^ReqOlcv^|pp zTf(CajX1#z0WcBF^T|Z9OwN{vG$CE=pl^3@I>f+FFxlXar@@q#pY54U(+`hCUA)o! z?0JzX9c_0eV2r5+(fbt%1+cqV1gtFbID~8sK`0U$x_n#IQVB zI2{yB)1xgrBZQ4U=5I`8wUkSrshyPvM4z?eVU;d`Yahk4 z!GVnVy5|Xs5C!x_e|e=Jb0K16@&lg^C>)YSC;vpgqucZ<3p%>wpmS9L93|N;_@zZ` z7AB2u1;VR+;b81&_jPGeh9_NO0|*4R@glDaKM8C`?72bT({>JPGS%gnX@kMQ@2L0P z_}$Un3G>0&7)h7I3P6Fdetd4H2lZB6C+r;13)J=Xv*ldAPqx9r9QQ8s`a|+<{zVn~ z#cg_vGedgwv~q5MA5(gH*vn-GpuT~_@vV!=OLBmExdJ-z&<@fxVK^u1t}psZpi- z0LiVTtnTG5*GIg(0Jj=%r8B5Q*R8A1RSNJOCXGJGyAe?4 z3_&-w#ZHtcoPq12LI~$)T((8W`VxU5S9E+7-@np!>wBjqcMmtoOMmYP70w*^`L|~K zt3N8^x;@NdE;?8skAWdA>$8tc<6nmkFg;Ala8@}sF`%%5RC2o zsG*Lt#t_P|hbcmV43;+xlN~X$LJ!Hie-&d~%r->`6QLbyc4S@`47Q&3!m<`$(fK&J zfAsd#R>h#3-7N2l=HG7dY!#1;>E#=*%clPAy45WVOP1+gYU%vMsR0v?Uori>Y`8x{ zpR*VX)_a?*{BH-+!~B(1c8%2>%D+7Fh!zknQC?6$99^-yPIkRUEDn{G{IymbPFiad z0ZC$Ct)@A!8hr)FHU08iPg@Y>5P0RL7VU5~DM@xS+Ib@kRr@*u?B#APCF8>3u_~ys zk@p;FgZWnCxhamDtmku~Y5AUNvJvrI@W$rFKmwEl9T}88fhJDA{~;DDuMtLej50k# zDB{4T51ssU6aC`Eht?4hi~u1|Ij?k<>-00f=u}zU*33wYnBGc=33FlHvZu|0UpPb< zlO?pc>Aa!!o@Q%S^HKQw>A$Vk64(^yAB<4B4i9gn;$LAvn9i(@$ZUyM@)10&wx(EQ}wgOa7nT; ziefJ(#QixoD*m8F9z@xHeD`N=>^17O+=$$sgn)Bc-E2z20fe1QN#_@O^;X{c?AVN) zo%_h?Dh^U`>!+}0(#UembN@p);V9tR*o%+fgmOa@Ja!a?O7OtfxP$#Cs2sbXlMW`D zo@RyPdZ=`(B}vTX5*gga^qa0qBEACoMMP2A?%A}`cIiIEV00eK{5xYjiv6pR>;08K zC9b@WoB|vF5bg>r{CpWrf+T*FAgJHoHL-W{k4&@d%1d22LUKvaM8S;L!rl~r=>NO{ z1Gpts^{rh4qSH$n2WU5sX?dhB8_Y%Redaz9zCHK-l#W-rOz(zZd}P_#%%%P>TSy1Y z?{ov(htIO4-nYoa*gLdH^{U;p`#Z-W+@3JxZZWyedzKb)?qS@^w-p~<7b>2K+!*+O z_deR~epL86S$bPF zf!j+jHGWQiI7>i(M#gblQzJQ*U$+1bPSgtE^ji16CnMaLy}FUHRQlCb49vJdG+)}h zr!2wfn#DvT=P5$KH0`ou82in4pph@nU(DJFyWK`j9PHlb>O)#w&F%b$r{2nBdtvy?@7LL* zZ=u>wr)=!zFk()zJ%faq1Ec6FS%;14#O-qIIy-|lo;}<@J@MK1j&W}4wA;4vC=5nR zhxx_Mru@M@W-^Q9deQ=Lw13`_F`R^ni(zVSTFV$==hI@BJDJx?R+n)l(YPaa?c#MD zbF0!YG(C6Gx+M&8h5^K4K?!vZ^d#)fyd^J>;u0yj(6W@MAVs%@%Bq_u>9|*@+Tf-46#aeVi3}VYQm!DYW^QL(o7_-4dq_<2= zJ6@$SK9t5lMLyIL-rsxh=A6&}gtHC)r6O}qFo3Pah z!Qz@R*T%TVGiBlHAy@tUj{RlkcS^=M`PvRXziTv@gEhtp>RWGgx=Xg(Ye~H2q`hlH zA2F!?0*2iq9-G8N?Oyu)>}HGdjo4G3-_d&55h$a^9ubgy%60!Oy|S>w$ow062=o#4 zE%&K8Q-(Gt{NbX^_MxT*l^X`$-@ z^Kb_#R4@jU!2;~O>?S`1r=L*cs;}XpLG@*aQCs z=PD|#RzUDe9VWJ-kQ~sqqv;7#dCm|30*%YGnjeFsY;mE>3tk}=8CVMQ*K#&P*2(hoLfs) zceJ0GOFv{#mm@LXp=NEd=t+Z=z6!!97uU%}yqK%G)x2Wzy-en@D(3oE^|u$7W%qMJ zgE}q?Ye@)gHCbTECpI*>z`L)3urcY4mRH?JM!4KH6a`a}(hUTa^y-ZnZpzfk`Un@4 ztzoS;AF=YM(I&M_eAZM`DmyLq>1BaSy_aX65n$zCmR@q_OoryZA4|*9r)}Nv>wo^C z4U)7t_1X5e!JpxFi8nKLSS+f|DWV+I@3Qign-9P9z$9WpKMikgWTwe53JVNMQcxy7 zl~j-OJr+*`xZisgsxCk?(%iq%vxBfgNySPAIY6?vsO!PELs&(Nv;gchPMBATFGp!Z zJ+0X0o-B&}1Z>r=E+*&wf zoN|}w%8HAS(pj`@G&PSDsX?h+D4?eMtLPMYi{oJcbzCsj?LV?GK3x;CZ>gCSU1r*L zqG+PDFZ)(EDOr{BAQBsw72_mY)A9u%gz*{Wq8jnnQzDjvh95THW=Ix{)b(N`+g1s7 zUJ;mIm+T&yd1$%WtQ?w1;}Yf?W}}fTM-{n>IoZ?6ewZd)=clc?-+eLjI3dtwPAq|kL!7s#q+@^Qs4Mf=w)^#9 zM6!L6+>Czvr^kBfM^sLl?@><~s=+aP$=~!H!^efnF>OkQg!)7;kZX=Z2~X@(PHL5yTeu@T85U=1$t}5y$+IeI4ynYu>2$@qLRaQ>iHS`sz4q=q5 z1O*qvIsJG~+I;DqoeSya7O~rihgcDSFz!vno86epd+0>D)#$V5S9MCO{g_k}oX&-s zpHfC#ap(j!kbWPD(bq8^jlo0Y_CQZ&c@Ykvh`mOJ)E!%=q zbh+%%iMN|XEn=zf5)wb;3drvzI+<#@OkMESzDjW0OO%Wc9Wi+2p+N}`>AWI zSSFKC1Sg7;{YC;*SCefSkYM%{@h^aAf=A*Mdu||On0IE9Sds2dc z!%!R%JQ!w3hlB@UQb<&^x;efReJ1vk8N)~M5|)lf-mP^4S1YWkqdWb(vG~|3Tx*r>`C)=-TTJ5#)x)#_Y$d`~Ghl7r>MmM;{d(?Qi!? zmqO!uYX1*u+f-MMfA{15#?is{&i0nK-Rsx>%sv)N|C`1o1NPY`C7gyLS45|AMjf;-M_lmTV z4|al&sp~&9E}6rx)CCoOpOgMWc(3=9W_$Dsg^26dIS? zV!_1(Rp+J3uCS-F{PSRED@z%sWykKlD)K%jIc32p zOpJgs_=loBy?JdPizHDYZ1lJB52X{ghqW~ z{5`P`9wZcf001oaUhURI+4GsQ2QZ86o4xZ1V6QD1p>|}CF*p#_PjeL$tIdk|vfm8Q z+bqhe?MZ89{!0)$l%YP)&1&s)rO9BiCo3F2>U=Xy7Sh@AJSwk`5alC2Z~3Abv(FrP z)a_Tcsn`3opZ$=Ay(xdgF)~Tw6xYkeQ0f6|l{$qN6E$+jW^j2ouv2q{4 zXphI|XX)}DT2SELFL8zPFxumh%*sWbI#}ckM+d?(qxoVG7{uUTZTimhWO6gY^mxKe zm7q6(YE*7WGtNQO+lx&~h@quu*Q6NPrrQFmyiq2JEVC=hd~Q9Tyk%?4C4|4>)f6|z zr*(Ab8q;)xPSzK`CyISvahBPq9>tp?|(JbI=Eze)Mq9N<@J2^)HFt9S1Ky`Yshw_niBNp z?=Q4HksnWh9&rg@o?AXbt#@niQrhQtK0iq}je8h}b}{0zz5$ytvKsBl5^ zD(Bw;CKIrM$JPnB><5hX~nl0_kC^a+q(@ja@tWEPgD zHxPwAUX~A^VoLn@oO2=yCoWRhY=7E*p*l~W$% zql9oq#Ga_}it#foG1V~Y)YeRK%p<9D)ESF)wZ;WnQjEDZOIxPKk2i$U0UI#)0bT8X zj*nC4`kgplxoct0&{5tQ+rH+S?J!kLTEO!w9_Gw-uyxP02t=KQJRhc$`b$n42hX<+ zl9=Z804eywJ62vjy#axl)Ve|NW%23h_9op6msW8m)D68`DcH=QY4LioUUl6uj(|cU zB8|UerQK@XRK(P_Jk57{R-WIzq*ykCE$$$Tdn2ynoa-sI&6jRRl~g?!p`m^tcMva;#SQBBZpg+xP$!a8DPS&X4fR>F`HO-- z-7KPJZ%Zr5aJHDECSB+q>a?u{J!KK8$bQmo^HvEX?fR_Z*w@P~0NFxZ! zbL2QgBvl(mfjMnBShd&OC5}3o7xo6O|GI>)cTx8zwsh#)tVaMxX;%lbMb4(JJ%1n4 z<|-YA?07s{2fcT=-KbNCwno0j^s`b&XSn>Vq2tku&Uah^8IZwgmw2PQV-+@IaH zJ8bc4S?93v8??!ZsHQ8J<`4;-_R9HuYqMl3+}i4&v3JFIujGL`|vs4Xnb4grpHXE^C zOhKI)VU4%977V>&gCQBQeXpH6qx5O0o1WwKY`2?+!k9GZ3>@#gapAqNqVM=V8)Ip6 zmy4IScja`}JN3=`&LPEq_jzb`t9KFauX|%lA37Zx65lpT_|7_i3TQ9zWYvjYyzO!M zYuN*jB9>jT7x$%EE#nGKlOi^OKjZf<1|GqncnlJ*i+a5%wDjCj&cpNW($b9u2Q~yM z7TB}_Rk<{<(yRJ~>TWe4k{G^lDA2-FbjHD^^W(G+1C^541aJYsuXZngXH{aTQJd%cPNW3NZF zw{!5+QSVMCLJ8El*-@+|$P@LmqG+%u8mN{M zj zkJ3j6k67}TI)}`m?|y}=tjfbS-I8zWK*Cp3^pIeQDX655z`%%mx1*^4UbGzsl-iUM zLWs;-O$n#8A{}9#?)E>O3gxg8&P$zK|o#+7VMsZP07gAg`45PI5hB;&c&6X zy`(OjH>o6nLQ4@8NkUF#zM%pu0)VjNWF|(b7AjghT|u%2R1O7Jq1XHv~H$W}%RrZWRdI&B8N}cU?oGFl_-lT|k%5f>)^Gp%}_9~=nVshA~GbyzX z0YVPGPXryB#jmG;nuprp0UuWrw1}Ca)0sNQFcD-H&zkVmz3i6b^e$mpH8rTcBWPSC zXL2>4trU(Rfy962MLUb`OwrJz?hjd9(*VL9h;ZZP6l0M>Q#~-H;Sa;5{X7v1MbRF~ z=5y7un4^GHnB31PMW&@7PCSTmhSr{@@DoZ3@s?3rGB(mc#o~*6B`b)?RB==(R38hn z+bG%}7KuBh(LE~^sAaK5Cj*;P!bD1=NakAFB)HjL>&PQ0vr?R@-Lwm!^&DTJ4Q{~^K@c~%>Vlvc2xZ*^;0)_%}VRGwB zD;m!3Qzmne5s@=p>V)0W(Pow?GL)4F%<_m6-hc3A4a|lGy;v>3Bbu2_w4Gv;9-D^B zZ$Ox-VUI``B}Q-eC8z;q%xJ8lH_>rfXI^m!i-;iOfLi17nJJyI^8t(E0&6gq8H9q54&Qx76=v?gT`6cQ?ef|xs& zJe?4xEpXnUF5ekp3C07JJd2#x5n^fSf+Q#n4VP|LVJ^B>d8FQ&0cJ$5J8O)**m$4= zfI1NxiiaCM7t`#C)a;8g2OmQpG^IF_zyQ7~Q2_jNbBg2;2gA-_&VOUTg zwkV`8UVOMXJO_%!f(OF5qrSvEE2T0f)Z1It-tB~n5Fd1%CK%@Cp#b=+VqEC6))bWD zeo7riI+zg$0+)gB#b!{>ZQ_^9fdth1;oQQf3-!sc~NJ)D$|owEjQ(>(MAA-G$q5MB?E=R_C|z~Y(wp%}6o8>)k* zd;z1k`x<=tp{{7^l?CG1Im6#R5C-40-FyG%2~2_*6J5sYE%q=0SIPUjg=rpcg9A$u zAA;54ls1ey7OqzA>1SG*OfDUrdCW*@x}m_r2hB`hUmbgy%bM+WMS%#E&FhXs=!F>-m3eR#rcue)xeJ$HV&*4!A#YYIzBk7Pg# z=;eT*IPfXBnQf;p3)8JD-d9WwOjqbI#0Z2HLnARDDG@j4PS13Js~>GI3<;ycbvds# z8#9JC^~a>HbdtoWZWCK1L7hk-TmTO~5>Mg*2+lW_1Kl5M(2BeWrz#wHjMIm*I`%uK z^nd0G4?hMZnO@L7fH4+^a)+4<*7!;F@q;w}y?3pR8B;gXH*hldpR62)KFtdLz z=E1WF7We2VM*uqs5RQCQvj=v;g1Pq{w!K7C$+NM8(ihgFh9bln44lpJA{wa{3?)8~ zaY_#&4g8p4tg)RlA417pOGds)U~WZNh-M*&;kJ(f59X*n%LvSgBKpnyE;tXa#p(0p-D4z9=BFGO1#1Th6$~~2Hgl6>IMMTZ06Cj-} z`MJ}zZX|%q2K4(+26+3~0Vyl%_27<%(C*20@tTsyPaxND7=jC!_G-)twdr zJn&l1yeS0_nhdf>0|9TXqSLM7(8W(}r6{Ev7c?Z|4goeZw870RuK-icnKt1oly(G0 zlrPVaJI^hs)K$h{wRHls&60DqlpX#%$67f6)b|gw``SelGUvs!<=%`P_Xb<3{TuM$ zU*wxakU>Aom>P)n7>spl9XEL8EjM=th2P^|TbC&ZVat_Mt0`+_O1x#C+w6jeCjVh< zD1}RtL1Go89u@@w6DqTixjdgp#9SD?N&~}#6+8du@&KqGl4<%*10x3N@cXsP2&{j_ zyJ=3s4hu4fsCe64gFv^$8?t@xgQ%iGQceU;Y$?aKP&}wth+l#pRc}hR)wHqli{b0cw2Xw`~rMFicdHaF} zbakIAsnQB!GF@AsG+&?F;6#A=<;1->CX1&*qh4*y;XGpZ>UDMZeI#@y5z=0~fP5)H`5K zOJ}P}mDBoa&J>Qs0VWMYr<59M#P*12pu_Q|D1MJn3DF_Khq0>uGsnG*Cg(YA34G z000_%aj1h&di?Z*Q)g*Q%*8*ATXgb-nGmWplk1wgG2(LHwnjnmGA%d=SRnj< zA2@Mf>Qq|Bt5jz(t7V+r_J=G<=!6cpKmN0S?@^5zYQ6`laB6gJo|)E{^!M;yZ3)`@e3(B_jF}OJaqnkIRcQ- zjhy(L_a{6A*jbuj(LLL9_ROxXZI(z@Ms zAzL`|`sg=;NAdw}yffCov-!zG9#*z#9;uiVJKvbBEFWSX>*3#bG)318U)rGjAGABz zy5UVRjg_QW$b))EC&KJg!);Faf-iuI(bRQT>!B2X^9N`u66x1z3)LkRC^Vuk_iF8o zksTtz16Wh{y!0ClrYS$S=7pXvrwLWpwY{1`&GduqngsAveH(vH9f#yNqkv+j^@HPk zT1Cp(!HCD-U5#(0tIu*C=&9ALJ+^o~z_Y9~mB(gK92b6G_$ozC;U8-jXAN-IPy+2j ztW3z}`eT*R5|crzrhldjfJ?C(byB+FiJ>3D!PVI#Gh+Qg)bUsJcbC5r1>Ui(wOufX zdbpHR7QycNRJUaBOKice9$F(Lu;B$aT=W_BWpO<8(ZxyEYp2)Wt(m295MIR#UHInG zP;+07epb%%gq2E!iS($#(b0g?kv$ZSb*dfM`gA>4G3mL3#wR*=BQ|r1+|uw*NNM8; zH%*gKR!GZT3>|yaaYgj#A3TVS9ja&&au-15tjJU;V!$KMP1v|W*PsBsCE_{;*TGa82OrDQPm#|QmbwkQFxMp5ECDK6n=9CXzqIBwFOzu_R=bP1WnH@QqR5QktQ`{g6f{ zu|+j`n%op{1ZX5ZnCZUPR8u3SXWYPOL)|X2axxAj4lu?>ADZ~LcJ`mw4l_J^@okt! z^>1n$f0vTHYhRj`z9U;Ofhf?%Fhpf{8LFG=d!4C(IKklNZG%Oyn$x!Tr#$~rLef~K ztpqBdj=kHIR}~WJ09R}q*~Hz4ud4ZF@JV>Xc=POrd9SGZ2L$J!bw=BiZ5$1k(1w$s)R zzfVvaw&C&~@Kx6(4*x?OID5~jj>`@G7)+UzI<~#agTn$|X7;X>xJmuilIkbOxX~M# zfWOTjE+(=GU>Fupe%=X`+xg4$D{BAs=dM2Lfg568(SC%wKj(W#J#m+|H2B=kg4{wA z12*Sk&Nt%erH)(N_$03%O56US3Zoyb2GIJ>TCrklc(2M`y5R4s<$+vD0VSo<*^^V% z*}2(=E;VTQ3%aWzqQ18>JK`a;HzvQ1EUCpd6S+gLV+Oek!NVP{F(L+=^z*R}LKT^fRS7QyGY zuMu_}moFgH{(^ zn(nGj!!^#WvG}duO>0s0_x6=rW@25L1Qg9{0bLqdB8W<0>}p58I=id&BCvANNP&uL zqfUvNZq*Ug3~EtD5EZ$*4TXXzOsI+DL}&g^x2{+*oyPSRiB8d&{eA*l)VbNCnLvN+ zo*JtrN9Hv$2`v#dsBv5z^0>_MN#!VpWdIMOgmBln z`D*kON2#&^aT4F~&|7w59yL=|%~FB>Agf)q8-aSyrOdm2VT*yfjzEMX5N6Hpb2+O# z`3f2X_Ob%eNfvT{mE-Tp{7?s^5M&Ee$5c=E-wlU(<$j8;hRLCT)F@P}pu{H334N8? z^BAfTmt3_}_>gxK69;6LRs4R2*AoQV7p^uJ!wBkZQ<1MgKN&mv7TV6h`ftdqvc!f#0D))lQw?v$IE7#;{(?+QzXLvtK5H9p#l|{ zPRW}0y3`u2?6YALx0QF|sksuHva}!UsUwQM3w%#9hJP_f~UJl_@~f##6mc2^B=j zLdCwV8`Z5o;i=(-o4*kII20HjaBmS*y}ghxBtFk;`z@E}&r4mMbBw!{Tau;A2)#|* z;sg0FLYE~Etn}5jZf*Fd8@(-6uyWyQv*>P>1A5(|{e^@f!Ra>4VZWBNR(%k<4&Pw%q_sW9D5nl084 z9#0(L&PZDO{27VPd)fCQROjlP_f()z3vo9h{rnx9VsE%e`DG;PJ-L;&@0e8*u7un2 zrP=L@{ej(|epgi9&XGKRRqBO!(8#6gPksH&MRsbhb-+iglha`Cd_PfR!hx?CA&VM=L{vsP*=F}euRD(GdG#KQ9~tKaxK1J zSSescS+^Oq74a$)5mI?G`bZOWm%VM^vzo>(;wBNuZulvrJN&_ZS&sbM{SX-mqr9T; zKp;&HV5kTF&ZE)@Bg~EdISNm?q>fRWvVolJk@;vEN~hir?tJeHtU;8%8uCd=x>5LK zR#im=INlp`UJ`y0F+%cva(E^1t@Z4X>P=+&e&AKvM_*N$oG+gAZ(!qrQTA%ZmtQ!Y zBEzSzR5@!GsY6xgqjs-&@qBb=|9rrdIAU`5*MP#8pDNN^Cs({^x&8ZGQTM8N*)4>R zuHN~{HAihGaKBa^Dn{@-9(CCFhfp5jYnB3klF^kvVyZSG!F$N(&a!k&5#(Hu{|Njy zJobB@sydlU4MoG^9=k<`Yoma66GDCyv7C;Py~#m*?vm*{>@`>;QFpGvd9M8Turme9 zLL*+zJ-%-t+6Nb>Y{kDN4Vcu9zFo|AhoG#!!K2e8QQ44CjgK?1qP8PK+0emRBS!nV za4#H`H|!$Os!8naPf6yz#NP~2(87=eCwXgloVTv9=L*wxG>sK&a{4^an38 zb@BWM4>3!G9V-8Y@Z~_q{IXp9{4jvcF>8grq;THN)G=zx=pQv&^hUH@H5?}Vk01HMlz=lSU-8YsId%5?cyM$oxxZ!P+qSoM7c z%Cuq72`32VdSFZmKErN*V+qj~955WPQpr;BjK$0G7UX*M&+xLvLi!u48Bs_W9FSwc zmqS*|$>rd>;>jHCTK#4;Lu7^3!@1D<8vzOgMIs@KO0}{BjPhboL=xSRVj*v6$jh1{ z?mk%=>pE?k8^8K4spSwlwDXs@tL<{(sw7zl=lUjdmtW)yn0-#IzZF~%4Sx}SKSRe| zo=|w#x}jh+`7YAlhQ`AV2~j|1=0hLYt0jKW69{clv;TRWmchG$o!5Ph|DK3}39%p~ zt?6>DYrJ~#4hec4?jg<)B}u~=YsULdvwk$Z`T5sEwNwUPjui6G2C>Bw@-W3eC(`U` zkRt@Wl0@&J<`=6A^(0jrY&lnRr1z$^V#nMB+@Tz5Ky7@w|0+}-oyT*%3F{BD4sNL{ zZQB8O=;9&9M8>Fd<+o-J4La>Ig{5scP;U<&dTPg+lH0Zq5~s)&ouLo0{t!0D?AopN z562JRVVKvaeCmLo~FCUdxbNjxf2vQ%B z%Sx@S){fa`MAge&z0RH6_3$H2=Lo<9c$Y=+hKwx{ns!!YJOYtC?7Uh|moovwHZ#ip zlGeJ`CfPuQ%$v2n@2W+4mZvc!{fum62&BvR-gjy-c->u%^uk6m(4IwV1_E#`95&ws z6p)algGV-pw{j3=;V(GCceafw{_ zq+Bmz*ZBhuN-kEeeG>O_K*GQkTrt>Zo;}c4T0OzQG6aNz36cf8dHiXf>Y13=#Z>Wk zC#I;^{gpSor%Je}b8xl;(1qg8^&3ongp{3c1D!o4L$^5UxjdNgLuZHd%afc}h#)#b z&*iaEJMsP)rxI7Bmu9U%e%;03chaD6kW03>w=VtxWTet_0`7uR|J5@j>kmuV9=Zz} zwi6$mW`IMuJS-Ci_ZkLj+<*`ICTwnaADvE4n>>luhPq?MiNukT70UVOiS6^L5uvBr z{8OGQPzOASx{c#&ALm;Lu%dPBfrQtI_=vFjv*-{%z1+|@kG-y+caA1O0+6%9rlcGG zGR8APUDpj2iIdTXT|RH9*2DOjGvtKhi8P(h<~w9HXQpT0O#ER^6Z|dRv=L4Wn3PpB zxUy$aP+trTE{bFad9GRu~n>b zcu}QGk^duC(-7xee=y`1Oxwf}Nkryj=Tr znV%sAynM@v(iftU0-o_t=Izl>1xK@Fe@p*6MRS}9L9WaL!4t1u7q9zQy^*_(hs@K+ z%Hi7EH(+iCmr#zaxkW8Jy(ZbVSFLX;nB!h|Y`hw+hPlwZ+kA*y$drG-v;^vsLjR#* zwqyLn3^T_!s@OEB3PYbA$@=81G<8BHIB8|(INgqcjAZ=9+{4g=fD`?avOxGBgox%S zebMu`i&)bqL3Q6bHfUZk4QDF0ilY6c;h*zgTd+Z?H^*9L3Yb3y);?62c)01HE*lA0 z%zDDfNde623o`lEslH+od!k}`r(5Az4D*h|nxM>VU2l>0eqTa1(-Uozg9vdP=M*Z_ zRF$|Fd(mWR^e)9^<2w%}NCyWJBwbfQ!go#b!r!Y-X6YWQ;T+d_!MaGIXuc;H=K8?) z&MwbnR;VGy+86zE!qn0r@U2b7u5PW%F4gU&g>{^tsfM+zKZG*LubFqOa{qwcH4lr? zEN-Vekb$Wp4YpT74(RQ8dw()ra98fKSlt$EQH2sKXK65*5#hx4+#!pdpyX}dx;@w^ zd<%H%sVY*Z9>%z#xvzMyn?5*uSWmin=f@v6aU|65c;`C+I)o176~>3Ku(8D*yRAa_v7RCfE0z9S8VVIQ{lNyu+Z z@)w9V`AB3(bK<=+)o=T-3I#W)Gj|I5c|!eMaQ)lg`rIk)#`o-rUu^?lV^K=c=o9wZ0|;3L{0Xu@yc|S*tFNhhl@A&QEOEB@lk8frl9LNZNegaR8*#> zmiGS-^KCld|7E@{%=?e|Hq)v8Kjzy`f75`re{pX1-TyJ)7CoVuZ<8$J#wh07E}!1% zrR6~~MXpe@^7dU`fT?cu>km8Ro_`Jw^LIae9y$7QsB4NdK0Z6Ix7Ypp-(6djim1;I zQQJMewBcmr#lPy?6DyTS#5K<$fu@@OsBa5)J!_{kEgCZaQ?@Odt*fYL?#P}g{#Sk5 zELBkelZ}@;l1XX&SADBW!mifgKcnlW5j+(0?ZQ1A2vwOOX{2~9>zY^0 zokzx0GlXhBr>_3){p?w>1pANP92<*7my6cPfu3tNkM145%Y5GW@t?7wH}4IH`dV=G zcyYF(7kyuMvqt>y81a-C?yYvQahgB5At~^;JN>HE;^3JT9puC1mrqX$(|5Ng(=M1? zqksJh86D1j$!k%LK81#{nf+n0nxQv!6xxV$qE?TMMP>ygqw1vHolM!3ST>Ug3CLuY zO*;{1BiAXXLb&Po1KV9y%4i3+lQh96az%nGAUJ$YD;A5L+MnB$xE< zto68x?zQZf>JIJhHy6|?cvd_o9Efqpw_D#;bZXi;cnB~D5ZV;i+2QS^3lL7EdMGV) zo@E#onQcA}v&!a(q8MpAZ>L=G>{>g!lFYprLW@D-oNw5(-wX4S5{yF#OZk024R7y_ z85?N#?&d%L^yHGnH9zlMi}26S3Qx^9pJtT~i;}3!0<-}Bc%5U%@64TABg|%bcxG*7 ziPbWeP+Ps6SDuI>`@3P@0fG_D;sK@sq|h(3h2I!H&FIdr!=X&0ZC$)0PFmND}*)7J5st~YolkeFoZW;o4s&C-tHVUMSz{LGgKAM9*I=0kZQ znO5%}(9fm#-}`YL_7^Wr#ue<{~xz_2}JlF(t>m-eHi40W?X1Hty6qeb>Z?2f8G#rVaD zd~@PdDR>ka^Y>T1z#qKi{^d%S9n-P-iOw@E$mhiMiI%>AH{h z&?H0Tl<1UQX;RsSSI3XNy=;7%;#gjZFvEk8_tUAVxfiwQ<<}XcPY(%~@4IJ~95LJv zMbt%^%8woopJb<0)UrUPr|1mvpd10P051lnXAz6IjTeBnI3^iIbmo^2jeuKn^bAe$ zI+;s4|5HK32xJ7NfKvW{774{Aana0|VxlfxVvb?1iTRHooH?Mjj#7s+F8x3K;JtPM zuC8})Pd%Rsus8j0KlqBV@!Z_)yB1^r!w;Tp>a_Uz)BK4pSje$z|W z!P#?#{9k_X_gmBH7Jj@v5%xLmOCnmeR9TnR_|H=6wsms_4D%#X>D~>+BLBA^JP)K> zu_L(M9jT%~!?ND>-+u5i|2;B_+_H>xl6)>v@n3%M!z)tW>lCH;WEx9`UX{$hesG%} zql?@UJx;?cmQH3+!RFTE|MX;B$p*q8~U+mMMO4KV@e7syF}o!KFk~GzFgC zpr`o3&tGSn&S=t)CiheP;0nfH=hg=(e(>y??;LA(rxZW924Z8}{G8$k?-D#}%&z$K z1xoRQKNTPtvZ?5GRmLFXQ|u#SZ0E;WApiQov&QBpSu6~?2=S;ScOIR2k~V9SNQ2cT z3uCS@#SdT%ccHu>u|#Sfk}1=DvzhQBW` zpAn$^hp;ccFS508OJWFMXTlWTElSN|h*Bgc>gkHCd??2?{J5**I&KnM8n&}G3&xG{ z&9V5y#6&!E6FHI#B7|DpjR2=7^o;lz#l5-$DY@Dkc7ToXnu?H!6z&@q6hF8xROwP; zWkbteEk2Lp2ggBy_rNVH5%0_BNfbZ0Pw8+Hx2d=1A(1^~KDlb)q~)knyKqU1jSirD z)V;}JqQ&KPYg4G}O~7oDZ1kx#@bP;g1^u4kkkam1D~D@&Hz6Q ze*JM+%<*|c{FtOm#R22~D^zhCFin3%9Gw@D=rFKHS-ra$Wq;(QE&JW@$X`9`IQQWb zj^Z{6eJ*>o@kxp7K)9m+(ASJ<*+=OK$i?oCfLY}WXRUNOc=YECCuQ>2`To6C8#8qU zpKBpbr?KCbim~s%EejTFeqYI^z(=(Mog{ydjGd|JU%7KJF0Xpuc)q{_e3L7`e#yHp z=ylj7#HTklv)2OO;a@9XdKT5&W;PHjoOQK8j#WyUC?GD?-^-))>8iJ-t@7E9@hIQp z4-^Zr(r(@78Pg%cYcU-z({AhY!y|Pw*3ITXnuE8*-FK42&r2`%YwsUQ4Gnxk9o?uL zE|UKJ<)?Pw@`>3y%8=!?jGs!^i|a_xH?5UB#Sh+uGI3P?DWa;Dd$`^E%v(0I z*1;+7)2o+~UZ&=JH)DOKye}@EZ#`iCA)v1CeROvm-=VVrQi!;ArFdRIj*s`2fcJ%zM>?1)h{i;~i$OhYGcjW~ujbqx}V z&r!jop_KzYRan|6!5OPtc;d`P;L(+N%avCpZpN-MpqmR(D7A8mkB%&cw! zeFuf!_vN-z1}E6_tDv7VSnD`K%%>(2Q74)7F16G65BTe1b#xY_TGH<(`HZvFoP#iR zy^%>tO-6o~`I71@)6!~+MqhH-2jiGugibptqAqT+9}4iJVG`15jO=Ev^~dr}yY)QwpNoav#8tozznrpji0DbI@Qk}^Kv}JU zJG!u5UyLrWILNP2D`B(^UA$0e@aVJ7_-JbkYA;`BN2FONmBG~{yMX()hnAHmgT2)E znq=<;BQfp8pcQ$`B03FuhQWo(mhnJg|BnpMcEoE1o(A41|I9IzebZ89nSbyc^oliO zI-%miUJLSN0n5k438au;gQE{k8{4X`;7wAAxv`hgEAfQSF=!jDihNs-?=8721$dmY z#I2v!c@{A($&g`9jxB?gvB3*wI%^Kl;a?4t{t0Hkv>ZU)cg*HI6C!gy+H+ZKmI`dgTIczJFsqy=g(EXTn^3q_28O z?Knh!Ru1vFA9&z!<8lHqiv7tMFNEK4UT6J&o1N`>7JSu`yB3OKskP}={lb2X4qpap$KkH z-#^}bqrts;f2%8F5bF)IyZXjPwIUVwXa9cOkUkeevswc3!N07`XeU$0`-3K|)#~^9 zoeO=#5-gUcAGp_ywx)H#LUj@6SKt4-zJ&ktbPvY+*2s2@Q}R=uNyrVJcXkWGk>w+G zX(FkH%nx4tq&x6SR`Q7Xwn=Tg|2xDRR#(5{{~2Y~(J1vyg=V8Uwq(TksC23A2*>q2y>2ppUcIs*@G%> zZ@yCY{Y4DwsERT#T`*88LG(Vtq~ z{$_Q*VJ z_qd!e)-_Z;p{h}dFa>LBWAA?Qz9s;Q{&6Y(E0Rgk+K8z zDskmK-=A5fNcqmo^nIb{Ne^~)qxy7t;inq)A;qfbcH4Fy_hIuX&#QXU*Sho+iy8Lv!Wk^$SytkTlaT8_BW|9?ul@}4EQss3NYGgkG|i6xOwdQW zU$R|EkQMNw@4Oskk$6upPLG77cjTIyO1yF^fbL_kP)rJJinuO--z9)2brT{ilNiRB zV*40SD;{wxi2?%bPNaxELV`_yaypFwZ#Tn@+L(Ozgp3`FJ-n7ze@Z!rfDl{42UN-; zf9esFpqT50T}pU(Q)=XNtiK3Drd;B3wX=7O@im&nCxpazMUGj1Mi%{1oA}tyV*4gp zqg7qjZL}vpjpOK{p{{$(CQ5sh#vXSU@OCBRoh97;NO17-IUNhedS=Jkb}Iu$^-1D@ z%4k3U8sJH!K19IYD=W0^Txy)Q{=8#lyZ|*LWiSyz$|Mk&0CCTT-K2oHDWIEpn1~~Y z%F{?tmH(uSAXG5ZqM(>I!!M@P-U*>d3{=CBx+(`>rhps)Fl|S;^jR+23Ze~wapOSL z=B6_MXp^0zHXi#SJK6Zu)@T9hKz-T60eHx{=z)AA&OGf65ZIBboP%(cpsz8(t|A$l zM0qGZLP3rIc07y+05P^IyypSOpa61?U>G?s!#(^dv0$+&;~F(8f`NkZRJn1X+iH=K z6@+I45`Y51um!Dpab?G$gV=kk$>*6tZU6xy9KHdO+bt?QE8-?VB#2NS6&6o65I z2U5|S)k+yenJ5PMxH$5@N>vdc{Ut{(zkjJJ8h(=mJm4gtcOh&PXpeGg;b}!b8Tz-k z%!5@Rl9a(tfN~AU=v%$vM zASqJyGpiJa*z?2@K$=!)n8K-bBM_3Ic zsJKygPh8-YJFTi`<#00}BNr@y0s@FPzR`!M5a7X{jbeDH>xD|0g~lEvfL6Jvp@6SZ z9~5>5l1yzXLcr7j4H=$|Rz!%cV=+K4HNO;bCtJnL)9UoFz!nD-8>lDjm1ff}6 z5v%`=#kP1NFeQAyQZ6-Gft_(cX-f0JUJ)a@Wkj`I5D!#9ODCNPnB>y>BY37fFWF+w zD-5Zs(O+$DyY+Rd?e*a>Ye%pdx@||Pd63-ReAvD{3RfgRK6!TB({J4S^-v!GMG~*% z?xDm!B^3kUMJ-%v2E4&maJdc0{>;N@D@fV}B7hdehHR#pMezm_3NR0USl2K6mFgku zxG|m8doW{C69+BPgjBf7B|s9mQ;cmpRqtBzD`G=|C0e>z*MRK5yEqKt%B0R&PJt3_ z+S`M*!UnvJ`p`M?a!f>r)&@-4uv_K}*cspb$TFF7oA$@&Zf{jys!>7%0A#{++*vE) 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

    6|>_R~H3&#-o2PDKhfq`~E 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 z

    <1nN9JPPOQ=H>S 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 z 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 z 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�ZcDz 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

    ^*j2+aw=#{)*G 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

    yCwhqRroa_UHe&R$!NGHyI~&Pc zHQKL~!uQZkK$#4=;r^`3VyY^D4f0rex#gEk({fcgsN>O-=-G+VS+l>zzU`Y_wAi=C zF?Z9e&!zTZ(0z_)wg0t2%kP!BoAWuP9$?{l?sK%*w-IOM&9fL@YtKDY{hNq+;IZdv|QLsUhBm95`xb zq+&@Du!!iJ%k_3~ttKH~z>L4Wmv)-M469}v+?#!PK5CwsMsg_hNokpk`pbx?5S3{YiT)yvW;%dXl#qQ@D5x`GOYpbkx?3u`&H$&Gr&E9o@Y2B8Uvf z9m-Z-z&3nq=SkuP15IRaym$ddbA5HIp$G1(QhU*^;bO%>n=+-FylATrHb~pK+-%De z_3=Yx`29v96YSFXn;Zfw??X#rYMc3ADQ6yhWBQnv zYy#lq#gePp;MxGz?A^0(e_2nCm@XV#`&Fo}Ywu*&4Fbhj7(->yT%YAb&VJlB**4Tt z_PVOqrv07ix^jb|%C@l+_G@6Ll`U^K6S~!*yv3zauWlKxe&@hNwO{aHr|ih6;*Qvv7sPk8 z_W~Oeg--C7w-LC|16?{g;rJ+i&|h!LAVFJnRA+ z$;qQ%VNr%CK&sGh22T+-Q}ojv}Q{Z3EG z=ssB55AefNRc!JPsn#XuG{4EoRNW&fe&d4$^=F(@^M>Kq2pkZr-+6`6QJ3$lo-X1M zCF22!7j%B3QM7Pp1Ta|ee9|{Sh47Ne`D(t_d~uT4XliWb(F>=OBbQvtA84`9I2@v`J)JV0`qIxu;3z{Uwh-dy?z5N zRQo5o3DUK4G%PI~D&TJbY+FA@MV^dZu9eX=KAW|%miJPe8Z3R(jhI=RpBb+xk?gI8 z4>>q}@=D5_PfejLwg|iNHX$)3gJ<}(D(%guUsJyaosXYv0tvO>Dw4|v%0uSI{2ewM zq_)niJYdV6*`BWFzjkO3pHFmlTwk1gZTorO@T@}&OIXQw{XPo%fOv7~B20#CtUH(g zL-faFfawt9Mj(u=KF5nh%W^Xq-YIPqwEQgSxg0p8ObJhT_Jlk%-0AcaJUDzO$_>x{ zgFjpfJ8UbuLpg0T=Gpnq*Vty;utHvEB}7^z56yG{xjum|4z1COF=@hBH=I!cGtI9* zT*ZYVJq8iN{v++p-J*=Qp@s%p?%R-N_I0Y-OilD6`Mi}mtm9rRN;QUIoZ&YCv`7yk zv);+i{_Ss(7Z3M)k?Hmmj7j2s(!(4?$W5dY@FM=NiMcV{Y#{j->u!VrF)KBD8gwkHo#+Z)UuOPxzZeiJcT`QRq&*INX~ne7eQyW&-rn61j*S3 zNVIv`icM~dtdIh=m~DPDdL^Lu#tBg^$p6_ef5ptLG{ z`@UX~-^TCvO$bSFcPIpR3N28eKyfct+=>?`&{7u`}1&XZnci+!??*BY%@3m&FgT2?x{~#yKWF{vtOtjG$k_7n!*#R_lW| zK6xK3>Qm@n8N(TO!$BU3mSOtcfRSBTIQKy3G^?tHkOJL5%e>3(i;~;oPrg5ep z|Hw0tMCK&;(bcawL}MYLOi#~as?+#F1wAy}{LtB)1P1;S8-JH>)yN+ zyB0!BbH@TEuc#z8O^{G3V@07q2z5^Xl`t{b*Ke+w#>|ButJoOSVizx>N>t6_BQZ`~ ztuSnkb{Z*(A;pnqJE&bh32>;V;wtV%L|oJho3!?D;wSgL=GM^aK41dJS}0j$evA9O z+{>OZG>)a};_dc9>Jh`UF&ADWnj4H>%*a(rwJX-}N4BMqHsr;+9z9N>Xvu@{1sfV? z<5>a8xfI0qnH&qOI(KcbkG4}n-s}7)_W4GNuxkc09Pd2B_sY^G5QY}gt`(OWP^wb% zOk=SOw}`Syf_zavPS7do#mX&7kR5C?iKCLmn%9QScyC&A{Jd^4`IWmxDC;M65$@9f!_i*p$@_L4`!d+()kivlR5Y z!1OqduyNwVGQG6=My$9P?gfrgnU}F{V*T^#60&}b(!fG+PA6^rtBEM5}`0YYpMn|dcJ-$ zDTzz@(~j_QM8jKjAq-LO+Buoj40O)?7j(APs;jigkKjg@PU)Jx10yj;{7Q}5L3yj zlI-2s*#LA33Lwi6C+Kmo$GpN*X^ZEtHZ1-m%#5o3j#GaRCbYK%e@m?+v)0D|B?GV) zzgW3!1IXaSvAFA7Ds6Eu2Y;9UK~kQsc$W2iJXzz%zCQ~D!T=#O4;OPm)kf)eRZsRP z-?VK(Hf&=MCy5q=e&&J_bW&d1OeeByuMvU%HCsQ=Z6B(>)5ue?R3oxE!h722e+1wW z*qs)>Qb+*%k>@vIqtOIQ;ws}4B8Hwrv$tt%B|ui?W87%-RCoKw8m-}UXsfBLjH((h zCcm?iA5>7^01rF^@etK^Ujpxr4ka@vRqhCI`j-wKs)U#Bn%=ZPRnUPp6B*KevYpTG zg^WF#-B5O46zKjF1zi)$?(>i?N)gl95Fw{iyZNa=vaB`VwE38BXY_TMn(2|~;s=EM z?;X=Jx!Iy#4`X#Z#NS`9N7a3E3$>#X4Jr=cRTxc219T!tYiR zBC)>~R!S4-o{Ll2?UUk5-*z%p6j=QF?()qR)`P2{Th8o>`!V&_l}J)AV&uh|P>-0n z&iPyW0X>s#KgbnX&l|1h{BJKy$giN!`87RmpYdq+ye0WJ-RJ&g!>Gay0ox%%o!Ckt zfH?CAAo3E3x1(q=tiA&L;Y0=8ez9CAWHtXDzA^maAR{DyUdqt~P~g+fg>EPdvn>XY^c zY)Uk66$vP6&wg{68#<^)BAetkkd8Ig+- z*<2?hDjg{%9Z~8LWr0HbYEfsh;3`4vavP7F0raTWFnkPkxI&b;MO5p2wAiWlOCjkd z0Q`{UuhnO@9Werr{)Dpn@~MZz`9JPNZ-mqP^aQ(1f`c37GYBlDQa$QU0DkHrx-HUp zU%iA0fNlLi+|!Vs=`5cB&`qKE=hLyq@OX@jcnn)~9O3X^9X$k)hfj0ca}Rto(mQBTTvvEL=BdeRsnp6m`LiL$2%hGUHfhYL);Ht2-IzEVulW(VWVU>WBJ5u=p8{BX9N6r(yBBt?Nwp{(m__pp4jsZDZ7sUPMqH^6HFNR5oW201fYsg2Y9SI zBK>0o!FY3exo3PV%0ke$iO`E))Xp$rfy^Xk(4A#iVhZ|BW_9fXEIc#&uJJ|MGRqe- z^9b}!JxEwQJS8b2p(o&?@T?D-#5TfMox53!`j7(t?9~PQ0o!b+A;_n6EHm{O*;W># z1y`>&(#MJqXmc_-2d=?$>{ttBIo<5w-t(N>2yAVF+_knO=qy$ZW|pCFhVD!*I}n{k z!tZpKE1e*%7@l{93BOp#qrk#8GX(?N(+8~c5^d7x7%Uno8UNyZ*ZIJwu|uBFtKF=g zT^~x3q8dQ{BaTD?4Me$m{%KnHZwhhdy+oz>LJm7qJX8AjA*C@DfqlaKaC_XDsfs}yx~y_nUDS!}0-g=<=*NtH;k;Zlxxmk>c$ zkNM$e3Eyia9dj(+K}>-4O<@MX3wwjoA_9QZ%}1;VNpdf&3`DL=D@#@Qs|j0b6b;z< z{hi+@oJyl(GeCel1Ni@aUcV*G)g%I&p$DnNsJWifr zLRlii`cjFyNUWebIR8Vs*FNS`EKWu$^7{VNk1XB|g|!91toRNpEYZxjll^G2><QGQ$ZL)kFMEcJoW4kh_sj$gXrJs7HMOI5z59IksX46T-g&vgD-Q|x58lzTAzj?J+ zMN39)wI;l-QKIR|5IA?H?hj!D`>(|5h*miYNN8JYR0Z3o#q<_+@VP=1&!1+z`NRSt zKkBb-i0OuW&Z?K?rEEdX{)VW_*7|<(jg|J)!H|xczOn}U`Zs84&my1TB03r+fF|(v z#w&u=b~Hbu474h&RvPqifI1YH2tJ8oaEK2+d){$0SRjf?B|nUv5SE2f z`e>e08!X}7qLe;SE?8R+_A(^c79DRiQ|e>S9dDXGM^afB=(@T6&sA8>Qg5bWJq)K$ zm|Yso*W0QO{cYU_%vQz`spdam)_4D`paLee1VBs)wj;8hYlECdNRW2V)^56GM`=)8 z-+W}hi6}uuWEPIJzcOKqLK*se)_`gtx(lM^_3al3uyw?pMCv&abfEWbQ^Lj9Sk%t}T~rHw>=J}wJ`Y3&ARwf35RIWD?sfN(6!6AvMW zp<|6ry#*#JQ&00BVxo#jVgT@MEl|SrnM5s6iQoaEb>hhTh@Q^i8~&4`>SCqNI4Fq|issM<36@{!iy00sUfFMH0m$5o~hW=#<$0AtE z6kvux2QRFc4=gRGUh`UW}<}b2jo0GvDPK2M7Aw6@6u1z*`sy znvaHofY`)CY!Lt`4D^;4pbXU{!GdNWy?@wNUR`bWS)( zhIA>*XK}%$Lbq&D4>#N1uqEe`N-KVOWqrvQGS@O&B^a}OO_3}hj-?y9hT7`to9R!Qw5Sea^TO9aI(L(%iUx0N^RO$} zlxM||tK8D$hoi*Uo9@|k~{Ta?u=Le`uplH=@M(6u^XC*P2cV@g<9`` z@vTCmovz#M2$MC&u^m|z?>Li(HGJ4qqWG?W{w|nyH-o2hxOX+%1j(wnlgHC(F0{v7 z{k;V56HfJB`J?En*j6FDeLdWS29p*A*mm>y8qvjOTXiAH>i*OF{obS6JEQJ?lb^YM z2dCHD0oNYE?3OEC2fLcv<40+LmR)zKpe6vG0XUjVW)m;KwU^d*tU?(N#i|KlA~0kES#C7+spKXZ+YSebF77ebIdc@#iHW z*ulj7YOf9VyedAv+{Oqj>vIJ`~z+Am!K^1Vb}dH92-I)qN`$+p<3smCutL$AH+ zPuyxxHu27an+Diae9Z_RPOf%;J*(l6sy-v0|3zSr0P-I4@t-pjLobs~l_0o2($XJUi`#4kRFV#=9*rpIVAb$(*aacb#r)Khnvl6&U-AftJ5;rg)i z`1Nmw<^k2*-laC)T?j7Yrsa zDQEUG6_3co{cUYApMD(8Kzo(j8G&kTL+1x4Z!!5xCktevhBp|kO8zQ+CVQ6rDwi)vdMq9%W2n3)fp(&wn^CkkyS0`Vt7tY9oh?uT6bW&Jxc_P_tl4LMeS+Y-MTs zh-bgsVxB)cdg3lZDS<26dh)YBCPbo-s`+#?Nq4w@RIcTG*LPmw=PS{U%fsc4s8hyG ztg~MmZA$FY%1ZC{4&EwD67_VTTHF0kzCn$m^DvJSSJKocXj)F9k3JOBA&*t!8L~_&S0RuBJKQQ*r9{H$3Ewx}T75{sQ}`8} zWFD*dF~&?U!a6gXA09<$-0f+c;X1C!>U&LZmX_&t$tq8Qk7Ph*q5Gw3=7iElvcZv? zZEuQdhXP(wU~UkV=7aoL3<@)yhIb8p6L)M%6BpLO;7>o-3X7>yfvZ+I-B|XOQUZY7 z(&jxkHM)jfBDsX}X4V0NdOT%^I+}ri<*H$kkY!R|4CUP#K8U?T)2sL+g9##Jk99$BRtYRK;r7w=@k%n`{ioX@ne#WhdHNDSQ>hIyuXICmfl=! zMZx>9J`sH-rN72@dCtypR>BJ+_Mz^={;TwT6v}t(XOMrT@6#U~z~=_>9(5hT{ygI5dfm3#1 z3$}Uores33Bh0ouGpe zA#Y$0kXkH@jP42myJd$5gbQOlT!PpI^@HKv<`ZcY;k`IiU%c>rVm|k&hs5;LzX+%s zGbJMlBPr*_bBqsyydJDyqpS%s!HhaJAp#IRDa8VM0B%H*NXYx(;ndUxdp0{HSeOa6 zyqNic?eWpxTp(dB8L7y=cnJnOzSnRHLZbel{%odWS}vv^V*N>NlJlQ^4ILQU7fnOl zI$5Jxd*$e;bUy9o>=N3&Euxz!P8pk=VuBI=c({u1!&HU{)?WhP~HxPxN#iP9tD@Yc)bZG+IyNP*ttPQ zXp8A^ewK%Gs3mFT*~O=`le`za!*#td8U213%Wnsb6+k@R0RD*mY1x>C70IBCL63ty zQ>sin5MuRSG8X@Hrs>g6h*0ZzYMvq+_3H;Lt(PdgPdX-uy!479Tzjg>wP)eQoEc^i z#H~D>LF?thW^GUF`D0UbqLWgrSv}12axae3A0IOn-iNwX^{@5mX=4@yzGsLs8;Fx7 z3<$2NcdMzv3ZT5-TeLj7^(6G;++)XwiWAl z5@bNrBQzMuz?HrkOo_*`_`N$4-(~V8d1X&1$8a;fb$pe>ggZ6X2@vn8CN~F-DR`b` zhCmBF(>czNs|t`%d9KG}8jp=F#H&k?k4gWo#=E*F9^R3^Ta5$GWIcA(4GqMUCa)c- zI8`F;I&h?<`?9!tH9VK>falX)M5x*^%M&nu^wW z3zC9M)C<*3C5tl?fAEs50t!S7`IDTC15f<=`~JZt2)u6Gq#pb_iZ7tyh0laHGFokOta1I?l3v<^NdHa zcUB&Md@=%$sOZ@pwPM)Rn_+^zva~N7>i&TkGWl*U$yJUp{O5KU^6&aIz8yR)%}btX zUS6ZSYU7P#Ib0#*i&VECE{=sS^8_R%fRlv(hP zb!Ik&;Fm&FatQcM33b!Y09Bh17c=nkmeCo=h~ERH^pUT8AVVpA+8FPb=7UxyaAXr-Kj%c$8ZVMAZ7geybsb-y z7JU3m^0!ukOu8U0T!(r$m{`IUCLCiJ9?PWYW0>!%{xy*?Jh4F@EC)lA>q(SJ!%>?A zKU^iIeFg8s-321vs;N^_v?h76LJfW;NnpBxbmL{q+r460lQP|6H#L~@uhOTv%Mdx_8oiJ%L5WU+nGwU1ku;Q;;+b*W44y8| zP#Vg}DRWS#%uKe;_z+>!E1Oi(mQhxg83rLjDSdT{4jGDBy#krd3-+xUS#n6~1o*wg^`r&+Jw*s8m^Y`%w0nr#&8Vj?N_bgG^2v##$#Dt*X8LDpl68$q?TK(EhHZ7 zmI+;&K-=@o5VS>+77hAInlM!2YEjvqT#Z%njHTigJNSiO#bX`t?ogtcX-db9xee6K zinUS@k|{)9?eI0yLN30n_ac2X(&8tC;sx{nQ2K_eR`#lXU{(L*s9sm9-n6UUj;!7- zuihW7_JznCVwtZ; zZCUO8KrLBVE#9Bn+kqOW0Y9msnXlBl9MfE?5z{hhIKssQW@v^o{5JLFSiH^Fu1mSF z8~8XIo+>v8*f%_jY7nkycupN2007Wmqhq22001u33s8Yxiw=OI82P}U|1~T6kMYm{ zFImyQ$3H*!4}AGQ9sm4SR&;cH^6T{MpRDNm=Ffl4iikOk25SpGhY>LT-To{bh@yCE z_g}X^lh|IB8x7SLkNmBQvK1RXj{Qef6omCisj+mb2(|rbJlt6J?LW3Z8|+qwn=0mN z{+sYaRYk7p0W#G8P5Avc;rHK!-+vQ+|Cb2Agj?QMZHpJxE#c#!&HQr5wTl{rfGj{0 z%=B2H7eC--rMcv<0#og`b@4G=%xEVSbP0o4iDQ-4)RN85fsPINV8;oB41-$eWn;qT zeoi%5a-2C8x+IMR9mS=*s=zN439YS#*W zMpG;pU5pLGb0Now4u&P`^^u24w!^TzUpgM)$*)mLBUH5Q|+MlC2FLkooP z>g_eZuQPnrOO#T5@>&Yc%=rAePXQwcKSjl=kphO};!&Tv4)5adZsSyo4@_<9%zB(f z$+^AoD?NrLm?ZCdOtp6;GtU9?ZGmFk!z9vZOJ)0x;PC`Pe7N`O*7CD8|77^=kQ2t; z1`hMhl%z0zQO>fpx8%+A^MvycF$Xp(-c+oatNd}Cce|Q%Oy3Jr>j*t8_H;g@&y-!d z&=4K$8HAzF*5Un%b{N}FMvBaRKoNe5r~5|kUh{+ZgN1J&xYtZs|18iXJZ+FR(zG!& zWE{z8u5OE;un$Wealj0+tz&d_92s6JeS}TDh9GbFUL)#A5Z#s#?KCDx{45MFCT#5G zzSje3qQKqR+v;p9>oCc*`*AKYs1^+Nq6F8h7GB;aIua~TrXet`>uH%}hcGaz4_V&u z!a5H=b+Daga=rRWjD12Sz#$IQi_L86q+v3(-K?!D4c#K4TNu3^8rc;b2ieQpxNU9y zQUruBkFTF3`|Koew|_gm%Yr~t_SDlVzE?C#VP8<-K?c37TU3jyqwWqs^c^vyv6sz% zqz|L|+LyNP@gz@`kKRrE5ee33&fUK|zU*l&wZ^`B=$k0QZ>gN}`{H=@r6OoZFfn$W z^*DBCu^=8)1Lww`Y*=RmxY zu&$#4Ae2KLSlIFZ7Q#=^BSd8wm%^ zM&uc9_ zWPZFx)25+J(v(9&D8dg8Hgb&)0Y?R1QJn`ogH4CIli?yM_*m9;H*D~d0%LpoJiN`o zeVfc0*0^UBd=Bn$o3-ILSBxm&ueuJ@iNSKYgH!J!Y+(~Wi{!*?i>oGl{@T^-dp>{V zs{}GdT+|KF)TU>Jb&T#$co{Hpe4ahy7EYX0hk95fVnxsr!>G<(V#Hj*gbU=qb;6(M zf5G5acV|ltMlOUM*Z>cD__d+7DRTjZo@DfZF0o$jeubKA3oZ zWpVE!6zJ0)p60oyuf(T+ZDsV{Rd~!E5e&^(g=I8cNhpUaBxa85X0E6wmY}L3ba&scO4Vh!7`DmvyLgV1S>4y@7`mi^(Z>%Ry?&y zNRuuZ3iY$cBy}!iqk5k`=ou@>?sRMl@Ijho+khd>AX`mv3I)o|BRlv=|MencJ_A>$ zCjql9YgdAfV;Z6ppLf%iN6TWR4TLf`IqkWq#+zjwx8ZVR#Lv~I%u3K*wdE0D70{B! zeaD0B41lF2%MK9Wn4Uwj15+Rq{lu53sPK%6AN(^80GCJA879xc#1IENU zs#ZM^1-*}FVYK+Xr9oDL!R^HdwPfy*CCH}CZ)Q&{5<>6EAz1l;Ilrjk(iJzb4;)Hf zOl$cwSCIpgKC_Hz&)B?@Ym=!^f&U40EcA8{vwCCOEZu zdYcGl$8g2R24iGh0R3iA%*RYf3%^#C&BNhpk}O1)L+1OlT9Z301|?1ga5mPUwB2!=Bo#?h!MkscW&{V zVC(o)1yh@Zjz=*gI;i6fKh)iSBs6~?staJiBPl@vbq*4x~jZWG3!}f zdAp2|ofG>no?4Q5yaE+7fcN&>mr#Ts^`~C%)Q{h~e<(L@c8Jb?CaW;yINJZn!tx1C zwCBXTU2^i%o;~?;#;1W-WGPYNhxVN*$~`0~!cV153fYC(*)2BEV=V2>yC394#Xxz` zP43gj=F{t<)V4p1dLpk)OY_9X6by$wv|A_i31xp4!ReHOfA*`@(m_=48L^`vPwh#_ zp&(gB$6vxv=%CwyFb@}@FTKpJ^Nh^KwokQlz{seVX{~G3{uPPAfSe}TT*ZJfityw5 z#Ec^R_CE>AmRK&+)t2_(cl;&%ghwHcES_&^=>8IZy#Ek>(S1kH+4=r_EkF@|`QgQ` ze+fS_pU!-00AzUZ_0KXtq==~0P(IBt$f(WgC)g79HM5d*n^U2P^Dp6dy#LWMAhc|h z)EZ}`HG5=v|6?phX;UT1AA3C;)J;mGQDv33EsvZ}qa@+1P#xahFEnG*qMg=&juzB| zVtT04Rq&+f*y`=W7yfq1NpLkVYmuXEhQG}io!6TRU$pCsAQ;P@rZ_!0%g z8aDAvQa90?`!~(x-tEB8fKRs$ME6D$XkC;0*%Qz%BHg|)9I+`J++zHfLUr`!0`A?@*F~AB-p%k@=?z8-T`MvZ#knF;ZbxdhuF8@*=FK@rg1dBR;hdw^_@s! zpcUdKWDc1YGycBs1KuJ2j!QTwxAL9XF?PD}JGvRbcQQ=XcLwbrzpsON2JlOZx#^pp z*sT1^36n#7bGC1mU9$(#=xi+IX|(nH`m{^D(8-o z68^sP#J&#=!HziN(F5Uk^Oq_NB$H6Zw)r)6miU~7%Y$+FNp+c~FT}ny9O6KemU?_AG8UF5Cc)aKdc8Tz zNSb*+B)I<&huLjuSZrk=TD|yxMyEZT!({Z_nb^ z%IfsN_}(3MGxy4o@sBnd+FxDRftEjRxyN>bhObw!W`x-9jFD45%;Dt7Itie(BN9(_ z)Y3%(>j=y26iHS+@`e&(#rv}oZb*Lr^Y*8Du7*|d8(M_?Dzjq4b4Kc2mE)t(ns^ZrIV6}0;z*(Los~Y6l};zU!^4 z`>ZrSCt}FE#ShpVN;K{k%KLWuyAMuKejo1|Iqv?b_#s;MPU>BGnd;#pZRg3$hxz92 zLnQ5|_VI~M+M})NF3YJIr7Di?)uUs3*ktuk$cKX?lVkd|gAAi_^3=o2)g#Bfg-svM z+tuU4)kEmr6nfst!1E(*qa&<`69y?Vz{Fq(`Y$rN&cF`^P5%&n3~LA8xu3TAPH2yh z0YyWulBdkhr`32Z7@tmg@fmRZTk+`59{G1_`7*SIkFajN+TJ*e_RI}UwXsdWqE(m;)&bET!m z?$T6^VdHrV^SNva^$1Sc2za9J?e6s*NN52(b|F-9R7!97dWHO(0 zHdJ_@d&T$TbG>8BefaNq|6h^OEzf&+(vE+R`?VabUVExByqIWyetK2te0C+>LPBs; z_Tt8nxW!lHxCZ}%iGhVD?xyMSxj1D@Lg$|d{40BENDuxsW%ZFQw$*_DH4{U#^&bG~ zr`!0~*0$K})6Tb)M91e;cXN4HToKKrt9PRl7mU|`*8H!rUo~&}-^b(c3Smzk_+N`1 z>|)P@JM6C}d+vTY-zL@|kaA=Q3E+Pce&PSm2tQFaQWnxVt6(iMvdQc&l;OAkcl`5T zSs;_g7!;{PQ4!byZdoCclYe18eQ=UDr{A2Ypp zPaAQu`~QLPgULb?7&gaMP5zGvzr6!?O=}uS9rC7Mfgj4|{}O&~LlDEcrhlrU--NUA z2J1wDp!3SrE)?M>%ltHYr8gKw_!+tINU$3nhF+tpqK%<90S1!M!l>=f?6>+FqczIw zt#a&H;xQruGE9F&P}`r+-#-`$%E_EEsuVQtt#o?-QDxqYIQWSg|NKo+o0sq=m@a+l z?s@z9Znu?Eo2zKY`zW2o#sCm)Ck+(RytMhP9iA2OeW}C$g+2@O+4=q(PK#pfJk&D5 zZ|Ac(&}EfCui1X@->fK-lu(@s7e)AW3jtpGPXm~x{2BCqM;j3N38{e&xE0JJSU$c3 zzlBu~GBA*x1_e7ZXfO`AN;HKtJ~feWM^#1l7(4!0L&z5){B8MdV1BU?axew51SdTu3Hik*C7$xFY+#? zpzq(_>kpEewkg^aJlM~IZ3;sU*90dJx2V7 zO~6bAt3267q0qLXnxj>X$u`v|A*c>!kUVXTXssF4INswz_EGsmfa zQmDyQOBfh}L#-b89#s|Liztm zc*pZ87xw|XC9mTgOd{)G;MWz?7G?MJSxiwDF9# zJ+{3@Hf*Dk$3Lw&sZPTTZ#?ui_H@=iOYpBGwI)g!Gxig3ulBYpQofn-=8(F`gN;P z8REYXnx~!&!+plpi%z0P(&G=*GX;WKxPC$ePx`LPr4uf%Iequuem^7e;0hUV4y-H< z0@|5=!j>_6z`{|GBofDvBG?K5zS8>)#?S+SaB7~t2|_ke%u8%bj)w?%(t({zBdL;2 zF~I;y41bJ%fdJUs!D z`2_fU4_s@CoR)!(PexNuQIY;g#{~HRq0afA$vVQn(&Yx=IqUV3UTrx~1rix}&kLAWgGbMuZ548Rn}& zY3A3M{e(6>XmA*#m8Gkwre@^3m;8o1?;_$l3tZEUOM8jT0V9@Zzi_>;0;ipZGN%Af zH98+07}TSA$9(u*(@D6tXl?RG;i2&m@6z6x$73T1hN(bw-0OH;A#(;4c#7hFi)e^J_#XBjp8e}(&$q$>_BYPxAb{L+gCgT64gpHH@y5vYuBOw9BzuEumiF}S2X&A z&J+WT2x_V~jP|5;cQi(#Vdev-wnWmPvf)ne0!#yWTS=eDfRDq<^&1$OC%Zor9DB6s zsL)(#cMVzAc&~H>q$q_7pl#Opp4dN~5}7BvzjOX}*&awppqJrfa~x1)7)*^J&?phG z6ukTPC6WxcgLPFlg!|yBHjh~kb+u*K3m+sf-n2X347c3Ch|aTo-gpS;%1ibDwfHh4 ziAQeg6mw={O4Ff>iFH(08tsrbhP$9Mgh`X?`x9!$(&qTN0|Cu78rlw&9EQH{qm{cQ zm+@T?1p=^!DnVh~@n+*)3RCG9AM+j?Axdn<*WZebZtb`t(cqWLnaF`RXN>{aPlWBt z5Pi@zIWO|l>!(ZYCm~^EnTZ;z@80$H*nCr<$H)>?BZ#lHVj1YgfjbI3raeJT#5vTE z<^L)T(zAQzOooG6h3e5F zJ$2_#TAV*{eiWl$kJa;h4?wRY6(YEZ2L+PT^sfkxeWk)X6`rA76Fq|tR5||gaL!&W zGjkbyJxIXqcPbk!bCRR%8o|J?P`1lL@|QyJbz<7=CN|M1siy zYW>^a-iqAZ6n`(f^AP`iEQ`S1@^hHoL7qFXb^ng?zny1(DE?w~-)M?` zXRn-hBLwLq60e}zXUbAm)0_BxJW;Zy`1W>hBkX#j#>l|bJIvkU;I|nH?`xO!!hXX7 zOz^r2^N;@JeOsbx3A29K<{(1JeK16G2^4IDz(C1;`H0eAHhcP|kH9{yPt<|G&@ z69EA|=C11Tenpo7^jBs<#h|HPL&GOTTo?g$Xh921K~JwZ1j0ayZ@eGn2SJ6P%;{9{ zC;l2l!BXM=7Mj7|Nc0s-+2u>jK&^gi9(GEwkY97ShJg?6dV_(djUnwQwol#7M1f7u zJ*Y@9)Us6{17^PY4HqBAjMo=>wH@lbqo{TQe>cx^-~1jF?%~z?58G#IJVj4vF3;pJ z=^NzXA7T?8#Pl|Dhb3CiL+N*TJc{ij5dTI`Oq?E(H5jqF9g$}vC(jn?@GrJ+G9c7F z((50#Z{D4Xn4US4BI?JpsK!zmdbcS1!eA8}kJjJ8D7LR{hSpV%Nj@>Ue#dK+O$e7a zYy#sSwvQn6rI4@MKWty9>?69CnA-Um-`Z$osl)CuS4MJ~=#5g6^Yrw9JhogSX6Lk>unl^`td6L(MtCi!KXIgnun%4p?ds`wX zJmr8D@T4|@<;klz({!*lVY2CTtbV91S_TF~Mw(S*ilT2?Mh3Hax{(wRlhG4}_Zio| zDOeES)Xh9BpxZ_fe!}F*2R3Mu7mUCQRyYzcvE^2)ycFExqE`F5p`=vo>Fo+aEn%HU356rydzZXBr*{|b3>FAz9@hkv; zZSzOg1bM(kymrOBPP4pkZDze03F-RDG$<{PBcHGx=S)A}(j}8CBA0#;_ymxodzwdt zRrnRAM%qqIg#rGw@P6jnb8jJ2Cs3IltEi6v^O}Nwzew?M|`xUqD+j)N52f9#42&MW3%uo3Gu=Z zDJ$_R2;fE(qNN2rw}YatxiRyWurd%^+Lea13-f1|T5AM3-Z(h{%CZFj0zDSN=8t^R z%A`3Mau&&nzoHr1x!fp*y4-xoJhd5ZE4Pj$uQteI?m^2h_d^W(x!9>zpW39iR=jE# z?)D=yC|UrV-^p$S4uBdjw_K3g_wZm(Z81m_0AWzmTNDG6o>CsDbTxY zr{@c$m7WL06%Zi@@~{ojv|#P(8tCm4gskpS2n|};7*i;bk zP*+^BH%O!8zDeG9hAm^BEgs$k_k+zgvn@=V(E?GAQDZCx`lvA$JlloRu;)7i$86=6z$&%=*YBG2ms=3f8o9d)UT_Q z&t$H%mdQ3oL%Kk1JXJJggfEx6Lug2(@E^JF+y9XJP}3`1ra%JTE_oR>0rx!Go#4TL z3Km1$n z+xwT?2W#O5JTFhQfw+wF zDlLCSUVTmE`^uZ&yN8ndU_D()iT3eBWUTe^D7mjzphkG8QEw;#CHEnQivE%NN|gKb zIV#e#dh$?mpL*TPhKw?mAskW4f60B-=l1`S`@%Z~UWg8g2~^44zE{nMu)iBl#2F23 z9roi((16R&$wAH0hwkK3rlK|D+KXP(eCb~9Tf%W&86_{W?IT0UeaIrjEVz3pG3G#@ zQH93`XQG^IGyx^|sYjy8|AqUGIs~V}AMz?IdUR5{?Tf}hxIw2rWJ-)c&B}K$b%$|> zcO4!hQ}ScftY!B-f~C<@B&AdTlKTp{;C0JGM(g$V)Kjd+a1ND`?&TEjyFTy=IXvG} zFxq-pC6Hl-_l0-c@mAA}Xc-{qF&Fpuq2JSFb|7bh@he5BI=o6H=kd@0ni_VtM$ELl z$_)0?FS^`r`rKqj1a?=LGV%x@gnf3MDCd{gtSGnhP{-^w!=%&Uw2X1y7nL~)6x#={ z5`FcyxBc57Cx~fYi2UWeFLX}DOj23m+ZBrKgAZ~`=TfLof96<_jGq&;m`M|RpV37^ zJckxB_E+r-aAe!USTNstm|L`t5kOA*oQ+i8c~w`DK;R%M*itIfNJ=ZOk8KdEQO#RK ze~;rr-y^sF91;kD_K>5Z3g9b_MVnjaQlE8oa~GeZE%v#70qI#%{Isp^SmSVBhi9`?6ZG1aF477w!&f~-y)YzP;8&++FT43 zq!!(Ia?Mx)>%T6L@(hTJ_ao zDbbzh=A#$n;D=4gIfw%R()#_Tu?$p&V76*HtDL$Kopa@UQi{6}V`j&0p-gWV#Z6nJ$##naZuy;@JqMfgox`Vc(Xq{s2iL?-C z@wB^=GE2{1ve9+~$A)h>>()Q&eztSCn+4h9(STa?tQFJBz|@y&b76N1o$0EfX^Lgf zHhwgW!<$xX1ra~nX=V6((0pM#*iT$skD_p^!_pQCzVQ4U%rzb!Cql7(preBZU*NR^ z^9_paLvE&zfQrf!-gooo933`xuUb#7ZjNtliys~X?NVo&)*bCo@Wp_tY^2F?p5L*h znWRe3gXc}|U$$>row@PN#!bK50gCNAS%JP@!E`uuL2vFzeeBc{1ESQ^M*Qx8-`QU96OpmRW^vWAJ_6`7 zdEBJ|RX~6+bKX)y|C)VEc=B{{=dVAWb4mPy4XEPH?~gnq>G+iFYS)dV=W2TB7=Z3`{<9+d2b1DF zA|+yoUfzwO1gLA3_HzT8wQovYO^_)Z&4lh|CH9YO@gH`{(UAK;FVNBIxvu;)pjx~( zR}oj-HR$gjYsNg>dQDKjhL6rXNWX(0IXF{opx8cSIEw9yN3ngddz_Hpn|Xh{Yseu0 z3>3fjAFXZZUw+RdqR`Txe=U4BLR_HCe_0cM68x*Mc(KuHA#lt#*+5fG7fK)M{dySux)ySuv)X%G-4 zMA@Ui`+lB#@3r6Vwf0{7es}!=SDe>*9^cP#Imbfh;|+T&f#$`yFr1Qc?JNb{4pmNs zkYne)de%ptiVEA-1u~Bg{YTh#Do<~CPJ@<_%-}bTk`N9K`p@R=(w_GUWYrih3^a;Y zq><_uxM4IfxJG*V4zl^ZL!dIE{L;w@x?H*%X^CweP2Won}n&?}Wbeb*N;{M~!L zY^2K;iRk z+^a5mv7sVoWM-RQ%Yj!Jl4qMRH4g%+Xf!;*+&V)xeRuwTT|!PYT2E9ljdMl;a`v*+)-i0VZiowVzLYXdMJ48*E z<4f$z=$U@!=V&ibTwkDIuB&~i*Xww93PWJP8#0aDs9GynfSY!I({jwKdGozAXN@ID zyxk9D0Fi!v5gn%5W!FG7d3R0kdv78;`jnbRO0a{+>teDr7t`W{{M7mSg1nB-9I$Jc zx9rSQfr}}!kKW}1K08)%0wE~OHi!@Ft6Rp*eTnta2!+i$?6KBqf*>LSFR5-4K|iv z+pf2%Kevji+XA6G-m(z9w?7JAMD~;)lygnEda-v9G`#rGPNHd5m2Z1SY0K&`TiM+R zjF3Sm0lk4lh2?R!R;D0qjxS&ugSO|Rj~4X4#PNL;0A_ak-w{K3C^BOltn??pC5-ak zd6!P_9^12PTpE3weX04}uwT`ZiL*#z#NHyPNXp);I;^=F!5uA>_I){-$)vx1%8|&#~Rd;?o_7A^r_Ju$8?Ko1y zhka&sW$ozQ=WP9`X7G!u_mxBVBy8pd)JTgb{n5zIunv?m(F%w#ek_GyBRZviZzo{$ zz_wg0Zi2rI*LRrajeQzdTJtIe0B8ZbzDO)|H1ff2GXGpJ1}iKQR{5?MlW-!Wk|Mo@ zVXa0|nVTa464w+Yy{#bS0NR$O01*44*uEgOd*v)lJ^4P)cyxb;9d95E-a{pZhQSp` zt^vpvKLy&__j7I^z_uZ1Cva>g=We`R`2jJpDNH8JOwy~t0n1|?U$9!wUaJ;9mENW+ z@zfe!xMBY(hYb9Ud9 z&P+ZG#4ltlZeETnNH*~;Wr4LjQuLP$xmZ71vd~_@n%iqr zmlTmM1RHKQi#fUzV)X*mS3nCTUr5ElQW%{l2B@R!&-hL~Oh#fLzVPIyltin$pBtYPr8+V2`1^2I)ze1f z+JXUH+Ur~VSi0Y<=|Wjd_){M~NUVKKb9%<>6Dda!ay_uZbZ#O3TAPGk8izThilq>? zB!zugEK6jJ#jNkx&eS+s?%^J( zKh|0Q$k(&^Mbb^@h1agNl8&0mQ+g`U%-A#XW;hxv36(j_f9~o+*WA4W592L>Qmc5<*=@VL9qAcd0GIz@SJIf(v8UH#YCDy~UqdM?szHCWEv!x4q`aa&l_VBX=VCGt(PueRl>CvUmMb(12@hXTLC zQ?_dxM_*ma;Rf7ujgNzXc-@)c)Tf2*OLIJB>bw<+SeW6w)b+U`)s`V&8V`>kb^wuiz@9f*Ze7Zobl7uDvvK*n;xC@1-7k z{=(FKJ9knREeTe5zh+{~HF0|q$$0h{h4o2~qg(`9XK8Zr71(w%>W$=Al;Dl0qw0Qw z!us|~zuWu450{^sk=jDiaaGFQ3Ou#~A~>OB{c+Ip-UKg5gGjAC%WA&K0GT%L?FkbZ+0Nju1g za{4^JFkw|bWA~Ld>I9)|zMv|$?JJvTKXkH1?@I#n3}KI_!ajA|x^N1=3}zEcl+$-+ zAs>i6vE@QF=&Ld)q{ZrIY$o%v&>ajn(>B9bEc9Zn)PJ)ta3|<*rzPX5=7Dnhb`$); zU4GYD^dGPMML$}86bT%f;R*fY^kK*q2KZO{d$5DwWSSsF_=IHx;}a$P2c2m@-UCAh z1H&n3rDp|V77+J)4~bp}KiL5Xb5Tk-h{_$hgGHCGkrXLiHoPX;EMwGJu>S&Ytnv zxO^O+5A{1yC@|Bp_ z0O>42@CYba1{0Dwh`6y5kysQfkx_My0X2gL=s~ZHBW1%61Y#ASB=95;f|M$kB=owZ zdMu)}gCyf6IDZh-|GOWLx|jczccwESsxcXXNui4cg%Su>bEM4Fr#6VDQAMRRbHu;S zOlTJkRcU0o5OlB+C1F%R8}m⁣PdBfID`RI-w0FnY>S#rOfz@U|G0HfSN>2F(l_K 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/qmui_s_icon_switch.xml b/app/src/main/res/drawable/qmui_s_icon_switch.xml new file mode 100644 index 0000000..88d5ab3 --- /dev/null +++ b/app/src/main/res/drawable/qmui_s_icon_switch.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_button_enabled_text_color.xml b/app/src/main/res/drawable/selector_button_enabled_text_color.xml new file mode 100644 index 0000000..d2d763c --- /dev/null +++ b/app/src/main/res/drawable/selector_button_enabled_text_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_calendar_icon_pressed1.xml b/app/src/main/res/drawable/selector_calendar_icon_pressed1.xml new file mode 100644 index 0000000..f18bf57 --- /dev/null +++ b/app/src/main/res/drawable/selector_calendar_icon_pressed1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_calendar_icon_pressed2.xml b/app/src/main/res/drawable/selector_calendar_icon_pressed2.xml new file mode 100644 index 0000000..bf6cf78 --- /dev/null +++ b/app/src/main/res/drawable/selector_calendar_icon_pressed2.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_dark_check_gray_bg.xml b/app/src/main/res/drawable/selector_dark_check_gray_bg.xml new file mode 100644 index 0000000..b2cc4a8 --- /dev/null +++ b/app/src/main/res/drawable/selector_dark_check_gray_bg.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_fence_circle_shape.xml b/app/src/main/res/drawable/selector_fence_circle_shape.xml new file mode 100644 index 0000000..b946ef6 --- /dev/null +++ b/app/src/main/res/drawable/selector_fence_circle_shape.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_fence_rectangle_shape.xml b/app/src/main/res/drawable/selector_fence_rectangle_shape.xml new file mode 100644 index 0000000..edd1d7d --- /dev/null +++ b/app/src/main/res/drawable/selector_fence_rectangle_shape.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_gray_icon_switch.xml b/app/src/main/res/drawable/selector_gray_icon_switch.xml new file mode 100644 index 0000000..5395027 --- /dev/null +++ b/app/src/main/res/drawable/selector_gray_icon_switch.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_green_yellow_btn_state.xml b/app/src/main/res/drawable/selector_green_yellow_btn_state.xml new file mode 100644 index 0000000..3c7d5c9 --- /dev/null +++ b/app/src/main/res/drawable/selector_green_yellow_btn_state.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/selector_history_point_check.xml b/app/src/main/res/drawable/selector_history_point_check.xml new file mode 100644 index 0000000..bd35d4d --- /dev/null +++ b/app/src/main/res/drawable/selector_history_point_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_history_point_rb.xml b/app/src/main/res/drawable/selector_history_point_rb.xml new file mode 100644 index 0000000..ccd594a --- /dev/null +++ b/app/src/main/res/drawable/selector_history_point_rb.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_history_track_check.xml b/app/src/main/res/drawable/selector_history_track_check.xml new file mode 100644 index 0000000..05c26b8 --- /dev/null +++ b/app/src/main/res/drawable/selector_history_track_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_history_track_rb.xml b/app/src/main/res/drawable/selector_history_track_rb.xml new file mode 100644 index 0000000..ea0973e --- /dev/null +++ b/app/src/main/res/drawable/selector_history_track_rb.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_home_data_gray_pressed1.xml b/app/src/main/res/drawable/selector_home_data_gray_pressed1.xml new file mode 100644 index 0000000..ee885a0 --- /dev/null +++ b/app/src/main/res/drawable/selector_home_data_gray_pressed1.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_home_data_gray_pressed2.xml b/app/src/main/res/drawable/selector_home_data_gray_pressed2.xml new file mode 100644 index 0000000..2cb6e16 --- /dev/null +++ b/app/src/main/res/drawable/selector_home_data_gray_pressed2.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_home_data_gray_pressed3.xml b/app/src/main/res/drawable/selector_home_data_gray_pressed3.xml new file mode 100644 index 0000000..3c2fb76 --- /dev/null +++ b/app/src/main/res/drawable/selector_home_data_gray_pressed3.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_man_check.xml b/app/src/main/res/drawable/selector_man_check.xml new file mode 100644 index 0000000..3821c00 --- /dev/null +++ b/app/src/main/res/drawable/selector_man_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_payment_method_check.xml b/app/src/main/res/drawable/selector_payment_method_check.xml new file mode 100644 index 0000000..fa5481a --- /dev/null +++ b/app/src/main/res/drawable/selector_payment_method_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_pet_type_switch_check.xml b/app/src/main/res/drawable/selector_pet_type_switch_check.xml new file mode 100644 index 0000000..538b227 --- /dev/null +++ b/app/src/main/res/drawable/selector_pet_type_switch_check.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_shape6_gray_bg_pressed.xml b/app/src/main/res/drawable/selector_shape6_gray_bg_pressed.xml new file mode 100644 index 0000000..f100353 --- /dev/null +++ b/app/src/main/res/drawable/selector_shape6_gray_bg_pressed.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_shape8_white_bg_pressed.xml b/app/src/main/res/drawable/selector_shape8_white_bg_pressed.xml new file mode 100644 index 0000000..dd4d6ee --- /dev/null +++ b/app/src/main/res/drawable/selector_shape8_white_bg_pressed.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_share_icon_pressed1.xml b/app/src/main/res/drawable/selector_share_icon_pressed1.xml new file mode 100644 index 0000000..55ca52e --- /dev/null +++ b/app/src/main/res/drawable/selector_share_icon_pressed1.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_share_icon_pressed2.xml b/app/src/main/res/drawable/selector_share_icon_pressed2.xml new file mode 100644 index 0000000..646f771 --- /dev/null +++ b/app/src/main/res/drawable/selector_share_icon_pressed2.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_transparent_pressed.xml b/app/src/main/res/drawable/selector_transparent_pressed.xml new file mode 100644 index 0000000..847cbd0 --- /dev/null +++ b/app/src/main/res/drawable/selector_transparent_pressed.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_woman_check.xml b/app/src/main/res/drawable/selector_woman_check.xml new file mode 100644 index 0000000..a73f351 --- /dev/null +++ b/app/src/main/res/drawable/selector_woman_check.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_yellow_check_gray_bg.xml b/app/src/main/res/drawable/selector_yellow_check_gray_bg.xml new file mode 100644 index 0000000..ec6dda7 --- /dev/null +++ b/app/src/main/res/drawable/selector_yellow_check_gray_bg.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape100_yellow_color_bg.xml b/app/src/main/res/drawable/shape100_yellow_color_bg.xml new file mode 100644 index 0000000..4ed8053 --- /dev/null +++ b/app/src/main/res/drawable/shape100_yellow_color_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape10_feedback_dashed_gray_border_white_bg.xml b/app/src/main/res/drawable/shape10_feedback_dashed_gray_border_white_bg.xml new file mode 100644 index 0000000..5f778fb --- /dev/null +++ b/app/src/main/res/drawable/shape10_feedback_dashed_gray_border_white_bg.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape10_white_bg.xml b/app/src/main/res/drawable/shape10_white_bg.xml new file mode 100644 index 0000000..44544b8 --- /dev/null +++ b/app/src/main/res/drawable/shape10_white_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape10_white_border_gray_bg.xml b/app/src/main/res/drawable/shape10_white_border_gray_bg.xml new file mode 100644 index 0000000..bcc72e8 --- /dev/null +++ b/app/src/main/res/drawable/shape10_white_border_gray_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape10_yellow_bg.xml b/app/src/main/res/drawable/shape10_yellow_bg.xml new file mode 100644 index 0000000..7d57316 --- /dev/null +++ b/app/src/main/res/drawable/shape10_yellow_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape12_gray_border_white_bg.xml b/app/src/main/res/drawable/shape12_gray_border_white_bg.xml new file mode 100644 index 0000000..0e4c848 --- /dev/null +++ b/app/src/main/res/drawable/shape12_gray_border_white_bg.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape12_gray_white_bg.xml b/app/src/main/res/drawable/shape12_gray_white_bg.xml new file mode 100644 index 0000000..649995a --- /dev/null +++ b/app/src/main/res/drawable/shape12_gray_white_bg.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape16_gray_color_bg.xml b/app/src/main/res/drawable/shape16_gray_color_bg.xml new file mode 100644 index 0000000..05b918e --- /dev/null +++ b/app/src/main/res/drawable/shape16_gray_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape16_white_color_bg.xml b/app/src/main/res/drawable/shape16_white_color_bg.xml new file mode 100644 index 0000000..e23ec95 --- /dev/null +++ b/app/src/main/res/drawable/shape16_white_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape20_gray_bg.xml b/app/src/main/res/drawable/shape20_gray_bg.xml new file mode 100644 index 0000000..f42e09f --- /dev/null +++ b/app/src/main/res/drawable/shape20_gray_bg.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape20_white_bg.xml b/app/src/main/res/drawable/shape20_white_bg.xml new file mode 100644 index 0000000..e65213b --- /dev/null +++ b/app/src/main/res/drawable/shape20_white_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape20_white_half_bottom_bg.xml b/app/src/main/res/drawable/shape20_white_half_bottom_bg.xml new file mode 100644 index 0000000..e8063fc --- /dev/null +++ b/app/src/main/res/drawable/shape20_white_half_bottom_bg.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape20_yellow_border_cyan_bg.xml b/app/src/main/res/drawable/shape20_yellow_border_cyan_bg.xml new file mode 100644 index 0000000..4faa920 --- /dev/null +++ b/app/src/main/res/drawable/shape20_yellow_border_cyan_bg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape22_green_yellow_bg.xml b/app/src/main/res/drawable/shape22_green_yellow_bg.xml new file mode 100644 index 0000000..8f3bc5e --- /dev/null +++ b/app/src/main/res/drawable/shape22_green_yellow_bg.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape24_white_bg.xml b/app/src/main/res/drawable/shape24_white_bg.xml new file mode 100644 index 0000000..8659e1b --- /dev/null +++ b/app/src/main/res/drawable/shape24_white_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape28_yellow_bg.xml b/app/src/main/res/drawable/shape28_yellow_bg.xml new file mode 100644 index 0000000..20343dc --- /dev/null +++ b/app/src/main/res/drawable/shape28_yellow_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape30_gray_white_edit.xml b/app/src/main/res/drawable/shape30_gray_white_edit.xml new file mode 100644 index 0000000..33a30e4 --- /dev/null +++ b/app/src/main/res/drawable/shape30_gray_white_edit.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/shape30_white_edit.xml b/app/src/main/res/drawable/shape30_white_edit.xml new file mode 100644 index 0000000..346c9b9 --- /dev/null +++ b/app/src/main/res/drawable/shape30_white_edit.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/shape30_white_half_bottom_bg.xml b/app/src/main/res/drawable/shape30_white_half_bottom_bg.xml new file mode 100644 index 0000000..367dbde --- /dev/null +++ b/app/src/main/res/drawable/shape30_white_half_bottom_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape30_white_half_bottom_shadow_bg.xml b/app/src/main/res/drawable/shape30_white_half_bottom_shadow_bg.xml new file mode 100644 index 0000000..88c9241 --- /dev/null +++ b/app/src/main/res/drawable/shape30_white_half_bottom_shadow_bg.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape32_black_color_bg.xml b/app/src/main/res/drawable/shape32_black_color_bg.xml new file mode 100644 index 0000000..f5a719a --- /dev/null +++ b/app/src/main/res/drawable/shape32_black_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape32_white_color_bg.xml b/app/src/main/res/drawable/shape32_white_color_bg.xml new file mode 100644 index 0000000..a827c4e --- /dev/null +++ b/app/src/main/res/drawable/shape32_white_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape36_drak_green_color_bg.xml b/app/src/main/res/drawable/shape36_drak_green_color_bg.xml new file mode 100644 index 0000000..9c60d8c --- /dev/null +++ b/app/src/main/res/drawable/shape36_drak_green_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape36_gray_color_bg.xml b/app/src/main/res/drawable/shape36_gray_color_bg.xml new file mode 100644 index 0000000..c6eec75 --- /dev/null +++ b/app/src/main/res/drawable/shape36_gray_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape36_green_yellow_bg.xml b/app/src/main/res/drawable/shape36_green_yellow_bg.xml new file mode 100644 index 0000000..618e3fd --- /dev/null +++ b/app/src/main/res/drawable/shape36_green_yellow_bg.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape40_black70_toast_bg.xml b/app/src/main/res/drawable/shape40_black70_toast_bg.xml new file mode 100644 index 0000000..f96bf99 --- /dev/null +++ b/app/src/main/res/drawable/shape40_black70_toast_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape44_gray_border_white_bg.xml b/app/src/main/res/drawable/shape44_gray_border_white_bg.xml new file mode 100644 index 0000000..76c3735 --- /dev/null +++ b/app/src/main/res/drawable/shape44_gray_border_white_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape44_gray_yellow_bg.xml b/app/src/main/res/drawable/shape44_gray_yellow_bg.xml new file mode 100644 index 0000000..9ab0cef --- /dev/null +++ b/app/src/main/res/drawable/shape44_gray_yellow_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape4_gray_border_white_bg.xml b/app/src/main/res/drawable/shape4_gray_border_white_bg.xml new file mode 100644 index 0000000..4b8e2a1 --- /dev/null +++ b/app/src/main/res/drawable/shape4_gray_border_white_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape50_white_half_bottom_bg.xml b/app/src/main/res/drawable/shape50_white_half_bottom_bg.xml new file mode 100644 index 0000000..53cf1de --- /dev/null +++ b/app/src/main/res/drawable/shape50_white_half_bottom_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape50_yellow_color_bg.xml b/app/src/main/res/drawable/shape50_yellow_color_bg.xml new file mode 100644 index 0000000..b061d6e --- /dev/null +++ b/app/src/main/res/drawable/shape50_yellow_color_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape6_blue_half_bottom_bg.xml b/app/src/main/res/drawable/shape6_blue_half_bottom_bg.xml new file mode 100644 index 0000000..74b7b5d --- /dev/null +++ b/app/src/main/res/drawable/shape6_blue_half_bottom_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape6_gray_border_white_bg.xml b/app/src/main/res/drawable/shape6_gray_border_white_bg.xml new file mode 100644 index 0000000..1d56a49 --- /dev/null +++ b/app/src/main/res/drawable/shape6_gray_border_white_bg.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape6_red_bg.xml b/app/src/main/res/drawable/shape6_red_bg.xml new file mode 100644 index 0000000..0af7936 --- /dev/null +++ b/app/src/main/res/drawable/shape6_red_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape6_yellow_half_bottom_bg.xml b/app/src/main/res/drawable/shape6_yellow_half_bottom_bg.xml new file mode 100644 index 0000000..210c836 --- /dev/null +++ b/app/src/main/res/drawable/shape6_yellow_half_bottom_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_black_bg.xml b/app/src/main/res/drawable/shape8_black_bg.xml new file mode 100644 index 0000000..c3672df --- /dev/null +++ b/app/src/main/res/drawable/shape8_black_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape8_dark_border_pale_yellow_bg.xml b/app/src/main/res/drawable/shape8_dark_border_pale_yellow_bg.xml new file mode 100644 index 0000000..ed5c1c9 --- /dev/null +++ b/app/src/main/res/drawable/shape8_dark_border_pale_yellow_bg.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape8_dark_color_bg.xml b/app/src/main/res/drawable/shape8_dark_color_bg.xml new file mode 100644 index 0000000..45e339a --- /dev/null +++ b/app/src/main/res/drawable/shape8_dark_color_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape8_dark_gray_border_white_yellow_bg.xml b/app/src/main/res/drawable/shape8_dark_gray_border_white_yellow_bg.xml new file mode 100644 index 0000000..f2e6570 --- /dev/null +++ b/app/src/main/res/drawable/shape8_dark_gray_border_white_yellow_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape8_gray_bg.xml b/app/src/main/res/drawable/shape8_gray_bg.xml new file mode 100644 index 0000000..dfcc015 --- /dev/null +++ b/app/src/main/res/drawable/shape8_gray_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_gray_border_transparent_bg.xml b/app/src/main/res/drawable/shape8_gray_border_transparent_bg.xml new file mode 100644 index 0000000..d1c3727 --- /dev/null +++ b/app/src/main/res/drawable/shape8_gray_border_transparent_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_gray_border_white_bg.xml b/app/src/main/res/drawable/shape8_gray_border_white_bg.xml new file mode 100644 index 0000000..7bddfed --- /dev/null +++ b/app/src/main/res/drawable/shape8_gray_border_white_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_gray_white_bg.xml b/app/src/main/res/drawable/shape8_gray_white_bg.xml new file mode 100644 index 0000000..81f2fa2 --- /dev/null +++ b/app/src/main/res/drawable/shape8_gray_white_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape8_gray_yellow_bg.xml b/app/src/main/res/drawable/shape8_gray_yellow_bg.xml new file mode 100644 index 0000000..a15b699 --- /dev/null +++ b/app/src/main/res/drawable/shape8_gray_yellow_bg.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_red_border_white_bg.xml b/app/src/main/res/drawable/shape8_red_border_white_bg.xml new file mode 100644 index 0000000..0ac3423 --- /dev/null +++ b/app/src/main/res/drawable/shape8_red_border_white_bg.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/shape8_white_bg.xml b/app/src/main/res/drawable/shape8_white_bg.xml new file mode 100644 index 0000000..d83693f --- /dev/null +++ b/app/src/main/res/drawable/shape8_white_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape8_white_gray_bg.xml b/app/src/main/res/drawable/shape8_white_gray_bg.xml new file mode 100644 index 0000000..72547e9 --- /dev/null +++ b/app/src/main/res/drawable/shape8_white_gray_bg.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape9_red_border_reddish_bg.xml b/app/src/main/res/drawable/shape9_red_border_reddish_bg.xml new file mode 100644 index 0000000..6655956 --- /dev/null +++ b/app/src/main/res/drawable/shape9_red_border_reddish_bg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_back_ciecle.xml b/app/src/main/res/drawable/shape_back_ciecle.xml new file mode 100644 index 0000000..1fbd584 --- /dev/null +++ b/app/src/main/res/drawable/shape_back_ciecle.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_black50_circle_bg.xml b/app/src/main/res/drawable/shape_black50_circle_bg.xml new file mode 100644 index 0000000..7dac48a --- /dev/null +++ b/app/src/main/res/drawable/shape_black50_circle_bg.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_black_circle_bg.xml b/app/src/main/res/drawable/shape_black_circle_bg.xml new file mode 100644 index 0000000..1243471 --- /dev/null +++ b/app/src/main/res/drawable/shape_black_circle_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_home_route_calendar_bg.xml b/app/src/main/res/drawable/shape_home_route_calendar_bg.xml new file mode 100644 index 0000000..37b336a --- /dev/null +++ b/app/src/main/res/drawable/shape_home_route_calendar_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_light_grey_bg.xml b/app/src/main/res/drawable/shape_light_grey_bg.xml new file mode 100644 index 0000000..5af127b --- /dev/null +++ b/app/src/main/res/drawable/shape_light_grey_bg.xml @@ -0,0 +1,8 @@ + + + + + + + diff --git a/app/src/main/res/drawable/shape_progress_bar_style.xml b/app/src/main/res/drawable/shape_progress_bar_style.xml new file mode 100644 index 0000000..305d9bf --- /dev/null +++ b/app/src/main/res/drawable/shape_progress_bar_style.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_red_circle_bg.xml b/app/src/main/res/drawable/shape_red_circle_bg.xml new file mode 100644 index 0000000..2ed3c1b --- /dev/null +++ b/app/src/main/res/drawable/shape_red_circle_bg.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_seek_bar_style.xml b/app/src/main/res/drawable/shape_seek_bar_style.xml new file mode 100644 index 0000000..05b2708 --- /dev/null +++ b/app/src/main/res/drawable/shape_seek_bar_style.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_transparent_black_bg.xml b/app/src/main/res/drawable/shape_transparent_black_bg.xml new file mode 100644 index 0000000..6335cc7 --- /dev/null +++ b/app/src/main/res/drawable/shape_transparent_black_bg.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/shape_verify_edittext_default_bg.xml b/app/src/main/res/drawable/shape_verify_edittext_default_bg.xml new file mode 100644 index 0000000..fc7a21b --- /dev/null +++ b/app/src/main/res/drawable/shape_verify_edittext_default_bg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_alpha_circle_bg.xml b/app/src/main/res/drawable/shape_white_alpha_circle_bg.xml new file mode 100644 index 0000000..9270c03 --- /dev/null +++ b/app/src/main/res/drawable/shape_white_alpha_circle_bg.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_circle_bg.xml b/app/src/main/res/drawable/shape_white_circle_bg.xml new file mode 100644 index 0000000..dcc8e0e --- /dev/null +++ b/app/src/main/res/drawable/shape_white_circle_bg.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_cyan_gradient.xml b/app/src/main/res/drawable/shape_white_cyan_gradient.xml new file mode 100644 index 0000000..765c568 --- /dev/null +++ b/app/src/main/res/drawable/shape_white_cyan_gradient.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_gray_circle_bg.xml b/app/src/main/res/drawable/shape_white_gray_circle_bg.xml new file mode 100644 index 0000000..3c6a824 --- /dev/null +++ b/app/src/main/res/drawable/shape_white_gray_circle_bg.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_yellow_circle_bg.xml b/app/src/main/res/drawable/shape_yellow_circle_bg.xml new file mode 100644 index 0000000..430ea6a --- /dev/null +++ b/app/src/main/res/drawable/shape_yellow_circle_bg.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/share_default_bg_image.png b/app/src/main/res/drawable/share_default_bg_image.png new file mode 100644 index 0000000000000000000000000000000000000000..b833ec70d39e94dc14de315da9cdd4f8391ddb49 GIT binary patch literal 273272 zcmV(^K-IsAP)xK_;19HQi^v&73p;|2NEE=+l*zl}R!)xs$Il%Wh}8`ZLvIF7smhd2h?Iv$_7g*8MZS$979>KHhh|hIyX&-ML;{suz>$duzc@ z-EYOUWIH?`>QC)Ir6c6I+{sn>Q>uW8}ISDUTyM2k)HuD+h^z`j)5 z0c}z5ZAD+NZG*pYpfdE!!Ztp!jZ6JW3HQ9O?J!$ryY#k6b>EchQR*|9%fV{%@E-Q{ z{bgNw6-fuJ$2-=xs_nBLbbs|6slL`dCEgFNpw#D49}4di&nTtYuS|m#=S7>Z^}ENz zYKOzY9-p4<@v-)SCp`OlkM(&x*M4xU{erLS1(&SG$1_7$&g|0~n;CtI_g&amR`zwB z^R#B)*MD+izb$Gl_1|&u1rXr(q`SJZ zIcqluW(*ul?Y@fnq~ULjeI~IZ*UpZPZ34WKil59lxQGkvl{jA_5NN=g?QbgBEH@Q+ zj<(-tt7FVCzYz>8Sm5g?4D@=qX_+f%F8qyS%@stZ`eOjG6<3vcQUKH8c+_ME_^N$o zuHZM#0w|j_DdE_--qT5g|9Cjs$_uCngpykDA~Phi6W9r=uo5K6~_~+U{yMfoCCcNkeZQh(tep10Fu% z+&Xak4kn-mPDRgY8G$vx_Iv=n*rtAS8$9s0OB*4!Irf)^^=qem{j+q&Hec-V>US^w z{qptL*wIE8j)e|10LaCyG}PR_e&yQu+Ag27b>s$9KM-ikk6^gw-C(5tam;eoFX9~S zd`7m?(X?#$wbCXoKU@RvsRTqjuP*=~-8mTznARl5&37^QD?kEV_??7-dqc3Q*h3Zu z#tJ|@uK4as=3-!)9FV#;0C6I^Rv@Uqj~KA^_o)=JXR#mki)8_`opcYg7%R^MR*dgd zpgmN;%>dj|c>O0Z=L4A9)R-%87Hqd($PVo=<7OuZ^D<0H&ZGQMtVM$z*ASBiCX582 z9jy$u+1Mvi>qp7qHjMyc+h?210UH($uG6edf<=()pZg@}&jgbSCJ@~Bj0tMidC*P( zyR|Y}OdzmKN^M&_H+%<{NJ$ItBLR4qou<9w=Pl;#FzGneWI5K!5N-YRbRfgU--iRN zfFcHt@4+%)M@c>wG@*hqmo^)z4`v$}EIwK_F|bEQS9WF`-G1DEIUmI3#UC#>?H?$9 zc@STEKbige*p$6?O|KpI>j0&c>%bll^Za;yA{_3!Z1;J&^;vUl%Q#G%noMiMl|h7R2S==`e@qh}+MU*Ol`3i*oz~fz zwIra^dZKmHd4mWTCQD3)0NUs0XUPU+v|aYHn8gEX*C{2YV#SV8x>nyJNSYXPpCys(kuh)XT zrUYoO>JSf&o%04NUqT z*!aHcyMT7I4f-%Xr2rH3#4H2V|u=Z3ZbQ-y`W`_T{XnJ1XM zS75@)i+Tz)<5l1#&RI3)+V+|NYWt;?asb%yIsh*B%>q^eGA7c4?~{v9N~y^ZxkP_T z)(L28?9`m0_P#mUFugfR(!|VeU_nG;JjjwLWa@5*^ntL!^NSm`3EK{?{yJ{?<=^Qw zJhRt9^;JP)V1>c9MuY3M@0Jl1(u>3Pzo(IB7TcQ9+i&Q$U%8hJIA3bN(mvDmZ-FZf zSD$>)>5@uog-deC`FrvDHMRb=tqearzqd;o+9#g*$XxZE(y!Y)uS{w0y3RZVxS_*p zu*~dBg@9#rUW)1DYCa~DCYPQ0z@*I1axt<5-buP`c7|Jj4q%=5StTjZF=8}wvdqa`yA%k(lnn+8Q+nrm?1J9} zRBx-P52_gciD0{xk}(ZNX#8eDbKBm$t#K`CYWaI%;vxdTQ<2 zmAXmVz3F-7RmUn>SF4FJo@G8GE)JFi>s8LtqMwio$l5vUbaX+xk?H1+DUukvUkfjn zQLh~}-0PcrBY%iS*tYT-4%w@8^tF%9z89ULxFh4WZMtwTo$(KBjcwc8CWkZT3Shq0 zh7pNyevbZq|C_Amb#|(A>G!mm(8|U3AMfw-@xFcw9Xr^Yr5P8fZ%bWl$Y0y1lx zyM?&CYTD2a3r96B&d=d9fUPJ~m5j16D z<98CMLQYr`L1|Zi@4$G|O!hwG_3Zlaq&6=;p-t}CE0Y{!8qcnu(#bZv6(sOg$C)`v zK;z8-KRfwzoO%AVvKa`th&qXWAHZua@yx4!lZ#D0v6up2aIawecy5fcaLHkY4vk3( z76%`pTNMuOr+Q38lF-}F9lE8%XSAMtG7FN`ArO%mF)5+%NDY}|WN1Rj?$NWZI7_3| zL?L!8ZC;&sqD(>3KY)C0)=yTHi}{%FVJ@sL?DLDXmNE>Y*y(kkDsEm3!_UsY@&b(d zbgO1b=f}K$&ex(QI>3$`Jpf@c`x1_yGuzaz(9(+?w{6wK=!W|;K}k2e&f4L{t&GP! z+qbbm8vuS_?=gszSWsy!H*N2$ynM#7U2NIj5iWnJc?ERGr6aF1&whQ$KZ}8i0nYY< zZs+DQSZT#bM`@%RLP01rAIXgS_l_U)OH zolVf63y(+5x@1K-_;Xk$2cn{W$nYn@69JSCFg!~?hNX})68q#_osmy!*Jg`=^^7m%_f zt;7jl5|2XovWE-mx}2l({Zo;nRiLfNjUXK8bE~(Htd+o}B<63D!!B-L4h#DlR&>F% zy)b_Ny^gd7kST7mv-X(5u3w?`!4U72%TWj~&pDjOayQYFH6t&s>%}>L#CFv|Y1Y_A zvUA4ljJ%ZV$9QF;?9<40JHLmJrr1k;QkVwDyO~Ur02TvmcBueh1M|84n71RpH<2mQ zGH`HXI2b?$EEDX3%y8xaz<@(s?YxL_P>*#}U5$~*o@}D6**=@*;;b04qNjGvD+lM= zSWDsP5qR_7@-XpEiZVzZ^0bSIS{U8iH)$Z!2}tIb-BBi%&z~K@qdL;|i|rTbj*LT{ zlMTVier!$iQvy?+Il16k%A^=$eXcMshPE{Z9M_G9k|kx7P_0D{!dwQRXzq~I66_K% zkC=rtVEd!xGX20wD^!4 ztg&J-(9+DF)}KvW;rQxgzdG8(02-BdX`g6Y?Cv6Y4b-)LcuOW3r^0U z71oy(7_B&6?<2Sdf1Afqwf(h>1@Ai%BFYJ7w?CY$N2F1)EsEW z_V}_!-p_LB8q?W67mt;;SHJ0~>E)emtc~+G+WYDJAl96D4kl!@lUQG9lWijOI8_U8 zZ`J@8h*W?SIxvm;x?G4?l#cEIE@O(BgbIUr55g=4Baz!oxE#HTX3fuJNHjyRA;vweabCsmo| ztKx}sb|#vdi7ZArj5Q0T))*lo)|VO^%swkagtcrmDv*L62T7> zBv?8fo5)NEWWHqZ@ z`0U~s|AE^%um-q&<=5>c5KiSBgsmMrI^5>_*2cuyY}~)ag?)gFV2(BUYxh1-@dfW9vLyY)~Ptr)Y3J{_u22&W|L?0B#$kfve+Q^b?T$ud^g`ZG?hO~(9~myS>`CA{tKIIZ9=t~i?wmX>wluStb3|x@{v4Ue zfY&_XEMSd{j(B##Zp*xV$n99}+#=APJiN+*3+-sO@_-aDDXMr~)e#7I7ED^;FGiVP+*6C9h<-zW?$5Qj zC$Fr<0arTm$yqLd^BF7~F}&;A?n9Q+%E^Fkhb=zT3@(m&ej#BAl&_7K^Y=v7BfiwKXFUW;qNYBjAU?s>}|hx30R!=o`h4+rz*X z2V765P2t~ipbDKyFy&VDj4xl!DR0h9{2nXJ!Wv6HRof94XO7%ra7hi_03Y zR$6BaAWrVg#k2B>MInO$wnfnqt}mamHGQ_|$tt|i%G!a_ zaB8(dd(CMkME~0DV(66rBdT2}*SF^4)X5yzHbZuUy6!+RnF;wQt6iK5f6RPi7ZB8!jiEzu9!x^L8(d#g5wS_OPz? zIzx!M2KX<^jA($Q2DtoIge=8Cb5mX{D#EXPa^OMqx59Jy;F)|7Koe05s3iadnTvbt zbM_$m#Ha}2rwZPHkxY}~HD~UptS}1=y#X{S9pi3Gp2?8;t1uZW4IezrKVaF#uJ;JvwgP=>hMIA1B7=UIkl0T~2Yb*MG)`1Ht{ z5Rr)ms+TRrp(b29RHHjiyOKg?~&*BPWG+iIOTS%owIM_X#sij_ZXtj`pI2 zV483lpjHn8T|aCiZvD9m0uP49vlQZBetZY#@Ezz>@>9fETKXW`vZU8g>J<*=W~NsOV^x}E}JeM7LVt;*73ov2j053EX_aqH2yJpBiOD^h; zHM#YNNm5RU2)`0zn4CQnM2cFna0I#>;n!cQO(e+1-EsskI4fCW7t>?pYWs(PbeyTr66j^ig z&`YltyUjqO~}7%dmn{h6<3XT=TW4eD$i zc=-&G)cIZua4UA1!4b3~#_`oHxBcUYjzup3I|BD#Oh%ilnO*w~bJ_WGfaqmSz^pOt z%U66Z^^AX$Ioah|pxEUEifH%t%u;a(b;jX+B*OGC&~ghkOmtunXo>><eJPVA$&L9y?s5s_~KavMn zjE1!l7N+5<872q$)cO)wD?bPOIz^V-q)Ffe@I-l?M+R~S=^ULja zfsHpaI1bd^dg??1y6pv=zjj8NQp4lP9V6oaX}Hx+*aOVneI*=Cde6Futqdw^z#6>C zkJ%h3oRgrB&SG26rpn|xTvlJ5-OS(i3neJXYFa%`)g!5x{+i75M_baz>Sj5aQ#IKI z-g6I+!dGWye(TCH{97y$+hdGb74WZ1a@DR2C9 zWw!9hqdxFSVNn9$lReeXpUOGl3iM75c+#L-y0eH^zBKPVU;873Mw(7#NGd7TDNq?u zV*p(9bY2Txw+#1cFTUH4+qzAAovky__6-8;I<%V&pxUu}l(Jg?^mtm^oZAoEW}q{o zmAc)yTm!4ufig}Qn&~<4Mx#dTV|G)l*lXKs=L|}I?RyvRe#^|R zX!q7ZJb7(8TDy3H1OJRLDN&wNIq@ay3iyx2 zzKDpBNt~ihz+NXYo0*cqs!%Ed?u6twUMZbX?m?ROJ7v*%itGfT(-RON4KV2se z$_Q{%sGUkKB07Q0%K=FhvsSWKmL)_HA5Sb@-xk@^S6xOGVm{Xx@!=DlEluop59}yGg6ZOZCnx+}fq^RA{SZVGPWc+U6I=&Z^e3P^q zEVpCv8qQvefht0#SwHPFP1>i^I&_^gkazOEW!o>u&iPm@e(lRO_VlV59#f_b`eGEC8V%-n414IUsY z4bPfabv$Bdwk7sGW1(NN6he#r(kyf7crDy)bBD!7No0!QGyt6LU>ZPp`#adrODn)E z%&z1O7(I$0&hV-jzN*-z!I0g`SsbMLWXl9M9&qww4(xCoplvdkyd)oXL-g%T1Zl-{ zcx|Okrpc>el@c7>%~MNFcb4p>tSXjFL>ex=;RjyV>_4jCp>VATmKTfkTDH1EFAyG+ zDI9%?at6b^i;Q%5{a3F!Kvudcqzz2n2>7l`g2f(Ass#W~{7IzznAP5J6dmZTPyE4g z!$HPuuN)yy=E(qg06}-;StlSI?O9H-&N}@V&Ee>PISq+1Ap>MhwhSRm9a3cHME7)E zy!BXTqh^D36X2c(0Pp>y_0_l+zt}E~Dub>As6rRQf*N~v8jls%u(=+)4!G9`c(y*= z98}ZUY18@Vy5Y&v7lGsAwb;L7OX&+~%Hyv6OjB$84!AG&FV-qDg}lJCbz$15_$>sz$<r+G_|$NEBJHKdG+a z4$LqW*FD!3cdXV4sb=b+nmf2gNLh=#Xsj_e;&FZKCT37QQX^u>M+pvskN{{m{3 z?LOVJduhkv9E}N_pD;U1i~z3}-PQpr^>C{ADpM?@KlEo9B((Vc%~BxfCJ#uEL#*TJ zz+wT=o@FFfRJ`B8VYRk+*l9kK!TdUdxw5LB6ul5?Up-cwdnOqYSmltCsb#6Ju+WG%ofVmY?5^ z4Zodu>n^9{*3I_*&~<_W0gcY+rJirC0W!(iWK8e3LGJcYH6sc(+`=wyRq8kJ!%dS8cVu61^L* zU!GS3W|-Z}_WQy>mjOiiETTcCk#z)XYe3g7vfpzWt|4`)hsW|(FChgClYIkS6q1>p zd17Fs?95u-c}!3&J2+%lj5tYXebmmwr! zp!m63?Bq!zlAPtAQ6`l$-P~&rvt=EOInRWQV7W;T@g!RCzik;|_PK33@7Im!_%+ze zEhTF!UxZ&I3I@@o8U@XVC>o3FD&zI25A;60Ig5?@t@@fT^4YGVPZ+t37SfhDb%uKd zkgj>(Ek*p}~sPy7HxrFA{KOY5m`$`S>hkkbL^8xd#Tcj^VJLYD{@il9*aUDe=SeWlnVonBh8;<)zu4y%WCG19=x56*L8 ztpu{S9969xltTl6RIskrW177{dofkyI;|eqpM8Z3-N%X&m&fj@UmN(g!w#+C(6R6;+Fm#CcBS)*5%=QUI!zMpc!(g_m~&M z$yaYk`3z{SwI$D&doAqQCl!r@V7616gu4ZxuV1aDFe(LUL)B9B0Y z>B_ckxzexO0<6^0ruNLDfHp!;1v1S6MYC%-V6mn>3Z``}0H2fB3Xl`Y&HO09U|W!H z9FimVG+d*DYLTN&$8W)9ZGz`}i2Y4r5@rjzfkUQ@Ka9$CrWCQg*~ajsOwlsR6G~R$ zbW*%fxq~XQp)zAswJi6k_=1vH&YWhvq5`O=M$mnj^On3Km3ieZB^RhT%i2s>Nej6F zL9lfjw9x=uEeD=mTFAOCU!G?5$b<$I!fjX5?b2Ngn2ty_}NSCjgHSN^#OI18U3d{QbJh+4Yr;Hrw@Qv(DZx zOAZ9wYsk6P56AN*=O>qk@boGxv`w2|Wzmfi17iWmS)hXJX=?84OmR$$Vbl$i>U>gB9fXoSLUpK3ndFuRJY1OQi9ptav znQn0=KxSBa>!jgc+seI@z>)xA<30KB(kBD+SlBdxa%ic#?vuyZmKbyGT&R5-=buxy zF#E!Ej^KADADAaS%w8a-gtu8BmDj#Bx%@iG>6~Xzd8xm3eG=e05Cq3!k!`F*aZ*Yt zwAPb5w^&G>ooH^?rH5ARr&09#N5XDM$qMC@AV1P z4%XVGccksa6-+n!$xFEHJ??xQrM{Du@mV@CYjgS#Ezz#C#_p?xP-Z8-b%KHPxOrO(IDqNAkYJ}nrcX{nWs=6T_eOx+xq)cJM(SXtrq80YvS zdzM^k6Gb|kxMB(K+1YrbFv&Wz_2BU0Cg0>EzwOTbCobtiGb~JbQ+8LIEF*Mm9Q%d&C9~;M6WdpZLQW~XRg)Ezv7Z)Sc!1I+NPTMq3PAnB{_b3cA%es)WXk}snm+?W} zfE6`ucP7nOUV6#~tFH!3ue@rsM$o)|8!Z{7!`ZBrZ1)m2GEE1Y^?AHYOlI<@E2oVyXdksKh))F-ag z9*xUxLulU=%QX6P^!sYqlC=slb{fGkIrCmi_XDV0Vz$!AtsigIT@7wUwds_BTyzP_(uU95Uj#S7+rZ=;=Ur}DBD;fv~6HlIRe{*0VRIU0_MmpJFRU60cKx49cXIf zM~MJh-4~`S>eO;^MTEg->8Y`1+HqB7v6*Y7VG3GIbzEJug;NZmYTe`C0`Zdz9VxXa zgfNGjww>n2Ks&=z3~%=3giMd1x2*$C=%V9~>H&8Pq%CIY$p#IG&z^srA~n9~oxp#$ zR9V^Z0^YQ>@-{g@!`EZ6P;9L$_@oT$Dn}o*jw}(Hrbn&RWouUzi6Y+9N?(1!hCUM( zb3`v}$<4V98cwso5_^s1oDk8J+ zW@3c_0N-;G*NlZ%)2u8u{8k26fSdzcv=u?%^UO?E|Mob#as^onk z9AH6K_<$-aQ5+QuWE?bMq#-y9#_vT05-1oSh>&{)@b!P5ISYC5* zU1O7E9I3q2Th1Ho2W;(vuK@Nmyni0smi(OgtRW&CV;gH6GghS8UfYtjAlo0cmCawR zLo|Ei^0%h>Wl^B!G`reK%mM1kM^_(|pA#VAp-`!1lnu}NjO7NyNGu(l`*JH$-oWuN zIg^dbTC6qT&L=rgxpJ9+S7)!Z#3tS3&Kh_#nQ?VC)$R~36vWK2YOuiic`J@Az3k85ol zt_C!D2AY?BOpy^6?dgn;P3O`=c+wkF->}_j1GWLUtkjl#Vu|-dTera(7Lg=n=o+PT zfF0R!8h|*Nx4)iI@6KDBP8X>}knV0g@0fnhysZ>C_IGUOD`ZRhS$)-ujvdXhJdBeR z=9h=$Ssqp%DgAuoMaAS)B9C|I_jW}t?FlJ7Ns~9m7U5!?X46&nb3V59I!deMb`!}j zdTN?xdEtxWwNjsJL#qR4+_=A&%r-MtG~nt?3J048HWt@8M@EZ(r>z~824HQ)5rQtq zandjiN7bu9s_WaeNolel2h?qisW?_J6zgqseJd|M_dacx?n52aXW=4eLYyr_%T9pL?vX>V;UU4w~vu@i3?6z(TlF1<}&H z@L{X^U}T!As$CtPpY6FaRcVoZpjxEQ7KM#*DHVdIT1;MhRZ3vEme&^`43=27+shGV z0e9gF2EN*_d5Ufc(>>{0>t!C3N)pa(O|Rrctu$6A54^JH#BDVZtR-p?SYxSrEw;6h z1+4eI@$)w3y&p-R-_|j)SOYI67c+(vmS#R%JHEQ)HoR?&tcc5C;)8g+gXL*o8mzg3(AIn`y$5X=8H4$ zbmb&tAoTEgu~D%N)4}iOQY)m0**kwf!i?L3k6FG!|BFRVQIy=Ob#B_!MUio_306XQjWGBpSOTp_u21n>YpdZerA>2s$isy zD*&hpt0(~=R};RRI^dQDjH+^l8UZMtjk>N{t13>@Cr}K|Wp~4<14aTISBo{bVtEzS zcU1|#b&WynK1rys8?`q z!rQQ~zU*pAkg+P zE3X)uulD)U4-$|R@0DRfv+{C(Yi&9n%oAhM2)c1t_4zaJQu`4Ue?4i zHO7)QS9P6B`D|CTNZv^G`}d0D?&z7;r`sb9+baMi53_@58XYlx@Q;>%pVeMD=%w?V z-OKAy4sk8pcheT_fAIFhKz6g|OUH!0lrq!@&d)Inx7>SYiVikd9RaKajjZ|t8jLdW zvoEol^N}mC0%$YiMmyMQ5UbcVE}E+a5a^66xvJnw{oWCPdZ@oo1ZSNW^2f}`0{wv9 zt_rU@`ofcCvJPvB*GOyUIa>s$A3RZjTrdwyqc}jQ{;On%>{g&aH6|l3gPwHV0-zqB zBALKiSjQY1Zb}XC+6u?!x}vp*rE{N2UNN3JODr+ehNq2-)QSlW8cIiw=^VUA5VAl& z0g@#0zJEUJOPU-eAM5Kz-;KlvU0{p8K66&t@SHAh*H(eiF?>2nsUM}!HTLDvUk20P z+OhQ8wgBaz(n0{Q9?=>L8)c5TzC{n;572(SazF>N0MZB{Y8O1bXhG$JXxw-1EHz#x zvyJd<4FFSHVy6MP|54)a5!u_ZzNXQKYd;6O*YQ^8A9z80uxZmDxSc=z@&hJ~@}h%m zH+9H#aoUT;`Sjb90*aR_Or-&Jgfh~qO8&Gx6iTMGyvD2N<};)w?Rc8mtbsF@#0Drc zwUyeaVp5R_#gHndtFElunokNxQn~I)EEMdQ0N)F;WG{`F-1KOeR8&Xzv>tgqv0^}O ztkxRXG6Eo3_s2zoLvX*+C*}aYUYm9sN9_JSfi)S=B!(N#phj-a6wnfEsv8|`-7atZ zDYBVHfUwXh*NcQhy98_Y^JTXX9pr;3HD_Bc8*mJb)GYdHafZ6~Xf>B{+8v>eg-a&w zJI5Y62sByly{?y>azIHno(68?p zj3b@xmo6M1@BRWw;)5-;dGSF5cT}A&6-tT3u_<-!EHjo>m8zbfj}2&_k6Jpr#fL_@!Bug$s!mqKhF4{1 zLFQEIsx`)X?m(a;%VHU`UU)jHW=Wz5{d9HdezL9eL=DoPhcc`v2}~nV3@~z5$gfSZ z(3*ZbdgVvmJ-2ZcI&XC1wCTwj17k#8!%vSA30!Fx6KBXa$R33yA7ycrHYoeDGAVZU z+n>zN7;*zp%l$m1Uuo>4iFm+)_^uPHYujs9=Ez1HJ`8PQm&T4j2n&e-850ZVrB;5#-HQx zO;<)?GHZ_F5nlWNO$Ozg#m==#J%j68-i)&srw+i?(KcG_YYZ*RtJ*qX>75SSR0hx; z@h)|<<@_Ao3wnN~;kYSV7SWDr)}@DSXA4tpdevk(Yn0)d%2d9z_to#(E1>&D=hs*5 zxBW&L+h;g^VCeAH=I<1fAb08vt4(li-`tM9xvE(!u%b-f?4<+Slrt^EcrT29WlC&C z*J*(R>sUWHHkrW~9;Op3)GV`HAqRdI<3*$j6A8#rW1+~zu(p+Q$kZf)HCtzDrn&?u z&Z2(e8D6UoJWD+$cIZ>Q4x(`{`8UUUVy68RVA$@`Lf1Bvj1c=U=C#d=MGHlq5r#DT z1Z9JE&WUXDm5NgblayK=kw_459^RSc7^%?*kZsdjbNjC4Gtl(ODSFljW7kGUu zoi44TSOd$3j_rgcRyb|brnyJXZ=wNb>OY*BaU(9u+g3j*Zoc@gy0IATt#6bqU2kpB zjIYh-(=cmY+s@7QA7aK|I+kCMop;AJIhnOEo=aOQmyWkR&WrQL?*U}DUotoPnj5JN zW^7TZD?*$2Ug{PDN!pmVTgAzt!#sJ07aUcC?#g@0xvi9-N?f^Vr#Z5|O02G{%r#ZVT0N?uv~=p^ zRp)X;9`&oq*CPuO!Sz84Mk5h8j zxyODxM&0WD>wx>(cpS&kYh(Py=Z-1Y#{GHN+89Og!s!@?Oc54n!>ZhBV^z&dBqqx; zsmz{5GDA^rdn>FnFyMah_BS9c1PPj5Ak5JUW0)(sS2d;HNQ4_oxd@Qv=;ofIW#o zQ79T5aXFlX$$_%-LOG(vVi{y$5tkfk%M*{4Jj`o1d2t%o2P1e!YySoOZA2C2*cI({sz< zYlvHfGeKjxoHUA z^?v!{h9jD9>?o=&JT=oPj!}YHn>8(L6JqQA+rI7@Zh*<`%f)XlZ>7!b7mxqi`R&JV zuYI@Ywx^BoKNv0@KjVX>kS9gq#Q<}m#x0Ukf-Yzxrib4@kB`(C8o(2i0#LVfVS487 z_J-%F9g$$liQf~`An4{PJK%URn5f@sN={&s0#j}?!^=vs&VbojhMEeiQiKyE4WEU( z790IJq_D2pYKd|+Vu}#2*`p!q_}R@WCLTp%JYLeH;52zm!8v#sox8=$HrDIF>am__ z2q!z=&?aNjLm8}7O>)jg-LwxDo(6fXxP&q6V6n6epLdG%jBrM#VLS;s_4iPDZD3K& zdNq+P?`GZxsR46xjE~-@*Vh5j;$EiLm~q_ucHpZIM*_|uv$RiLci+6<2Z<`C^?tIM ztkRhL)vr0g7@sVW^WJA(m?yQ-m%^&?QDI08;U{rKi^(apTC+4T1-&d&a=8ZReeOoRxp*rt2#gkKeTFzv32s_xx(p z+414vHN zc{ONcsyD|BZ^7TglIGE;C%qqA)Itbt75l7tR?KLCjQ87Qb8D;8?FKgtMswdblk_wU z-Y`uiA^0P4utmFcb{YwROCw0_8$J$n1<9YG19Z%amq5fXZY`0nnn;>9JvhzVcZQDU zf{I0XuOZK(?_LH#D>3a)?V6(PG?8~lUV0@)H*UEx>(LsBRFgAkXmZF4uua3{5q_b# zwB+rchi5#VzqH@zQ;Ut+Lyb@-7k>qzF95d$6HLCwkJ(@;ZPHrDNClmC+aPSbnCNG3 z$fB&;9BrS&1WMkK%2k{-8|S0mNY}Q@Kzn|qAGQU^U(j9wXH_;UArU;j=( z;xz2IF{k|Z5R=jlIs!7zm4{Oa8-|Q0pS+5Bww1FZ=($T#5)F>8)na25c=AM6GDRd% z2w=S97j<_I_NjP~yas-o)}ttTeR(raJtf>t^{KJQ$Q+!!idhF(Ipe&If)Nue7dQW1 zQW!HOb1=+aVlt2IYTbDpg@CqO8rt7p)Cu8rxy-X=Qvs&>9YEVyWSf{%18@|m zC!VuUtUQ43r9o>)p$^*T*B{r`T(HCDAGUjIW5$8OiC{Rc$_T`ExlQ_|r7L|uwaF`v z)5mFC^sV&O=xl7ekR*nou5b4n zfdf9j!f+KhoPjuw%q#=BZesuw0OSve4#H5Lz4!FZqH#S>JLkNuT zHZ{B}Z9f~oGhAkPQ~Np63$Se$c8V@&UN~4gk}Z|7*Yv+GHTkxUuRoM8ZT~)OOlQXm zX7%#3>)+aLuZi~O9Z7G+$h4ucG!r$3ntVPQr)=w;M5q!bcXUL5?$dOpa-W%%jk!c$ z(7#+(XD4S;foWbA2lUbl60o9I1>F4Oj86B;^OtR|fY0LXD2Hqe^J4!gvl$t|o~XZ#}@wJjiyC@=zJ z-gMHK=xqR)VL!}b$QH8BiuOW)5H}L=%uhQT~Dy!)VNwFOx_OXr+Z-; zmlyBhxJwJfE&gn?8YK3vlk1 z%=Q|}*+ul+cwPBR08N`lDchsGn6byLvw~rOv@gEwC|i&6Yr))hv0dXcy9T;Gxooa< zXzvu}WAh+~CKgsnOr8!P?ZIz4fge`)jJudUd`V~DUR#7oMbB?X;H+IiZ`l*f3)lTR z*#Zq8jB~%UrT$F&s_#BNGyCjxoVkGFGAnkrw6cUVGvTIbaBw+eU8*+BWpWT7T#Rfv z${B_SJ^*=WM1jI8a1V3#dy%rkH+i{HtucnuD)w4oo@9My1M(xuIAS3$wdE}6}F zxVRjWL1VkAeXoRfyKGKt=WVJRD8qOA?70EnGER!;pz(4W@$5^^tpJ`lYu9e<3+(uM zyt;O0>tCzQ=RkQx|h&dtM-^s`~*F(D7%XWS|mbPUBWjaO>h8ljy* znTJt9a)5`w?63+$)n}KT&ASS;p6GCUxV7h}CtD8{bPor{=n`-bUT8cE@^FgTCr^Y@ zwE#~*u)ihBYww;}99-u^NkxFJf*}fTCgiJ$wN+DVD1hb4s2GG(yc`WBKI*5(Xk zG6*yHlth$R+VJE_CUPPM37T?gRn+LTj8%=DF>}K4`%a$Di~mkZNhmtsIk_1klStoc1+Dt zG@31J_+f@=_jZ*izMR7^?w2m>IKzRiZm+lLt4MuyqUfyU;s+LYwrNunC`OEQytnz< zS&OS3Q+t2S!{_5nZ|d+{h2O6tMf6H>2_O-K7wDagSg5+~@nliCis6JP}; z630o$tyaKVf1e04?wKwkK_$kOYp@LKn{<68R#NsN?6OweqDdZF#p*m>W}G+q(t0Z; zZ^ruhBs@AOFFCOA%#cgJ%>i~>{XMmF_%7FuYG$ufzjOw&@wM~p+}9q!`R8BLHZRT@%*1~9 zmh8uGDSe@h+I}zFxiPM@tJzLerRiC2mgsj1Bh=yaoKX*eAMm3(0NG<*sg+c@v@AEDm5JFU`sgy&po=vBOgM4)Z&nZO!d?XjHh-h zzUG3MYRO&~*R$FXh2XWybQj4(Bd0c@>lm|G-WYQ_mDXmmCdR>?EHqe20L2+zL~N|y zhyb-Z0WDte-80t+;h2OdG%VD(8HQDQ-Pta^xD{Z*!n3p0w3!G9=zMm;(uWc2p>_>y zxhSVI?4jz|OG1&(##d*QX6Yh(z4m(h{_7*=8nMw=w}i42sASh2+-Y;lOB2EQ_s;jZ z%5cvQ@YnIOcY_sMcRa+WeM{c`bNiORU-FA1#xdjj)Am5#IeJtD-;Vnj%?5qYK2Kl3 zuNR~?rNJ!CU;Vw!R*GFK;c&g}duU#FlUh~KDqml0xDaa*n-|)mHQ!mr zQ{2PLt)aERR?y(rAVyhMG00_6$Q49UE=w}W(S`J0#$zvqZ1;FvD)24?Fqto1p1lx` zYU|=>MRhWy3KxNOyF+)3NDrKc_lIbK6sw1LyQRq)dgP#agSaf9D-5%K52S?kP=6olGdR}IP6XydGR(38nk|6T?YHClRIW?9zjCS5~ zesgOals<^_LbWY1=`n8zU^~1 zyItSLD9>RV$&;No)!DVAv)32?-WW_(pPpx~>@Q+VoXuy{rf}Y5DV$FWGZq4csJ|z!Z|E3DVlCy5_7^LwxE^t0G5^ z-*|f z?`xS+YogfhMoYD0oiDI=EJ2U%TcO$jp)6^cphutFpzr`Yue?TJw{m7apY@{@R*abo z)a}C^Rv2ze(rm4oww0G4sO!jQ-|O2oYx-;O=v?+|=WI01k8^fi*Dd(ur9{f+`d=LX z>^=2Op7`ql_iMMWGYRytBE2#kJ23!z(8_k^H!IeCqt+N*4^B!i*yFJG7q9Pybn?nW zJvW24ua&KLZM)i8NFd4&|DFwe)OUHwlJ!Qc(lNe^7Muw{4#sY3CTBA}#F~#S!|h7 z08Mf)GHym~Gt+TqjgjV*8k23sZc@MI5)%rc-`mPNUGg@Q5~DJYF@fcl?G{er(rT4N z`xAnbhaU5|YUh3ojvA5u5!y8yTv$2`^s$V z^;QevaD29>(^GxFUf;5>tTx;8@jyLSY1R?fu1i~;8JEeIW^aHy@%1E4LT&Cchl&9O z^PM&zHZt57EHe+iFVg*68<)-R*Cd74$XfKtOANQ!&1rkR5&CwH3H_P^fwtFpdEava zqY%WuI^bU0dT2;Ih=HJ%?noOyh(T4xan&bPYY`3crE=-KFU{Q-4{>09BLmzT6E69m^{%TioHa% z0fGA@cDqtaFoL?Y+X`7yEnKG+*pR)Fnd*AOo)QyG)G4EDrlFe+y(SvDgON>MX^Sxs zt(~(!htyV)h!lw2>Xs;g`W5W!<=ZZ7KL&3HF42#3zDKKc6>pVhhL;p3vAHuSqL_MvTCwvn?u zOaQEtyJ3Knz{~3%gdS}USbPj#Bbsb6X<^A-)kAOU_m}cajW!>j?C|)#eZK!wZMVqWFxMN3Y22T}knKp2S?C9crH z*ky;(?s{u|sUKNm(0y{7y9I{oW4@yBGK+abCPBi+Qb7)p6xfzUpEEC!P#|q$7;*Tr$#}<^xKX?Yet78hn}(NN`RV*cS9f5@;f>T7{v z6wh;1-bz#ylE-y2A|eSWCtpngpn+9>kMVPKNno{BBs;I_v@${6vhjWqE9#P^=F;SV z2yfB~5C9Ud%a9`y!J6~PXLxVTkg* zEme*=+Qaft-$NMPjorPee^qJDPS$a~R#l7`MAi#Dur7~|<>h}df( zsM5|a544e`#_QqJ4QAL2dEwF#Q@f_|`pPR-@c4d&0RDFX+|8@uUu&99a^o(_G_v!~ z-4QefmuWDS&2f@12w&R%<-*zG3SI-!;h0}Q(9MG|_b*)7)W@#R+W9{SsAG}862a=x zir%Re=x)6D$=^@T)Tldp{RLTt6N`hWl%dQ^IKXC4ROl?i_<0;lpNUB)u3@$^0^zB$ zwI|35Pft~QJTZhztMN)2poSQiZF(-*&Gs1FV5+NILmp!4){*)Fi<7&Q(DXQeUq^|7 z?K-8-WOg>8mzJZi&M`^)<$W%@iE*+NF0yB%kZ2YaYs`{DcV>@VN_nPB_$aL@2CL@A)0r4j}{Q%jwf8@sJ? z!v68TN(tZC{Jhg$?T{ID zY_C|f5r2LC9M>d;K$5>H;J!j``}_V+JlxpkvE%dK!Lyk!%rb*?Ft+E{itGIB{Pk7c z=j%~2nE79Gi?hED)_nlj(6&k@=q68_oWfkT-eE!lN?tvRGDDK}Aw2CKU_C^o-MT2R zpBR*rG79NvJ82b$6|5GT?Wu^_0&ufx65zK07bfiLb(#Zkv-H@K8^9_MU#^^x7V^ky zOiV3Wu=K#M)>;9$qxKhWljK0bm47SaN3Gq3#k?W4oOsK4ukuX$`8RLu{o6av1Y82H z{(icz09qYjc7n6;u}(aX_0PxZ7<{y6)Q>nkRVkr@?!za$|NP0Gp>bCbh8_$?3~pMRWrP?TQEzKr;dpyuM8OorkK!l0oVB4&{Z~YNoR1&*(O-*Ke=QOL zGRp4k`PfA>e+0&eyDgh|+U+x*rq_Y|(%;wi8Qx_3{B0TT2Kd@_3~vVOni>;~i$9;w z#sM)~9^{3gVcT)7F|H9ClbtvG7jWkkfCxn9eh!J9gC2PtVC7 zEBn2vK>g;;TbLKNV|B-80w$KNPnGe$xsxdg=i1SpIf0zYM7FyxU4zFXU$ZO=>E^F7 z&I_#1Qd@4TT%aIdLt?Ih-?h-JOF(!oDO^83|9z48a8A6=rHpvrhsxhxQaImI>i2u@ zWlw`me@(;1h8aIB8G=9*HSw8j8YumXPElUFHtjnNgN@&hsXcW^75ACa4+P9I{A-q8 zOKmIt9WwuyZ1J1icy(Y3QXt;N8E9( z%UMzdIaoWmIWzSn2k%qSxl1r|=BBz9cT&Z#xQ@2AmTLx#3@E{Bpf z7?G8sYwA6A!8 zFdbC|6_w5$oOe}+y?ghrg6C((B+HAKw9jrQd_$PmDktT>$_bx7e$TXC6!3Yh8ac)Y z9Gf>c&-QuuXm8$EZTZa`k7usBa%ISOb^qPIGT;3z(|_^wZUDr$3#r-RSatR~3B29C zv3-62@%d!;PgPSU5GfIabt~BMB8}HY?nt37*@Is2rIpVj7I$v(&)%QpaEr-M{cH5g zWD5x^q9(>MF*N`dS%|+q$|dY;_s>DtK`N|O)E7-2Xw|*&L)ru)l>g&knbh|oHk1x z+*LEYsX(yaR1nHEhgSk_sRJBNpQ<9(_vbp$mz|bPk5zXy05q8AHh@NUl~r;E*PY`6 zr!K2laqv}@ECt2OQHZjRTw%B|Yn6a7x1YVYyUNb@(_KC6!9ITX zC;Q{?erLzWC%dT=NUDQ3ug{(o63eg`MqwaZ3<)2QRA~NVUjWweWSW=uRhBTX-D`GR z0rKWH(~{DXyOSr1bcY`tV^4@@#*##(Fj=IqKE;mOEfYf4N8UHua-#OUa6$$6LMFiV z?Dkb&cwg`BZpV9ne)?QLzo}rmFcBmlA30y&OyNhJ$b65d#5ip&K-;gYxFr((Gx~Bw zb0qJ>U29b4Tj~$f8MME2KY)NVcZM8HcVxUBrCUBOV|dC%t@q`T?Z;o!7QAFycP<;Stk*-I2oN5hYJ?%3X~|Z$*LvnJbYGPlZP^@f z;}F?v%GS=hn=Psx1F-jdPS)Flh<$VQ504)xmfR?W_B$~;RQC7PNXhv=j3kl zevu^gKMdghkVt@WYlH7hkNL63`|9&Hvt{TYXJSG8B``JXsn6KN#Jcn5!qx(~r+(0Z z`uBcz>7hFK;1A!|8R5;_oqh8bj;Eyp>u3AJAAe^b{``A;`24W~?W=9mYJ#NV*!7&MuKak&y|tW53oBhH5kzpk5v+Rs@FeN zKz{el-`T7x<~Hx|>IC%0GKp_rf~9wDl;etrePF z9{C>%aDVJ}DGY36#IM)({js1tX4RCz>9nPwdMp8H`qk?)G=%fL&SU<{+4<~ZmYJM~ z?l=td$_I{4nN-|5zLJV-6Rot0wPe@mP$f5hu6t0LulcIE+$}1K<=nyc+t($C zkUkXNrr6KfQ{k3$w595@h%|V6JK4A2+;Z@L_lI9s>EJi^-FLsYw_XkeDXQo zuB-w^hFkaB%{Qz&F}XML5us*vg1fuBtCPeXuLF_+%3ETijNqUS(4OjK0SDhholKIi zg0X+|mdn~N8CvtB-P8%>4VkiZ-2R0Y_oMc?# zKidPg7v2#yF8-$nTx^%9{(m&XjfX9B=Is1s1laAjT9EX3c^jOKPL#LjO5-`rodelo zg#v;L!8R+~sV&(;YUfT5FAC#e(9fGKwKv2V$Xb)49op)2S?7y-snSkY7LzGiV1!~c zPt}~w#|jqD0Ne*Ug5bf`w-BVC2|@r|c;An!3Wx`&7VFP1O{vK+!GvfR2yNRwE}mKw zIQk4@5rv#rRpmm&0V;E$z5%KpzOVoM^zBV`lr0S9`t2WnZ{Ppr&y*05kiby7#T|NR z*W@X~N3Vt!hIR7m^-9lJDu{YCz_>n>XE4~K3i!w!DTkewU_Y@PjwkUvfG#Sk0VK;~ zb#7G_x`z}{ul=b?5pt@{1Wg<_=SQ*Md8SS)nZczDk92^HF+-!R=UyHVxo~TDZ{9J4 z@A3YV)jt`rfbcbhxlNn|CE?5rh*RI4q8iz(N?u;e)_rMR>&cb40<_tJ+)Jo7x%K<%NO{qJ)tcnnQ_C5Y5|j~e-{Ci3Wx z|I-8RC?|{{8+z`mi4Q*tl!qBGmCb{Gak$n~`03?+T5mCHRrdSgy^u)oqEWM)S|u+q zHG~V%J6u$u3nuMae^eZ%?o%~9n25W|a4>L}-9mFWIY^{5^@u6gesSzIu8{z~ia`!c z7i^2wyXt^GRL1sr|HM$GV+CAD3GkqYRG{!L4Ke}_4_iFm(+N754GZKX8>vkctqHk7 zPRjm_r&x;Jd_cGKUp*i&&XcqM-K=aeq}aZ{dt-n9?VVMF+#Wvu$$tOa-`H<|^BenA zHCshq_(Zd6;XpF6X;$3?oNjf8DSl=ZB0Q00J~`8rnUCiIy_K&aHB@bMcXLZA6?$I5yE`nPxQc`qki!`pA|?)D9jhdLJ-L1UblE8DIz1L{J+ z@dxoL^Z4ZPT+Kqu`y`hGCN|H?NxY|^5S&k zN!nru=!kIWp)GBd(JZew{#&My1hkSXKnlU|Ry<7QbaaiYPz*#d6)?-k>O^_0Y!e=H zU>KMVOvks?>2g=u4Ya=*W-2sEcT~n_uhW;P1P%_7W@WL z?001$;ITeLJ=Xm_YVJO9g=IVqNE`?wTXwg4wpHfX*W)kMnYNxD$zu1n=s(|7t#@Cq zuTBVDSwgjU=OW((Boj=;$-}ggD?FuitB-NElNhnNB-d6gF4A{%%FS}IrkWL(BCPG3 zos&$ZwAGjOVf3MKJeC*4r;L(=A75j%%Y-4HwZoeEzIrGBKLK$6`)L9qgb6+y>~Tz__JmN-;)*W>4V`~0aodhSsg z@tLZ_3`SC!?bGePGMSq?P^%gJ2I-)CdbYE(Ie4jAE)fCrIrLlUlM2w+dSxq}M>E5Z zkgodtcp!)z4>-=^*Yu7!`(2%=?gggVHR@I7 zF%{@CajAElWL?FUl^h`56w(PaSZup$MdbX<`(OpH!^#N{%oQLAaLiazr!wW|&rh5n z5u&y1?ig`^SlLe%_+df7A~~$c*1KnQH7gHV5u=!5c;B2{_eB|n6QAkr8?6knM)CLh z_jA>&F=^siFT0uTh*}H)XVhxo@ZZW1c$0^ zV^t(%s%2cyq?I~u>O{Ur?OuGpHqh}|7R%&dnZ56)qH>jU&fdQ2(=AL77Df>;k4vS8 zvnM@^Rr=1x(z!HY2vC!4gXC43vgfGzDBXRwvAw0UO8^r zs0w7Y#ZB^H=S@;DRo3z(0^w2i&?0%SL&G3YFNqF`2=iJ|*6(m2vwgTnp1v22`TWGN zAed)JJw>qn)8mey3v>47X2(Iex&tl;;6j=JxD)B56~k+eL9s&!69!8iu+zQ{*5?Ye z>BQ^aIlD58fmD3ufkgAv%rne_gfx@UO-U;)UAF~lWLXZJfS9!4#a3ny7b}W9kXgEt z(aub0P+Bb#PEc2tvB0-G`^oz^^*u4$U;na#?H_+v_2)-g12C7xm=h-uXr;PPPbGF! z8SM4>q#%0Myfr-!g=!rrr|fFGqAtR2SsGjV`0+z!mQR&A-tssngooArckl1$`~vGm z`@?d`S@jvvKG1g|@$z~wan);ku0VWPH5p45Eqt!~%4YGrAL{dkc8f~wYetBfLi9jH zsr;iTQEiiHEp3(IX;zX3_$DkGRCl|5^9{q+o)49oLxV=WT*flr*qeH;by~RWJnR{O zIUP_q_$5V77|Gdb{j{32O zlNWkHh!GjC${}K~Eo3A+v0Bw7BrpP8KYstcef;pz?mvHK(EW+ER8@#(Edy&iXhA`E z#`pV~@`6p)g768F)cM3hmRZgh$O!n^?{;Kr`)YcYI{3)8t62)2v8oGp`21Y;!U~G3 zd$D0!X90JF0`aZ~O^pN6w3**<;vjxsfZ{G3VP8HyAp6|Z< z3t29*%}`De@9it-&Gp$mRIuiq9mMvRo0-SJe>KfXsM5K+_F;vzVo)TjgbPoCNCoVGs9kjC4>KK6* zhz4d;eLcC^i7abh~(@*on>~3{u27QFFs! zspjQWL3c*|RshpZ3DaOfI|j{Tm4b;(3+an+EbN%ND%A~ZkS+Bb$jn0g?Npsna|M9~ z>84fV%SYXB3=HJ@pK>1vvCbQvVUP$~*l}knF%Y=qjt>|n0nA!%9PK^3xsUKAgfz`q zdfX0dZ`6x@QE@-0lx;{R9;Ab)5;SfW}R%Y?_3Y@2ByS=R}@!eZ$ z<41;-;cgXYtKKt_?IKf68G1)fV#nH7_EnQj$HgU|11Htn+7~zhSB8xuIj~;1Dl#VV zq5|pwUNC;Fb;s3%8QyguU@}%3_lyZ9%L#eRe`Y1J_f=9*!K0Ol6Kr|-2y7waT~SjP z>&qpDb*VPT)W$*7Dv4}OQVtB0C774D^fMt%m>Usku7WJ`sXT70K7qw_o)_3Gwi zDGJg|ZhqKluagaBp>wsc=X7uqZIS~$bNTzB)G7Xnf4 zJ%E*tr}`Rl!rdF_xqIq*^Ugi+qAa%T7df49Us)^dwh00f=_!+qACXE5t+IaSm~u1q zqAr3~su6=ddSn9k2q(p$+bMj<^*r;6XWqz+)x{)2#vd`)?&Jf&Cox~eK}Z6rw@`J( zQcYhV&9nXX-~Pq^^%wtSpFez0lbPwii)Ys*l`=>t*U&M9{5rbNq?Zv2{TQIe`^idd zSP6I!WVcc002?G9NEeab`#4Cn zV4_(Lu3;(?;2x}bl1Kkk6eb9%1J2eKGtSuFA?wgVNNin89<8h7qj`C-Qm_C0H$R~^ zjhYqEZuk2N?r%`*;YjBmDv;7o4hs~q_cgJ{mr)q zc-xzf>p6e-uXDn$ITG!5k2E;3ScYVV%t4YogQmE7f1;zQ$_S6p{hq{3?jM*ZkJ);i zRz@BikS<#FQWP(lJU$hsF!Wk3Grp?x1`|d~DAGE?Oq3dG?jfIA6)%7+oMzDWrdgV( zF$zG=vL2C9Ut>)c3V*K4K38T~2lK--t{Y)bnMGP2E2tpM>G@eJJHXGg`nqG;9UI;3 z^W!^nVZuWyHYTuO@?b$nFzrPw9FV(*!>8WEbI}5qu!A|7%zYJM{C#(eqTq`?KYX-5 z{qA@6%YXhSuCkB`stw8=Am)(H)m{L~Gk~9KNaS`*W3+j;BlqVp$Vcpdd^1_~F@~FYf(x$}PGAOD5r-$tJ5sbo=%ltDJqP z`ZJ`VTguOqa;s+4*4?wMpjAWDhm}FSJNx8{ODfVpLsEdgi^LGh8rd@z2T&w1LWgfw zyffmdw7Bs!NDpm}FR`+Q^-`T}pVAy-mo_F|47heFtW4K9$`$7Q_D2J5*tyrzPK$q* z&wiWzSZEvXD_#A3do81A9lsSmlGzzHT91CCz zZ5LpWZWe|W-MzVGy61v``MWn9)CAkfJ8cqp&_rM4Nr&7Jv8-vs$g{N>B5RVs;5|Gb zZTHzef2tD!A`}jpRlg#Y_lU#*ETfad(WQ1P=M#BMm;l!_lP4qxr)8Rb86Ty4BL86T z>AAZ}L1oD&fSU!A+mqc@IRmREfZ5&N&J}F;^r(y3{=&Zd^Pd=sHBZtX>5M|^>KqJO zEQ)c~DCEL+Rx*Op`HN3@*;fZ%sdb(_$$=|6tctsxT=Kv|jI2gh-+!tso8SbwW>J_J zt^t!Ro*DG!&mZsE9!qsNJygaD(B^t-yB+m=gp83bBi{GviO*=iNY?n~{X0&|^SjyJ zRiH$e8=R%d2JyFkhhb4Y0$l@u2LGN$h zi#gW`IUgnhYjMB@xFPBxo_G{p5f?nU&v)?1={_t%h)s&Z) zldb}P8KyR4r6W!k>Exe!n1^YGovd6H&Bywg#mX7zj&guJ?eS@=XOQHeDMe-aSYp5G zbf_qW`T{5fJFN$5m|#I#>U$*vIpD`j_*tH%UowEbw6&eo5m$DsWsxImS!&0xj20|} zev%#JhstUz;O=j47p)#+CCU?FYu?W+pzY>#UU-R%^@yO%Jfl<1@p2gVUtQhuIpgVlG(0&9*9-N*8!kWH}_PZ?XgZk3ZGL(9i32kPV+*b{#>n>xmpw7 zRP!9QCL&Ilu@$S@0n8gKIiSt~ucPjR5{G!UC>n$M4XER=hE?OMMBsv;?}qgQcKfCR zI3gcHa-kFPq<(ZbB;GT@86kdX3o2mYfYPJ`_6bl|j6a-wA2|u_t5fgxO;ItN$=9T- zn({K;Y3ZLdOEGivesV38$vF~U8!(1+kXvyLZ+7n&oUqMoT(=`Qfbd~b{e^I(m7)HI z*}zmwYv*>H2C6EtXvGF#)$t?qGI`iqn;nM5wwRD;KYIJ|;Q8;~LeIJOdfZyXa_FYX zN$7?BeF_YH-4SLuO`q|uT$KMcbP68NV^tZR~rKo&zex;voIRP%(v&-MzWv&&R)fB6G$pLYP>V*8Y%!z%&_gQ9&HiL`p1L zYab4kv0`E>Y7;*1-NL>AHjfn_@O?1S6SEDUDM{s`EV&HJAbSD$j5yetbdrpfQ86pe zz4PP(u0dzU^H4@84`i^g%vf{>iNE{$9CoZZR=-oP6`+QSX0TY&;*K+Aped~|b>`|? zI31>Gh+Z&vyfv~>97N5n3%8s~AG5R^y-cT%_U)K1&YIl;X2Wx&gV3gpjNm-izvBn! zBftMGPVzsJ)9m$_*qCq5f7?j^EwWEu9;@a5+sI9aS?uCDhlU?9xOvtiG(`j4L;T&- znf*M{2DRHnZ4O?0q}!rn!z?^7?em}+mKFb1OO~E$?_e0z(#Wv1%bunuoLvgfniWb# zqLc`*0A2#^grtD5ui4pbWQ+-bjrWv1BLc4x zh4AqCfgw@1Z{M)!%x`}Gy9&1dWWW9GZyC}=O_-CEfUS7_f#m70yr$#}Z~Aq}QC<4r zG;85sXnV*iNR0)vW!9cAZ;n7TJTvH`aA-o`{MpZb#%BxXCcvM}E@#%bWdZT}T+tUW zp;GUxlN>|BcCHg1wU*j!x<)Wt==FC1+WH%l%no!I8Ef_LBQ^eeCc_{+j0G;$(7ZP2 z(PdUt0iH3rA`)bZY6veVmhLIF_qF}z>BwtLlr&C?QkZU7_h7-JsQowXo)jVmQ($%n z*X)IfvSb)+blk$vVYd0LZ| z`1uqIoE%uYq%hSJP2MJ)@Yv>_NrqcHotVsk5H>6~{+p`V{lrb#lhzCK(V`e% z3)U)gT=f?8TMjpOV)^G_q)rWdRJKpmvr1C*0MF$W)+jX~ z#0$qQ?zEa6>?kQjNk^7Uslb!Tb_ud9+N~N-bJfgIHu2lHH=O)_`|ID>KmX%@t-pWG ze*q?V;6M@&z-W_!eQ82SVYhaXR5wg{ucayHO8PX|>4i?WFK zb;8BpKmF-Xc`U?9qbwsV9A@j)`$qT}fcbrOc0IcWoNE7pG=PctbL~SPD|5&8ci(FA+`STO?Z zpAw77Y{#<(*fRv{c#@CcMrq-Q&jtAI-T6nU2G1MyB+y^*WT#3b5VeqVXN<{Oc$lih z1v|~2Na7XPiV}MYExp{H!N_vEw3FG_)@zKmY^8wn_xMbc<3+gutYKE$ORUg6Njh7; zWU61@ek{WcaQop~YV}!Pe&RmC3m>I^P8G!LM~I46+$Ux`d2f;n^qjrd+;R}2V6{2J zxhy$|Sz(PUV}XupZr8!`h!jdN#z%RL5uJcgujj`{z6Vf1$9%wm0;{Tz=EUG~v+iCk z96{o_=UT}Z`tZ5FjxtuP#M;V+4-U+mv1 z!~I;@WO%*h^qRz?N)(_;WRNmhiw|(`UOu3aaR;3nbbfZp1IIh9s!K4@xptIMu@iFx zs6V18%p@?zaXx(bK(GGEC+M`h@!08mPQGBZ2)%-p17|AgE+lB>bz+2ui+$kn2lxUY zq015!k#yjzWI&35W(&vLT?M-P^3gtg{~gbNfM!gS?Y+`)#$N0jV=P(6jt#^8 z+Vr;n$gNzMJyNUcKfE`5uJV@Y(!ng20PpJ_g&pBeEOWMJIiz`AL-8;YdDzr=XfXoW z?8hA&f4nMnD(0tSHb;5AI%uGWlA+K^agvOHTzD1>*;V$T!X-0nRZ+#ICFdfKoaitEv90U;M)U^-V9*qHY5EF*5<-)n_rAqrLy;8?w~zzyAw?6|cDp z?@1w9PmfPbhkpN73qC&9_rC!^o023xR*(h|{q&n}84>cA58vCT51%;E0+``Mg=FxP z%6z|h|DJ_o^15f+BT4}v{qvvyJ);>uV##`6D-G>}#=V`iM7j?Hw#)ND&wsrswyVcE zPA9e>!|3XcxG%8Jl@n}XDC7Rkv)xs8|E~6#+xH98k`p9_Nr0Zc4uz*F@OzBCEmLEt zDNKL!zQl-t?y+eOFbCeefsziw8mnCKl` zrU4iOY)<;llBDG_%@}N|tp4newS6nlRP*^azy4SI#XtR{{pGtqDbCavPD~zei}u0! z@EJqt8nDN83;bEY$Dj4A>M^Q;VP1ch5eL!$;g8|d_clg+J{>?I%Z>}Iz%SkbE<169oa@W($_3ke~3#ooMKsORJAmr1d# zEOLat$g+(Jaf2*@?V$ob%WY0GWdH%oq*Pu+RB&k@SpiXW{N(Mon-n#I@IUlr{2UH0 zePu~|CCNDq2kP6}aJO&Y*7LlzJWG0Dy^V%Z&*8*wC5YsE) zaZ`Ord?D8Xwm9+=JY-M!P;uodplTkA?i}Vfkx5*sQ~!tFW<9u!BFuYt`AHc$3)-6Az|SJsIJb$Z>sdcWQ#0TdSK0nL_HlA8?zy4 zQepByrsTc*91xScFjG*A8hMzRD}1GO-)PB!GzOCRFwdpD9RCiy#eXYQHn)A6BycVT z#Ic0FHg3~2TWVKQyiW%KJKw#S4c-v%%T23lSN-)1*uyNsWuv%s)Z?aZWqWlO^a zZua*lkUYp(=ZXA%uWr#Yy0ERz?w&cbqf=^?gQMabXECS5DqC9Nz&zv!9fbkw)Rtu0 zG_%(nydos4sMs^xc3#}t^(g~2KzDmZ7u=|KG);;mLM068cmQrdk-q?=LfqprIl!;< z-s`|VfkpUM_WPd|(oOb{tK#ul9%UzN?<{H+(Lz3|Pf~l7ni5 z_P%mN^v8JKsw2C4&0UKni!hvhsq^CN#<6J5BwbqbqoP$X$zqxyBZUL(?u|_0oEb-) z;Fv=B#0pN36fiL$YYfLkF&ma_bY~ryIm$g2Pk+TV0wCX43E|dDJZc&C6D5Ub7BoLG z0)d%~_1JITytA9fXRgWtpTphV8-8EeYFde6@2nfomnps;C2*e~7y&W6)*hI^YpY|8 z#n-D|9TU=icgHb%dVZ*F2rDni@0(`FsIV9(2hwaWb8vkEw*f2s_<* zq}hQt#!4B%sC2lWQ#zYiyJc3&Hovr#?F7NaJ?%$qU88snl*`#Z<^0=UILGGFH8Wu; z?NoZv>!QH?$?Ff8*Ct@vEE%L`{nO!*9TJ`7^nCOh1a%;wz&475?2v}IXPwhTHnDIJ z6M#(;gfSM?ynxBmK0SdTaVcqrDmmK^;oed>fxLbJI`dk54X)fK z$oMDvNwM*@oJe@MbPzPPV;g)AaDYk4WmU44w9YO^JU$&6Gl?SMXdA8QDi*H+S?H-= zOSc<1Q53I9;DcO%t4Iax!}wK#?bPCDb?J)3?L`C223bXRi`KF~AT6`xW1Y|m! zS5_OdlBAup2>BEaR`pR9R7cocUKNOhV?j5~0zGW7a&XU&tgn0YIMkU=B7|b`c`@oE zlMz#LA|S5>&60O?!tLoOt4^|ypX+^nBsji(dspRzclOPI4 zR)G$3&HMM?+UX`!%SK4rH{U42;U2X*P-bzrr(+HbmJud7WVga-i)GQWOb3>XL|Mr? zo;=)8nShc#aDL{FAbO&X!~6Oy;81;6&p)G@860{$4l85Yc9Beks$#CDvk$3zv@{4| zp*w8Zm%Q)1j5^TIY{6c2yhe)5@w;gJFip7)K5NHquZN#_Bc(I9y&pUNR-4TKp0Kcx z3oe0fu~ACsl7iW540p`pNj8e$=zz~0M6%PB7R#b9=&;OX$$AeZ;p%LP2bw*19p&%x z8daJy^++%d48&cjn(0*Nph})`r7C_XRd2ff9Kp`!;U_Az!YWuu$*m2!uO=Co$>b&} zt1COmT>gUeW{n?POYr< z#GnnXSTPq45ooTfuK(ev6;`><87C>uEWBdM2ROY~%F50>$fASoJ2?8ZC@UdJe@v$A zF#Z=EwkV@6)-Ed%t87E8YB(;NbJF8oBh5HD`AGU!tjddtl9RCMnL)}%-}&Poe%qvk zX}N8BVVL%q^kS_qwCx`0zhS$1>v0nBtfd0pe(PI0fCz|1&F0w8hx{G2_U@P^AGVObl_Cn)dei*!;J zTV{R_PB<1Us$dOg9%DmM!vTfH7ddY68zA}l(m}e9fs@HK>p9MnjCI@Ntjme+4WF^Mf%PXKBR-!`O#BoC( zf~n6Ek&+gdoCc(70zev^;bxI|8YHwKml$@SS!#4Ooe>!`vmOeVHwf5?X$RirHSoLg zi8GRy!m}T}f7X5%vo^B?(p)}g1Kl*vRM4897@DLoEihSm%K@-U@&OCk;P_Ml_dx|h zPFfO#rS!7W6$zY^Iys7%?3u@|up;TblVWC%au8|u3^`$PON(;qsP+Hm!IU4{p05ds6|zWVYtzRWh47HM?X7t@;;1+~vpbNG=J@lXz; zkP)C?9(>vIlZwb-jVVq>tD8sWPOy+%OaMDBF~aBo2cXGs&U1vQh0b1CYjX0cII!YO zBDL;AW!YDfFdNuO#NtwKo|>PseUTx^llHUZ;XEtbiKPXx0!4l6sp_P^{mrlKFW-N# zr^6{Y6M=&@4=TW9j~QmIge=f7?|WpkQ6B@>O=;%DYna?KANLXLH{wcp+w1C?f*K3x zTL|~kQaL+b2c?8r?6!D>LagzI-}pXmCd_vHe5ma80~k9TaCbK(5lCKmU)e3zKm(gc zttl#?&!`b7EiU$L}j}zpK&#k|xml0Md5=WQ30$PJCu4lmtB-GRX7lnR}MB zb{+0}_9>MF!`g(z=ZcyY%bu^1)rR)o-zc@YxZXSMk+9;jkjqIiX_poefVR&{c~8C& zWSinVStj-98{tskiQ}37ZsRd+v8TV@GUQ;*>i1KNMrc6npHJiQF6h75mQ8GH6N|IG z+`2RXu)8cLv=P)^5*U&>tD}K!F9A0kJno<q2LrrR8D3C1+(!s6y;#QZPHq^a*MGfhalwG6X!!aAY9xKZnVJwV3GKdc&eG5d3$u z%+3jpfobO^PLbX_O^pd|+Ba*79GS_nivV5gGiA2FN)f7HHYO8jU0iKeNt-PmScQ+p zl4%yhi_EOF5~UGWcg_{BF#D!eRw?b8gAaILNzAv-QpGmmIm?^)00a@%PcLL$p%TxihYG) zQxW34GBUxu&q2OY*ivHQ7g|{8e~6zg#&~Ql#z>~zJJG(kYu}X-lA?TTAuX|Bqbnv0t_65%elfc!^|@88Dn%u$8TyW zM{w35cDTN6cj$w)eUQk3sn?O!kmMb*{<#WRzVL zON|h&)Np0Apht;_uLg(N`4T(hew>ISywbH=G*~QraT4#1Za<)ju$TIC})RI-?I=PNF z*&EFo%Sj_SLHjzWihQ}3`Qp(4yE_y-R$_tV05t^JOqdD)DJ%(t&PaynW$h66x#GSm ztH4@LEck-_^Q!gUO7ER^3g4oGYzpzoncozq_iT~!*4i<+71@{W!(Bu4_JcV|l*a)C ztTrr9Q&PRwxwHVo$rCqN4;F<$7Wwp#k@AXeyD0l--l5il(t~%qTQUWBxj%n?u$wx0 z&8OTv(qRtoJ=h-iM@=q@Xt&;yTrSbOAz`pcwfiw6sv$?XPl@>90|Ajsf=|BSqqh-3 zc2OvkWhD);-4GsCuVbHdZrt|`GMG5Zj*3XYnq+qiGx?B43f=$rfBuvG_K$zE&(A0O z)5k|Lyf+JyN9xDO{HpEnrkc`ss4t6^Gs^61tz|g~lh=Ur_NBhe!Z(?~GyA>IuAWWq z(7^=Ffqs~1w&UI(v4-5kffFcd6;EleNgd3!p8L;#{DXb_)1R>ISnt*ssU#yVNP|7v zZS^;tQ0xZjv-R9JUf&qeG+?&SU@-y_d4O2yzto8a>(?Q&1kbcyH6@3ieEW{$bgAwC z?b{v4b~x_<`lmX9Ep>c=TtLG|but#B-_KmFm$efPi9nA6HYoqN(BZ5Vg`w|a{O`QD z5ANX>&p0b&5|8b!zQ22;clO}ih-x1jo$ILEAF7ZYSWocBspQODrDQw8&i<~^k9Z&=>FgBFLOJ27C%cR?ZvI06W3znQ#YhnEaIqUTbW>qCilZTp>&?ub+ zw@y}QWt25XIuEsS%q#3{a3(Qk*MrZ^uhX(SLIh;eg{?&$m?uWafD@x-xEPC#S5ShH z!gb3Q4#>%wW)zb_h95GxusQ|`pQ}FlRN3yM-B+;PRkHBDI+-xp!lI!5nYBWI>Ltjk zqE_rOL0AJ8RvEL=bbgSK#K}rl28zdP@Xd;lIY`D~*0`s|a)l18>3OF#Mw z!3=ZL^sD9RcN2ehqJOGRSL8TLO>{F4RFEWCB6Li5apnZp%Mxom7c8^Riz29X+A(a=Zrq1*S>M7UG!)tEJO zmGxnqGz%582+@+cZZxAFnPqk43@a-RP623HR$0fb$r$h%B0_b}W*zg-X#z8sf3a}9 zD2_5KRBGpU8;f9-F= zQmYpp*NBP!4$F5V1{XjACcUV1AleFg<&+gaoMz8{GD$!zFKEiFLi=#V3HQ)P5pT2+ zufe4NC0qDD*~7c)nAm#=;W`~@6#xhyE1Lu}Mok9DSoa@4sa^(a)$Z9+$Agkv0LUmv z{>%kNODm7bTC6+8`aYoME|}VqSaAHXXkta;1sWgY^WEF`Op5sM@iQHIZ{NMOrMB4v z*>j16*R*OrPbWEARXBS@g9wBYKUPLwV6s)Qc*r@DrLqIA#)0?6Ml@1m zwPCGN>o$M0gbZmd_1Xexnc?G%w_((l;l_x1u>~MIk|(>kQ~%S4Z@eGyzVw*Y694;P z8@}rfj+m+C5GpKsEXE~Z#dqe$+TxfV%jjmrygR7AfX5ikJ5;o~p$?jyDf0K^CbesM zn>Hzaf#~Q+VMH7sSRlg++}V*7|I5Z)qrqYZmbPimwkDqtR~qf z>z%nbR+tcczDLY1K8u!ab5PzmS)>96H$(f5l zPtS98$AdqMHS2mjo%q0_Do@Hhs^-V3$ZXE;q{va}j9;zCI<8II0xRkrG~!Jiq#J-b zXu4yqO*+%;z^lmNNYjnVU!j3bZi!4&NI`prp+()>N$YJPbZf^I1LPxMErfNUHyu+k z7e+j4r38e&u^QI1v{yLKaB)xd*FBd1sr&upoA>ta_J+0wy@`Gi5Qh$@^ML zjme{}5KD{6hx0q*bWe&|O^S3lvdpG~(Im&5YT3_w}cW&8&No z9CS~skKvMr@zQ@=DegG--zDB3*r^Y_aFQx~-;XiU(6en5Qg-&YQ>V*c9YC`uZN(^+ z^|q9;q}&M5WjZ_7)Gm^BI@EL8%?CqnTz!-_quqBi_{8bzcl);xTAhwMV{&i zjE63(WwBi|hUf02fwy{Grov)QOg_-8=Z?ByjEMbw`;9cr8$VHs7{r)(imof#!8;i{ zBL=(|_)w&hM~SQ+k-%zWM-~Tvczk9_MMN*0vg+z8_H*?jAz}` zi7ccol}^(#y!~q{R--vGi>aIIoL+b&fHgGXXyhsWo#d?Inrb*U$}swM5!_Bugl|>X zE+IpS{eU?l4D0^kxiUwEK2^65*ZRV;)BTe@TgdsxW%m=lZDNAy9ER2QJSwP%taoI|zuBWjY1faa;oW@gPoiND7! z+Lb*qb?4gTB%ndi86rg=j?lAFE#PR!q)CyDXC1E4CfBQ?^1cI{uC8l~f#L%bD;tK} z-tK@stCKe5a<4YK?{M7sJc2^vK8xQ#T&Lc1@buVGRh?hEoMFfQa6~kfomLbMMrK}| zZ56HP%637OtTaaPS({fV+@A!X)MXts2w1B+{K?BHqFU0CmGX}?*8qM}N(3ZW@Q;HA z*+=m5LNm=noU?y5Fm*sMC@;iA)}F*bS<2Db1Y&WYD%d_gJX23Brri8f z9LoV$t*?$g`E@D-SK%*8qg81{uuW8kLUC)F#9r9^czWibTD>?46FYoOGA>!3yUrcV zg!03xd-B|9w;z+T`wT^`Pdvvuc_>%$;_gV{_VvQBgwnD|mZCE>iB%?K^`TA$bWJ!` zPnt`=|MbAg0rASW73kjApSM+RVE1BRP1jfs;?ZaK@>K{MxLP z;?EO_640qtSK+{+q&gw9FOK@mRf-Q)YlkBcT z%#_K)=*q}mJwCl8&ur{qdyUD?(-uwJb4$|ex8UYyDUwklq;)E-qd3bJIyS&9c?2=7 zHLnoErEv{*ApGS^EOR}oSZ~S{Y^;GAOJijB*bPk4P2CdUu>tf5IS%)T&s6+3+ct)G z_#W71lHP;CT;|B~$t+wVIds+enzz%GJkYK&PVa-9ed^hPcVgWGE8StmqT7)se9A6) z7cv7a_;^rJZdQdlu%bQzmpZNn*v(D#F5m8KdH0TBbyqtZJ_T6LOl~-;c#L_>ZTO=+ z1r*_31hkV@iC8^@uDGng<#F6mfv_EdKf=Noh=20bR0PBywQ_`~q;@%=%NNPD(z(pu zMv9xH(*xJerCYE*mR6ZXSk`I1;r%k~i5+nAMF*8-W?r_D_jHO?E{>|@a1>LbHhgk0 z2E#*K@vJ3!a+F>ydft?m+>&8g$gG;ZT(zLy-@dl@AtULa@>?)cvS($|DOmrWmE7*C z7rs;vKc3U+Sraf=9<^dD9dne$6#8-KmaJuPPzl7v--o0Tsj=AjJl4$hzGNm~%{66= zefspVfm|dIK*C{NTvPc@7BecP)ic1oJ)w>*`r6T%W-gwduG++_XD{wp*T9r129uxZ z#fqE&;39DXg8?;sacm@4%+zMp#&7HXSb-V$jFjPO12CEa{TP-`_V6}TnVVaRyF%Tx zD)hvD2Z?0i>LfSZ2Y~xjor2E~pXy|Xb@uADW4R!h;CodBV{sc4zwz|t?3P^~G~0+B zj|yTX0Jn7DBp_^5LlFY$i1Nt{Pi!JR!wyH=RVS0JvHX54!JvBs>%8MJF{hD>O zRA<)7op8nDc$J#zwH9&|q{)7EU1yqW=bjcf{p2}TSw+i79gO*>3H-Y zdoHD(8K54Ta4=i47}OheU>+AeRQ=J^k}mKGCfS{@`pfmO@OMhiel=Op#GO6yf%;*g z**$s0$i!6T!kE^Dk%y9fk~?C{>UImAEV>tX_sv%KUKfwGEbb7AFhjFgYeyDZ5tFAg339-bR^-LA#QtxqiLIrU zD!`>ZQ_xv|$lV6teDjU6(GWxXq;S4)z%i_fNkCOQz1tD|<&azWJQc#Gg5Y4o=n|~g zaQbXN{mC~?M+Ol7?C0MQ#J>Oj6UP-md8+;VGnRGt@u-41lVZL3EO1|1-Iwvd>v?Ll zG-SvZVDE^&xWE6%@$d%H0-`r|b$nC;!i6#c`pE2r56DECXbB}x=^Yqr$0*05tbVE* zAVMeEC9%?Pv2(nQeyVHj?}LO=lMg?UgOFS}N>ouKM0p8b-gOt6o|ZQBH#)dyCY$GS z_!#Xl*U9pw?Gp74nINuXWUS*pm%erV^OEMXbEb9{#>>L#;)^VX2Y)K6yP$$LDr$p@ z_4F#2m>ecDXFOakRgMBK2QjhdN37iN%=kmZKSIv}lY_~Q6;qANUN0=5ie3?{O@Q_ET+ zs3t8jtBDD1hbD zb7puE0`M_8f?53^|HuE^{_bc0Xn%V8VCnHAEsyL)fTROgpUur|@848lL&hK^3$B)1 zwDR%XYqIv=E89O-4OXU6YAm?dDi(ku+ltv$MVV$~pF26t?(aWyk^*2MgpEtnvzppU zKw79Hn;c|_pdr)Eo{TXOtl{`lJnA$=kc70L=#JzvN6DHD4u^?Wfvz_(L=2kjyUOkr zTZ@%H9#o^bUh8A+i_=cg5wOU>s3EnGB;;eufMcKZ_F&jy$VEO|#A*(RLk8^J>;$?W zK77Yx|NZ}V!%61p;iHz~aqG4u5AaE;F?S97)DlgsY>^o3HK73?~Fq|hW?&2O-0t+g9nNheuGC+PM zlLW|eRadAnC-cFi@F#f3!6M-BfLw4_XYISnTv+dRw{M^uixA3dl;~Z4W@Y_HF0q0i ztOkKj&S(N}ZaSe(s$DxWRrA$Pl~*3Mf4#L+YGKQiM)_#uDB{y*QjdziWUtwPCxN0n zyE!y1s817@`o^_uHDE=SAVdi(O<-9c49Kz+`9T-SQk)NyOFA6zCpx}zwIG&Vmgbcd zTU+Fa7nP$iq#`i{e7sfL`ptafYgz*|po#;-Dp(%9~pV!tL#w%DCUKFM{)ExQ|WR81Z%|oIJ6FIatVWA0sd_M8mlp(@&Aj6uNl>-wD^+>tU-=r&g zrU`gp=+5)=vumtJFF0bx>C`%3ES;Akt`&@6(ml6U z;*GfpSUuSU8x(D!XS)t4EI?Q_S^PaEneE4;0OgkJRw0d8PBUe*O`e2eE;)%6M3}Rr z9I*t{prv`sDpvJs_nH%#0f_N*QnngXkx#0221WzXVTCmTtAl?W{$T&-|M`E}2AuZtF55eky|$$*e=B%r&)DHqMS5h(O}jcXukRRXfRGu& zd9w~AB?MfX1Df!uFx0EK9?G2fCpp6MK_E$HVoE(kz;{lF@kHm+dB{wjwB*V?wM37H zJ$WXMJ9-qspkQ^ToTSNmmfB=vPPmdXtgV_5@zQBZLs(Z~I%$bQFl5BaOrrzEYeO*J z6+pA!iJ2pOXpu?FHOfu`m7CkW3a?9rOV zSkH-N61WirW)<6x4ab86iM2T<6|si{3fWU4q%XuPf489Ll5}W8igf(;b_FF}p zRN0CvN0;QQJA1sinJ3WrcrU`N=0J0@82^Qp73h=(tcf}d=?qLZV~u}KuVPT_KRfX9 z8ch@Q(#_HlT*MKRgYC#@6=d(Gf11ut79`zoY=pkoNNwB7mG{2<G!h6|6q&H`L&kh6IP+{EJNv>)f(`o>gdG41Ty zA>{>Cb;&nc7LROsA@8Tsoiy@I~SUBO4$C)$9BC>61Ow$q3FvTo0VJbi$tGzj$U_ z&33#IfP%U2_;_Y6!Hzb6{`kr6pB`8#3{}J!`em|$f-r>siGI)c^kBZRvW1fhI9M^s z0AzQS5TVU5*L=SJq)fw`H)4psu3RG@Q?p^4HJ_%?+XcFfES1vwR-=Rivi5Mc9%XR; zxwd>pc&zKZrM#e>?fd4ELIax~7uEOh&ys~q(dUJ2;Bk8K?~7TW-|xk(yturxH?MqA zX3WKd_%=5{5^O|7T(Mpitz5kRNHR5xHP8^bph`su*M8WN7V!z$1B zdQ{jOL#0lNQ@wk$r$gwM|ME-wumAX8?PCR&V}!uf6a4(AKeg%SS|jZ3`?qxF;Td7h zKv>(G{lYrQ^Lp}JehjXi*K^hK=9t9TPFaJLSy~<<#&BVeX=Tmj3VK{{aeY>u2rtEW za_~?X*q{s6ZA(a09g_p8gIY*vxpN}PETp3gsohVL7widkQX0UbeN?+cahs3>_&gvhaP2vXT?!FhaBRO0%&Vy7}hq0bnzY& zNBOAddpb3pl@X`qhEW8c>VyRb`xb48RdyfbSGcRB;G4IYygxHU@)VP;^#V4~ZV|!5 zb7#p4W~n<7-FD6%s);`LPyzN2e^hBuN>iKTk2hL4j0GTV%s^0hhGRz>P68psWpVTT%ai- z05F&y$23iV@R6qyz?Fm34<=#17v4Y_q8eKIWi-5&H)-o_IkRq!Gk1)8u?0&??S+kW zdNb>^jII7%JD(p2>PlZ_wpNQBF5NW2zspd!x8#=hmI@Lks`klMdkalioyvpK0Gxh2 z)pzyz4gk4-TXi!(ePk02uFjHY?W5Z7*^IAP`y|c+40+PX93vh zdepHddjHkVr+je6n^}R1TItExHOr+{&^jIc{&DCDwFoMsemrqt>~=?)@{=49%oSN3 zprcZmd4d7J=A^agwDQ8L6)Ok|lNNTI73}|vwXnSI0AgC78JoKD)=*CI>G4y&frI_z z-JRW4UG^8h_$T{i{rTe`f6LfTXpKiao63rQdiN8uBbG8;VzuEFMu#jIrfVNO#uoPi zHl-CIaB&Qv@Unsgw4%v&_L78?*UsfC4SN*tIcWVa6pP_vp$lalEzPb1IRaBjJ8+nx zeI6g4Jo2V!6^B_4H)^fWs9h=```yW;2dhSH*|%@sGQ}5~G!A;Gz>Ntb68A8}gPE=w zj;}o(Y^bdZ$qflCC)Q?AS~jHsFE@$;K=0lzENHXVzfoCiuJ`}GPGI6!iqZ&Yn;d+x z!mqAXkq9a}q_Lz9$RNM$h1zi~#hMS{@BedkC_a7Wad&s`c+L}@#zqHctZcHnCC5pl z2ozb+$>em73A7o*197v+!t=2btWJjiAVoOQF~8n^AbmyTZgOBw?epwq{ZJ0JPVQR# zPT+#$daR^LXDTHaZnhD`wy_4m0R5~M2TL0iBiAXzafX{#NykfQ+Q0u--O|}%)0XWf zSBF{@M?>Xosy;Re*kp%UPsqT1+?Xn3DJ688($Fr(C0?{th}eX_Q^b~;aG>K(?Rv(^ zEJaecMG}eXG59JEsNujvCeKVOZiW`dpPn91WIYodPv+)rX>lIEJx0IujWhM@0rbo0^xTK$T}BY^n4HB{rveeyT+R;Jv@B>ffMmX|Q$&=y}pa zAcolOPh6Kkwx_>m2Va475=gF+>(Hn0>^^+>-riO{_b1=}eU&iwBo^6|D4wbmaszA7 zl=y>~a%s6)Qjqtz(n_2Pf23NKrum*nB^2x6Yw0YaDk)?v$~+1dO4E=-9(y4yINN4S zdQ`j$d~|hFzN2y$agYKyrhZUZpjYhe7> z*oJeBw0bi$bQ6NHx@&5oXMKJ8sNt*FU$#J-i+rZ!alDW^XL&8*t^nCpV4S1M+KEMJ z3gv`MkQAs2^vw&Mi#=*`pk%Ns?7%2UjjB;B4T#lwpH5t;5=?;!4JR++JXv!#hz%)~ za$S?sMcgdnB7%+AD`SWO=&4r`<5PA<%TC?OJ(?e1Q44M}xZ;u8K!8rZ(i9eRMA#4p z7|h7qJ>o;F2@cj%+30`z&p)rurDyxcfA}xG18F}5)6as6n(_Z5I1o}V;KP%5=fB23dRDlCHuB|!ZqG8a{U zvaJk(2otc{hYHegt|DxWnPpYlKqy?uUOQGRJ1{03Aj>{fUn6Gsn+nv32>JZ^z?F}u zo%C5sCf*CeL6&?1HcKuoc+sb2@|f4;V@gRouyBy<^ZobVGt2B||EAvex9qc+&^S?H z#i69g6*+#>#&O2-pVS(P<4dww#C0BWVpW?tb?(>dVDN>mtVs)AGs4j}Stn`SFZX)a zjcTNBVdCBwE|)_TI5xt~3qx9-l~y&qFCF27yxFS`vNryhZDt1FjXG`F;{P@;*}>lw zgg+2_voFT){>W{kTePdPUdYFHiU(6Xj12D7UvL5`}Ea@0{;G1hIGV&#mZ9B_w&>INWdivjR3+jc9v){zkrsuG4`I;g+E znAJoAu5?63JeXvK6xi=huSqPw$S!k>@cE2S1PygFb?Yqim|Jy(QUv~fD zJ1!myCk_DWbdvOd!7F)Sp>DZQZ(Y2W>vPi^^GWH`^zysjJk!kHF_aMU0m}z+uyJ-` zdD58~Vl%%R(I3eAdZ^dIM4EN=iN={QD|^kH3@BAtY6F@z7q|x4j^;hC6$?)y0cT&C zEMx@$$y_H#Zt;2ewxg6pJH8l$qekLbFG3%0;`zBev8*mpb37I zcbZjXOLBH?3_m+PyJ_bV06H_*keg48RXh~|DfLv8oGhx|AKrgFM}l4QHOAI(eF|`M zbj~t$25QA8#H5Tbmj^ec*}77})8) z4m@y{_tj+nwwlUlr{DkjSN4zp_z#t-ePETa58r>s`mt-&{l!F;XvQgqmPr;nI$!!E z;M#Rj?S=pb^XmzRUre01HpX&KdfKYGb?RW174j$WR8#}ZeGE)Q2Czz&JE)L;%m@lA zL#l3K!i*w84rHu1D3?el(w?cmfB*M?&*jgVyudoUM`hAs5y?l@IEWZqN+PpI3wYR5 zURBL67I?*CPo1DD(jFvlBG7p?phY!jKd;iT_JAVFNKs_t0 zP~lmtr^-iccpAow7f*G$iXn9j16-T;pOw~_*8ZK#5_K}W|HQtGzW@IH-_>h=&q<6W zpV4>S0zg7?E4&ZCEjqn-rgJ!OQp8E}z_HXJSbrD`i_Wbgb>+E+6 zx#veom*70<0fiH+q>bIs^^hU8x$8d0@RgNyznqtQ^{$j97m&dsy5RIw2OJU~9%weh znRZjOGHFYNq|_@-Rd&A|Gst>_6B}Vctf0RZuaKq8E41|~tG*Gv<@K0Y6p(SP)OWLc z*=1&BOHESn{%92X8$*pMNwYh}lCuP_+!PwLw+I)8bf7LaG;vWT5R>}CBuf#}BP)Px z9oirgQ^+n6f_JQD?5+Le?arP){n38)ufMc^`PDDkYfhC-{`pUTWZbdB+H@_G>)i9K zWxTO1UbH3dt9YU7{hb#T_Y#9zAW^~lOm?v3PRYcG1WFD?@zp9jQI>zrp zg2_g?p?D}AQf^h7R?DZaUR93C6<7`@owSmNnKIoNw)No7yU&alfBW_g!5xV^7~y#R zfJhqiWsv6NeMLloV1-fP>#zxXv+KmOOnHQiWhW+F?%ufC1(H~>hT`vj{jb!H0p!bk zWB=d(&;QSURwb6(H?>bxsce}fC!p;P$RusnlUBvfZTY37Ww#s*ihpjtZ<@NqIf$o1 zsKL-KXDqB?S?M}(kMGr3SsuRs=(^U-#@BjXjua9e+{-4%nhJ)?3*NJlr{U-SChX6j ztXY!mFw7$|?^4URzNO#mb-FP#7+`=A77`$hNlB5CjCm2L;wVa05}8$ z4KOp9-j}z3TkZGW%m~Ff$2~IZ^&3-l*ZZn&-6b;?5BKB8j}P?lLNr@g-MYf;G3*fL zuDam4x;%7ezHi{=nSYH(`qzG?ZvYGyzd25y-+DuDQpdP^Wt2mKtb1j_YqHWYN}k5l zQLX+NGwbt(&pLLCCW{c$)Os3{R6#fV@jU3e&8g ziMe)`N8;lYbcdibR`RIuOY)L_%4c2U(ofC$5Gx_1=L{4193 zLTlpY=8CU*@>a z!Fz?bx|C`w@dHB%j1)!@o+vr2XM3(5L?$q}ny=cg2Yg#3w_seQnQ)TFOKHTRVVm!$ zWf0PvfC%tf8h7B;JJ(VmrmSi_V&B0O3A&lZ0yc>_Io@hKti5V-vuB75{P`K6hjty{ z=Aw%Rj4?DQ-rd}i@vzG(t_iiRfC(f-Kd~fTMHq9R7cHf{+Qe?GoW+FCMxQo_Hc>Q( zCFM|XLv(lB=Ahx*!$nJePJ~u+mG&;2mZ94kPePk)86deKmN2KWNDsRPkD=p$@*~W> z)U0G_2qtljeS@F(hJmYrz6UA^Mo< zY(=jr4NkTYQR&$|@7{^tO>rN!C*B;yu2IzmBR$4duDomOA*!thWA*ioMsxl8Z+L$E z^mX^2U(O3mNoBfgFF5sg2%3qK97D(k^3USpQl#8Zc0vxtA7^Jp(7jr8G2OI}xU~Uv zBw&1Kh6pE#I9C?CfLa1LAqN^<7OTyI3pD=TlCOBUK3C^s3f57r|3F&T%oab!1?Y~q z4i{T^hcd1vFFZb@8?Obs*Lhql9M#!{)guEtog@TAqcsdJFZm4{yI3Hlyh9?js>!=|0D?E=+#;HzPfr% z7$LM50=5{3vFpT=J;Ef_rkCHM>p{!`@McJVk|*4rgTKR=0v`sI3r1=p?p!@lC1Zzu zjMDKMg*J78rr1^;u!C#)qI~$^)s6_)G3PYu-oNjr9bl-AGdC9Sgts7DxB>-h1)fo}gL~V*wStbl_fLl)=cvyFo;r6l)BTgu@2rW-E5Hbaq{`wk~luGa1R) zH9E8y)&e;e(TmxF5}1!ez_u`nZ@;=}*w8?_$9~^H@$pD#vba1|3a3ksNsT(61TqG1vodS{`y-B5E&OI}qmh*td_Ceuk@fZnZ!OYGcO)P}A zs2YqgHcxkt!%eqs8+ftpEe@V#M00+o>6OqTm4c*ty$9pLsOpUEQ$_N?SHH8 z&U*fo@1vxaxo5gOcZn<>Ri0~+*7Z2kC2^0X_GHoQN>{4HQi2LPo3nYOfm81`^$lywW6E8Y}i7tPcE?O%$ho4e+w**;diRLL`P2 zWasA`&j%MI5B-EClb>x}Vv3|5jO}K>A!ds;hW0=`EY3=7J5%jaFd)}}Z#XV56DdZ)?yN4FVhxWd@N&vcZ{B>~4yqls zF3gkI8&~@B)t*FSav{V#67)9SNn zLl9&>+_xLKpC}l7JNW5lsx7CX&Zz^|poxGMna|a=Pn1yC+O*U?L1B8vQxsglu}ywL zNHYYVR|BlRVVT;e23$Cg?jetkE#|(MK=Nk`m0q2;`l_pczlJ>2p6FSI#2!Hkxf`v= z?l2a@gHER^)usMC|F>6~B!6eF?%6%qql_#oV+12WmavwSFTjaRgb|*Pc?)q|PaTMP zNs-LG)oID(Q#8A{K5ShKq7quG=%M<8UWGQ*EAYC9>ybmSQ92{!kr7=R-LDUNc=}&| zJUjqt0#g}kI&@r+Ce{aE;A32jf+?85suBS*FTPNR0TnPHTH{)7-df#8yBWa{Fks~1I^+--ZuP^7 z9Tiv<(%_&&2!Bi92BCH&vydPoyBxe(PiSdO4iwEOY1xj$MQiCk7Af@u!{64vE+{WSnOLB1O!<5M+Q2#P8;k4F@XL73 zlfvvC)tHwBBl(jhmkHze!F%u7`yae)-r=?VBK_y%K7vH#wjhFD!;{?3Y5>3>`rJgQ4`#t9t`w<8Cp(Vgr z0mtHsiHTLTE=P49UjOXL6T5Fl^vJg95^CaDPPw~`HA_PSc>2@Jr|dKK00p#${XRXv zR1yz|?I3ug`WoQ)v(ivqn3F@15spjMS?jg>xI;W@%u?1sg7R=o?SOk@@7{i8PaB5M zMwA24%cnwdmQeLvCQmN2-r>nJlC@e=lkjA_23T)E@H z)(_A~FgK83=WmkTXHn~!AuYxW0|Occ={-o$pv5#ogCzHygs3D?nwXpk=K>EOyukTx zBmGuhn|Bsq7D(A!lqZ7zf<=l`2F45DX%k(2@c}36BGzB?aKlsk#;?`i($^lBho1WY z#Uc_+(x&C%*t7Y<3>Pe{xUqy6MXu&X0vo==Dc4AGmFXx9ya(%I5~xFiJbjjw!lt8x z?t~W8b)o9ct`rvGe@{l$)%}+q(uemN9{Q^zx-y6x4xBN2bY;#ZE>1(7+{-V{7uID}X7gbvVQ{1HA!t~^7mhC}vjy&! z=pp?Q1XImrVK+!&7$ zN;;m1ae_m8+d_L#wo;P8-E8DB4Z#+1gD^VfEbgxcr#7cv0-HU#HqC1Lj@IRDsZK+_ zp>f4M+*}{&g+G7(oITH=-LUn}!RiJam0ixk_UNuMA*G5^D$li_5&o;F!@9%5y^}<@ zQv=4zwNq+Tw@Na~ywVMxEltSiOdWPYzH5gZq#WP2`)(fYcsAx)1tW8PqtA zzGE%@&0*~cuUhRj!x}`b|M1F_srI4&6JdZ-(52A~t!i_{6B>IOnLke38 zOFcQO48kjL^Q*h~m|4`Nmq(j^wf$36tbEg#Lmc)sCoBv^WVC&A_6fpLIStHcDhZ`- zyv3iJb9`oIqe1fu8x|7aq?sM>D@xo%@*puJjnF-NraQuYX?~t)kQ|;V(s^CN|J98o zhi5!I%Kfy}{bpad*lcB0VA6S|{kh=*%M-|}k^1J~zzzR$z(2~?Ciem;xB@Rf3Duve zQ!q5IYqa-XzO)Zo!s9Rg@-OY5|4;v%f-~53pdB6CM%p6C$&?#ctMaxf?kV6ik&miI zrW!lc{|n(ytd>$AG%unUvU5CBZ)SL|F5S{+9Y?RmQi~Y;OvB_#V1v8K)IXl&*}`bT z;38Xr=N}weh-e4>*>Fhny~@H|U@->N<7%`}*L6fiSVT+_O|khUl43~)pE&qtiF$&4 z35=d=(#Jz(vzhOUYh~96H+q71#8V#Ifk5%|+oK$ytad$@Eh;6nz(b>X>TOPN2tXt! z3M1lhFCMu-t?c#NE3V<^&z|$|7$bPP*w6G(O@{y*O`3V95y^Z;<)#>s$!T}$J4Woh zvs_rA!|MU15+3)fhVQ?7_hIwMpEdk=paYXv(HfmWheks~Iq#)?!7k2l?sfxV1@x)w zy~&EW*=df$*jYag5qNm&3;vN|`I-wOhXl~!7$*up%wh+bXZq@@zAN?3K4b|Yvv{t1 zNSb{nCHy3nW@+jkR<3gA1w&+=YE`66gxkPi%t`&TKMo2S0uKtNq;F1|)mk2VW~(q+ zJkj5NUGkcFE^rQN;GM}&uy&6}a2PkbA3upL9N|@E6`26Z6|JxykU=P;V^ZqB)J2&6 zbEIIVUQ$Z%h)bz?sQq(d(&9W(qG6VlLXDBH&ZP5AP~4Z!0twjh)aojUW-`Dv5Lf|8 zgD;$HX-U5Mf0pAcS;Ueh+saFhuk1-PsCYF`4tOTYbG?HFJf&}a^ikW4*Y@ z2L^6%)iD_ALwazU);Y1hxVc2l-$A&pb9C7@ym~)4RO_J|2fEANKd56z^Aa~Kq%bd| z-LnK12h9FV-s_2ynx`%Z&P+ZuWzR1tqJtiFn8?xTXNYci*v+~>7(IBSmlv1L)16tM zfMiy2v7xl$O4ESju$k3oY}2mc^{dyG8lnO0Rej7vEwinXp6uQMZG>rdzPFUi(Ae}{ z`}ghZH$GnN;4ItKTqlk%qbT$Z97kfqCvUKdpPx1Zcx1Jm^Ng#)N+{@2n*ywkQG)K% zYJYJ3c=OimSSblL4VpO3QqaTy;KkmwIr-(Ue#vMG)VJ?_`@4ifluVR?jZ$sqkmyc3 zd;x>MaprtL%Clma>x$~KJ&A@&hFBP7J$a@V9*;?YcaTk!5?1!CBwSmkW7W=A;@RB> zOQ)kSAUBY{@snSd1SrJuBf6NJ?>fYN*QFd4{wpawBfARFNRTD~!x;RL!ZAs#AaVk~ zmji~Dtn9dsx!H|hXEc} zia**Qo$bz9F$GbT?e1CgY~Qzk_h)}*|Kq>-=l1DWpV1KFy+CjWFBzU~xvy;G$aXjF zJ|G2nMvY(ygH0^4MHU|Sa@#gs6nmg;4|v7(BrRJsCuI2Cyi$&|cPBvGo6RT>kTX=& z%>ZMJ_AyEX=MKBz?vInI$D~Pd=m}*o4(<;s5oTy=IyBk3ym^SwV0ioH9g~OqW;j{g z01jdZ0x-CCHPDc6ZQCGi5qQu;t@5K?mX)WT>|%DO-HmisCt3cUx*~v{8xi;*twh0oT*dtAG!33B&rJwjavZeif-t9SGO+41*u&kn)+=6TKNYRuN_(p!k~U%)%$Rth}iXHiXT z6g~*=Cn~mB)#pj%SZeUxaH9_on@(?{w^s#A!Ha`;xc9;Vgx4`7X#aBZ@?8~ZxIjuZ zi=vLvH5xz-gRCU3pP#w1_6- ztFg0#C)u$UAS;RcBDTC5ZyXkTBuQ%_29CqRQ(~+vGhWlcD!1fL9lUwW$KV)fU!Q?T zoAegY5&Ik+n%jGR`kUX_1vDtyYcId^EgN@Q`KQyJ60BQc*1&0JB8JlESDuAsT-x`av3*PCV{zx>`oZsVDij;x`?zhPT;vPf)yAeTVsrgi?5> z{OsAES33lsx_OJB}{U|8p(iYlGc*+Wun z#(R}x4$3tk9A)Q%?Y2iV@cx+b_Iu7=!N{V6NeM8(V+Go^G+={ta*H?C9E8upyN#Ae zNGjoVFc8SV&t6Ik?+~6CA&2G_PR>l(HRA-4aftlTxOy=H;0fjFR7im9I}zudxmVTfKI@N_{`o21&%J`h*t*B+ zl^!YH%*P;{+q9a=mBa6MAIt-@<)~ad(MYa|qUF%g*A^MyASEr zXP3JNZ8S1~r;x(D~~=1A}L021{ycGR4wW& z$(@ebaq38Dcb;ph9b!WjCd|RH!4{=m8(`77-P7I8x9r0YUfPT4xt-TD()`bNo?r0j zPN!P!j#(`1v>xZxUhBbI&k)CcvSo3tz8*miE?qFP%+14@oP_kzc-GVnYEF+0?tl}* zaon7u^i9T<*tA8+Ul*fX7q@$DkleaS+RY6>jYLRUCLo2IifbHTdDP{gf4fnW!HdDn z&Y?{U98jt|!tT{}4>vjQHTmn(;NUH;7S!Qua z%(etn%YCy;h6|8G*8rC3PyX~z?Js}!GkeSMcCg*$Q=5>4!ne24foTRFdEXLd5QYI= za0i;;ZY0)x0tDbCz`SOB>?BW+nSa0nRiR?^exrAoMX;Y7A7}fQ@ucf^F8F@0tol66 z77A7{E|4K)!fjGj88u~Lh1+&xcYKhTH?Cpu z%C16jf#1=4NiWj+-LKs{=H%Uz9{&2_NVSKONy%QyFBe;agvsrKf zjMdqt3J6dZjLJOfNHi}VGLxW#J!$wT4ZKt9LOCpZA2(`&IJ81ceNcf38>pU&=D?g5 z7S2c!H$9SSQTAM;9C_B7ChNi-rII3#qy;HjX1gcM&GDeZllGctPtWX0`#wMJZ9i|k zLd=D7Vo&?RmNP>Sp?4-Rw}FfE_agj&e@K6?r zAlGHLu{IfdD2U;X4JpCqEwO2|z1xA#0Oz$WMtt!`9c!ics-JQCN;4+zv@BfG6vh^d z^Q3>PRPs4Mp1Wb$u{U`nA-G6bISeh0rlS{W_10m0`>BWjmu!z<(rz?k2I^`8bYIGiMnhRO)R3{G|p8xyV=SR+fw1TeAUG$n=S9T@`nXG)FotH zy{6BUKb}2d$=}=(_vPsn!59Wg=%MLf3-P{u`?|pizi3`<^Nx^+LD2}5rw-U4*Tip8 z>Pug^wlEah0xARg8J2-vrC?&^y@>{;97*yvfD!&8k!jK+G-Ct||5zIWHxcJ>DP zFrz(tdBFynAZ4@2!Ok|ARoKwL+4?S5&sXZz~Wg4C0 z>p#k5qlkftt(B!0gSb%{S4L;Lv0xB zW~jDV_%ZNdIU)LN%|K?d4CSe~ST-DOufcov_CBk%GkbACzy?U>t8lZg*GPJ^HV|Qp07&*?4NwP^I zHvUZS4*)#N^aSpho}vN{h>Wz1hd474*(zJoYn&` zFI~4<`_F=l0z=H|c#-WfYEYN&UUg%+CoLC)w+Ni~-&daL>^S+bHp~{rJCclMwS(I0 zXe0M~UZff&VD0N$*HYs1oX0$5KkbX3SGsm?JY36Gq9PEEe)Z}#J>0Q*OAjrpeA_%L zVvsF+48{mL?~c%622F6xY>p@`+ffORDtMn~-GGL8k0BD<=JK zQDS>v@B4ENcxxD3Z+XMYuUW0u!B)s#ECXDWSflqD!<#)&)l1$f5^-lOS%WG!Xu9I_ zZ|{%v@SqtHLM%uQy}NotZ2$7IC8nBj!$srpnAmhv%z`Ldz!xjhPX6;Sbf^Mzb)Ybi z;DU`O-C!v9Y||qn4R4tO?d@K`3x<(G(FyGL)8^?uYlipUdB@UTE~M0HkBa*XJbR{Y z!_M-Z@ah9u4D!A~kt5sSv>024*`+M=Qlp!%D!r29t35K#3%p3kXqIvqqrRG4E22sS zslD{!zK#EWL&xCMKIe-szHHZ0?8&p8y*E5#MyO6fW#NDIy^1PJX zi1)-+H}T!mB~RB}=!F};2>a9C)hm306xwe%AY`;U&cZE{3X?Lddc)!2ber%Pm-EMs zcVzOT3ZSO-5C*Q`2_d|}u!N(uP)ZN3Rh@Key6_r@RGh~Av+HO2{g?1?Q}#4vvM^zb z&s;ohvV69@($ptWoMZEX2FJhMbFZreSuBny7BE{51dYt#y0{*qyYW=zlkw#5;w?@$ zQF5v>L}sX1oZ;dIJq_w_g_7te4Np989vMJ6)aLKeE#Poub(bO}vvr{$IHk`T#(REo zp&nc9Irj}qErZ0rM;8`XRh8=OqhwbVRpL&EMgbWM@X8(zDOLn(x9qRK0((zr!Z>QIt|rkYW|Rofh3z0{6q_s5dsNy0yX0zkkz z93@_UcDAu+^%<+^0IOVIU(wTrCyX(gjwf%eZag@^W`I$`bC@I?7L8xmNC^W>d(jS!?|tuE_VfZp zD3iT@^@eNj`SVMA_9F9j)IR|+#86 zr&gRO=8S?c97;086B)*8K!YT!$Pu4aq7c^0<3W2ztnT^>!_>F1SK41KaFU<5PtWLyGz0;?n}2g zdDxxZ*oMCu++wq(fn@DoZ_{A zW;fi_;q`+lDq{j)TMVs7F)8(flb(yO7OioWW7m`(EqoeY=sx5K`m1BQ8gteYR_UkW z@t04|?P&{dhc=*h*SB0hbk5q}*>-voCXY`aToH@D`J{wfhbPkDN>y}YId*KH-qyp0 zc;v|Hs@dfdLni^A)8sOvvkS0vPl^+uLJi3O0mFsJ3l7DHhdWZ8z=R+!+o6i}CQQ8n zrNnhK!=zUw6(-;Sfnh`;1Rw}-L8-G*RNQks%KMz!A%q@dFP=T;Aw-RX_WQ-&o-XEna!ferV=&TaHi_#5)`|mKHU3hIak z{pN``%soF?a8v;iJdElr0l^+rhf)y^9;df5V)QTqtYPK*HV2mtUstI#gs1jT z&skx}9(H`cOl&uGCoL^|*A@z%eM7Zt3hZ`ei+{^5`^(3R-P{AvC9W-X)Q~#fy#o|aM*Tog|(BE^AOYibzEb9Y*GYwl}d3?-6BXygg9CDkG zwmG26RZs?c-!|}pZENV^u*J{Wo!CZl)kP#=31BcEt}PBgn`pv39E4UoW5t)g+o+m?X;O(JH0GO^^YgN zt{!voaq~mZmIbHJceud4=Md(oLnYohCAEsd&d|n~d5B^3A0`wLJh2yT!+-nz_v}BR z5Tb>l4_EIv4!Be5tbj%|9a%wnalW&U-+$lUfAP%rfEBixqR(J29PW=C+i|M|la}MW z;GCd}ZFdXpusC$kam=0C!Zbq)?+w3iw$ghzdaD{3?6!XeO$;hepGxVPx5Yi!*dEl; z&C#+a#xY6j*BuP3qmwsv3@JrazX1|~7Z08*Ilk?K)zM&Q*9}vZ=y)b9@Hm=Ef;eV< zW?;zKi#|@yroi>9fIxyaFsjG5@AQ1&)u6z!OGd+T8U+WsJ0t>m z|G2_wAx-8$UnuMfN7hP)k4;himB8sC_9Mv1M(bXWI!+^|sJ(q9|K)stbJ zCmW%*`KDxTuj~xHfI+7f`<9?nFz`1B!Hhc^T*G$*UDD>9u)<>VoMM1ZwNt~7PA&U5 z-!=3CLU8Pu>Kd#Ty;8*C5J||Pum#X1hC_FZPjBC!_AO!udbAa35&vsjG zZWvE^f?GfXi9v{}-2B~&tCNx0(Eg5b!h0#S-_zi6h6m{-n|rn}sE}3#1`dpM^6E4t z)^@};*$JZ={B!Cs+|l5MaLwCyYAKI>2O;nG-h0V|2vU-uSYchMm_#uwFl=_qKm}Vn zG=TGRWq8G&qA3Z7(+fv)fjo8-RCBfNZ)E4xx~=Fro*0$BrfOH`^U^;4{QyXcc)!LG zCG5bH(Vhtq*}L0&`>UV)+^*g{X@~cZY}>}-wjCs!ciCQk>pk0XJ?)sp4P3Q5Lt$uZ z{2b0id`$%Y+&uj#VA*FNG9-Dy>iun|3J$~{}v@O!$Z zxV6Cu-$O+Fz|A$B+%7d-HpAdLMJo)K#x%AP#$~e_JRdcS+PPJ+g}EY_kGkLoJ-@Cn zR~gRPTaYXU_ffT4@s7vw?r}MmobYWt)h$XxtGCnX2G{w+4v{bgnyM4e^{zUgmjeS> zYlju+#fq1!gI{n(@LsFcjzlrVOsuE5fg zH%HA@yF4NibRh2IIqHI-#Nfd8-rC#{?q=C)8ao6LjT|K&l=~UXkknf#MKQx7BrXrQ zi<=|lh4w6@2H^p>pAqtt!Ub1!B%xgiX$a{(Iyl(n`tI6vHSnTN?{KDTu-mJtG`>{J73QM)s@q_NSa2=tF{JC z=uEKMeBm(#9FPM0v-lAAENxyr&us18)<~dvp+X2!pynOQjx@F~yfDo0u<`R|mXJjD z#0)Z`+n~LmAa2(#crVX0#}R3|4v3TE6eVH2eM9H*qlTsRleG40b*F!*-4oR~ zmX+5S9VW`^^tNTQrR4X!KCo;tzF}*FapA=oaoWX`ip8P|ovz^#1fieT{9RrD!cd61 zzA*NwC*lHM)+Gcc|2UZ$ddSNS=)zSDlf5K3mQpOL?8e8}TpTL4B<8>+1^HyxjMqo+ zy|DlM@BNW|_W37v_2++1CJPc-?Bmuh;MtQ4_NRKoPJu}M>3K)g0yB4g99q>Ca+Ym(Om}PnCcpoI& zq}NbZj0=V0fhqH~?e}PpPMuovY)@oK;5t<1> zq!TeIhY<&i8yj`&fJz&@?)Dk??0&J~I#Un2%pP{oe7}b`-mdw*_dm36f9JdQ^!f94 z-wlFk`0jbyQQ^$c);&psL;AC$^{{VcOKab)%f9(7MnZpVP1}t9=}jbWr?hy+o-kvi zU$uEsct!rk%g|`Pqfqk|}H$6I0mCs8Ru`8>DNTKI(8wFO$OK zs8rcA9VRWxkN`A35A1|ozMl*plLE z76U48FAma}$7KQWZ#4|48{2;H4$FPj^{HN6EzCb3*Pd!O)YZgVIK!rB5eQVje&^#4 z?DxL+vHke3{=!ZzfpMV6xoexF8Q2CTJb(U#5_?>KZKLcOh6vaSl~CZu4rk(oUbIAr z*lLw(RN@#*eJc!MlyGW252RjErE4C`6Lx@})LHs%phUZ#j~$Y9%h7x58i; zv+Y)gdYxxK@=OesECV8ncV(|NC0-oXa9YN33jTN@P7JLBTpKzrPQRCx% z*t`P^mgeO5it(mS1QMsX&Z+duFfv74V-YHVXP0O6Xpi?-_V()5KKtq|qY)hJI1f>% zabDF0`^?lmgdor^yO6po=w;0=TA&P8E8ODctnxSc_WmREunUREU`$AZ~GzXg+`p5*Buzn860F z*W448wzU&UJX}={b^8V$ZbdV@76ulSgg&Sf?y)Vn6Cj5B_Sr{53QLkKD+GtJ%4_f4 zJ;ExWAqQB2!hzc7H?P8?D~RP8nRC8|107Yz(?+zp+Pz=SQ&GPO?{H}1{2 z2U=7?qDF}<5SYap$7>u*CAW4ff`3Fsk@GdD>%r)Plgci^$f`#-fTGc7^%y-XJ%8Ka z6tF4aeWEEM_mx*W;veWakdF+l=Bn<;qOXZZ97+C7gX54y2Fru|+~%R)6e)6@=QDOF zK||_eGwj&EPr$=%-tD`a8%mPmbzoGWLhij6FBl!%x8&M1sOIqwa*f`Rm<=->+h(!} zTEsXQI(^caMzkTW7ZRM!EQV0$#s^)j_JB#Ww4y_ka3fm{sj?19WVY^_CD@NK!}AYz zq^Qkqe@-L+aJ*^v_Fxy6ZO+7PABGs-e@ipFH7I>;KEiFBB1QvTwL$$uNKAGdhW?RD zYyTi&~Nj5VEJc zA@_&t0=Jjgs$<2`jhDt5bi{1Eb+<6bYC(%acnzaFx0sdJ=iNVG429VWD_53&aB7qa zUb0IR!efKisgPXQvqW9IeND>V-^|N)DGDz2uaKXNQD$KVF<*5ymxBVF+MK%Gc0;?9QH%lu?3`xOS6vjHvXjLL0WR@cS9>o0t6;LY z!Hr#~!@T92s>>akSDVo(XDFg#f)Iv@tlO+gno#`;ud$djoC-Ha>It-n7Ye<}$?;ct zMZz^W0jLB+q6H!{?g>)m$#haMpB6-aP86;Six4t$E%8vAp)Jl(I9<0vx+i6fi7}@} z%5#6I8n0Dw?Qdg$eQ=zSff?1QYz|_ zpdpp_5@oZDXgn!%nr8QWd=)3LY=Bw~Zd7L1&6R;D4%zsaaUPxVVCwTG<9DJV#`@nh zV*ofMd-OnonZvQS&Y>YEZhNP$$L;zdcn&%jI%4qiK+S{t*gU#no|p{0Xop@b3w41g zR71nh=qz#TO*Y|q-?!)EsbjL9sFGq@GsuA%<1q9EwUo2x9tm=lq-+aU-7Gl%;nYYz zr8w=*9vv3IfAb(rc<^#>>wniAlFB`axj`7FR?ZU+kNx>2>7!S#zq0F3K4rp?1s>o3 zjy-Acf~v}dmv1oUXIn9x;N@nI9J%c!EU$=0j#&rzYD9yAP+`c`oyP5Ish#XFQdP-~ z#NfCao%|9ZzXmSV;GA5-nMJke5T@G39Idk&sT#eX*~<$T``l#4&V=RW@ldM!6r4 zd|W$1YXJsEkU~(=%>T}WI}OO@$$2yAdfm_xE8qRW2lml-Uf3tEe$nRl+@4;Z+r`;A zy{$L5Z@HksL49+2)&BOxzW1Gv+cnAupCW=YF11qKnJvcV!Ue)aFy6IJ8T<3`Bv{q0)Uc4?o4GTC{ys!q>EYCmM)mzWj zk6C+!iLas&kJeKxO&v#i=a_Ej0<-*_U4%FEvH_z|ROh6syi+e;$$V@snK(H0ba6O) z)mktc;?Te~9mr0oJ~oSy1m27H+qXRkEE$rRU1)|CZnKood_Ta0J~RUljxN?8JacqT zQ6xN=v^oavQ>H8WJ~1~)W<5S+m@S@Y&I^q(q&|UH1Gn9>+xE9zgAumv`d_`iv!DO^Q{vfo4=4N1w?DM+eCONta(BVR8|2qYJMh(< zV2}gpkvj`TsP__4Ze1ets6d>f!Zz93^9eW?5Ak@AlUjQ31lWqXc=>LYd?Q1K2n(_> zPIcx@stn`z=$YL_vOod@fgMWQP`_ zTCa3p^#9LS@=a!ak@ue=^o)A+q~t*Am+NCueev`9^jNSaG*qj;cW&<`_EU)mZkv%j z9cA?J#PgOM`@P@)f&JvCpEu+AtS$TljVb>AUdxQXdi{oEd=b>Q?f19#>dVjBb1O9% z;{N_ihQBXgzO<{W8~gI^%l7kg(#r4!4zCcInI0Vs3>r|vDAB7-$(aO>8=^`pN&H&@ zL}HQ)8nTL_ln%PYiYIG(Qi zTGj-AdTB>`_9rT-X?Q8Vo+abRGTUY#(7kqWE-5foNGXC-dwYB0IDm=3GY^In?abR8 zV6G8OOw;5zbAubo8P~$Qn`?T!-~b=mb8hdh9lDs<@_lo*;q$BK2>`Q@=H^a@D$53E zOpLw_f{74o-xFj-QA=>Z1BM7^1{f_49~|teGBm+sK2Ed4Gtr?q=Sd~y?QiU2(VQ2Q zHgC?JwzYV$2WWb4`fAk>R4=rmjzCtOPH}KoEuI`oACnW*4t*(-?`Y}S)iCe-v0oJvk&cG{o>Es;;;6-Z+~Q;fBD+py!xtzcKc>*C3X#L z5ndMBd_Od!jD+p;wkcrL?_Jd8<;(X75s-9`((X}ggyb*^H*ZQk;Uv#1sZ~9y6p?V6 zq#V@`sI2_K?1?XUkI5CUP7I$iM^(kFWCM7hfRD0$Qe5!$Fx{$1ui zuPmgfj=3I=#9`slXUB>;!pP7APH6Ybj=}p2ttbDihi0fZWz!Gf$t57;8&HE1XU$t} zk>#D;%e&`6a_wtFpY!U?YqA=izj)3BC=ycjPJD8_k2*{!Q5nXT_7_I6su05Z{re$r zOOgzLX24yceZjtC!_vhf`}-z`}fr?fr=ijYOl}V3vmIj%l}Sji71bGv*V8edbxkVv+*~)Dd;dcIaNa*n7mYl=yT#z$<-UvFN z*SR6ZN{`D3_Zyf$)z|`y{oTLuef!t{^52Ta)y5UA(UJK+91F2bY#?lcFFwC!K(O73 z^}&`fF5Ch`K*ByYy9=iPa~x@8HCCYxCMm?Nl3L8z-#aZ!aDx(J(hIPpYA;}Y$7mdB zl^!9Ja;`phcK1Lr^)2-zNJ+9SB{9HioKFu7r3~LBGkN)ycyBnycs%Z zE1+mX81F7gn;d z(350!8a%b6#8b5Gfl(h?LJ94>%|(M)pyyHtZ!l{TT0#>~L_BSMpv!ZmpisO1z0dLN4$d42 zHnT{CkNc;|9>JGp&Q0}SQg$boPI-4>&)(0g`&ck#u#U$A<9Vb#%`inp%8<`f;M8%sX!$prUG)>KnB=fY=f zWk@V0R^EMeIH7h}L59lx1M9}L#<^?08GGidf1-c_gonbPsKvmxB)BgxmyWCJ#ywda zBB@`wE${o++S+&A8Q+agq26PbuBYv-?hXJ-!80OW5EEn|ck3X~@ z{pj2F%U^!VmtCB1FUGRI>x2&7XTDgStW zz9Zf@vY^5G__MHpT-u`;39ET4&Xgf60ME7!H!|7ac;ahj(ZGS_uQaydbhLGU2hRv$ zDvB>=wTfXxwb7ak?cG#!cV@z&i6)98)%Rq?HcnTAY8bT>+(XBgi2bQ|U{KvZt)r>q za9K@P<>AHZHdDe5|Bemjn_S=5;@UhxM%bhs>^NX({5biDB^J4&|${qk%_Rul01-L@Irw&uvGo|PO0V~9E-&C^GI zU_y4jDw-*t>rP65@emER3@K&|ZV}at_qxQ@0u`^;H%(goYkrJUV21fYdA49t)7Zkx zh2fk;c4iW3vTm$u0M7nzl(N!83Yu283KjwUV`I`yfh~Sr@^ISG&8qr&8BDKQ3*B9- zk3zfAypW^n8oP%=lp5urCoku8%$69lIB+?hpH{uYxUm33fUf54SZe7`so6riTAMw| zH#)7vpOtD_4!k<_S9R=mH4?qv{IBzH*BF|=y4RDJ<@M4kee5;Rn|BXZZx`OoI&yFt zARSA;FQ)*;A-^y>AhdmEfB1*LPbt8!UR{&y&yv%l1Yd$ve0lMVo6gwdY-IJ&6+`5? zb3~z(1-utrN_t&hT+(wE?g^q8E5Fsfys+@hHJxqI3DlG8CL6XIT7Rs z12bjsH*<=Z=1C#6cffWvGQ3~c>-AD&c9*Eq^_3_%{P{qA5dUgY-ufk80q za3~%tN_Wr z$=uNmJc5rQMB|{^;>~uiR!jgv49Nr`h>j&MZsSHvrM!tO1SruT*$Ri)S7_aO6^fV` zF1`|umK%>Q)UrAgtQ#iG#9jMtNwn%k7{MzJPqfH@SvRziIKvya!w6KY5?=d;6T$CT zP!5&EXKV2S1G+Pn9lN#3f&EH&W_?(gdxga{g40U#pq~J8K#jlI-5I7e@B~A4pWk{# zTK93kW_ZJct-h#ZQ&BMh<1rWSfKaxm?SM7oRD(Tj&#y>hLS z$xZT}Km6f$?WaHcsr~vlzo8%saC~?(Fg(wmJ+UW627rPzT

    qxHwmMiLMD_$IaAc zX7nl~!1*aJrIyH+gZK{*dXpC(Zt{Bp_f~9#;$AQ+l+@9Iq3JC4&B@#DpfkgL^OR7X z^j)wA@jo8T~A*F>&jK#*33o_u~_AkJRCt1%ngyH~EKP-4>!mlr$)XE$ZF zwpY_jwJ@SKR(7guLNm{if=Cd&2W{~3@{-*x1P@Ji-u`}habcHFp4sla{q25ge{WuI zGo)Z;pg|@yF_@G*Ndp8+1pVufm#Xt%2S86gPl+5}%`ZgY$^UlN*Eru?SqKW$pg?79 zj&6j*%QaVyN)qnwm{fGaOil&%thl(gc?qLvu+AvEn1QD?tkp(Pzs}o>f%OT)?VMJA zhY#RMI^Wp+8%Aw*-m0yP0DqokaLWy|nu#l7yHKMV z_wAnA^+U;whIixNoMIV5(nLU0yV7SwcwRlhwbmwBC*0z%`Sf(yNxIz{tXWs*IVX!p@OBfgl$$=<8AgR`4*PQmV>%JGQ9p={5r47DU$kE zfu3}MLWpm_Z$JLoSuEOM!gwN97_HY`X2Z3;`LufD% zcT7tD(EDOJrViuiTgHS_S>*nDlDJAv@I)8#1L~jO_|H6>kx}b=X$q?<}E{K0p28%Zz|02>N%{?Sspw2x$eD^fiUY}iH;2;RnR0k z8knuR5$nFz5Ck1Dk0KW1Ia0@%Ml|$7Y+YUE2h^bN!ExrGi>bd^?$Ck~fYO-Q;`%l^ z+_IQ^WJ?vu16Y>SCl1thKVX(zBCn9NwjrRt@#2Sf*SBPboCDL{@0n|;^)00{tFu!! zTx*;5eXbJfb`1|FB{!2Zy$)VqUS|n;!GlM2Beg6Nx>zRjkT$&7;-|4UMNI3RjK?N= z3bSwOC>dr6ttW}9hYm8hg(rLko1g*rnZn|dU1WkQpYvbJFY@@?c5m5yz;l2LXiJT2 znB}nwV>!}Yr*c<#Sj8z<1)1CjJ&!F=f=OzqI!(<`Pwz}=ITPlaLtMj?jNwW5RutxkRa{YBY-Y99_(xZU>`A|B zQR+L?^w`8c`n6*k@mCAHkL8LsFLblIKm`_wy1F{-EH+G9dCn2m&Ycim;-y8gN_81X zW`M!vY$4l+AHGj9ns-+Zr1flBVwrv1PlOS+qr4$twAg^x%}D@!prl!L?@S6==51>j zdj#(1;c-X|&Tc?^I6sSlF0pbMA(jmLe5$-StNR0DFGwtsB~Y1IgL>KX%Zs)dw;YpV z>rz#fhN}0Q`f}+sYu-*0pA#Nw=6*xif1oiqYa5>4V3Oy_(%yOY4!25LQKNQVnotUw zm|dV|Bo&SaMO6n~DUKCyeIvL77&HzQ!ZTit$lOQhNANIi_s_Cv|9kQTr5oAg23d!} z*5Sm_VFve^llHGX({%~Bpgchgn_j}3J&`xZb6p8eWz?difr>SZJ3$%4Vu(RUB{OA~ zeLz!9@`ULc&tz4Jn=FBHDh&_z%AQ(5Qo+am3 z7nl1SyfQXrLPC5k3_C>ohwii_HiwJ^b+M(J!@B*KGVl_mku4AoRop;JDXGe-E9-h< zO!$49;O3eWQUFy5MhciO3~b93!##H#nA98>a>3wvnu-gmlJh3L1(uazX%z23;Rdyo zMUaJe*D=hc69wrzahG1Unw@Z62N=H->#GTfgChZh(GH3{NVFLLqEj3H5Db z^&AYDmn&=2doc&{tL?t=z9=BUtfGqs);`3?!`qa>Ei~jvOtSS(+Dfi8c^=0r9;+=8 z0=-rk)-0~<=!}NY>ZRA4!#H~XxV}~kou1Q5NC{Z)W+USoQj=X~k-|HZ7n3aOwmLo? z&tbO<8oZgB9GgMcAp@+YlVfw1U`$p0*RHv(A&fPKY)@tgc1k;ZTEYynp6{+7SjBkx z7&CC!nlSk^{|wi7g}%IASPZMLwH~OicIlp>1&Ec zt5Ys?eN871l&5i=$PGKyt6$U{x=exZM zL~yT^%D!j55=rcaf%6Qom9O_4w~h z?w}lVpx`=RQjcq@xSJ9Ey6@A5iSnk`V`}TLfWgma|(th@zenwCCe0NE$SU3ll z&DieF_6#Ahf;Sn>C_Q;&5)Ow4Ea$m0+@#5+M<@;^HX!GtE%-{keP18N+dTOg5UU0L zTZMswMs{~~Yj=lRISHnXRosa0S$2vlK&=IMy2okTJfp2e8+Y(Z>vZ7tvp_OwMU^6c zuQ;mJX<~^b%4`ci$YW!VIHEMul63NejrzT_bZFs&vq}!hzDWlN4wqAJ4^-&+!5d_W za+PonxTHuBfk%2q1+*o}72oFGYH_$GV7{r7QY21F+|~qd1gydxc$_;N5YRyvDW@S# z-JoM10Xt_ARnp_@HJ@{I&?u{d60JF2J3QRo-WK6~t$AK&k@yhdog%12i8UovS=K!T zK{L6%s1#HTy@VMD-KcdVA4CTCIEnL(*b~JQx2(I7a zrLH~nsFF$+2_kIrlN$|NpiIXg6eS+7DN&a|t zej+?wmw~KtrAcX(nz$X7at)_G3>AKN1UsT<= z#*-gSQWQt%_p)m9v!-g>szQ;`4X;flV}%e-G() zBnw>&sRVkLjK(g7(7|!BKTZLF==5CbC%Z{ z9fTK;JB-3?y=}Xdm6sORT^`-XQpLJ>YBe7B#U?Ltfg&u7XB-~MX-~xbJ)`R0K-WM> z3mIIef3%VgL^_Uz#RJ#9=w6M%eD$DhTerxv)>gr_cx9;Aq>+h!C z%Gg%kYz)w2?>1nWlIFfjqO9eS6Yd9Y5a9(cO%`J1Y~c8CYv20lrTyps=#Sdp{+<2B zU;Ml+;CqTc&!@qT=y(epwT&B$DGYQuWm9>(vd1NoRHxao!XhZ4h3qgaqJ$sl?E>3H zXqjBppzcKa?<15d!&w;fo-s$KhIPGiAxHs6W-~}ve^TTv*=T^gl#$$6MDB1 z5y{{dH^6FXlor0K#lfb70pUH?81Poug_#p9jlV;~q>^Xn5wsBSCbPF5f!^E;$S$FFM4FMEx7OhfGlbH~#QZ`98I* z?1Y5U>6`(N&(5>0qEd#0W5AE0IY}ir%5QEPoY0 z^%%0)icVI=g-_L@n3lZOczV~2RHjnNnDBn9-{{~8ugN{t`siC;ZnWgF<%av=;ikZi zcpxDbzgt>)bk+@#9$#rI1a9houiZoU11otucSHU|{3e0>0G+zcCsezID|%td#UDmzQm zsgMJFqJ9ymM`}JOPHSQKk0OoJLCgS*B0S8y`#WmL?sw{b03%;rIGjuY(wH)6*iY zKSD*VI~lbvVYImCfz_45vJ#-AX^GJx5&3FiugH6z!_!qo9S>V)vWzZK*>e%yYl&!B zc1_-S#J_SFsTs%Il*Sy5ap#P~uu9Gv<69{n`!(++g*L%z)1_sz5>M>jU%X~{t}xrY zJU>M*qe@u7f@Y=_W}#&eR3nDQt4%I@G4&0r?02y!`n5hCW=q4lc)&5zl|Fz-+O-?H z+CNLLi+nv3RUKX^ez$S5d%54>8WMxL%1Z2XOA1^VTZ=X{vPvtrGp+t{1DTyuTvx_6 z362rl=lQ&P#5nrIdm3`h-kAD_f{-=pQ*&z+!MtZ!QjFJMY%MdPgSqk+OnB0$Nd%O{cvX z+PD`gzu}!xM0CV`&gcQ=iciAWc-a=^sC|QW!)vUpPqSP7$JIW& z^xU%!gpS41qaDRA7+kmqe9XG_5ISyDJBZGxd+^nb``Wn<-mSpxvU2h^q3344` z>G6GwA3!O}5N%biTWe1;#$#4u(bhgs>ji9GpTXy@CXX~UvHfuDSCKj#{AemtL=ydK z`4_Z}VG~9~JS}oT1?N<*?cyTYfANq1kZn;=;gjsv@kA+7Ayj1Y5{AXIHo-dJr??Sd zOP=a$sv5mnkk&`y5Do8qfNW$Ib_tL5F!e+ySS_bx>78+L{(() zD}Ol7#A&M+;7ms~62*D}b_!kF`J^`KnD66p;wNr{f`zaiRa*2;lOGs=-= z5A({n=HRAAVS*dwC|Z!%jj#O`#D;x6)ww6jaL*`)nNHF?AXe?FX5#glMZ5Wk0uJr( zfE;j-_*fjYQxvJJAkk8y!??C0%XJ6IS<18CbWfRyNT(M_zF{3a&AK`Z&zAh!By2DRW57Y-x;g}+!=}Dgngi9ZsAtD*dCW7tq2QnTHM*fm z-o+q{k!n>v!EuroPJtOOVTNal0m<&&#na@xtw|)yl;|@%eq=p-O+AD&i)MLg4Ij8=B_m)xO#a8^ z3e2LHRjIRwUt*VlCV*^NKb=QOmAV z*Mdq+xlkIB9Ux#py}9CX@~njyZ77$J=&@rQkbF8ksO`{Zkn^Cz0A<-TpF2vi3kEj| z58Mk3(VT$bBrdOmDq8&%r%{DLCKuNw71bNAP)LWQjG_jUxW0I8a`poZEULGn#5p82 z;bB9wmrX+5K+~gb@3kNHoiQY%I}^jjngw5*)Vr2&-FlmMHk@RI-b4?crSudv+NkSH zO7yZL(q0@q<2~=jXznSyL!95dV~iJdU{A2lWfa((ys#rFT3B#VK>3vT1Fw!|QYdwT?@rvNc#YeAEo7wv?(Z)T$7ZF=r((r0%E9+G13T3bV(L zxd-NzXYsyafKu4*l_gBwCHMEpe)#bBh2@~Hft$G&RgfjnxCphV%0?nSZgdq9*&61M zy;>*pVp6Ri#k#gZ;}YJ!E3DDO?PbHbFJM^34My$PxnS1ji7PWnUWP$cX57Lfc0;=M z{MRgmN7q_ouI=&IJjx67<*M+?yMttxaAfJ@P#B7f!Y4oB!w=8xfBVP(fH>*@^MCkP zYy)%t{Guh;+9E$-3`QPAWlk;(ZY)MoNj?NiPUO*=d%UC=w&${S-YA_2NTQR{g_6%v z)qh}3ApAyg4k%}%cN>^C-JPJ7=jxh-VuQGE-Z>(wp2(7D&%0`gsizm`-r@F^5ePH& z@Q|4~*VqF$JkiG}G%l3?Lr=1a7L1SGw`)7VduDPhkxWl48)M+zC}7CYWdonVUT67TCQpI(p&au zJINrjQ^a_pVcwt%bdpYqyxD+(V9bS!(=#R`Lf66qmf0zBzTQwuoF=g+@Hvor9ntl+ z*3!MYw~<9+IHS%V@kFfCq}Z~N|TeDl|0sRVh^G@*n?gJ8zrm zpZ!mNYM*`bRr46n*-eCALx!i5$RmAd5CL><74i?w^D(w`QkUEly(1W#i88|{;@uk> zsD|mDXHu`A_N3BecuGg;61KT&p3x?eO61PGSEqS0r;RTR9Kuklg;5$ZiQ{P~{XMmW zpmRHmHZL1d%`O?qMCs^d+A8jVF~%XH4i$6@o40)Acc?t$;4O9ORKbyrW{Ze(jwcF{ zQzZ+kV=i>FL65JEFj?v~u-&=Z-G?XJL;tj}4r2aNj?(wkx9y{3nwc9Zvrx+7Jk6@` z+(Vzhu~{W2+ux1{&JUmj@Qm;89s~;kHb4>$z1SSa=v-iajtqIQ4WuA<>IpQ=d-mtx zeUk5cj5pa4E4VIlH7u@Z&kc>>?A2^^ShD#6HqZqJ zVR_gZ57l;C3JZD+nxfvKy>Qa06A7BSrf8Mfek-UMD=f{6vCty~FRbFa{!wg{) zmR%q7oL7HY8wOSA_l3#F^2(F$tH##vtcS9%oFpSs^MZF)HzKvO5OP0N&2q5aED{T8 z?d4`YzGUxZ$Y~FUz-?^-{QN_y#o$6YS}fzr``y68SjS#DoK9`Sq6ub6^^2&vsj`2znm2@XIFJsAwEcGZz?-@}`>`3Soqm&ijFm}={K0Y)farv|@ zUeJaP_K*MZAJ`9m@PYlafBG-&Cx7`1JKn%^Qxnm#B`2Sp@9f#-o)tteaHvi?L0`iv zlVoYzHpxB{3V2xQiK>PSzyVe$g+PssU<@+}e8AhBckYlA+H#lh@JEyqp zB1%EWtPa2ucyTYV3Z{T43UJ0<^PZ;me)mT)JlT}_B#tnQC}0DYSs#VZ!bpMpOK$Dq zfx!}V0g@Y3R<|3n`OS!CVUaLcz&2rQaBo9aF~xQ>xB!iG4=8Ir{guP5=P5@ zslkyAW8%>mgF4grJg&QZw5K|1D}> zi6%4R4-2EGc^*~JQjcEzg!R*+{xZ7wcnBl;zUny{`hV^7&_yOR2CSRiNQuewP+40f zKPF~gl`#)2L)_eGa46t7#A2))fts)h4n6^@@{nfex_DyoKGVv}4UuhTYjbt)J9Qhe z6dAb3=!U9#Q_8w>A|tf%1AVa&Rv)1ifz^~GZg1)aSNB_doD^C)P8rEPKU_Eo%=jh` z^&@&PPaL{I4r4qF%eAkd0WNZH{SuOp)(tK^4(U;ZRZpH+^EXxJ;x+TZ0;(}3NNYIa z%b2HN7TDJklQD>OWx&l==T*3ZJ|A_7M|2p3!4EngQ$Qx{x_Loo?Qc+OYuCI#hepCH z`}TJ(?7#o-|10~m@4jch{PC~t%g^81>({rGGCUsdB+gRgfx!zIvk37sX+lMwt>1ka zq4<>T`P0#!UXIOJZ|rOXBUbG8da|3hlf8T0FxXoZGt73^!ung*Rm>{i^f~WA4!bdo zPM-I*%!77hLJr0gogs7-XV%$cW6#AKNmAEfU=adarK9W^*mQe5D&;0BTd6RJp0BAe z0_$r#29LJVpck*wQ^A2Jz96LHx(5_gfpXP$h*hg~oazc1SWUG@h0L{tf8qHwUq7}UfXsKIE2k&0I{TGfFN z<;T_!2_W(<$~xY~Ksio93{a}_G%7W?fI;$|C4p8&K@qMftcDHw%%9Ki;*f#4ft^|U zM#Ggo!#n6ka$XzDh0q*^ko~;kZyuGd@?e?}4}Us-iGgkgzNV-dvDJHL`^K*@+`Q~j zRZ^}l79Q>bVTAX~dK5P`Z3L2+@FHCI^rc!3De0K}u`smV15Ps77EW(odGPcYBMfrh zZ#TU9z2+5-jA7r##DH$bc!n3@7@forpY3+_z-LJ;u8zPTKg){Mz?DvrR zChTv~$JcvqRaF3qDWgLhV?d!6xNzGuJKLjV_r{*T+}nTk$A91c=nsF_e(|$k*-w7_ zbNk}UJG;G^n0=qv7Dv@*Shp;gN%COey=>2t?aqc~WOw%7i=BP&-kH7k{M=qXJ#X0X z$=<%YvR9v9+h@PNvMXn>pHmg`z#d1 z(xRm+gP<}Aujc$ZvxJ9UTB3l>M*0%LqR_nMN8?1C{L3%y{KIB0RDsaS$TG`I;<#$I zWk}nGILs=Da?TrCO;96rWoV!HH+=D`~$(|{t>N^BSlDq6ZnJdrGtm7&jOHL~+ zFbs6o^!B`47+p(lGYT05By+opkma-*htzGr!ccGztcT&%4~*hQu=WsW2&3u3KXTq? zeJ2koICIHAx3F!u^^)gq=lbuKmm-ejx)s%7j2h1&&3fo#Qu8q?n>$@iT{uK1Qw#d= zidXWGNy=#bE5%8+7~Ex5KHi9W-xao=zV^Jp`Bpf+0t$rNTWPs6*;Gj1ifC$TSS8kz zL7nL~N_w}fW5?5;KHJ$J{+%D%-}=M9(Tq>EckgcP>gwL^ZjW@BA(=?=aFc)t_@;hCYMf;P9{g$HLN)L9{|}T!|P+?odH;yfe8sNNjVci-GP~u8dY5 z;-*DZUW5Fd^5j-`9l{e&b=X8vqI+)LNUGJPFxlWBhFx>7A$cOjDLGNXoE%>0Kz=vM z#!9Ng@mAxs5tRnsv2d@-YlEP*x-CI!h;w1O5iHpR{^%7;gVXV{26CS)Ha`iE- zk5iDr*IkUUuTKWo?0LcGIq`P@N=H9TKptJqiwQ?qkrj()Jf2^d>wxjWeQ z{NB!=9_`|~8TY+v|=Wlo-G;P;rH4L71Z_`z{YXf@0{ zU{nq~RWIMo!rUt{ck2a!;*O`jcwjhFuC7CnT)TH>2``K=g|1;-Mk#uQc=$N_9&jTF zmA#ssVF37p2_|3XeoYi7!pCQ^WAZq7Cl49e>em;7^Mh+FRL|V!O*Lu7=rqv*Q7uaG zlVkc)-qL<8E-o~C>!W}Q$W0jphiusHXP~jhTivrMsPXT3Pl&3U$-!b#$2N@rKny?R zCS!d|T2c^Qmb=e+kS4H1krIV(tm}9XlBkOE@p*E{L<Ki3f~G@>P%7VvutRFTded%~RR#rnafz`Jg8Ju6bnxxsnJ&&(1HJ$0n{O zLT^>%XtD427w)|zmn*CcJI9_|b2!Glu!B9cLZ88LtNfUC5>Q84IlMiL=5-hAgzUON zE%ew+*kLs>w7T%0!EmK^D>@VxZAi%tW+sHJB>`dB=6e{{GXig=d3mYfj>q|d-ppoF z={G!|ZG#?CzLz(Y)c6oVTogH(hIhCBmk}oMc8D zeoECoO|)!Zu|)>dLonx^S5sU1km;PO&$Y97f?tgP<)Wx1GzW@nIcQmk^Gq6EaW+g& zomY$dgSQTEw~|IC;qd+0IT;o#=m6$xV&Onqk}aC#$+h`QoiVVkKvjOe^v9LQOWtZd z2|>iad0`Am9znSdaHe_Srlpjb`V6DQqb8}nyG_u>k%Qdk@v2_hIyvQ_9jj_$$3=>z zUvP5DQ0@;{%t`zzWDkqWGwz<4W3BNZBNH2Y=tg#O56De=RcF&MfRDdwj|Y0NT9?PG zZ~p3ikm4yEJT7J>1#4M~D5~tRbqCEWeFBq`e!_|fZBgF1(4Qi;Sn^`*a}5t({LdU7 z5jWKAUb@Eh`SWkvU;O#cTgH5_%cszLJ=o>tj-k^5;up-E9@Se5X}j7o;1_$_vYqoi z4>}lJoaj5ynMiB^9cQG{QAR70pu}MFj!6lIEKnq^JfZ9dk$F2M^KQ=7e2$VTigIX0 z6z_hU7T&Xucs~@Q(oIsLTC_5_qPmgBR>aL@l^8=#X<@)X)>EM>R;3oMc}92?lb|TH zMMS}_OBA0GbqhNNkOYbKrcI4;*aP2%;T@W{ygMf~X}`N~;|H=lIJON&hA1`O!q+`+ zZ}tPX=M1y2owPtTy^=4hH{ax14I!$+F>&cG2p(mJ&5$%3RHxjzu%jD;h+y!(q(AX* z1NW=SOf{eMbiHRAmmNTQeCHZOzK-V*Vy(w@QdT zC(YZ;?jeh^SM*y8UThdY&Ow%)5W`?YZ&XDMh1Xw;il49sz{^Flihb6m$rh);@7c#Z z`#40&ZO4xNdUMz#4smr{x^_%91k^1*#-7F3b?pWuJK5DilrnavnCGQf%2^GZDaXD~ z(6+cS8Qk;;Sk?qZ*quF8kC0tA5hSxMm;!!qLhE_S$?4gUF=B9h;#x%t{n%}oXI3k1! z_&^3%6UYRk*I6s+7@z6hy&Kvt4QS%&#Uj9nz52X)55spzz!C^aec|9%)$j0rlVT+3^ zkKQgt%nG(98M9aXq^`+2Jr=z8OP^S|5t^YC-BpqGZ26qd}P2yUR%30lo~c7WV+nU5LoEoE1x2QJRi& z*iAF27wtJupSMlCd)f@{(az70Es8*E_F@kWPS|gor`sHwZCpCaf@8*<76$04bYG?V zJueP|N{t7WvevowO)XZ#+zVRZ0hMrn@Vm)~qO^8&PbwHaQ7(!vVzlFumFFA{qJPmK z=P=N~#1>ISj&RIJ_LyYY0dmNL_` z4zJl+Re~MOR#WIkymB24tIrBtIXg8j#EH5tupdmE8qm$|OzmEBbr;zO;FK0)Gx+1l zC!DDyoO0=FW-uk^qndjwh3`w44BjC;!NIec;nuru02Uhog(~5RRO-ru3<^%^8&((h z7-vuv8^Mf+{2dw*jfUP;o!wh4q^O9oGrFiJr z!$e!Y{ZT(CMn4`F3>jzQ3?=%OP`bN9a|wV$Nj%Z<(spw*GVf4N-=5hP+kR>uc&5wC z79t=Hs|QW7H5=|RG!@Z%!`gej zXB^bbh!Yd__TVWwF0VNX2ViuLF4pJMCr`*zy}LcN1lR+|6rCJUHFU;JHW8nE`SP-5 z`XR7g?6O4ww>O||P4?tTvirLer5PdqL!hKxACfTe)?Pe+M(tR31{n@^Jm`?yZXlRb z?0eoOUV|eUI zWUfF^pynu42r0%eR7=Cyz*E;>N=U1d#LUhQ*7Gw6;3mQt)}6M%o(Fe$U{lapSBJvP z=8cR<+HdHlt8-e|J&Gi7k7#8?T?k)$gN#)-{EE;PC$ig!uxnvNlX67Nrxf)F6r5qK zOyr)h-0e_A!s`k-9)8|OF1xV~V;oKf=3VMu3Ny&I6@}XzD2q_d*rw6vtGf zVPq)m^i!P%NFEFZ4X>Fk(7oA>nbSjD=%EnrkfE(ka110t?PrAd__lSUJuIhB^5^h~ zvL$?F>VEV|bI%vGK1l<6oQrQD2f33^M=G``|CK%t&KU8(rIpdw`;^F?e2sP%6OHGv z_P*oI!Fx=;kS^`!=87lz&D9%w@#MMvgTMP<+8_Mh?{Xvj>KC8bU;Nci?a%(=uk7~A zFYKf5e8;@NY%xxTiyZ{N{iz>B}Ty|HIcpLn-} zY~TIvxxKr(vg^AWd;V;02KSB$qnFRO_U`R9*WcaE9kc03q#@$CySufIKT;%hgg$M% z4;W`08g1Cx_lfY#cK5=bU7WXZduaIJWxIy!_HTn_wuM@zdxycSq%Mdp*G5TLX7T+1 zOAF?t)f!19OT9>dRY+Oy7ntloT@QW3C~bzZ8xYQ0l0lxc90x=!W3X=UyzE{biZZzzlc!sw`3EXBP$GLeL-5sP&81RHX?25zz1jf|o__ppay6%A*$`ALtAvv=mT z1x^T|aNO;75L^)5d(lM~V{$x9y@6-)&qfI|ew&BMwHyZfdQk;GdoI1K*xUeyhwA~c zEfs2RH{4k?$7;Ks%eBw(cR_7znp}`WA(XTg8oA zw3LqPnT`)CCXi+8IH52yWyH-l$yAnvnu;2HXVitruBC|=94(Ru8he3t)s_rr_q^TU z@-fGF;(qFC)8P3M8mS#uB7e9F3x56Pbqkj>`GsfAv-;ovlmFWO;CFw={`61&#D4Mf zU)m48|0DZ9{I~zae)zk;Yyao}%m2-O{_~&Ovu}N9XpoT59l;HKs*%()r(GRA0(L|` z`vzrVb89(@Ai78H!xT)Gq}x|Hjf`7Fx;Olk@W^e3D*aEc{nwLd*qtBYh(TDs{=#M>9A== z_Gp*qBTG0z7u!AEF)Y7s#ur}U_3b?~#+TBCcm^fBUPak6_>N`H)u~~ousx^I_s~EH zVob|A6MVNE<`Io`@6rtzX;5xhF)xTLS*YZ5kmHbm(E~<0tNl(bk40xXx86NEt!q#8 zfeX75|chLpBZ@M9olw)?^ zZ}0~l4luRK79gKQP4bdpE|wBlmzTtOchrs-2XUSTcOsi8!u_;1x}|ml9mb}3@~tq; z&;4Xib>YWFc*fs74qV#g;Ma+Xo4Hgsw6Z>`W1r(7l;^yLH}HO*WN@=5%eA_09#=Jt zx#K+TbI#A22Q=L@eDc=*(Leg%*!$1V?N9#M|I7aMzxScIdNB$M<$i2<(Y5^)t_n@TD3)2-qaxrW!*-$OwvE`?i4~7Bk;vyKOi3=IxPuS5!zn zoVLvf?<^k&36M9h>&3%hSEpt$r^mR7w3knxvLp34JYf=zj1TAz;IXW`VPCLh z)Hbaya1xQ`BO;o&hx+1Y7cX+^?bjnyUmlm}E;%1t9mKK|b6qrm zvkwUO!HON=R-8gZ_=*-j^Q>wycJamaup72IHnXRjN53l94Xkt~bfLp;{pQj1CRvA}x(N9W$??w+He@l5uadU$-2q_P%96G0)LN zF%hPD@<=HvG=`23xxs};SvT~ExCmllxv}aPigRgGgb+M=Fd*~d**c6-qW-uh=idfb z-Zwt&<;=`KC)2&qzNkC)Dx+ClSftEz$6Hc$?9Ia)8p|YZ@m!r4LC;&pQGz~`SHn~f z*HpPRQx33n@3eI8s)r`Hp1H0J?jq(a9Bc_QJBN`UKim1(-ebCL9#*lx`J?aJ+b=$| zFMjn)y99j+q29T*$G)&X`5*t^_K*JfkL|zvCZ|`N$cWtxX9?_w-jmRA^=uG*)R}JHRIHmTyHfLaJw0-)} zJmG0*kGI8Kj*0En-yUCCp5>Js@>xqhHrQlF$?yyNj<Dj@b_M#7pP)vYZ?x!-3}~3HBoFLYYs?K^=c#%qj&W(5@_2n^fBO%A-`>A?YCrzvFYK$& zU$u~fBu~58KV`}8Z+`w8`_;!kx4->If5(3HJHNL7@YA0*SfP1#=mQ2V(6+G9W*qH3 zPy$)x=DN39yO$&kdRl=9tMM>-HOtu6K3>rPbEc+-8*17f%{j2r!52byBVAniib#6% zY7lDQw~c#`FtvHI4_>VZQJVYHOmXc*dcZ)>?XLZPXomXG?qxX4#BWh)wujb1!~5<} zclQ2!EqS=vHG@6TP)$&(YK9T7JGTFA_LpQsB-YDs*=qZ6%J%B*p+OGGK6vrG&EdQD zyk>Ye`?hi3*u|4JmN;rqU@%M2WNdSAY(^d0w3ut&mFF$wb!ePHGt*fk<23r(?rfea z44i$#9A}RxQ68;IMnmjnv~UQtKW0zb2!fPj#68)eoz!8r>{O@dgp2iob*#4MNgXuG zqJte6WH<zUKY%o5V5q9z8uNf8!Se4#4F@syNfO|C*4PdEgmfrVUVTRU^~1Zp=q zJWQ1AaF1FfQmfsw^Al>N3E-yDl<%nBSPE{arsj{~e>+vJI2XYogqZAZ@FNVtJ)+N7 zTSUMAgCE({u*lDU{gssis%pSHt@h;d1r@PA`rx_!@+ZG;8-Hv6&42b^&{O>LmQX_i zs6HG75j3N;YsP2WUVGriv;~jz(2sLK7;)}vz%ME+f~lLtQt_m_Q6)~aH0_wShi&xS z;pLVkJkz385)RmJ=}K%44`m66OjWW#M8;vL2Jfgl3%W?u3D{F~@BsB54^IrJ*Z{y^yz!{)mL9Rf7Qip+Go7Jn(gzi9_)J`f6xry^JZ+H*w~Ej zoIYyAvGAt&Mab~z)oVJ*yd{!JTqX7D8^0jE5C=02< z%H@$)2`KK{&RmMTi`35M?mZUkXrliRLONOxX-OXUGd{TkqYW9|b?Y4Jf_e^j>B$*B zIXe~3Rm6m~+wMR5BSIc$y4#CVQlq#L=Qb)&A?At|<$SF&&D2 z9&+ihLl`oLPZ!0;@EWVAHwX`lz*i1H#JKA!5qXRON7N-;NDAePyZUn}-8&@)m#o*Y zTi-a2S~}dp=g#8M3b#w-y%hhfsp#Vw$K9+`4HHfF> z%PUSFW$F?ZtbeuCxdX<9T&E+s}UW%6|C0Z`rq>JZpK2 zGuxg$v)#orJ6vWwrvOR!~K23{~zq^{7e|PLmId@3gtk1IWO*!l;uu6S|G#2 zF=A2;@i|EiA?s=G+6^Hn&)#Hkxp}LH$weM9PxIn*slHeV z8uPP;@IX8qs~(O*6nnaRXW#qLx9y@WlAr(Lm+WhQO6u4DO*qt>43=j4}G(&j8C^2{M5pC9Y&D%Ym&=K~5*8n5DWBZ#; z8?U>Dn-=@kXRqyNzxdo<{LPP=Eq!9!^Jn(t*?acx_B9XAiJns>cN;CsPc2J1ACA3( z42E!EmOj4ab%LOed4l#U<{n1(Fss}f<+p5WLr+VFhX%>K{Z3L6E7wS0W`)e=iL~H| zr|gG0jIXffoK^zeHae6s(hHq}GL@Blsy_cPz?(a4@g6rOE# z3Ksjqxb9O)-J2KuA*`A_WV4Pb3pyA{#RJliUF1B*DEQU#g6$FffxE^v9NHho4>w0! z2>LS2gA<;!W0@%`#FBa%LeYOf{ zZdDearI4jRHs>gH^iZg3%*+oC4eiWuSX#hZd6B&hkG`ad)lGlrkN%eJ&a!>_<)<9m zv4umYqQ-X_0@yotT(oz0Z`s(zxTV}wO4OGv!DF*=gkOQvlY&d2xFm6%HFa{jcu(f zWT$9|@j38F>mdAcn`C4F|FZ%K0^RV5kwk6Y>9!;?F`&T!514gpReiqp@N%tq9XvWP z+(}2Z9ZL8hl=>dq;dPotMf>!#H+J*gmv-5(-s4S6%7FQh2Iqh#;>-M=wdTl5U}1t- z0b^d;?2ulWM=wAyuP_uPjtnCgVIfRbwN^rcvwFbBoB@awxprI-ltU@P2{I^sZK^;8 z>zUd7;yuH1_BJmkww)J0b)fN`y^-Sqg61f%O^<12GC1xz+7fnCh7tqoB7&P2xw zI$LN@L}l2L^O?JS;C;i0pH6NQbAR9PU?1VSrUd=TKbPa@FvAc9B$`PZfA3p6w+YTN z^(rHUez+i2j->2ie|si+`fW(+6lPgdU@0EDSQzUCQlK`eB1)B+hFEhgA_`~glnj=g z7U!#$Fu0$)ibl2FPbl8h59VBpvOAbNPGn(p>HVvtMjX< zRXiFf;IUO9N0ITG{61L8+AOYU@t#> z(%>7E0K>J|@_0on9aQt(T)}X)@oe4`s-norNZLDtGZ0uF-R|}Ld~d43Z^=uno8y7r z7(6XjgyC@ake(it!!KTHVxa>Y#^B`m;dUHtP25-BMP=8K%;B1%C$>>y@92d6VawOt z-d{6hr{{;)o#YvV^0eJvh78XZU(p{8o;&u+h8*6k&c!BUdqSHfcOs)@ zPaejO#{$oW?5ri%y{Oisg)qXAMC=}})5Am?Rlhp!ZLW`YU(IP6|K5+DIh^N)AxlIi z58}+q;3|O>2AFl-wt(14BjtlRx;Gt}`_jWt;5=CwF^1<={iRiRj|2#;TK0-2xvQQb zZ40ObPtH8Vb>ljF-})Z@($O5W=XyYI7Q~TlH`J49S<<|b! zfAv4x0K?G?%#$tpK<&99u{lXjgYj)4?bD~h=`yc+Gd41cKOlu+cyywAsXz;&dtzvrc8ucf?H!}Q{r=pdv=s9u z2txZ0N9S(8^U9|pnih;JUW+1#w$6YZpBPP!Y%LUGF}Q9dm#`#G;jOx;5w7X!8+yHFNi*9$|HAj3EiN3}{mHpUGH;k+s2T!%^-ghHly zVN+nq&QVNZuAPg+0iLK=$0aw`r!bt(Tna8eo0*p4CDn=1t)L1uO+d6PLp)KLjO-tH z!ho`>7$Wl|=}ksxNuoaxfyXEwk8Q3#{^(rcVGtnbc$P4(!DtwI=o8sjFPb;=wj46xqf>umj73=q{$<G7KC&F@DXMXzxc3F&h>F650B{+5`-ZtNJyGX1gT2YD}}^ z)AZ)5M?5vTQI%n?9yXd2%5@;e`l#LDvgJsqkJajBrFGfF{CTjoZYk8e;5F_WE=`YS zfClVc^Y+B^ESp=~mp9h-rahz^+qXFZn`mf*vuhJ~IUISP7np(6o|}&C8zKLVp?USL zp10p;J2a#EaPzW_Gt|RSPJHi@g~^^id)^G>*52Gaw1muUTf@zGZqMxEVo$O0*|YSR zue0;LJpC+rO&EdWBxitFq6tI3sE-A4AJ+#FpiF9-3o&`(d30<#FnkHK_@?27&)QeM_M=0L zPyVv6R@`hBR0U--Ey=m!G&g#U4SO%EXbWo|9O@`2Ab_}n5axN&R=`IN!F{hwYo5SZ zN$1P!8UtOsx=u`Lvy&8|0q>_6PD@^&(us*uTsv`L7j#m4_5*)L|2T@ww|hgY_R(9b zv(oI@x3=!JR2tg|3sMgeFq!iT0mrF_I?}_k8Dmq$;P$Gk_-k2hyan5&fgh49sS9Rs z#;RFeCG7CeG)mj6XckG}B573`m!dOQ#$TPpen6TuRpJXtK$o;j9 zG`jdkHIv$vkMt6$Ko-RpCc`C9xxJ2c=^G)K^GJ9CYE{YIff=Op=7sK_KC`o@AGG1V zuuuNeuiI%(bp4v^r zdEdPGf=vbexHNRKC=Me~m5Q=*o@6vpn1bRGNPAjrZpWo1MpPHCwuaI4q3sfS?g7`8 z!JSU-5xZc>EO;VCv{6%ED|J#xJ#J3Kc$@8Dh@RW;cl#DT?vKp4Ki@aQadyvx>7pfr zcYF0ZLkHaLKH0POTtpui=Vs6H(X|xX9Gq_&W}EHh(-vh6lRatQ({(%aZr?Sm_l}VX zF?P#t{MzWXMBS5y^A<27CSmyO8a!lbwMHg>QLqvurA{X@kbxmabHs^dwsKPh$>tui zhLK(y+JF?KHIRFxs$vPX7J^rf-^bx`NxJ#`?p$#T2A76E`(DE5&ymZiZWA1wk9k?m zXHT+rgB$y~Kf^-B%RhYCzh-?5*1giWMg|!(Jx5h|${DFmP#9B25LUZ!*K4%T^qf;S zxU@)~Fg7o#7Br)|Wt34)Zm~S)(*8ZN{CMO(RM&?VCFKph*@#%8)H+&|;h>ZEzG3UF zakx0@6y`YVqK!SkyfbffR^|7szYQ(ULYwruoN}EWR!cwlx{8NS?!wvi4C(0KgL6TL z)ZfFconB0SNOFR%=hM60PCbjM$}~R_qen><1}N@VSwd!b@g=(#mR8>;BaDv??q3y@ zz^04^1{W1ZYF8s((EQDtzAQG>1O_jPtx4~Qy@W>P!wrh{{t+j@F{gyVLm!9BHu43t@f;fE6p zhj>N<#D1Q(AW-aaFW5_j@LvX1Ju|^n`8<5lH?3N zbudigu&v#w#XJf>me^IMVGFvH-b-|H(Y>dIIz##jB@Vl8==|A6~GbnLaJ zh;HSPM|rWl*y?aV?S~S+_?WLpRgigAU1$Phe1`1Y+}g2PW|E5JSCM#BF^Z2!6~`GK zI92H&{Yj(jNlqjq*(n2zoZY<-9Z635Hw-QRJ=tP(i#*!_T_WyRVR&rPWg^Tv4DPlp zv2cOK3+~k>wws3CN+R;*WZlEH@R)?L(%4SY+O#mM?%4*-Bg#!v_jvvFvnR8P^~yII zyAqXf=^MT^!2PQX-0U>E6%|9kcQ?d!U|dPaXHER*<&1DQ+GgI&WFG`~5cf3H>iook z35@O8hFT1FEs627UwmP&-`uvRUKmBGVPw%@Z&IB(*5AlVr$l2(DNTfh?NSi}=VqWc z%^2J^EOIVS?0GZ3?|<;3UC&MXyc6;8vPv>0(15^6b?Qgz##U4}tMRXONU8R`xH7Ne z8kY_gY0-yLlyKa-Hn!apF5R&9gy-Zs8&OSFg7fS1g0Vgc7srNR>E;H>q{$WgPcBf7 z4Wz^zJiMWK!?WDRHg@QQE5W7_umG)h9nigcE3oMfj_qvPBpxubM=K2&-xdd;MF+wimzT zYHK(os=<_jpNVbr#K=C%2w?_4FtAwLB!bexhLX;b2rP&EjY%OO{&cv1urI!NYoCAq z%I+R!X-?SA)c$-FKh+id=gA8=KIp9ySR~4j@XG%8S|SozqMb(uyFb1#Sgb=uvqJ}310i69 zFEtLVkLum|GImxM(Z2-6s=)^!@^4z0k3$7GDT)nPh-9O;Kk=3)RIQqMfYzdMKyp+g z(BOdfu^`LewIow@SO_wKZyv5&a#N-4dE7H%f|s`2opIhzr;}%~HxxGk?hj80$4yU0 znbVC*rI?O}YZc~}(%}@3^|UuJJUMk^OoG1`9&lv_XSGy+e_;1V-p>|^ow+jE6L=*V z5<6)gOis^BzM(>cg!j_-V(ohdhC84qzBa_gy~rZXi-V;%)invX4Mj8S?S1Iwmjz$7 zywEpsoz!|jq)?Y;j2P=UKyqDro|P3Gv4(AaOT*X4lLW+M9S08T9TJXeQYi)q5A~|T zhB*9tDRFg%(yYe2f_;2FRJ8@dc#_Eh!(W|5t^XIVbDkNlnad9LpOXx-iUEXUbXmlH zC&nA09dtr=3_PI&e42M&R1(XSfpJJ7C9?%NR39mXpJ@B6&cJ0+&F=;>b?j8DG_MxQ z%tg>c+bS=!xK>17tiAucx*dl7#p=qc>wUZomRP2G*7K$)P7~pFF*f}L=hKy*a!ByO zOPdCU(4~l;c7JuSFFt+UvdPVOKyaoR%=3$<+`w#LJBX?R`8VQ##XR$B5_vbAzTm6k z_V*Mi|H~i$v>D&;+u0>r$V@yut+tHnaHP?}B2LIE)uGRw24JGWC{@(Jn!oPxYRx3l za+bRE@PMUP=kQTLLvhH}y1*7Zypj&ATt)CT^7%d)uV^Ox-K3(rRH^P zFO-BCn!(+kRW%ZXz&yi!_kxf#r25}^`?tEs(_X*1u$y-ec5^kiNMo|sZ?EjlyBquJ z%{#lZ1|_7khP5NXJQA)N&vrDvhm%6_(e(%di^To1GRYSD5D(0##Yf`jsB-Id5=;gr zlVDF;7_q9>bjph6gn03@cA9h#vg zt`|1o+RzCF_W z=aAH%*R63fXN*i1P6Z+ec)w&soQ`_WtnSMr!n1Bns$-vyvns>{jyJopmE;}6Ynn^R z`h{?ds3EJ6-CWWzHstIbAP5g&?I+>30Q7T+;MB!HJ9n)Q3Qpac9XGPYNR|jw9fPTl ztY*gx1BR$x+pg(&u9lD)xM^R1ac5ut@|v2kEvMe>O2g{lt+t2)jUp+Qj#Co`clIWc$Z%87 z7BE8FOgnH&@0y2P`FVf!7F6>{BUDv);W+Npo3#}gigaY^E-^} z`rxe=(wZ7Sh@6u?7@n(DFK-rINd-am(ce2$A&hbjW9?4~54cXt??jQj-`%(hX{^WH z%>cG1jWyGOv?Id!z(63e6M2I$V8yjYmTJ=K z-s8L&$Rw3BX5c*xk75I{9R!u&PL2nK{DT)xeBJ12-lCFKkOCF>ii~-L-gpnHfdM)r z-?zO6)nbREw+`}xjTIcS*6Ub9EMZJT7a|TNIz`TvweGQ|9;B%V!x+hBkIJd01`NMN zqbe77K5|OEBzR^tA^dl@Ia3v(7oKpu^0cwO+GBwyC4>YcNR3`=To;(q!nLgZKgA0m ze2~KnVlp86+qyxHR=w;|qYVvDOA(w8n2uGw&Z_TO=Yv*rP~R*%OR!?fmd8545U_{8 z9iJ7W>ZQXP=)fnItsG%d3Vbt+F0M2e-+0Lvp$rcvDxbCcxoH3HDP=j-vo_Ed2rlIj zH-mV*X&df#Aamhe^QvBdaCp5xD8)n51s-yv zVtwGaS!%~|vq|-?_5@`O*kOpC%VqIEY*`zY;=l_aV|_rH4ndY?>o8YAMe)lh9d)X{ znX8wI$LEW#=gb;!Xh}~5AqOscZvP&|7J*GdZ?sdJlUJ|a*^htniT(Psx3;->ZcpF) zkaRt8BaUq>F18THIk)>}nD37>o$(#nBRd(%NuHt75n{gpgHN8Y;h6OBw{|i<%V}W{ zhoO67!T$mAe@)I0cmmH8LI2b_r<9{?2HM7@i%1w}je!gsz1~?|*I^LecxVQ7X2HbD zhyn7|Wuj`xnMf{ggRmkE1;gF=s|2!<`Hy8zu> zK6y&xdwY9pH#gVpwa0_1su%;`6T30YD~ve%nC6ZL<119g7E$=rF<&tbR0bbanc2n8 z_xp|LeU2yNAf)5tRgt||1PqU{^56i)OkJ0m^p-y4Vr(kIE@8M)URL~Hr)_myPnrLK z8q`@e46f<1NEQWe&kd!%U2-v{#n|WmVoQ%Uq3`>(gS0r}-|)S7?eS0wZ>ry_vg7?T z%sPC)LjrUzERO1RX+2c7ZiHxlaf*5b0Jgx1o{y`M!OYGBE2=2)d}y2Mu1(lYJ8ADn zHi`V|^IQA;(>r_ncCx$XZQY(`s(``!hlhjC6PHiSF4*5|C;F5(y(=kuUQwBEG)}y0 z26fjGJ$d`ozWU+|`wxHq8+-BIGyA>Y{m3pao`B%e?)z3EJLK|8n5b5Tn!VV;>3#k1 zvDh#gEgY~VPYw}OHxiyy^Q2kr9&)zTzzY$u6|QD7rpuRC=h@(`!~>nLD#S5oP~aX0 z;peO*dbHIkUiZz=+_Z83%`e_I@AiSrgO?wC+>Gr*HEeu0a$S4X zq%*N~l`B+%p`Za=Sy(@{J}Ttx9;cHB0?oUE!7t8~7&Z%pFjr|f*Shj>i+f`e1=(@I z=yCxH86k#A>RO1RU{rt$M|21rnN1&k-l-_(7;zX_u>&MRzXs$Y@(otNkfTZI=y1Xq z+n4MLT<1d@gF_TEG{gG6?|rYW^ZRCeuc(wK_$yP}7gVi?n&h*obl*J6fw)o5u3I~4 zPfH|z@Why^BxN+5PN$<@ke7)M?eR3{RCKbXFsQhvt17+0y>XB@=dDGhR_b`=?4EXA zLQ3}(WLy`k7?mSmZ|E3)P3^LO5z?=oP-71}^=C!fOS&W>7-oxCv+Vo+HfaSDE(W-| zG55JoyasDJ{tZTEo%cGecki}vQI2--If z^s+6g3yR@@)A?`(FLP&i*Tug0>c)Ql>o@lKmv{E&HroRfB@Tf02}mc1QcH(WB?fB3Uc+oW&phrjc@c?-{IkfvsI zYjg27P$TooF>@oVB#PF8+MzgH5O5Rb3`P})bFLPZi019#SvX_9eqy4-+fA$I+xirZ zXl7l-7?T}b;6nf299v8xb1NCk=w5D5A$JcKnvQk&zO7sbxGnxxZ3OaO$RkR zJ5{l%IU+>GxmiIa+HC0Y!QjG^dh+B6_b1>37^wUE`yT!yK?g>})*DNX6fNI!d@!6c zu(fk~G1jMs^+LD@?}Y-1Ed}cf-xr=@@e<+Ej1s)c@OpThxl$OR14ce_#Yvue0`$l>4=7a!B@B=ZG#(b2NbCL74j$4!d-k4PT%35#_%2>4CMnU{ zdC%*l8RS02&}kk!)ah#N9;}Q-UgmA3P8d90Ridd;C+Up*p4lBFdCMfMXdIG&EjB1t z0pA^-cr<2|(H$0xMcn~;4a;|Rk2Uv;QWiC=TD5Qdiv1M#l58=UY5DdY*1x&IhSl?8 zZ>F!kzo4N760Eks9m~get6%H#U>Y8K&c3VlbeD+h9&%a^4u%@csBTy?Yxzm@NLpeA zMFlgAD;g4B+P1+98O9c}ehdoecdR3G~B{@-_^aefK z+zslAW#Hc`SKay!!4Mz)JttcU+J56#T0TE^xGQ&65({eN7S`W!zi#aM{#)`ei;c*( zz>Q_)Ogpa7p{DRu>-ss594*~zHVcn*SbJ0@J?;r+i%M79{1l6^ z{BI&hpyjOdSp}u3jk*Es8DTCmK*jt}R5=i*t1Fsc^O}Y=6h8D&qXit%; zr&e;EyMcuFyjdCB!5J24W6xuBMdO1J5<^5@R&ktn&B`E_nk7>it%4++V{|w|L`S^h zBj+95R$$voEVjQDF#+)0fdW98_o9Lvt;O8sE6t&npTqybR#T)`yUp-5 z2UucEyym$Co}DdlVm>qSA2?{C+1%_S#F<8OP`De@u+VB zw@iH?26CSZi>Pfn|oju8R9Cdl?dRAkTZG`!!=q4(N^o!LGi;}S*5|f27RaK$m>0@Y`sZrwF$#0x}jRU)YScw zzz9pHk@-myain{{q3fU|_}nL=$D6QyxcwLMDmbSnUT4urnM(+V0OY@$f5p@p9v}n{1K2kHreULi6K?L6?LWC*1FFu>&d<3SL%4ewhmPCAc&d6yJ>+OC zNiEv(z^u+i#ou9!;mNU#8#|7Pvm^gKxOY2E@@)5Rl<|d){eZrB2Z@Sev?V{FxXEF>98DWp|bezyf~;KwFU#%Li_ z&y0nFm9wy{mj2c&zP zokbPcJflZc3*p(q)n)=Ua#p$-yJcsT=H@MvZs|61zgnE2cL}3fb zrAK7+Dr8`xJE30jTkE~|AoJS*K;^pym|-7VMjyp(BA9r z{!YAJlnD=uFb}4CMzk~?dyq?wUlb`|AK>8dXpCG{-?S{b&FFA(W>MHce!3H0f2#&HFC{e<;2DuBVnpyL7FL-?@uVri5cDUf0aa}n_6g(6D!Ts*f_Y~p3 zy}qNj%pDH6!wV5Y@LZm5^pA58(WAMv%I4z}co6P)yx3DI{o2*}Mq0qIgDjkOxdN7< zpC}pSK1VL$obJpWR}$(6-feAGNaZWIBhy7 zHx?QY_0+t^=B?hf(0*(i^u@kCcYo15gL`}Xt{KI2ORh8T2s#^K5#cCR!oOozJCQZ|Q=7B6@0;kt3|5Jmib^}8=WdbcruFt+^O z$mp6I-8%G5%^AfZ3=0eKA}QCfnt}{%n;Z* z6@`H<9*e5QsFk4SAe4s@-E0*`pN=Q@Y?FuXrT5+n95FbyA#|NW?|`MP^P_GBJqz#E zZP89<_UwJMUSE5PY-6+;9Wy>M;l|<&mxT<;!oh`e6sV;Bx6wUS;Jq+5YsIn}|JK@{ zAOB`o9_w7)fP~WeH8N?+Y{BQ_}!y};@N@vDA5y!N?+OW+T;;9DRg;p0(9-lLFDco4{BYO6nphA zVq1@BQ`H_b5B!7E%7|GET-+SEf^sLd-H^Le|B_I=v0jz5=; z3KLq$d}vwGn>&>8o?3W5*%x0P?AM<)gZS>2{J`t$d%Jr3KyMd|=h(brc(|Lh%VsQ} zu+PzSf1r^#Yn!%g6T>$E>&@NuWqlsFO;&Tfv@{EzU#u@d70aS_>KEs0 z6oi08Ze=aC#feVO?*GTupEgO7BuAp4sG0c@9(QI|WgT6O?glUiFmK-@+7Is+?EfCx zPfN74A25rZ8SJ3%uByD_^xMqz2{VhTc{Gqs(UnJpySbUFs0a%)OG%umHk0rH6rOYx zL0mknndNKp|?_1AosA<**BXRw&Wej>V$^0=vxZQ5;nm&n$g2QxVm6HKW5X z;G@E4n~J-#vDLOUqeXd);8z-62++lSib4jjIv61PzG99=;Z$(lHn3Z%%lZ&7w6*MS zLyT|?3>dG6y;hvdco2|B+o`;_iD{tjdRx_QU6|pFc{%|3^iI453I(faPBO+(6>|xu zH7;1HRWR0k8ODiUWdu212Td}3&(qVhH>G#BI+x2?)9Agb7eipEQsRviwczuwyqZX> z6who=rCP<5C?*BLGOk%_tf(JLM#%}1!{nV1`%K47Q=Xh?L9}n|STc$;e>$~c zki|bcwtWPKT=y}@`3zRef-x>t^qjI#f}RxAFKzzPA@m#QO|cHtuJOYE#UTyY+)-vs>P0U`=S6%{yW7oYHzg8PpN_c<^j|;RnR+*XOpl_RqT1Lg|Mc zvs;#VB?FC$p$YrSx;BadQI54?3bNKL!p-})|)cgY-Li!SpTjIJv_$25c=jhn$88eQ9z2VPr+zf#v=`2Tug z0erT!a7?Kx179SV3Nd17_R5tn$*k3u1 zPV5<_f)Q4f>t~SyN*%;lI2GqrS=!_?ztlJWvgfwBJKA6V@RR-J&!7BK=l0zXe`mMp z(w=um`}}|a*W1(K!8hVyAG|sC@k?*dd*G?(4Agrl$9&^9?ZUI+y=P39yq+Pr&P@`9 zrb{w|na_2q&uPP`tmppTv)ZRMG21iWjE|3x#0sx3&h5hgZs{5B!n0ez4L`mA$?o9e z3M38~B47kR>Cb%eAAF;safb|U?*aeAyLJ#X>Xe!Xeohs+XLJS-tM%m5Sd+>m$| zD8H2JjG(n08i6$q+JH(bj8MOC5mRtZ!H=znYJKMFAt+EcJhUbpK463~7z$a2 z@D_$fM4y1OF(AtRF~I^7Q!;S&n@pVHIj)SSj@qZoYWv4eCVPCtHCn% zQIpb(Kw1=L6a8(hqL36O=`R8n{)=V7N6$c9C!;RJZN51ed z9YQZ8@}>+Jo+{+w%GJFFajQW$o$Q?`;8G2!X$r_EU%Av6l>#H`nDD%;G2Ka7Xyx9v zIlOZHrbG#mW-_mk5qDFI()x7bnsk=~7cSJ{;RGul<4j=htbi?6OV>IDc+4SNWQ%~@ z+T(U%pFZsE_rLwg{_uwn_HZ}at2bx%=KI&S>96gb2f-gd9PIsfkIVdzehaOBp6=yYcg4Lf%jNA!ffZS<|6VeHVI}_aKduUqNF#HWvkVz;^U-D8310R8CYrS?dx9Y(H#x03x$r zP(7GULtMQ|SipxQX8DbU-WAg#lB)eWRGB-QBrUOj(4e(!wI=Rv(KN+{^fr? z*zbOO=NaP6Zom4@UVZa}J@=RPyMO&;fB5;m-9K(@?OEW{26UVbX{|rVbB^LZP#uH7 zHRomp$$oxyN%ax$_EC+C68GXuql|=MOjYY2~)%dMqxA_W$%fSnKRrx5N{mQd-Uh{>GOkqzVl}1&N0=q zYx?Upz`lopBz#cAXbKNCn!g4%@b#NFRHGpf;=XUa^B;FZzPO>P8e)VH2So-|OqrP) zYiP#d02Rgy$#6Jw4P)i-7PBIJ%GF9!X@|fdi$M*CM-F|66586ZlUWP8{7YVc5lrAf zCk(=-P9!j69&;+1!1fE*XI$_URyJRsDS zr)rLCHWx31mIuhZT}YCg7 z!R4lmB$WmVnE=Xc3(Xg_Ct^2X1YkZ2^xx1rH~6ogsQ5D)RJ?HC@Xdi4OhGmBp>(u0 zl~X6aYToK%R1$V(L5;H6tPS4=J7MhoruV)W?b0#SrG5O^+i(APXCLlc@2!008SUQA z+t+sJUfZ9(9PPJ%{$d~Qwwy@@H>qcQK=20V=bYrqOvK*eVYY$*!)hxCqe%c=zsS`}y5Z z9&8`Q8%9U>u;W8JKVRAN;{#1SIEM|KV#hh*c(vHU8A*EY{o#&mj1ir7f03)#ehp`r zJS0ZX5(Y1|!?%NFANOW1R)r^}SCoqd*DYB?ia@FFD{E{D&J#pcV1(fO)rVISgFG=} z%F^TG9<6%lva-=Lh5-u>tAihAx(^jmfOxRY~=?Q zsxfe0kAoOIoU-80c<%V=%&|e-t9?czbWgV}4uBk|k{ZGF7^N_wfUaXe9CqQQVB&z{ z7oN8oL*~zM7cnR)D+Y(cuLlDZc}IZvrxYgM;<=)UQzzAS;=-1oS^{zjj^ea>Qx@1Y znsG-lQ8LZ4^<2=|pSQ9?rGz9VRPfPOctU|~=!X#ABpKT@&5Phe{F)F*raCJHMXbUQ zLunwvB<#{d>P^B2hL) zY?_M0O!Nribxl(PteR5x0t120mC0$N|FYui)TqG2Mu0W=W5S6C6dn(}98=Rs*_K98 zU*xS5bgsbq7;K9-YYDV{90|!@mYPk04uoML5cZ(A_Fm3ADF664*zbP##lAeh@_>0} zcV41>c<}P(Y_Q#Y>+r#o{rt&sJ-_L*^94to9}=>^84n8Fn`0J)A!+BpVAqUdMI3x{ zE@zslMVye9az_5*YJSEn|Hw%OoxOVf+P?1IN=i6KljbYOw9f3&PyL^N{@I=#KfHIm z78?VNls*qEAvar%PU=|Z8ZlFB{sl5FFOmD)((m=cKQY{{P^yg|9?8A{jDz>SYL*xp_VG?t3e(v`u$&dsA zEno+1Fx($(s6E`Y`awMC96kwADl_XbNmtpVqN3|49|2JQShXBA?w(?TIpKgllvRwk zIll;$3>u;I>SIu&)McF=Hj@3K*#^mXGw;YltwM_|wUu5=#_xp!Rn5zXOqc}0fdMIe zJnS?$#&f97Sc5XcQrVVF-qJ+=FE9Zi60E_Pqo&a~dj8WqwP^xIg&F%Q$5^aK*QN-mZK*; zidCWAP{$e7@m2P3gK78TZ}YSPQpIJPlMF-~g_&YgjBcc0U=t(>tH`NvGxG`dk!*66 zN+;KVlLoI9^TCpA^yJqdC08ogOwf+3FbtU00D9=Fa)s-oevmxv*^~V$?6IwxI7isb zz;k_V4%I zzH^uvZTvy+99P8#SwM=Lb4(UB;l2vikp^JM9q&;Mw4RzF1y) z0Lp&Q?EKol=n%lI8m{d66($`(@grqP_H2&xF(X4wC!0Xe*ruweu@{GSU2BCNs3>VQ z*p@|6*e#N*O@E&>)`rbjo4C{w;q~7!-Y5DDq-**2&cdI0@NE7_>8yoPE}E^rmR`TQ zwdLx{gB84t{kg$N2#|vRUQ{tjeh(NukK)8HW6w)zP5O$sCrQ&#as=RgFc3Ju>>!mH zo^dyqhwGg9;-WUg(2Ocf$HJAJs8#@HK$yR>a)gOJlyLZdtcgAjX#Cg=2RWW|FNd%q zLoJ$r=1UgSghO~#GH1z?Wxm4B{}_|&=o2eEvmTySUaw4XFtI``{wusrhUi(a4#(m| zCSJJmgvk3NGOrnTj8ljQmlU^q0 zZG%QyG}F3>UwOil2?>l=-xsF#^+1hl3OvAY`ix_m*ifU^`560ypL4=^g>44GB!mW~ zG-#~2g^6vDPCQ7%z$7~E2!u^Ya+{NmrZ(JI(PC{@ZIUsaYTm`AL?@avz4Ahtlobz# zY&mADY4b&64Q9V1mq^uqV_I&Zl8Fa6C_^jwUJ?}q<8IQ~m1C$^_NRAW?0(?H9zc^;=Sp&vn4>DyziL&U>RDDAgDwK@4kcuRk>Fn9!ao+xkii>opt23mY_!0j<+y|L?JK)|z2bNo zG-mqaBO7pJnfuUSzQ4piU=E*|I(($i^B>B{NRy zypoHX8?%$91@0vvtIjlz2lo)+caBU4)F3>)EDF^A!vAf)@`HCt4_pM=&Oh^$XTc8- zkKT+ta2)y;jT)>~D7-ixdnrlhsD_ScTynSK6p2yuwVWhk+Vm4HaX%uy2IdhUiI2UHX_~Hjk+ZIht4{`>Fvi?n4g214n^_ z2W-KPXuFUSkCe>H{%{%+szHewy~PG!IHENgnGhMTGHmS2GF5`vWfHfw_4NqMc}P+) z<}80{dgP`tGE*6#H*FKvmh-@CJF-K-03i&wIhf4C7lh-QIxfBsZf_^3I!~;M64aXr zki}43utTme3P0N@MQ!oMIIT!ZsN-)N!CGT@&vJO^X;VXqaY+SFcZf~DKPeHl0V4A( zVumCFu*E-5-y0j?G~;Q+x20hPOIcyI*%xtw6IZh!w169=X%20)Pex1Wgp-@aR7e5g zr7%y>Snx5j+eAWcVqov2q~eGl1Y8d=`-MI2vwhikCh5T^_jCL31sUJM-hTfpn|tQ- z&YLPfeY~?Zj7{h~*K*S}-7HAyTVEgxmNLi&ppXF$wDV1ifDE(h<|s@GMjx04$_g54 zr&f&(WW_8!*dS@+w3N>+iTozK4;yTt8fr_N7aviLAqA!~Mf7m!SSn*Tf!>3RW#5ad ziLUgM!yA{!1#v5JSS4lNJbIUXxv_^&_r7tCcFCZt18#^(y&Vp$O8Yy({>!Q>e^+|~ z@$4hBnu6^(1zRhb(NH%*3C8LJgmgIDi~a#8NMy-0`J5RGBFm^QRsMhTRv8{Pa3>Gj z>r4Op^Nu6e;YWdn2(It$?t^{$^5j9+gDeih)I<>Q=YmEj$n{M#1=kX6Sz4Qw(dIa) z4pew;_~%RSuw%>*F0~3CP|AmwLd~vDN^6*10k0-SEEHP8 zX^$_Qyi!0PTvrjq0h{y;Hsv6X=@W$pl>)zQV$y9^Vy5>to8nfk%~iY);W3WJkqcT0 z))aAs92x=-9!kD$k?oVx<`o*MK0UjjB?feXUy$kwHj%medAA~T1j^WUyVpT?(8OIB z%gjP;r{pu$>nznrAQyq66jP)UJ_KW6{+h-2=zCL*aXESrWu#Ymc2<0mA+RaC#@ zAuHFl{4&uffj4UonY{?uHU-%7*F{)S>dQtLsv5~b=V2#T9o-cFrJ*;+%*^QkAG|JQ zu*_yE2uw#T!Wsqc5L^GHh=XlUaW+#cayo)7%Yt@E8W<>DX@2Dy=fWNy9VcDi`KDUh z>#yE=X)|-&^fSwpi>oD@U&v%R*N|$Uo-jbS?C2MYN6J$bc$#15nP*O3K(Yyw&eSMC zMvg}TMVe?aSq~JK-Rcmda_Fd8Vsqem{%^qRz(#0J4oU=el&fZ`;$vlVX_2L=ENx|e zvpdSb{L9^=ozD`b$nb~Vc;g7>)Uy_InUel{29p$j9w6o8&;qpv8Al(JKCCQ*Y$q$n zUIa^<9K)LQS1>}wea!4c%KMTRKH+6`4FgUIMZ=!u-Ry$w9&T>iCOeWdA<>({8H86%hVD=fuoJSqjlqWM# z^Z-gzF^riq0xcSa7i%;z216f~dKX@$D4Tv3 zKY2LNWFIz~vk=L^vzqLUh*xT=P4|T0Qz?!k&=v?qKEy*^iDTsrhyQNVR+uX|2NAav zhq}@*D4CmC{6f^Y=RQvt=lxrC(e z;gwGlCvv!%rEU?J-O;3EgMa{|Mg|?bm0qMwI(dL46anm%2{MT9uUIA?$7kP)9vD5t zy|{Vfn`>b|{O~I(!#+Q4?C9m?n&YoWz8p?#KnmxpIXj)~Afvefb1L5eE8nb3|9b?p z>{!ujZ-QYVY+%{w8v$hx-Jw8rnfpoKHSDb8mj=)kjLWZSvlfPz8p;zvyhiQryRmR!cBfRpQR2@VO4lL21p&*iw!9ITngJ!R8SB<(E9q}HZ>m!m0s;c_ad)896wmD#I3(y=pzopC32dGrI~Rv6 zRS`qLYWN=mcKkhpAc7Iha1i96%z_k|G$`}|76CQw#lbC}38nMiMDU!0CIvVH>wpa| z`6|;|aMZMBycdKNuuhbJgbs30$HoYpC29=AM(VIt(x8wpPg;k9AWXwh2&hTUMll#(zPIKe8GIHk5F z5RQRQU~rrC>{QXuYic@L#-M zIQT25_fnw61X-r=l=&)nCqJc)c5b_f;RU?TaYi)Co*gO}4743kVOCy7e$52~YSer_ zQlmXTo7uPE-C|nk0uEkYf^WWfpX@+@o#Q`z6D>GZ*MgGO(F1oF;>7c7-Q#8_xianj za~;vDnkP2PAd1kadf)WBQKWMEf|(nY8ARsIGAS^susnfMU;Ja_ND5z4c7s5gU5P z@$K-}{lQ+_@&XP{-Uw_Eh`0LOjWS3L)EolSvkA^&04aEvM&1{wp^kEjlB_Jb+BnN6 znT@F_JC?=-(~vpWYily;VG|w?6Xm_b1S1UE{cDbdMMLb`u?k!(o(Eo^vRmILi!(UF zd4L%bdFBI}O8y#fo`Q-H>ZcwI2AC4nu1aB?6i?X9W~?S64CDoCs(dEG#>SD~uj5$o z^p*!@k((;#X_(b>JbJR~#eiUeQlHa}BMBQ@e140@+{pC^>{zqYT3-LW6YQ}&N-8}1 z9@_f79q1P!xC4hwQ+$_`s$IknR1#46VGU!grsz$isPcG>`tzXFy)><=%a`9fBnWL2 zoZ^lLFJ_mmR$z6Uc~vTL1B5C#j7k9Y$Qy76xV3XKT4?J^i&EXIu|I)H5at?s}f*>BW7Q)?A9Gg^DQ757DZm8W^0OgGYGU6i#`bde37QcP^hN;z z-wYa8Ljtp7YWa#bhR0z>j1!s5_rLg+{mUQ!WQRZg!G7^Kzt9XXobtngew+w;XWbQp zM3K;9&?7PrjMK(~2XzRU=*9IpH`&AUgPK?5`H6T=SAAq&SdepZb@4OIOt7es2`?ZE zUW*smNX(#2K_wt0yJS05+)u;yGC9Tr84i6kbyCShB69%}vG%NQ2`BtUBd_7J08I0F z)01vCb7%#lf$ly(+uP-9Svq>gLV-#em<MBj^Gs;P}4)e5LQ}`+f`fX~!Mm%h@sxg=Z(bqV~JToY;jxlK$0f|`o$U_d<8-gv= zXBoPEFbOV}w)N)@FWfV~CkJ25U!Jy}$sS4nJH);H>g(6cXb&u9XR-%N@>HYsc}ZGP>}1179yrUC1aGO<=9aB00GvY7zeo$S^IS7Kl6^@1OYl zo11Gtyw8a7inW=mI<1I3fai+IP;4D@1d!4Qk88~upgP7B2=IoxU;t&f=#Aptf}?y~ z9CaUZ4$7Q9>ki4oUP`nA=yI)v$vMNw&~Tpuv)7m&9lAwel1rIa8)%`r%c_dHe^bI2 zJ?vk@39%70LM~*Vq=5|)AZ_X}pT_Ts!A+KWR=cl-Wl%g55KKMYO2A>foHP74rYg{- zCzuH-1Pq0;mc`M-Ne^NIE$V=`vD-N#?kc=5#R0I3<)BjHu-7<_yC-mLH}?K+?~DH2 z?*8~^`=@{YXFl|&-Ijsy@p)|hQ~%;z>a#NJvw-<+H~FE)a;y!2@a70k zU)56`dRcsBos^}L{tY9+PT-|<0x!hR1eVvFuFuGXQ<#|mTW0pN?$n#a2m(pfZ|ysdeJf5y)4!Qk`6k7wWHuJD;u{B7J$a)beuff1eNPp z?+@g+DJW?SM#DJGOao@y$fTw;%?j3E4qqx6PXaE>`0-F1Zl?ja;LAsxYBT(u%5@7E zOzwX(TTwtFhz0Kf<0brpr}NtHAIyT9nD)?63g26quLs&5dm<>$#}i5#se=={z+#*Z z@MfvTww2>7v0KmNLkCTY!z{DvD@=qjuxj19Q2Oych(Fx(FdV2f>rNcoaNwayS4YH0 z?5yiMS@nGQs|>d^B-$5$Q~z93lZpH*NFi`lVr54O8)`WTB2MvBC?2WOJ!8C!wPGhw zVdhv_YCXU|-F9ee%w^B3<>?+7V;T0hz9VrA!-=XP;>!}9U&{@(8I z?i};mc&GcCR(?E5UTrUi&s<4I@C}(vAfH?fh+9*r` zjp0$YH-@^(PCEDevc5LKN+-UoGpx%2LJUyde9gmB6oIZQgB1PkRygd#fC|ilCfu|3 zoDSS`(lz$XJm3mCC}as&a42S!`G^xK(l+`$OilPUp8Z%m{Zf!3PC>e@Ri=QNBbJR3 zpUP*CWg6IXVPV7plO+&AmI@XGuKh>}wUP={EV%bY>6dJp`cPGON&S?r)c19}<{X)5 zGvRMJ6kayQ_s%0@98GfurVS?(h=Jejc2y)r7dpG?D5mqzIZnK>FJqWV5qyEJUh)EyncA|6*-USsQ&!(I}bu@LK(Ym z?HSSqox9Lv!t**Fb+Rp%9Rm}($=l7InNAbj$P^DltO*M*&w))Yafgh2OJKKMj8p*! zk@}Dm_CXi?)RK8HYe+g%*@#QZfbv{Bwu$Uon4G*FQgS#07#^M)9H?Nx&L&ZBkFau_ zfx^_;{c>Y-2Y*)%H8eOx*y&Chbct?v1m9^Tzk~;b8Wi{-Pya6Pu9jpreRqwv|DOLb zVGHyQP)PK`DtY)7q=K|1K?xi+L-Xhb11{cALlY7+PAq5m5F_9sql6O}H!z?8%sca2 zdV39V#L`B`2R}cqDJAU#$8FJ8*-e>BQ^bt0$n(KLy4YrZN#sNN0--o6cmx@DL5GuV2X2hX_pn zCg38tqDgEP-{ZS#^qxcbFEAjZLAgMQf5{9Q`vt)roZFI0ak6WPw=gflw=Q+V7ysk@ud5$|17kme+9Pp*+-zikLC}uD({usEsji zER9U`Zc?F^Y3-CuxmE&WQ0F3&6_g@x{D_ zA$9*GqPqY6xp(|uy?H|&H+?mcorZH0T)mEaxGs6lv(TVC5Z$rqghe?{=%B-Z zJCiGgW{@!Wc@hS8|FmV6cbhNl>B$d`Pkzw&L9)DBkdMp_o(lH=?+g{d)oTMAcK^tH8}Tyb=KpW#Du^gY9^()wh8+#YO}-{X!x&eCx^fp%P5`$4@<>}G6*qOJa;^S3K(d| zp=R2+S2%QwVGe^asskGWBC3X`6^1C8GQ03uL3uW40>j(`Z=TKh%u)5AvID-`UYy5V zGN>T;VTxp|>@-twWD}MgZ)By+rJABG)LQK=sBDcOhoIO^L9z+?bD{+&zE1;LYX-)N$bM3=sh?3O}GYfKeEZA97WIxQJ(8-FTsuB><6vyL2A{@}EzD~4OBU1f8W z-}izAiW-f|uPh#Exo~B@M>WeN4irOR2&^qq?h=UEAREzL#4tl-yqL=A0KQ!r3}pZ- z$W;obpF;}yfdMy-$ZkDj8HIZ$HW`J*u#-%yMU`l}To1Ge)OPEb-Y@(ce&x_XwvV5W zc6RZtJ@^8+-)?N}ALYmQpX}!PH3J+nz}xE^`^W$7f45)%`j__8Pk*szhZ5+Euvpsd zm2W_rgx}fY7vFwMHD0bRuec~59It4j+b&+8mPZrR9vfA<5RQoMFEZ;~FkRrJgYGlo zZV>K!m5_bgR9$+>WQsXR7ZXD{M9=hdSWuB>v5b}8Tw)MNRA*EScAN#piUk8Pk+E)2 z3h!8%%p5*xmpePVSy7Rt#)9lFm20$Im{nQGk1IZ=vH_9LS?Z;d@y5TMB(NgfSV1x; zo;V{)&|J`?4)Nu$NVaN#a%U&1AH?V7d3 zLe;m{CohyJ?4dR?;nc`SnZa=%u30#k8MMcmt(L$tj3xY*QaXeSN#*`X6ry9}u+l`^ z2;Q-FOLkmdlaH27TVM0N=!5f_#+Bp0%SBHr7G4O3>Ua|*AMijRZ+M%eU>y4Cne%iR zbO;qi8|@zo&K*s%K9reZZll!_!LQW;#)AvYo-ldGFW~GnuFrL0@?Q6dW23@)jj6>q zCaQh*Py!MyO}Bb4@@e3e;ZLbJS#7pZnvLr6*AlPnjyl(;EO3hpDUFXlf^Bbw6s#Ln zu#`OEyh%qyW(gfn5M9H;YS3<=FoP{%2aCWJ#R#c6V^GZ*E=rdsk~?scHJcqgBoJuf zJcGYW7#qD~hdmFnr-Rj_x8J1+AAAukZ@onJa&Y|07ws?Y-Mgjz;ZJag`jx-5XC`yl zEpBaoabd5&d28?f@*}73{^sxhgZ-cX=l|V)_~94!?)^{pC;$5&fBcCQ6LgG$#o}SS ze)Wc0`}JY%nD8@4@LXM93Xii;@C?G5u^>TXk^@r5^9>tj7>2q5FQ79b2(#ert;EFLrE1`}sLQ-&F_;^k;%q65CM5gF{S_<2v|(& zoxX@412Q;_#B2%oA2J~Zd794HGvL8MC`IoLV;;~9yKp8W+6CEi^kqdQ7oNR>s0F4! z2ZvSme44iMQu%og>e*2ZGjMAoNRvkme_Av?haA2L3bx1KY&Malv%HU{P2t^Q^B}`6 z4pnMw4SePtR9M6XIbJ7%=YRo=p#;m(P}04fOlXQSZHRqKY8M)#`5+t1ag2!yV4;X{ zQcC0@uCw^a0wyaa;FKDB5;Aw_YFL(O6KDjgnGGBi%`+w%qnyp!7SmH&R(GO+nV_jG z_D{#j6C>BX4k%QP2OY9FjQU)w0}E~~Dzjs7#p%cvJp^L0oaWt!&qP$eCjW${(;mxF zL7h&o&`ND6Z!R7eN_+;J@bwT)WUCHksss{YHeY8-`57`(4kV&HprHm_VI< z;r^3t_Q@`9-q;^Kpknm+uYdD*_P2lgYx@uX>F=o+`t9$2Z-4sJ@BL>#*u&FfHQ(5H zfSonUIPoy9&m6AU%H99@>511n_pA_d%j2N?CY*L}l5WmHWb0##tsg;Rp-5X_O*lVD$nLO6!G zv{AK2+v6T)@sI+GqIT^N6AX+%4Flc_jGyvpz&3;6EOAOBF^MvD3}FGYsIep<#`hkM zV|Dn-Hf>&GK<}gBHNI$uSwJg=mM0;CDhURVlk9XTjj>#sYYo?33doOJ7Hjml)9}n- zDwGQHl*s^2cuINd(r1gInNnbaMu)_NX5(mTjUiA;qH=-v3rrXPMj5nMnc&PK8C8D3anQZabPvuR?@ z0Mlni4@zO+wSxa<^;tC0pDCt3rP+w3>g~nuWU-fko5DK;Z&tFc@g&=oZ>0_tWK4n( z)Bzl#I~f^nDr|-0atgJU5fLz>5gfGxaOkB2%mkhBvTcMQx7 zXjlS115H8koW?0;ko*OdM{e z@)(&aCPvKXy%}MsjwUxP({8cyeMDc1S8&nu&|fj!9F-fCq+|yQ$Gb8T546i5<~U*n|H` za4_f@pRyPbypCdKaFkI$b^b{k^F#+?lfzOpIhm!0&1VER{tOg$G0|8!wE`BrKyZkm zF^GfaNK>9R*s6jT^m$WY!TSil^7X~~7;2D}zlF^r82YpA{P#=vxMT$1jl6$re3LU$WRJ>}zn9Inl@jNG3t4`ktgu>iR6l9U9gbdpQEcZ}0GX$F#v zWP*u6jr}CSOH`-t>G_kl!JC8Z9SJLdwJ^?QT+@P!3sZ1pw#X6>+Ac|( zLcmVBzQW-JK8s*-uFf-NbL~C58@l>r$< z@36EJ`yq(kXkZ{{dVmC$2C5SN9zqB#m^0r@xV?#uiID*UBf{IDo}s}+x)e5rXKKk` zSC7)V0r=sv=f108n{XJ=!;ZT*E*s@_3U+(uQpVpGTN7knP#O58Lmm)kU z6K&;TFlBY+-%5o=@dGL@e8zaK(w*0|4Ox?d{|$^=kk>+T=ctHi%LrT=yLT4TDge)5 zBv6$0qFpHt@fyHM9@T7P1{%gboNf{OX^dpAKqsjD03WsBNBcEVVFpYYSa{Y1390qu zW(OtW*oZO*$Ys9L$geiC*ixmb33%jnKyJ@WdXzI7<;dU@qXBM%_-(?0MqS!iXcE~J z9izT4PsmbGBXg8*Q)7f!4tH6YIOOs@DO|te=d7u?2QrAvVRuj3kL2T_dFH`0M}vo% z$IPmyLIy<)SngK1F4t(w4UrFWKy5q#H=cbSdk_ zYL3ksnESlZ$(&CbYv!x;?6)3aK)7 zSeN(oS~xrRK)mvj>_)gHRetQ3XO{XTt&dUVu(Mj!JPH&km-8xRUcK8&}ek3Q(ojYc;5{iDqF68&TsjJ#mL>;(g+KnzH5q4U7{TMBG&vtPFOs zy5xk|gKsSGOR*;aN#S)k*%b$EDSdNvVjXI z6O$W#H8JLA8WQUJY#f@}^imKFz4|zD(^Te|f^7+~r`TIMd8lKG;F{w10mSk@U2LwX zBXe=+QQ1U41YjZk+BY>6(_wA1j+sm&8w?1#WqdVG zbW9wWh778Sf`3P;A`|PAF)njuwuLCqu#|J1v`X`lDBTdqksY6V7FM{vJ+lTKjNtK7 z`WUmzimxfzB~3^@8Ejiw1Y&GBO2w@oNRJ!auD5n}aVa;lER0PTq~KV;>O_Z;FaWjd zCv$VgLh)+F=HUD1p(Mu43bRdR_?Yzb!YdUNYgBBS*fF9T)ur0R+T{Ap@(2hVBS%)4 zOH-k3A~DdEh2gP>=oiA|O-EW@BV^q5f(msA-!? zAcY`_<`IWK<{XVb9gbz9ZJirtvI#we+7a*wDoM^78{_-pAi(Qk+DT99-m$Ld;>|!i zfLu7UeLWO7fEHJdJrdAL8zl*y)GVeoAS?Cng_OR)BbdBm1;-AEs=UXLPq@r|P`$vj zp3Q4thS%y9&Z*Oz4g$||E0s3I>J5YEYyk&YGi3>5lpn>Bp9ydUpQgZEr>0sBw&dWB zk$FUOPVVr-gij$W1C~2%{3YfNAS}EbZaK%S!<-?M%217g3dRh;1McwXr|W~qjpG*|mGVK1;@|jmpx}v{6uEje(2dwZ^8Yl0=gHlGrLe=~zZ1mF@Px z;fsWGa3f2=P-jSAeQBJTvQUfSX)FO(AwgoZ$SSLH!D`kDY*o-hqgWnUZpj76zZ~?L znpls_z>vANxzZ8aiXmFfb``Svczu;bNAsoxUef_BywL(eI7Wt>UNou@jPg(#H8EButEpXXXU*{o zWK$Y#CxM^aGimzBA{adki%C_N5S%peRzuo5o@C~fOlLj!qST&sV!3eI6+X|{)of71 zFIDG~t`+!`vP8Z(4;mISVIG5D7-xjP<0yLK&`BOGlsHGfDH>yU}Up!{0A=>3l7FRePppT zylFN1Imh?F)MYp*C<~;FQXg42f($yv;Hvule%udql3H#?yT9Mr?Q1pS>=-86QO%@2 zQP82$Gl>Va$OMxJMu`^wFD87bHx{m*__JKCI9)l1|7I%q7(ZSG~?E9S#09?^zq%=HO#T_RD5mD{Q<8 zUV8C7C`5f$6IQNES($_o!Fm{lrw6bY2Vv$~=Rnv9rh;6?z|SM2A3AZHb9e)eMdfy^ zICJqaC_RXBkmz1Dbi*b@39PbDnSSL;Hjm(7u{=6(0 z&|O|cz^COP<~?2c??HQ-MHz*UyX7Ke_dTs_@RGR)kFL44r!TGj_y75${pH=*4TLa}<*sEo$<4=Logk&PZz zo>dOGnaJm0aivo!tHm^t%OE$Kq!;e{VI(fazvAqTw)<;#7cuoq7yF^ z3$QPWBU3OUFFNU>hLDVdxpDC4zJZz$Yy*rkN3*PxXapGX%s27Enf7xy0+mVJUw2M6)WTD<0MH&|A^^x17_}zQ9gT)l8KdCd{S!0H~VQbD!u`NiKTK zB!>zsh>ASCxQ>W`d?tXe>U4xSgu8Zf_!>iPHjERGyb5p(<8y}Kkqdrc=7-FG2=}sr z)E9bHO4WujN5-Av(8Bs`Bd|B+p5(I3v$(rS>rZx-t*X6I?}NjPW<-(6QnA_1xmQZE zS=6?IF9!bne5SzO$AMQ8o+fAuG@qhisOMA=jz*t}J;R1wYGx&cu%iD_`Jt%=D$@d> zkL;GXWeWVwq6-?dl34BW!NbrbJQie8Dt;t7zzF8j!H-eO={-362pJ({fJ=bzSN^h~ zUfr6CTQMkPVx#V=jnBTpJ!2eTI`YcyJwyHc5ehH=zSZ6{T+bdI+}&f)A}2}A=xK>y z1$EeN{lHgl{N`>R9tqGhTb<`9^=Ec{bIpeZF#~Qag6XW2(RCAM86I4ZL&#`EkYvI*6WPIlj1zW6}ipLLo^g^c(90X*ce2helD3Ho3j|uxYoB+40 zHKy`9WCYJxjn5fkJa|h;nAuO#9?MbU4=33qUhgcFhRX2T+7*AnyUk_qPT3u4P^IZM zL`E71UzwUfYFSt=O87DgZ%r}ADh~S6ZsF5sb<~qeRhTxV)F*==GVWPrkLXt^yAg1X z^l}c5hQ5!CIoMG)fz72wq=r*8=E4X_cxW-wF=nadXY_MANW0eRK{bSpC6!``FO4$$ zCJyJ)? z4TEKL4cl{nWpw^8d0it_LI(!jJT62dJI*MMXy}u$5JNZ;ZZF{hI-J6# zRC1)IsSPvHUfS67R%cY9X*moFHp}iGA2j8cQ&$@rS*O5NxnL|u_LnL(N5MA}lS(;N zso^X}r?8=7#o#8tXv!36BBs-FPM75u3rJ8+(8Kbyzsn-pi;LpKn0Z`@|TQwoP-P| zD`kKogCYh-rZ~WI4vuWVeI*M{sq&X|yhm9h5=czVwSEXQ@p#>G2w*(>G`%-Z{tW0T z#GzA|3)AZ=;Tp%j!1Q6JG!@ko$JVTfF%(z}*?bYG%z{e{dRc#xz>s@84CFdD?Znb*3WW}~n(*~RI^2XRNX@Jm z?p99C94URlv<8**%y3Uypwz6Fj3dh7rg$ab8)l>EvJALdX_DN9I|QK{f(n&v#%36$ zL}!#!9)b^u=3f(Kn)Kjh_L;b%cn_4_bWg$p?bLXHe=o=XVEhUWgHBm-@o0bmr45`J z)0a1X|DK+2Oo4+oyQ;An58+vi-%i5*EXeE47>yHEP0VbNRS*<^j>Yc1DF`U) z>1oGnCT2^V{@k0g11A=A?A|A4KOA3v%(Zuzle`b+#O6b^Q3B>)Wp@bHsI10Xo(F}j z1ioH|FB9#}rtB5#f<2L@22>a}3CoTgZkPfpn^PtpHrN!E7FO`oIH*x_w;c(aC&5;% zldZ#ag>!oPRSp92abu$INuWo76Z=3%+z<&5o$ru6#2dP95 z2PSA+I%!&g_rKFKHa$a%88}N#K}oEFF%J05Knxyv-}ba%C2carKI_y}Yyxr-i|D{f z7ddOn3tk^5CI*yt$0&)U9+PMnUvx9)-;H#+B0UKyeHRcwGlU>FP7c{K>6E0rGJ+zVIixaty-aqnaa5w401>yN9guF5(DRBCJ8{h1I8%3!XBWZH@I?s@(1|fi~EZQ zuSZ)W)#;b)#5Z%?l(qf%({KGoZ9LeXdjOr=<@H;8b^Emk_BkKu*#Z+0_GBSoV<82@ zO}xInF*qDOG%>z}xRKxB0XXS7J!wl9HAT6RvwRMy`9|ta!;xK`Ck6Tog6!ZK_f?F< znMbCJj1=<151&8V`}dE$rwD>=Y#Nw06LRb0Swuj^&+!zc=s`4{qVvXs-wi5L3m0&R zR7s4BM$>=y+8D^>w6Gg)P%gwMIdL7x3?N-b@MXZwVwN<-sI=%GA2#;!)xntDOYd|K%1s&zc zAr^7CXNh5$oyO1Pq^yR+7|CAH=NGE1VUs|v;G1yR^-Kykn**tQ7w4~h^PO{69Y&$c z+`S=P3(OOUTu?s4tE8i);+$C^6ja5qhB$3Ms%e7?2$|pzN-fJVefl(*M)n&M26Qtg zd2|&t1ocUDvPf34MRgFbIgBq@2J~?7Z(1&z`dX1(S}`?6Wm5eYBIx&#xo*54QVe!Z zCpIWBsyRlOBLd&4kAdX*gAqDKygGmLp|!Jd+QJ^c^KuQ*8fo-85N4PplXyh=bP12!t=Hp2pDS ziWv`qkBBKGo5nG$8ix@LCSa`C^fLusn2)mz!yK)RUluT24Bdlj3drJ-r(54Y`Dv5v z>ejpHoDVFfS zZ7-~hW(N!a(m!b>CZHZak1}`DOS}MB0Gk~F7hg-?jCXf;c6)nkH#awx>P6+57{3TED4uOrw-}!sBf@Y`kG?jZo_CJtZZygU6-CkkF4GfrzEL5;cY>H~ zR`6uj-Kfz)oVIuln9Ps>7mS#3SF0?eK@laYU}j`xXb84=%>xXKkc-i=Y0gY>#te2w z_=2Jl1n*9)6I2q3QsYoCQf)L))PT8Y`wd3Jtl9j#JiqeKJL6#j8W;+;GjEjn0H zk9L25N7&(Fbzw9A-V7WOSyq(v@Cew^XG7UFgFq5Sih~T3H`HG&CASWz8XSv*Tm;3E zy%qj!HNPpx)nCC7fBj1oz#Qg6YDykUbBkGU;L9ab9c5I040V+P%>+XfDB<+|OISQr zXI0MvREF3?Sm(2Og(iledKI{1JZ)??I_%4r;0{U2)eFjz*;^@()x7I8vAc|^N)-kX zMY17GaNyxh-!=Ao)aXZb1j#yJ4kk%+O;Di=82IpcULiYj=0}kXu=fT+D@P4oWihJ6 zrZhQaV4YIcU~6nlQp5+HtC1S$M66@Mx?^cswdqX|ya@|;0Xr0JqTXx_MO%j00S;je z#=)HXKV9;xbqu#@5a^cd1}CbsCLD%V;)@GrfBmj;d`-%#ufG1u*4u&VsJqXf?E3l} zj{N?^@BSC38=#wfd*wgpuR9Dobd9X{k{Bh!alLie;M~s7e@TArzy9mL+Saq+q_ab3 z6hF22%G&e;gY6*(HF8eUMvcANC>XV=A*~heC8Ze_!p+UCwH~0CXXhM0g3JeUTtNzg zd1jqXeFRjHt9hEk3pI~yXq1Jj%wmXV)_5uWtNO;cmT!op2W z!W4nlD&0(_swq%5%91%83KTHkIAA3#mfjSbU6Pexvm5_<<==bluW{`U_||Anj!ZIn z>E9sOco1%{Y~K3!VgTG6bPYd6E<05&#pS_bl!Fd`X=5+Otu0R*yku-!Q|ayFMJYx)fbbE#`*$ zc}yv8S%$X@5aL%XE#X~?Yz`DMoO)=s(Xk(=zvE=r!rslaG<d&GL0~AIF?`x8pRNp+#p;m?Cz-9C+AkgaWpGv zbJqnvMG-&lNXBgHSn%NlhTl`hi;~bw(+u~Zr4kU9bKy8-F{-Bo<5mP_IEbBlIXCn7 zeR}xdnc@w-5zwUh{`pH>^Ff| zAzR@H7ytXkEKcx7d|TKFK6xNYhi57fQo0B0e3!|k~C(WZe-F4?*g=v6j1&5^wrd0&ev)C|GQxhLFS|(X@)7U4vwNe~wB;aKXTX zL!)SP7>wie8ik!OhF5mzMfLCYS2%K9?j&58=xj|$Y@6B)JK++WSW>E-HQj^>UW(?Q z6@I?_KT4LDYU50B3kNpFh@Wx*u^w$BeH=wIli5#c#OhRQf>H_hvIL<+8~5fgavuoO z6=NvtLn|3zBUmanTqCCu4>ClWaR@F_gkdMkH`Bxfj;A4>tKh1fRY5t_#9_2wI*kRN z$q{Hn%m7o>PQjL?-Mo~5f)W@j8E`FvZbxbizZi6b;!~W+xRWMzPH=~;@Xnz8Nu%bg zF?;rncyYD#;QGpb_xryv7-Ag#4szayE4x0QF`In<@x5bhGl~_KXLB#TkM{oOpB;X< zCS7d(ob2!Z_V3wozP!BRN&NKq$ZjR(mx1A+lhiRnaR12jYl-PlvPqhgHl+yldf>>0 z*enJV5d-PSpA7dkG9DW7{E7g?EWhad7N@W#gbi{^8eW!V(cCBjxTQ#AF>P96WMj4M zqfz-7K{>vco#-exI~vm{qp;A3!(9xd)L9met?}Ypd-wBu`|8atv1d*=#fqY3;mDCG z0~czhM{FNKm-b1~(dUMaPPw+71SA{)8QCw#aGCxc%~&?TLLHYFI23^7+}2Qb3#bT{ z24~y_U5X7di#0U{ej8)#5$xtrAYq*op3rB+K3US^0u!A_1t>rpfDm^0T%w<$(Sn{q zKkC_1g#_$Aa9u9vMwJmYBIAj9xRoq2)u4v|P^Flf$zIr|MidSSwrketo1!IE#q>%eor!aB` zcw><{6|)@#zYI2dNbHuY(f;wj{NNevgZ=;h`ybf=Ivy8}$9?nwI@ovL|BYQZ_V)Sy zvpr?}`CCu48+-D_)BE?mdHu>hIUMo3fBmih+jn+*{fYtwn9$(w$t3cdyx(t`jW1W~ z{Bya|L0@J(_zx$w`hPK61P}Lc2)vS7?I2#mPqW_#4i@U8$THcnoHl}G z9%IH?WWCIG+O9epwGnXnybEIinQxee5cfJ-9g+w75*?LT=I!}kEL4!XHKIm50w`-5 z_%wK<@hsR67?io&X+#g61?N}o4>4ydaIl<0og`rbn==IY6j=GbxDUZspwcKeA*9jI z;TjI%X&|LZu6Bi38z@=HY{MOXMlT^>e?~ za6^nJhf5sRG{i43VOcx&zBwXgkp!KzF2{;7*9@Nl&jUgRn6;CiJ%~S?ZNfo0;(IJy zSHV~L-+>hHt90-!PuXF~)c)GAoB4m^+Q*ohyK6-J8Nc@=>WkDo7Skt zW};_Vpq*F`Xz&&VBZMhZQfge0nt1_(1TH)bqRY|GcGkUY+64rrGP4VsWMVd}{Wncu z#x)bK)AqAB(%##fx8HaWT-XQy{lnd7d;R(~1LL3n{Ac^e zfB4THIM$x&KJz_+wIWbL(tCM%V~_d48!#y0S5)7uJ;;Dwgn^TqXOui^o-v>?qeTFm zX&eu=^rjAd8w&+)_5ki-2T2??=TPEkv4i478rKQsh6}51*x}zm23;@!hJv4-lz3(H z;Q(VBAZwtg{P$ z4i_u);Hiy-hDT1Gxy(}C#1>VA@`&j8qp9oH54u$63Bme#%h$(52f|24jXT07-+6%C zcxM0kZfB2c(8c_{&ldjPOPeh;(F33L;J7Zw(hrgp)1c->vr5lbUeZ&Bdz$G9P8e$t zKE-fn(Ui)kfhsuVH4tmFTj}Jh;WTQXXqvK8mD*BTA^3O#G&J(|pn#{7+?Eu^Suhv^W5=K20yqw# z-m@n7@m(Y(E&B_6k0xBtPAY?@nIHKAxu zJx_e%v~2{`XnYB)FqK=JD^_keTNc83QKF>?07*(7elUxM4buH2Luf(?Jaq?drc4Jg zxGte_1KUM7Ty;bdS9VTu59fNGik1R{EO_V@qs*9L~e z`tkqe806X?%7wlC`nA3D#?DVa{?Wew#rJk|b>X<~U+n9zUfad_83WXpFQ4tzt5;qY zzqR-8-#g6kirm-jW=G$H*?iAwuQLMY-XLk)NcJ0Im`yM}NajkSpaB0x-~barCx2pz zJsiW$YcZpNdC|&~0TJaqaO+~bSOgET?sXEk>7*$V8E)7%)?s(Cm_@@9Zb%j@zOQ&I zwBBO1XaFG z?1HLTjey+-%YyRj7#pIXZKBrA3XGIuN^%j3OfW!&G4>(7ZuH*lfq>@K%__yKBqAl5 zw8)6Z@?6++KyLwTq)jk==FDuzI8+hTI}V6LfZ`aNKJeR-*<)#%jRn6AOi9-}VN9ZV zDezj%fMV2d`hXu20U#=pfV*^=inC1YcBTpGz#%<@98sEd=ge*!&vFxnNn%`!H*|oV zfu@s+GtsC<9gNCTgE?U59#B{QL2)4L1uf)r&qC++_rLkh?*EVfX#e%U{(n3WJb3r~ z*8cw2zp~%`;m`K_fBhHx_22!*zIagh{PCmRcwqhZtGD*^Uw*WI{D1rdvB(Dx9*f1w zt}d^M!5!9^aB$8AwAJ1q^KBBng+zI+`f0}&YsOYh z3_MR|rM;E8XIc5{)|wvVgnyH8ivT{@7e7FnKH04U#xS_0DtkzU)k;LE0R%2 zENHClaY^qi`nkceP(5QhaODU6hLM37~< ztA^bZIJchB!tVjfz}1=f%0O2ziNW(WX1i1=g&!+ROt3s=#4dQit9Q1uiSGf@b9%$^1~zOOde+Y|xgzOcOyaS1eNo_7bPyhlavn z;rmT6#A!BK7y_qkgVLD7hnNIp)5O~ns80iWd0jCFq9NRrWG)VFlV$)1JPx?$r!|up zr~!Fs9Ml78xwmXO7-I5u+ZO*`e?9-+`CM5tsc*Z<<90qzWF|=$5OhrN`Mvrj=e?0B z7VSIXb?x^HP2O%h?vM%(E#b;;!RagwjxpIA*iL!rkTdVv>|+uFJ;SNgCone zwh^(M4~dfrJ7T+Z)W=FkGCPNphi4{m>1i+)2i)6R|Na~Qy6|rRHsk@uGt@3!C}5kw zb~X&~up2l+`G4ovp5{Nk_tTL0l6zV$!;C;NZ?*Z;Re48QeEwzpq? zb8SDp`)qB$wYN9d_WM8nXsh|T{qX%SZS(MC|Kp$j*}nPqTl>x5{L23IcfWPm;Mu5@76mzzw%7=LD`FL?3}cqqOdy$A2Sv~6Pykla$C=gSBrTyc82R1zUS=xoMt@W zZlY0#X9F_0y4W2vD+HN*^dQ<6GxlU#1okjDE;FM*-+@EZoMMkAnsk$=X~BDu)qn|6 z7JGN%l$C>9qeKEZ08rgA-%#m^jlq{Kfivx;c^v*z4p!a$Y8SYfcxnGwmD$R#frfR z70=_BC%WBTUHcmKXUSnPp51PCL8l|DVvvCgV1;8p;isc!lnv2*&Cv+tQ5M-zE(TD= z7vQ8EudaF#ycuY1f*Arp)t<4)66qGFF+yWRb8@|hZfdlRFoNFKB(gS7n4#D-!y72vwgC5q*vCzm; zh^_oG!8XFron!11dMHPk&RkqVMb@&aw7|59r|*QbBblS!D&M2g>qq0Y42qP$vaeSN zBrKGFNFdNqZn3WYfGy%8yf<3mqj2YLKkm3_h~Wh!z^pe5AEDVyAqxcbf>9VG5?ENE zF{O{%7DQp%I7YLqYfsn*CK^T>gUmjXrUexdp(6~cv!0nqLg|MYX360Mcvo_U*>Rf4 z8b;O(W>RKEYA+i|W+*68&_shs<^N&lz9IhGKm8BSY&Mi$ro6Qu|NJj@ z`|3M~78dsD!(VLa3*q~3zOw)J-~P$2J*Z;#7cz8YvzS+Pb#uwjM)jC)yoNgdp12L> zX?2U1nIpNa>^y6DAZ*+4V0O^i!|=u*)FG?s18YOjP;l>d?VhjS#pZ!<0g_R9kLt8X z1CN`}VGahI*mO9FQQ|H_dKlZUN@)A&kO6z3g$WUa0M}6G%$Jl!R@+X$2ak_lh99N=Lv{(b%6%`!!g0*il}fz? z9rDV~QLZkmiqK;XFt=e=t92l2YaIeIyVEej^VJm(H5lxGxq{6z9N-_Uvi|7TFi$cs zL4cu=IaNh7jd{V4(*_6QnPMZynEl>jAp84wgBk@cH<~ zOKi_hy+j>%TMy>5^3=INQF`jB%PJ1#II@|vDzq3h_U7^?@OyC%*|BfTi%S{YaGu#_ z<7mqm(|bEL4bwFC29zUYoyhc%#R<|99(ULew(<9ymsx10i2`^`eUxc!8@N^512*p@W zIKT*@97c5Rll++Br=W2G(KOS%DwVgzrLI&}fvV*)*+Tvnlb}Jv9>q>X;B?r>qx+*n z01HnhUf-PansLv;5?HKM9RTWJLQrI?oDwkOT3@X?z7C$L zR%N)SL6`R_IJosS(+uvszf+q?y0m{v8}1oT8eirFkr%50V5EK zIfPWX7{ar8J7G3FT)e-6?}z$y%wwf#V!dL0u&IWAR3}jpVkif+MzYzhZkIZ3n&?J_ zc!61D3i?Ln;7U~!R-}56L7&jfDPX~U1O#IlgyDg7u}W}7lF(887d%m4bVH`#9N zm*0O&&LtWjNB=tWY-!#tiQT|%ukjNZgnDdVoxYKQ$BE0bkFZO}lMy9yA7jvg5h9yF z>2vPwbbLSX-;oLIk_%)QwIMK94Vx8#nkQ>74sVhDra1YK(NUlZ>KdG<5X6ur1x-n$ z@N#TvM2HkOQ-_)(Mxc~y+OV#ZM=cf>vK<5uDitx-+Be=yW^JbXmp}z=4z601*&^5j%{?;fq%!O=)_^7sWyK|6Qo&^ztX&m z^G&pQz5)YqX63W?%(m%|#I`YE7nn5hR6js4FcVsNgmOFwm>B{8h4KxRRX3kkSE$yn z7rlV{$9v8&yS{ntYuc-$$4464(3b;RDmZB!dS$qWBQt2+`}urUAq6&%OVW~cl(3!~ zhssecIbjaWwYF3&*YB}0f@&UXQ!Gb7Ba{{2cgln)oL`!N^Es;-r~NJn?8pI_eT@8` zDUsO8%Yz~g;NU}F8(Iu-tvq3KJ7tz;Qy{ho{sqb)B+zN35r1EzXJnS80gb=yLjo=y zxZZCH%xU7Gx{S*!i~U)OG0xTigl@|YS=sIjc}aRVyXsiooeE`TF z)Ul!PUXH6G(i7Jueme{2E)QG@85E{wI(9p#ah5Rp+~&kUw71GqkUCDp>@YML!|*)G z+?fLf8xf#o7>s#e8(#<``H&s4DKt>NvbSGddVm@|m>vkU|K%?~*n?xZ2*3?8?BUr~ zo`wJVhi~ow|J%RVmk*!p_17~}OyC)S8`{#+uwnCuv@m3ipqg+Y6>|^In8;C{Q3wLX z7BU-5M#ab%@N$t6F>575AQ4lwMjYIZMk_LuDLhI9UYf7?vp~6%0SFugs`((80Res6fyIN{_$Cf-4+MWTm};G#;2}PC<`w^!tDG&%g5@{QR&c zR*9*o_yxfM^yVnn!ACxDFkmlECGas{Gl$&NK-K454ag@oR8W^J^4Bp3A2*9W)+@tn zV{V?JQkG;LhtPU&EC0-|FJE~!3)o|4TW^T2R=y4#I>L9uIqnEkAb+DdH+9SDuas!x z@T7B2JsUcn`!ZVG=kex_-f7yOD`|C>W`rhwVziOn#EaZWpv+?udZ+eDC7 z8LdW|)z8tSNnnwpVL08Ri6K$qRGHRL#6oC-A;Fl3Z-q>v4*aUdJcD2r{3=x-uYU~3 zv6Jp5Wd)|;q(BVt`duH8=A~;j3AopNx&O#;jn}M;<@ad0wvED(gA&43`(nP4BXxl0C^m1m$#IPVmm|wG=i|OtIjN*Hx*QYIU@f+wzmvb9W!f;JVDvs2GtD8 zEHsonqg-#jg!lWnxPNBAfr}OxC70N5nDa*C9}l)rxQ)uV57C&w`?0we8y!206C@(D z8!B%8XIlH`|I~^!q>xV}>^JL(R0uR&X z2E_-$6ymK7D=m03yn21(xZcX4rUyQgOULt{4w}ZipefKXFz9HQT8w9fquFtqoFF)$ z9EgG%PDkIAz*43(l<_aZTI0DykYm;wO|{x|D?zSgwWacEBs(rM#F%FlK65}e>_s%P zgWQEnnBakq$r<|Ab9%v!FEL`9__RurUWVMUBx+?meJ(h(k_%k-B3ZCHRD};UsHYm} z^tq>|+@wfTV9p`;o#<-qi)*28Lb>Ls{M5h`d`bU?QFuCx<&ovCyppX<3$yx~ObC;- z1!Et5k|Yx-!iVdFxOL2~=rXTBI0XN$31u1C3YLRz)~LM8x+K~)GHV@blT9NmJowJe z{dK*3_MmHk3EFPD{dl_gyAG$=60HQ2y)nS}1%oeP18@K?&9MNcvL-+eOT0W1|WS)ED#|V`fPE>TQec6$ct8 z3`=!}M%kO!xAwz#9X&&rOL+lr{BU_%A80JJ2edLI2Hb-KU;Ef>2&{dGG}s4^;L4!G z3{2N1K4s*Nk^LDjD7R^l8M2S9}M?j9&G!(wqL$|!vMSU ztQ8pc`He$fXA3s`P?^A}9t@o8>r2}_@BGm5te)PNJ*$?^pXtuwv~_q5(?t#$6TBJx z^X`vB82C&a+C26(2q;^$lVBXQs2W6bZDx)qjWR?^X8V?3{Cy5KM{$5VhB%?%ou}X1 z1`FUAMonBpsJ<^NsXPTW2FdWbm9?lSYrwprc*HN7 zi#OUg7@akg3UL%`V6~iuhl^F5H=PK3N~SGskiM@-+%1>DFVRHd%a(CeLrCp$kbq)_ zYuGw0v`Q<+$I?_Rfjx&PLP}1J?kQ)BB<2v?jPN{JshmMm0E!s6R>5wJ<#uNCAk~Ih zlnLNrlAJI`8jl+sO)DM>acVhCVBMur7ulXG*beb;kv&n6oM#Lk-bv!`Gx=ij#RYdv zJ_@N4mX*8|%nO+DL5AlkjBM!Z8K)Ss$L>(E%ci&_b9)}6+ z8^@4^n*257oiNBBq6Af}?IA|HmjD$I2|cM(TV1c>Tv2l|rp=zh2B(3xK!nVY*$>am zzzeq&|BA`e<=`#{0V@n-?C2%5EoqN!cMR2`M$+?$Bb%wUQ#OUQYJ!$QoU>>w2_|VO zMq5YK0J_3;4uZI3{*yFRuCR0<=LRP2>*dG$t9S%cKx z#3B&Z5ncuqGZe4{pF|$Ey!gVYC2eaj&LnPF>eK|oJhB8X+=?GirU~H;hOm+6%%o&i zea0Z15OkCHwt^3eO`BB(P=OSnbv9I{s8eLCzw*fyFpOZYJi+JIdci*xotBO%4yuW>%tAWQth z22tlZiH{piq%L&dY=9M;KT`B0LnH;Si7B`3oD?U)C9FGDwiaG5o)_*RhG^384H?Li z(>hiQRZlQwKR#|ez`Xasyt9joCDnTiO1C{w?KX7udZH{i%MaGeavH@nvw&<0)|tay ztO<-)0VPCv@he=jEXG5%8r`(#x}DL02%K9FF%AiQvCp3!O2DY>^IN<3jQjb{8)AMq zy}r2c&$A?MtstWP0=_gP+=oV6b{x0P^7?f_EP)&TvRSpl3bU?*CW@2&nmc3 zn}6e!BV7*}m$LFojxHeI~66XP<431*cbqQ6#Zxg^zw1VgOX(xHmXDzxxK2)s za#g3L7C$Wo!3Y4)5KS#;EanHhK7Vch>2JRys{k+b`C%V(zeL5ti3b;{;sn)1g^-Ja zCn>|Bj8JqA28Ovq37gF`yT!!D{GQDgXM8Q+%Ix@`EoM~C9NCES7UO&&{0;nG99|iL zY{8&Nt38ys{_|9z;lNJCNJyo)%wl3vs|iz0;nv1c;wd=P-GUpf1)Jn#;_OhRr^@2< z0ogtvorB&F_byvdtmKg}hbM8ErK6eHkCKYhy3_w|wFLI>6@wpiM@VLGHV5)*&rUJ5;o#dDgCHNh>G#z& zxY1|K^wHNK=AXoc=HZ8sb;LxCmNt&qkdO*v^Pi!j@WXlQ*8pY$O8yohKh&84SIG2z-Gd2r6)b*f_e(66h?3t1{@B)hygb$^Yv*8pV8K z&_$KRnS~Kagg{gpR~ryT8C4}2c6&lg6Le6d@Y(VUxB(RcW!PZi1io8_uj>8Fe78W} z2VutG$EOIU(1Jj?#c@=n>1WyxZ5;Q7iiXeTVA=%@rZWNOxyh-iKnO>1CP9=BN>YwM zhsBMqqPz_D{^uMzgGJ+Q=Cw>;ER_Kuz`+EaECSC$7AIvH=tq1;$1ulP6dzCxu*7}sTKNTx zQG(7nen*rR927KYY%H1_8d(DQY6qC2725=OCW0>>44O8GBcP9bNlMejpLqv4?V-gEV1JN!GOg$^hQ}i z41u)bnVZAeBg^ixY)n_hA3|X>Xsw%l1I< z-S@Ya9U8lTy7zkkK5`?@dSe0MBqal_8c+UWeh4CK^6dEluIip+dgz5b$`=CDFTh}t zEu|V4K}+;C zLNY)6m?5IsAGp4-rl8L2g9BW=IdTjj1$?z}=nCa_nYX8@)MIVTmVSWta4HvIlMllf zYf3x5iRNSzkVhA=2mK8;TUKkL*lEgl=}CQ8k8s?xL$cnK&gNJ< z!Ng!Vc3E0=04*>thbm0L&GEVXL=G&?aF87}8fO94LQ_6`-iYcm&Z$0DAJm6s-nPJQr zqyz!uGFK2GjPQAVwg<;ZcaE*zeEm0$?cRpkX=XpYzw^%}dFc9Bh7%^uT{0E8D6Iu) zNNINr-&Ko^(WG)8GBaH~+_h)6fCSLlm$MYqTMPcYoSDLhV34^vHUZ^`#E9p<2$5Y4 z8qqUTR~pS5*<6MIqd+}`G=SY=o>RwCnk8f>ni~PlCd_PXM(83J_0w@+a3*Gl>c71V9ZtRx_hZg!L25jCMP;1%+ zlY&E!>lfGi6c3%`uT~}0s#nL_fd?ap?AX-MuzZ8b8(H{X?`!yM*|O<-=Q!@h1OD6F zE5Fa@{>=CO3?A+JX6e_5GMk1AQ4&OPrnwV>Y9N0eMq->aKu?;`fhz}ebBN)Ka!DH~ z)dq!6^TCe9>6y``#v+(G@Q6kBjv0U}U!Qd18jER?B(Ei-luB_L_E?&; z9KZ_7;vmC#Y$!Y<%!^wtugQKng%HblC{=KRl&C?%;#!l^ zgtd-il-M1E00W@HzE|*mx}a;ez@0lVlgtDB3!Z%eZ%B&(oeP+08W##QO(|OU5%{z% z3JanTz$KH4I~?ba8f4Pd%lLc{rE64%J96k70xjrYkOcSSts)Zv;{dDxZqNYY_3-kE zA}e#QQYpcj$fSqEWWbI~>i7_j^bi=H{1YyrE?U@k-@NkXNJCQlZg(VsySE_>V4BEi z4=0;I*PsTF1(#2m*${xgN*~Pu8(Nh;Ad+)r3z-gTmi6j_M9`Nx5Sw2VM~NCn!|y&= z3mxEy9jRtm=nJ}D4ODp1*00rA9b~j<#A(WG$G>mqGHz)??%0`JxQY!Yr#us$n5o&7 z*31HC36_DdQ9ST|@BR9py!!}i&YM>^!rW#YPf5J}@@hp{Fwjrv@DZe0(&rSxQKg3GiS>F*l0g>d&50Pg-h#&?*w!1}kbe#MY_QN#kwqUtO z_&Vq4H)NI9MYdbB_B=5)ijdY~-L$oFFhO*ME>%PjB?#u@F)&tDt+|<$XO#BRDXXgi zN3enV4&!bY2Ybs&76?M{A;9;LQBwj{b0Po;*r5C(Pxv6*nu9T;VFiOB8aQ?GlP)-K z8yO_lE$l##R9PO#TOWJH2-u~TdtqUML>Wxr;rx77l7zn2)ELE6&Zrj#L4$bb1nQ02;BLal*)EP5?lyTxV5rh4P0G|MEOB~KK z+QWmt@S|VUljBDqh%0k!2EVXj!}5ptVp6wQ_)aEhEq8v6)4_CJI@+YdrBk_778DD~ zQE);M79dG1Il-vgm7xU-T&XO_x$6D204&mb)BAw*kD#r{6_yVvpaxz!U7@fbx`mWD zD2=!KwXGk&_(q@E^6DG=%`d;>+wQjqdv~|y01GJVQs7NxN&&D#Gf}lLo+pR9JPrU2 zfrO-aX@^lG;Wdn|t7TOS-tJyXEV_B&&xC{$)lb5=v_T6urJKuB0jDgBT1ah|Dd;{e zOZFy2D)?Ud&eBU%+*80ziJ5I=xT&Odc+O2Utir{q6GLQ3nskb$S&PgP!Irq;ky+j` z3qi*MeRz7}y+T6AgOZ6#jdYx7%Trx^>D{p zK~RMo8Mp?(0Gs;V%1S}M!hL9f^OFaJygEbDn@WhKjES+=T-=%f~^!vL#Q?RqI**oKL+A)c+{iFw9fZ zSjy!I=VV9z1m7(0ZSmei5_<-eK?n}^k##dE2p?Hap~jkOXY#%9XN0PWapRD~>mm&JN4ip>(JMQ{+!kq6eX4-EO_ph;GL zCQsc)9b{2iT2nAxL7GKu(nQrj`8p1F?9WD>Sxy4s($jq7VZitk$u=&Esd>AiH^UX}|g5 zwe7teJ^afbY&T-Gx*B6J*M^H20w){)jfn4>A{5G(!01vew8{Kgt48BlT8(%a=e#k* z#86n zx#+2T^sC&`SbiiYyJOaj3B2-WjchL(F-;-BgD0D(SyN>VfmK6882T1y3P+LIQ^}%fM&xT`6ypWhwR9&M$ePe-8xK4{ zI0LQKuqtG@#BPz@CwUV?iml++(Y23r1FNt~%}(Lv%}KDe+6*GA!{oKAZxozSXNQ^9 zN-tZt1y@yyNGR(1qZ(w^8)Mx*9{pc{eDWUEe>_JzpO#GVg5;fEE#bN{*L%{@0E zsAA{m*Y>x+dS#EB2Rr&f@a1906T3YM>w(s9Kd2-d;yNh681#_KaJ?}r>s3!d^+*?{ z;6qjxfCab&&54Vlm$hFh8_{uRAf55^g3*w;s8W=p@&+ije)JVsu57kc6@tbbGTk&2 zB}`4U$vmV9u|t#O%}^9h8a%4*dXK{|DHG`7;{c~IFlV|YHvzcE15|Zu44?eWg8<64 zla*kr?ly*U0!Y|14W% z$~zsjm}`Qv6tnjifgw z;)yyp!`gF5KuBbukXTFh=khq)Z!_h>>!ZQcXx?4V`=1 z2j=MDar_IYU!hs16fs3+6Xv+cPSLS$a8g*L_P#K2vPsmSOqt9Fq+hVhffeEi*{yC2 z%*2}!){CJo8|Do1?D`hzVw7DR;b8}M+SP3zSgt019fj!*Wg>wBB@Io2u2e>;rJ&uE z{EQoRRLPbq$uV;Sie=GMNQ2Ht@P&=fbHD@v$M`lL1fCb4cyDgJ!~4tczV^n;o)&-y z+5~CyaZ$9IWRT+2L^(R~B28rp6Uiq z6?5Eic5KD>_UFCyMpCmA2Uz(3z}JghQyJT+?@c+TIiq4peNdZPtNiy|OlwkIHzm_8 z-H|aeNLFH;Q)hKQ@Nvaw9LIw1Dl?p#LY+1B?F4N!Ox%a+M=KjiJzwol7^xpb(HnB$ zuQORT9%Qs%O8k^2w7CYo@g+P`C|$+usfqj0wG$+vYip;3Brwzhom8b;yiXYmHJteT z67nq7<*0+#f>|+(nP`P!z=5CsJ(%J>o1a2Hc()?{qA1 z*pNC}4v|3zd2SjbBuzMK=@e?-NzA+g4G83J|LW$2d)CHR;Co{PZePHw#ihR&m5@G~7`*QVz2bSp30s2SFbN*d>}IXc|1;Q;z%Q`(N63-+pcP z+n!y?k6$)~3*g@XmIIDylpV)GIW)yARCLWEdl=(zYc!BP znxvOY>=9)DE3WhYuqQ6v&dw+aAEQZ@Jfm%a1NSP!VG*i{z&TWzNkbP4rbmwGf&mI+ zxKZ|Ms`8vwLNiXIYt$&5=w7ASTmZO<*l!iXQz5M1>&OC;PZ1rHUY3f50cy2oR z8MAtJs_IO|9DQo+;ra_7n1L~cY9Bf!s^X;_N(vT($wR){fQQgc#VUX#V`gRQej_2<0MB^4UUoa zN>d@o6q4qyG~nX;*|177kfE<9p&rv1?rz2=kcF2mpKV97paL#E7?iEjwx$@3M;6nx z!g6_F7GL8eY*3ZDf>c`$gOahtfmcc7%)pPtY_U#yj_}dm1Dyx~)$?%D#ek=2y=YF6HO3pFDV-c8&9T*Gcw-?!#|L*@^|<#p3gU7W1j~oR zn1MM>dni&KiF?h^y`Ce(-Qn>XM&-PmjV2N-0d_zLEL)ohOp$5FG|ZwyPeBf^M=Ndz z8bmR4(jx7j0(&_w<1i_Q$|&8shTILL5Tz*BSZ(@3J#3#mt6bAK`v|)iOQ%yUCkxh!rW?v5P9LSMHvxjuA?& zga*h+k_KIp_<|2M;J`np>)q$Owe9D7`~EA~Eg~4)%eddLU$jPBcq?$CbZ-}{Gb-#T zdG~*ZPQSqviDbknQ90rBL7dQl7B&d$ z=Fh$K_Oh(gO$HS$$!}LH0FaDV*vtF z8ijk>P#l@2#cEMzGOi)G(r;7Q0Fw`lb%h#ee~e5?feG6G<#|VX5oD^cAnZH?zkKzY zv?kn7l$#gJnZ3EW@F&|zkw@)LPI2Z^15-;_bJp#U6~ zi#-;!<%+?nnH=s{jkt?>-t(Tp6bRFs@ho65xp~~$9yGPvOS|^WmY%j*nEKKK#kaTT zj*Xw&m#2ecxf^?TxADb}(J#nI&neg$tc;I|$j>H6!$Vdjt5^a#c&$3b!g?|SfjZRw zI{ta~C;(nSp}(Vh9aIZigU;;X*&DVFE!)Erbvja?)7i zwAUF`wUNR?yT~+6@60 z@gXq~)Up|OegEYjY? zPJ{e9PVJp@h$O@pYF0MnyYe1(nix#UZ=>xcCWe9&C{>hPV)K_s+_Wzm52r>cd>&Z` zkghfO(WVX0`^E;B=vKfx^HDysz?<>?Up{@YrDupM4_+%f^FZsE?G=0@Ry4A~AwoAS zV9@@VS5O_{??+Jheq7cd4|T=>2Apzl!`I5UMJBzz8m6Cdb4ho5`KGdpN3O%rBN)ZYX1 z8+#eDgG-IozXM13s0kpAo_7hfB};0}DubXnfyD|^HpymXOMJaP%G6XbL@p)=qxuBJ ztUk6o4{b_iN%sMvOIo?N4hj*VHH~+l2QP zJXdR1*<agfqOf-Tpy3jX}(<@~b77EDOPs~`mb{=iAAwd4f zBtvj8Vvrt`Q!r2&FrR5{yUnv_xI0@7ONk{c6Km5z%AVf1M!?-S*!hj0YH*)A7qLDh ze@yzyP&fkn2TdG67CL}uyQRz2(C;|C74FuY*~!)CxhcEZw2j{|%Yz*qIxeBNLbhj+6PZ2SU{4V>Zh z9W_%7_I+PAhgcNhJ#59GSeH+ip`?;(>|-;9A#!TOlZ0|i2&(KJWz1oc-!@^ek>xpn z{~_yVxi-`I87yA-x0dWSb*euJ`L<1Xp9Vw|i+2dZIyY!AM=TGq9)>Bqz?BSPrZcJu zMye2+Vm-tKzKOR--n&_oX_^kjPU{#cWCIr-gx4F4uklP`J7W+BJkiZCwRvW*E|v_0 z*Oxo{aQ|!{pAQ^ql(LNP=j~jLFRGyqRv>8J+t{par~5@i^D+D*z_0eq1)p{2>zdEB zo6Na6Wf#5`9T5A86i(*d5- z1V@yLCxk>L7}k;DSq9$N6Hs)qZ34CqOp%IDGuADbGr4_Hjtj0xFPI8LOde73qb6x7 z-N8l>=T%fPD}fo1OgpVTHUgWbUVFLbDj7a$whb{JNVKsyZ?aTt1@GO{hxb@B-NLOc z9tuTLj7qX3tqimrIj<_S;?b=VrV`)_jDy}v$CHs-;9i_UmV8?_kw9Zn@bQIv#N-6I zat&TW(b?Y@6L_!tXG}l1_hwn5=m5HCn`zUj=84~rSnL3|yF$s0PL7IN`QxTgN9Fh* z{)HCJ;}Oqy!+?9SYU#XI+?d8VgutYLpDpe&hBm@vrTutscK>8gXp$(6(hxvw_#!*j zUrV*u$X5fKgp*Y%lF)`xV|3I|%m5yvPfpd0i>flUto05;YdF)?;U+>uhn3Gvwg8I>TwGS_4^nj?D3 zg-;&$zw!pXbGi*LaaKkU$CuWPIyrDZQS*JSv=*;)bd}o}ji$fvDn!snF z?dNP7&L~dmNsu2We*#X2?%L=lWHtlbe84f^=?8jW-ef`1jx#ZamA~dU^ZwytWUY?}**~ z@HfA)^UDinrNe%Zr)O+@cBB0Z&R_6k-5jI=r&C`NUWSbSaFpZG>VYT1-b*qJ-85!^M?wsD_aBUEL13DI3@}{Mum9Ogv-`&l9PjuG86plEKu)RI zP`!xxcW^R$b>Zmh?2TPrdNb>JXAj%n?i>@w*)IQ%4%`AeZ6z0(UHBd5R45>`YCnLw~Hf|SDh!9>BY|HO97XW#!r?6k#DheNu4-ZB*pz0U*^7QcIb>+ZnhR}& zo5kXTW@Z-ZR}ImiIx^^vy=S)=G=u<*O|++GlbI$OTgQWATL%xQ@KFde8B)GXKDa%` zM8n4I_+-lwhAJrgz>!(U!-CrD-apu*U&oQy3RPzy;xAh^79dCyo;=hpsHk4aV%nU3 ze+;6&98igd3usTE(%>PDk$Iq@M$LCDI5Z;2wWP^+7tFPI?@G)b$n|TQ(q)Zt&tXnp zu(D>>Ry?aM0T%~i7QZ+bfk$jGy`FUN^E6Y58k>ynNAZ4Qq=fz)he0o1GF`yNmzbHF zX4>>nAK}`7FQ<9dX7a_2@#zw7G{pV4xKC(C`kx^(XieD^HUzLxQt*07LBWB%xw*A- zKjg1GyS#D?csYma(VK4%Pu_%WSYf3h=1_rk7*gLH43(&>El!@gktGDl6&jF>znLaX zpgH2737qq}-y4SmW`s&I0}`q?yzJPd3QILfcrdVPjMTyXzVPc!Ue(>v%x1%9jDec7 zC^QV|$Z+^TFt)(Z4YZ|9MWxxGc zn{03h16Op6reBKK3sO2MrQQJ9IS%{q`O%&nL)`9;zJa`X;z8h>@4mA)uf7uf*Ixtf z@yCP4yDK}Dz+m3QSZb7LH5kO=jto{=*hFe4_z_Kxnz33mjIyxT)HE;XPG!SMdZ<&@ zD*mJsSl!)0_+8gVV`-oSRtozZ#v-PmO%cctBTz#27<;&BN^?Y;AEg*)c^xz<0q?cM zR1x5gN4B|u&O!sj%i4NHaOLX(Q%91+28)YpP+INj=_Bm`(Oy8jWU({REK|qt2m?u^~TgS}TCf|n~CR1@Q zhA^oqES%~97UBd#1i`5-za}M{;F+SFE8e|DI8kV5#a0r3E-(Yw8^fpyVZosQ#s<65 z6S%CIsc~1}gmQnl#}tdCfd}SVy*kcW87iX5cKz(-Maz={bdkF+AMC@s zcP#nm4k=t6u1O)=@BC!n;ik2uQIUS;;CI)oJ-FR@rh9MOji2zeN__2$^o$wwZvCVG z{d-^h-t1W|IA1Ew-f~_PN;8uEl|=B@k-W?-&)yMQwK(BXDuAB~{1=~t>6h?C{=OBI zF%HqO$GwA9+`i}HNNq?c@!ANuXqxW^P6*g|0Kn@nyE&N^5cgd!9iLvFGuW>Edw}VV z5rIbf3&{Kg98YAv_;=v6v-wiiiGFS1Gp5+AoJ7&27~+_#pF#QXsVU%zpphIwk4=bZ zh!y-xxS&FJQTXIBy1S#Ym~ubaPaI`QHwJvbSc(7<_LjL-xrf(3^xB|vHX~a$4&m>* zVCgs0lwlBtLpZYA`+FX6ZN8X2NMc@C#-xPZ#$lGDT?`%Zx19%I@K&BYpgylLs8JI1 zJ3rhxpU&?Er~h8xdK2y1zIyY@_TD_ZcZlP|!`42nkM`_^&<03o;vD+8k1H z-L+A^YWOAC6=-zcTwRdfHSX^HGp+6Nt5^2jx8E?Jub&=isGi4TNg|_3r)E|o@jssj zUeQX&q(@ z+E~fNb1|u@#I#CB9R>wkc;e!IP(3z`6}p&LdfJrPmS9@~o_wBjz2?(r1pGOlyjJtN+vEfeYl#>$mpJ z_rJ8;*I#km_v6#X@w$!UktlguN@n@q#RiiBI~T6@4<9M&6=-5yVwo1iEO%!t&YjzE6Qf1`HFLI597b23*SD7VePPK z)MV<`Zf|dCSdO5J-cLEiuntJyg4ahRJc2564gB1%zK52}IV&QrDU*4=-+KB#(?2&! zc3lD?v+mp$>kQ2W4Aof)oaOVTlfy%jTkT^C3bU97tTuRnpIPB#w~;mX;aA)c$6hgb zq6%i;gFOM`0fcMg6bNL$Ohm@%JtKB>9CO_%>*5TsEZHK(1kH}vSVF_1^-|wqfSm`! zgJVw@940q!A$A`= z+PnY$&-VOqZ&zN5&#&KDKD)Hb*Kb%3Lcw!&>0Rh+&y?raw(BnBLe^2Ph8DgIYtVr4 zYe7>c!}V*FY6zP5WCdo>XcHx9YV7C+w3JfL+Qh>)bMGbY%+`BMeRaIjvor`Ifk6X1-ontDr@oX? zM@}mphyi1WCniZCD6|Z;%c)ERR+ogUw-xuA^y=)!wlb+nK}j(-Zq%&c)LVM2#+24# z$ica6WiC`qxkw_UTi{_9*~q|oUD`OsF$%#8qlbu`H!>9w?oQ;6&kK`bkH&Etb_Oc_3LZ9zP&Pt zcXqo6ZcGSIK+F5vug~mn-hO3&`st(n<=scho*%J3X6Jq%JYZm4c^3DWG(1R3afmsL z(0V}s#n;#N_SH4C*^b$NwzprM*$>}c*sDtq7W+@!6Z2M0=7xs%Ba9<>Zz$?8jb!h_ z`f~&6=W)i2AL|S5cyL0y_dxXo0zEQeFKt;}f#V%UGkDIh160Mukf^5WI93e07}OxR z&Y~KE|3eD?Ev4-YGHMK#@l2G?VqXm9D7P0BC^VBOUxn8Lnq>!3@MgjGfEO+jD`b4< zt4mgPd*An68Os!bKc_L;**O?8CwMIWJ%*S<7*Jiv{2tCZJ50E%rqHycttFEv1#bWd zkW(3w8fW`n!4U_=nI8_N(i?+`gUSf(qcLf`J2O!PS1=|>iB(oi3K{-wugSm{m{i<` zdtOq~gr3V{-pKdlG<^8yy=SBu8|1++ zc%zMlMuVS9Z@>A5jiPry{b*l4f8Z&I1`sl#=P!5m@Z}S;j+@&zc6s@VaKO{!gRSqM z?D^B$p6_?IdcC*XU;Ub+U|@v^oNsmEf%xKU%L{msuKe0ary&0qw zEl9YKsgzQ4snyWpu;Ix?(qd&CH1k?yhX`6Uc+pa5(-3N|83Wx2pI2}49gvxz!E=94 zh~wN32i#N`O+RjuefYe#T@NK%!{CVki&A+DthkYFB2IRkAHb;b{^W^L*))qRwKT}& zp)l(LYmIK}I0h~p&`KLFZYA@Xm2kSLcAt_MYW>_WiAA(QjA&`;lC5 zif~|BpTWUZRx8Fx_=Gem#-IBEyLI@@KhKSMBlUhy6ZN@2<4upjk~{hf(99^D(tra~ zImIMkAlyLpKaEzBe01Y*9ft{*EO^iulTnCIrpaRQ)W~JI>?)3l*Ayl^mE&^!nsXR- z9~@vb$_@{Y{G7lt5w!8S5cuxCe6fqm8(vQnS#{#I_N*M3C`EW}$O5v;yR8rk)=V2} zPRQgN;kI)c_Gb+Uh#{glV8E1^HOi*>KH+b049qnLZp~SOCm3(>&%lE^1pgMI4aj-1 z6Yo6<#Gg6$FT_H#5Pn#a-|s9q$cQDtu<@Kzuq{$hIZJaJf1aH{I2|H6^$VW)>^)n} z$BvB(V38#L!+acFeS-Wk#yLjG!1wbUSO%q~Gh&3tgS=RQ58}_Sy@@oxy0NdmeoIIE zjJZBuf?mFP?KsGp<8QBQ_4P08;@e+Z=NM7PP9eHsOTX|de?L&D77X%u|30!w3eslfl@_zEaX%JZfYZ=Bi3}#<}s^7%@9gdSBNLg70FDvCu6W$1?3ZR1BaqnicX;4VuzTC*stSG(=(TAKm{1J!q zG?xk+Vg2}M_kK7*s7vhe8d8ODiwq zFBUVJhkyL}Jv|YA@L+p!amCE2&pAf33^bU>^jgp$>2yXGPKq;7%`@C91THiKkH?YM zhknHKezd#wlgd^I9I}`w+}yK83~n7NM;hxC89mmBhB}Udk>WlR&rfyPPL0!G>(ucy zt)Q#&dp%2e3RrkflwaiH0(0Mu6%Q3tVOIk+p{Y?>@OHBkyI|JJin9y#U8n0jb>0Gp zzo^$l3y(envdm6_u`u$-a9R^ZF&Gs{9ISn@{;TK!*U7nNlXA^+et}D~9o%Y!4`tR7 zj0^OA%Ec|iE2X>}2=(CpKR-S3pqww~5<>(C%lC+;abI}BO=Cr!)*&#_(a3S83`PJM z32Ox@sL6M=xyLVlN_ewt?w#gu-rU;7 zo3HHh?YG_nzQ9Md>*HHHcnJxUo44QoVBM>4y@I^)e_x3+i!z&|cCP&fzH*2I<}+(6 z^NwKS$be4)m!A8F3Pp++?dde+!6U z3~F8pqP*(p){>^xPX4@By1iMaKR@ybJ&UEJ34bl+j)VYX4cBT~bmis5MBu6s2UkWW zfD@7`j7En>nG({4$p{WZVrYA*?Kt3%#v)!3Y&6OB>gq~Xh@-rVK@|kXndo=XF!*9E z0vkmph}mCT57H|?sIPCX$@=(w=h&{7kxw3YSH5PwpJhwmgIF`BOlo_(k~8ov|eppUo83Ao_uXL zemyrAb7o5j=7R^^<;t&lXxU`OK~Im7n6zQRod(47?4O^T&DZvBEB-c~1#s>yN?>Md z9(?>@0ki}q8(9qTEV_1@MsSE3WThfe0#R58Wt=*ntRM(=-K_HU(#WjLQd13LsJII@ ziv{FXSS-w}`Mw9@n|)-X_ywCyEIT-BJw9$YL=+yRl$s}bsNi7kj}eY)(=N8+IKGtr z=16|>7+R!J4&A}7X)O4*acI-XDe%?8awt=YOAw_Y{zzN`vVHJCD(-s^+IrKCBJN<3PAr^AP!d#;U7iw;19M4Xf z92+7Hai0_?kfk^=YX*=NY@6s-TZ|rw&U_syLr_A-(hV9Y9-zRVz4Gk*;EUEmHRx&j0 zwAt}*?AjjLScCU1;3;H1;9rB6D=zH7Op)|L1a;uY;N`YaX<#$3X_Uy(JzFjuwz;zN zCkP)tJ4Ds;xgLRMW{EqReWp0#&>n+zq9$m+J4U0VvDdy?u2#U>VIY*eF}Jl({y?+o67x3v9KfYL=lyy1;Jfz#dUoCk8bTR8luD!_l!E4Bj;{E~X#!`2 zOSX@_2h(F6JB~xR9|RL2b3z7^nF#RWNTE{5@E;-33 zRLSan9O|+HYix<5D}z49K?a^L8gostM+FOER1z{@F5>kq8iFzYJzziu_qHAcr9ntx zFct?U@xl{<0t7s0+wrC%`+;5@;scV^J)k{3e((*owf7$$?A7ZBF1B;W&9F!zi1_&F zBRg`x^z8SH-k<*1F`5MSi&&&)9ES~B8K^&_FW}Y1K({WGOxSmGIJifb7NsZ3eJ~P^ z9M!HayCy#%+n$SH-KZ=fR3M769$=1v>(Sxm!zz@R!qEjb+>6wo#vBP_WP%yjZn z5J6<;Us$l{u!H{f?5F#}n}3Vu%r`HzAdV?DGdZudq0}jDB;ZiTm^X&-+gQkKRg$9# zkjK(cQ1EB-qnT{$%9s$oVhqbvWhn|$QUnb(nZ~m)si47%G9&Tx1@tq^H;u+2{x^ub zTsWH5%QMPQBH^RtsC}CFxC3XG?V_u@=enXp7xebt+yq96*I0Sh33vh?1a(3LJ&#-K z0%GSx;&CJd@bs)EA*bE?qe9gHH!qAEe`a&aOMCd~IyQOk2mXF_#(TVZeCFmrgZJj< z#;(rK{P3UAi00krdpq3S8|VX&X)n=iTeNKOa<`*73Xb(sv$%cUH$A#XT=sTncOx z_LOYYr07dnKntx#CY3;3=wbz0l99_Gll5Z>IBn3$l(p4Pe`-Sf(UL)c>>6b_tw8-} z=X1%ZHB$Y|ikVKKGSU(KJ>mTzu|p%7Hmw;gd<^iUG#ztGF@4PBvB9ky`e_tI(H(b#0*Sk(h<2YG>quvF_Y10LOGbmQq# zOK73<^6tl{PR0o_)WXKdQG>X1PV=q z?&^j?RVAxuG8oXexM0A~qXt*vM)kpeV^CU-L4%R&e-oC1IZVjMkRHl}d>|%W8e>wn z^&E7VP-^wZ;OXLY(*gv&toICR=h-Xp$mfR#@~pW9@`Hc;c>Ya&oH4`E_W<y1g{$Xwt0|0?JYUF!nhTWZcCwsZHVpalb zC$KyO`$I1Wx;8B|D#b!61U85NER3*o-Y~!-U;pFytMpfv3`M3TawL7v4nm**|lC=Lo3)_c=b_L!(kA= z)D%n#hR7LO0VQ;uCSRB7yDIerC8P*SIE1@Hn2?_YQ$44sq=MU8@L5q$6$lGfU#uEi znss+-5QRG(jG3^Hu@3Oeaws;@@WN++qn-K!#)OG1mRLt!C=rRs>#k<_rMFW|$eEpwUFGyz+~4gn zJR|_MWSN$uk(tWKpGcHSWvu>3_(p)GkdHlmWREyqeGxCc5r9Sm=vgE8N+uSHiI|V~ zXns8M4KUjYbP_brAZ0}We)sW{<7wvE>Xir5Yd$+qbC>GRmj4}!LrK+nUI0O~Q| zv?F@*KZtiyd@g} zoY8?pn!NY$xVH7(qh-%JUtO#mGycEG`qL#zk|aqCR#h|eGd#|`DzmD)=h&HV_uD@J z(GuSO5kLUpAYd`mGu3ruX54<-r4VKoHIEwPY;0vmM!1`ssfvoQurOa+IXx%O_WSp* z_H6f-C9i{_MYac?(Vw=8&R*jpoe%WnqD#Z*j0HW5*06mXxHC&$B1YRS@N-nVlD8cu zr*Mxex2Nxm$5|oLd-gh2Xr9T{Z2BnBWDhPBXCn1%@x~TM-gLlNmFcNjhCc_}^PA0u zAdb^fRhMUn*wYBOD4&7T)^<=pNsU7YIZqInud)U4%l_9|~sHY*c*3A@fiA(1UY#Cnd z1Vq+%866S;T#zx5wF>X-0Y>nCaa?s$A;U%12|UPGj{gqBfmY->F733b__KH&jK|e} zvT;X(lY7b}noC_D4+f<}CBbH3U*0fdZYMNc*)8BQWLOl3wg-Du!v}Y-nb-6OlPRzc z4V3)AfH47sNg;4_cW5SBCjWf2lKoay4i0?kO8MPRjNqUR#jC zT=#GonAH_EsLHd`!s|nDV=41y4D#(v`XoH!Wj}v!EX|u{YUD&O8_R6|$Uz1N_q`+( zD}3~Cj6CExsFKTkf8YiqB7x?X1vQb>2Z=&M53Z@FY`SDBY^;IHN#PHPg~0m_l?ynW z*qD&C9Fj73%0+++YWEa);*}k2mxo^Ri*`NevBD1w7%|0{8fgqywkANN+F8IL>xNK9 zEy+sz%u8#iU0Y=WR>KjPYj+Iu&+kKH>lW{YM%VM}bNK6D|1CUx|2^DXt*OBrhK<1q z1|K0{FXqJbbCPr>*Vo`9#1v9V%*5dhwy@9mY*oyof4WXSWWZ*zCF*n@N$rSF z3%+Vyx^QmSSjKrPKiFHtrHjS;d?qWJwc*y43;F|sW0mI67Odi@stfBqh*DR$!4uSr zpgz+O5QDW34QXa(U?Z;t)+tN%-z%R1hbk)2A}S8Z2A_o>hf_nFs&@@@qC%)EHI%?O0Kt4|0SH72;FHQqd`@GCPzfY zVF6+$9fKKI18|t8Wjh=^QuyhI51jftSm6Kd>(}t>Z@;mb`sqEeUn}bmTLyQ?G2Yx= zhKr5$AZizZ$f}y+=-hDXFRF2dtP!wNMeW}s*9>|N=#uO>l?RouB@bn=6OeJ@-;ufR zkB7-sfRcqFgtLBy3#t!q%4pBZu)YXiB)Na+z#duB4!Jn^s>DX-hN)5PiJ6b%mi0s- zc7u7)pxaurdLu{_;4L>Xb8er7!V;&lD~->FV=d@;DJ4ejqe64n9fu$LYHA znelf7Xf`Y{I8;}Y?gBO#OeD(z&{;y5Pu_z`QcBB(;WWlGGa}?rWGZX$8=nl5{QkG! z!|OdnV_qz%4m`yU_VuSf|0VqJ<6rFiLwNXhZ#U2~U0W2$0xo7N`};mTT8V|}8Ia8h za+61Sl90uGF^!WFr-ZN5v1KWQO@mFu<_m&0GE@v&98b(PD-1F;YmQDHpC4&WUWNfC zk}+`K?w~pABudz5i)7?6Sqq9lIoub$On-8C7-%l0dJ=d>khC>!SYhB48hFO|aVYUW zJ{>KKwIjq89 zkWcCOTU86=EV6J#tFv@p@uy&WZ}HmFMAQ8G;Fz8;yvo(Z=tS$ZA6h|s#-vq}r%YjF zu0JY{>0eSIf1Fz^p>D!~1nBdCTl0xr}wV$2?~uAsuXdLdA9v zJ{^t}qqn2eve$#HzelT5F8EcP6M$EO4)$yn-p{}OVo=eE+28y3H{s)lyYRyg?=9$x z0*1y5sf5K11&|h~l&Bg97eN6n%ns$zByXW9Q$HOnDvw%1jC2`bF znPF8+l)Wfx@$kiZL?iNedLx#uwYswBe|vjtupuVVmIgOArF9(6No?l8P@yxv6`3K- z$m?@Fe2}c-=7 zCo^1Jar)Po^yn$yhu|;{c0w7BdD_`VJK^Xn1OGdoYEpN0C(vdvEoO($ehl9p4i<2?VQ(81 ze9^miP1sz&50~$o@L<{g&krXnL+u`Pwh#?$@7#|H**vnmN1olDC&CJqre~8xv@H5k`EOwnis0d#1V0=} z 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%0AdYYB5m5^Tj5SvRU6AmGb2nJ#?L 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 Ran=mhCG7Ezf-Kpg?;e1zN~%>9ukn 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 + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/v2_bg_color_gradient.xml b/app/src/main/res/drawable/v2_bg_color_gradient.xml new file mode 100644 index 0000000..7f85dad --- /dev/null +++ b/app/src/main/res/drawable/v2_bg_color_gradient.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml new file mode 100644 index 0000000..cebda87 --- /dev/null +++ b/app/src/main/res/layout/activity_about.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_credit_card.xml b/app/src/main/res/layout/activity_add_credit_card.xml new file mode 100644 index 0000000..9228941 --- /dev/null +++ b/app/src/main/res/layout/activity_add_credit_card.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_credit_card_payment.xml b/app/src/main/res/layout/activity_add_credit_card_payment.xml new file mode 100644 index 0000000..c2c8837 --- /dev/null +++ b/app/src/main/res/layout/activity_add_credit_card_payment.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_edit_fences_zone.xml b/app/src/main/res/layout/activity_add_edit_fences_zone.xml new file mode 100644 index 0000000..97d1cdf --- /dev/null +++ b/app/src/main/res/layout/activity_add_edit_fences_zone.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_email_valid.xml b/app/src/main/res/layout/activity_add_email_valid.xml new file mode 100644 index 0000000..ce4d736 --- /dev/null +++ b/app/src/main/res/layout/activity_add_email_valid.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_tracker1.xml b/app/src/main/res/layout/activity_add_new_tracker1.xml new file mode 100644 index 0000000..b592d44 --- /dev/null +++ b/app/src/main/res/layout/activity_add_new_tracker1.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_tracker2.xml b/app/src/main/res/layout/activity_add_new_tracker2.xml new file mode 100644 index 0000000..35e8342 --- /dev/null +++ b/app/src/main/res/layout/activity_add_new_tracker2.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_tracker3.xml b/app/src/main/res/layout/activity_add_new_tracker3.xml new file mode 100644 index 0000000..7863db5 --- /dev/null +++ b/app/src/main/res/layout/activity_add_new_tracker3.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_tracker4.xml b/app/src/main/res/layout/activity_add_new_tracker4.xml new file mode 100644 index 0000000..50e5004 --- /dev/null +++ b/app/src/main/res/layout/activity_add_new_tracker4.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_paired_success.xml b/app/src/main/res/layout/activity_add_paired_success.xml new file mode 100644 index 0000000..1dcb4eb --- /dev/null +++ b/app/src/main/res/layout/activity_add_paired_success.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_wifi_password.xml b/app/src/main/res/layout/activity_add_wifi_password.xml new file mode 100644 index 0000000..88e099d --- /dev/null +++ b/app/src/main/res/layout/activity_add_wifi_password.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_wifi_power_zone1.xml b/app/src/main/res/layout/activity_add_wifi_power_zone1.xml new file mode 100644 index 0000000..3b64760 --- /dev/null +++ b/app/src/main/res/layout/activity_add_wifi_power_zone1.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_wifi_power_zone2.xml b/app/src/main/res/layout/activity_add_wifi_power_zone2.xml new file mode 100644 index 0000000..cc0ebc3 --- /dev/null +++ b/app/src/main/res/layout/activity_add_wifi_power_zone2.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_wifi_power_zone3.xml b/app/src/main/res/layout/activity_add_wifi_power_zone3.xml new file mode 100644 index 0000000..eafa6e1 --- /dev/null +++ b/app/src/main/res/layout/activity_add_wifi_power_zone3.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_advanced_set.xml b/app/src/main/res/layout/activity_advanced_set.xml new file mode 100644 index 0000000..b989864 --- /dev/null +++ b/app/src/main/res/layout/activity_advanced_set.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_badge_detail.xml b/app/src/main/res/layout/activity_badge_detail.xml new file mode 100644 index 0000000..618e856 --- /dev/null +++ b/app/src/main/res/layout/activity_badge_detail.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_badges_list.xml b/app/src/main/res/layout/activity_badges_list.xml new file mode 100644 index 0000000..8101140 --- /dev/null +++ b/app/src/main/res/layout/activity_badges_list.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_email_success.xml b/app/src/main/res/layout/activity_change_email_success.xml new file mode 100644 index 0000000..31c1c9b --- /dev/null +++ b/app/src/main/res/layout/activity_change_email_success.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_change_name.xml b/app/src/main/res/layout/activity_change_name.xml new file mode 100644 index 0000000..b8e2dae --- /dev/null +++ b/app/src/main/res/layout/activity_change_name.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_choose_plan.xml b/app/src/main/res/layout/activity_choose_plan.xml new file mode 100644 index 0000000..c4d7866 --- /dev/null +++ b/app/src/main/res/layout/activity_choose_plan.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_create_account.xml b/app/src/main/res/layout/activity_create_account.xml new file mode 100644 index 0000000..4ff1b04 --- /dev/null +++ b/app/src/main/res/layout/activity_create_account.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_data_board.xml b/app/src/main/res/layout/activity_data_board.xml new file mode 100644 index 0000000..1dd2a86 --- /dev/null +++ b/app/src/main/res/layout/activity_data_board.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_debug.xml b/app/src/main/res/layout/activity_debug.xml new file mode 100644 index 0000000..71f1240 --- /dev/null +++ b/app/src/main/res/layout/activity_debug.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_delete_tracker1.xml b/app/src/main/res/layout/activity_delete_tracker1.xml new file mode 100644 index 0000000..80ae410 --- /dev/null +++ b/app/src/main/res/layout/activity_delete_tracker1.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_delete_tracker2.xml b/app/src/main/res/layout/activity_delete_tracker2.xml new file mode 100644 index 0000000..198b1df --- /dev/null +++ b/app/src/main/res/layout/activity_delete_tracker2.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml new file mode 100644 index 0000000..7deb9f6 --- /dev/null +++ b/app/src/main/res/layout/activity_detail.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_edit_power_zone.xml b/app/src/main/res/layout/activity_edit_power_zone.xml new file mode 100644 index 0000000..9aa6601 --- /dev/null +++ b/app/src/main/res/layout/activity_edit_power_zone.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_email_address.xml b/app/src/main/res/layout/activity_email_address.xml new file mode 100644 index 0000000..0bb6bbe --- /dev/null +++ b/app/src/main/res/layout/activity_email_address.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_family_members.xml b/app/src/main/res/layout/activity_family_members.xml new file mode 100644 index 0000000..d96a0f9 --- /dev/null +++ b/app/src/main/res/layout/activity_family_members.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml new file mode 100644 index 0000000..5d5653b --- /dev/null +++ b/app/src/main/res/layout/activity_feedback.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_fences_add.xml b/app/src/main/res/layout/activity_fences_add.xml new file mode 100644 index 0000000..f1d2f37 --- /dev/null +++ b/app/src/main/res/layout/activity_fences_add.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_measurement_units.xml b/app/src/main/res/layout/activity_first_measurement_units.xml new file mode 100644 index 0000000..4601547 --- /dev/null +++ b/app/src/main/res/layout/activity_first_measurement_units.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_permissions.xml b/app/src/main/res/layout/activity_first_permissions.xml new file mode 100644 index 0000000..fdc95c4 --- /dev/null +++ b/app/src/main/res/layout/activity_first_permissions.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_pet_profile.xml b/app/src/main/res/layout/activity_first_pet_profile.xml new file mode 100644 index 0000000..6c876bb --- /dev/null +++ b/app/src/main/res/layout/activity_first_pet_profile.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_set_pet_height.xml b/app/src/main/res/layout/activity_first_set_pet_height.xml new file mode 100644 index 0000000..9ebe555 --- /dev/null +++ b/app/src/main/res/layout/activity_first_set_pet_height.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_set_pet_type.xml b/app/src/main/res/layout/activity_first_set_pet_type.xml new file mode 100644 index 0000000..96dadaa --- /dev/null +++ b/app/src/main/res/layout/activity_first_set_pet_type.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_first_set_pet_weight.xml b/app/src/main/res/layout/activity_first_set_pet_weight.xml new file mode 100644 index 0000000..58d904b --- /dev/null +++ b/app/src/main/res/layout/activity_first_set_pet_weight.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_help_active_tracker.xml b/app/src/main/res/layout/activity_help_active_tracker.xml new file mode 100644 index 0000000..a51f075 --- /dev/null +++ b/app/src/main/res/layout/activity_help_active_tracker.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_help_create_pet_fence.xml b/app/src/main/res/layout/activity_help_create_pet_fence.xml new file mode 100644 index 0000000..26cd622 --- /dev/null +++ b/app/src/main/res/layout/activity_help_create_pet_fence.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_help_power_on_off.xml b/app/src/main/res/layout/activity_help_power_on_off.xml new file mode 100644 index 0000000..a36aa50 --- /dev/null +++ b/app/src/main/res/layout/activity_help_power_on_off.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_help_tracker_battery.xml b/app/src/main/res/layout/activity_help_tracker_battery.xml new file mode 100644 index 0000000..38421fb --- /dev/null +++ b/app/src/main/res/layout/activity_help_tracker_battery.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_help_tracker_status.xml b/app/src/main/res/layout/activity_help_tracker_status.xml new file mode 100644 index 0000000..7a80dae --- /dev/null +++ b/app/src/main/res/layout/activity_help_tracker_status.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_history_data.xml b/app/src/main/res/layout/activity_history_data.xml new file mode 100644 index 0000000..bb9f64b --- /dev/null +++ b/app/src/main/res/layout/activity_history_data.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home_map_navigation.xml b/app/src/main/res/layout/activity_home_map_navigation.xml new file mode 100644 index 0000000..6602c87 --- /dev/null +++ b/app/src/main/res/layout/activity_home_map_navigation.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home_v2.xml b/app/src/main/res/layout/activity_home_v2.xml new file mode 100644 index 0000000..2d1a256 --- /dev/null +++ b/app/src/main/res/layout/activity_home_v2.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_how_work.xml b/app/src/main/res/layout/activity_how_work.xml new file mode 100644 index 0000000..8ea6a69 --- /dev/null +++ b/app/src/main/res/layout/activity_how_work.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_invite_family.xml b/app/src/main/res/layout/activity_invite_family.xml new file mode 100644 index 0000000..b905cd4 --- /dev/null +++ b/app/src/main/res/layout/activity_invite_family.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_led_light.xml b/app/src/main/res/layout/activity_led_light.xml new file mode 100644 index 0000000..7c03a5f --- /dev/null +++ b/app/src/main/res/layout/activity_led_light.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_live_duration_set.xml b/app/src/main/res/layout/activity_live_duration_set.xml new file mode 100644 index 0000000..18d7098 --- /dev/null +++ b/app/src/main/res/layout/activity_live_duration_set.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_live_v2.xml b/app/src/main/res/layout/activity_live_v2.xml new file mode 100644 index 0000000..af9ef20 --- /dev/null +++ b/app/src/main/res/layout/activity_live_v2.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login_register_cn.xml b/app/src/main/res/layout/activity_login_register_cn.xml new file mode 100644 index 0000000..3567d59 --- /dev/null +++ b/app/src/main/res/layout/activity_login_register_cn.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_login_v2.xml b/app/src/main/res/layout/activity_login_v2.xml new file mode 100644 index 0000000..539ccac --- /dev/null +++ b/app/src/main/res/layout/activity_login_v2.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_map_live.xml b/app/src/main/res/layout/activity_map_live.xml new file mode 100644 index 0000000..01eeb24 --- /dev/null +++ b/app/src/main/res/layout/activity_map_live.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_more_activity.xml b/app/src/main/res/layout/activity_more_activity.xml new file mode 100644 index 0000000..9c9b7b4 --- /dev/null +++ b/app/src/main/res/layout/activity_more_activity.xml @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_more_sleep.xml b/app/src/main/res/layout/activity_more_sleep.xml new file mode 100644 index 0000000..ed023a1 --- /dev/null +++ b/app/src/main/res/layout/activity_more_sleep.xml @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_my_crop_image.xml b/app/src/main/res/layout/activity_my_crop_image.xml new file mode 100644 index 0000000..62d4407 --- /dev/null +++ b/app/src/main/res/layout/activity_my_crop_image.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_subscription.xml b/app/src/main/res/layout/activity_my_subscription.xml new file mode 100644 index 0000000..f9409da --- /dev/null +++ b/app/src/main/res/layout/activity_my_subscription.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_tracker_v2.xml b/app/src/main/res/layout/activity_my_tracker_v2.xml new file mode 100644 index 0000000..1b163f1 --- /dev/null +++ b/app/src/main/res/layout/activity_my_tracker_v2.xml @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_notification_v2.xml b/app/src/main/res/layout/activity_notification_v2.xml new file mode 100644 index 0000000..f5b0a46 --- /dev/null +++ b/app/src/main/res/layout/activity_notification_v2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_notifications_set.xml b/app/src/main/res/layout/activity_notifications_set.xml new file mode 100644 index 0000000..694edc1 --- /dev/null +++ b/app/src/main/res/layout/activity_notifications_set.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_payment_method.xml b/app/src/main/res/layout/activity_payment_method.xml new file mode 100644 index 0000000..318c900 --- /dev/null +++ b/app/src/main/res/layout/activity_payment_method.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_payment_result.xml b/app/src/main/res/layout/activity_payment_result.xml new file mode 100644 index 0000000..099ab8f --- /dev/null +++ b/app/src/main/res/layout/activity_payment_result.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_payment_success.xml b/app/src/main/res/layout/activity_payment_success.xml new file mode 100644 index 0000000..8f68507 --- /dev/null +++ b/app/src/main/res/layout/activity_payment_success.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_permissions_set.xml b/app/src/main/res/layout/activity_permissions_set.xml new file mode 100644 index 0000000..565b965 --- /dev/null +++ b/app/src/main/res/layout/activity_permissions_set.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pet_height.xml b/app/src/main/res/layout/activity_pet_height.xml new file mode 100644 index 0000000..0b302a8 --- /dev/null +++ b/app/src/main/res/layout/activity_pet_height.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pet_profile.xml b/app/src/main/res/layout/activity_pet_profile.xml new file mode 100644 index 0000000..21395fd --- /dev/null +++ b/app/src/main/res/layout/activity_pet_profile.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pet_weight.xml b/app/src/main/res/layout/activity_pet_weight.xml new file mode 100644 index 0000000..3705e52 --- /dev/null +++ b/app/src/main/res/layout/activity_pet_weight.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_power_off.xml b/app/src/main/res/layout/activity_power_off.xml new file mode 100644 index 0000000..a6ce37f --- /dev/null +++ b/app/src/main/res/layout/activity_power_off.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_power_saving_set.xml b/app/src/main/res/layout/activity_power_saving_set.xml new file mode 100644 index 0000000..e326974 --- /dev/null +++ b/app/src/main/res/layout/activity_power_saving_set.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_preview_fences_zone.xml b/app/src/main/res/layout/activity_preview_fences_zone.xml new file mode 100644 index 0000000..36f72d2 --- /dev/null +++ b/app/src/main/res/layout/activity_preview_fences_zone.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge_amount_cn.xml b/app/src/main/res/layout/activity_recharge_amount_cn.xml new file mode 100644 index 0000000..09e405d --- /dev/null +++ b/app/src/main/res/layout/activity_recharge_amount_cn.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge_device_detail_cn.xml b/app/src/main/res/layout/activity_recharge_device_detail_cn.xml new file mode 100644 index 0000000..abf5ad0 --- /dev/null +++ b/app/src/main/res/layout/activity_recharge_device_detail_cn.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge_history_cn.xml b/app/src/main/res/layout/activity_recharge_history_cn.xml new file mode 100644 index 0000000..4413194 --- /dev/null +++ b/app/src/main/res/layout/activity_recharge_history_cn.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recharge_order_detail_cn.xml b/app/src/main/res/layout/activity_recharge_order_detail_cn.xml new file mode 100644 index 0000000..62cde5a --- /dev/null +++ b/app/src/main/res/layout/activity_recharge_order_detail_cn.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_request_refund.xml b/app/src/main/res/layout/activity_request_refund.xml new file mode 100644 index 0000000..013a2e9 --- /dev/null +++ b/app/src/main/res/layout/activity_request_refund.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_reset_password_success.xml b/app/src/main/res/layout/activity_reset_password_success.xml new file mode 100644 index 0000000..bf48c16 --- /dev/null +++ b/app/src/main/res/layout/activity_reset_password_success.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_say_hello.xml b/app/src/main/res/layout/activity_say_hello.xml new file mode 100644 index 0000000..9bc2244 --- /dev/null +++ b/app/src/main/res/layout/activity_say_hello.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_select_payment_method.xml b/app/src/main/res/layout/activity_select_payment_method.xml new file mode 100644 index 0000000..c590c40 --- /dev/null +++ b/app/src/main/res/layout/activity_select_payment_method.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_share_pet_activity.xml b/app/src/main/res/layout/activity_share_pet_activity.xml new file mode 100644 index 0000000..c83a15a --- /dev/null +++ b/app/src/main/res/layout/activity_share_pet_activity.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_show_invite_device.xml b/app/src/main/res/layout/activity_show_invite_device.xml new file mode 100644 index 0000000..e7f26f5 --- /dev/null +++ b/app/src/main/res/layout/activity_show_invite_device.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_signup_success.xml b/app/src/main/res/layout/activity_signup_success.xml new file mode 100644 index 0000000..16d9f35 --- /dev/null +++ b/app/src/main/res/layout/activity_signup_success.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 0000000..cebb404 --- /dev/null +++ b/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_subscription_detail.xml b/app/src/main/res/layout/activity_subscription_detail.xml new file mode 100644 index 0000000..489d69f --- /dev/null +++ b/app/src/main/res/layout/activity_subscription_detail.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_subscription_history.xml b/app/src/main/res/layout/activity_subscription_history.xml new file mode 100644 index 0000000..c27842b --- /dev/null +++ b/app/src/main/res/layout/activity_subscription_history.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_subscription_plan.xml b/app/src/main/res/layout/activity_subscription_plan.xml new file mode 100644 index 0000000..6a298e2 --- /dev/null +++ b/app/src/main/res/layout/activity_subscription_plan.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_sure_subscription_plan.xml b/app/src/main/res/layout/activity_sure_subscription_plan.xml new file mode 100644 index 0000000..e525b5f --- /dev/null +++ b/app/src/main/res/layout/activity_sure_subscription_plan.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_swipe_action.xml b/app/src/main/res/layout/activity_swipe_action.xml new file mode 100644 index 0000000..ac8acdb --- /dev/null +++ b/app/src/main/res/layout/activity_swipe_action.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_tracking_duration_set.xml b/app/src/main/res/layout/activity_tracking_duration_set.xml new file mode 100644 index 0000000..632e225 --- /dev/null +++ b/app/src/main/res/layout/activity_tracking_duration_set.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_user_profile.xml b/app/src/main/res/layout/activity_user_profile.xml new file mode 100644 index 0000000..e923ab5 --- /dev/null +++ b/app/src/main/res/layout/activity_user_profile.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_virtual_fences.xml b/app/src/main/res/layout/activity_virtual_fences.xml new file mode 100644 index 0000000..9526cca --- /dev/null +++ b/app/src/main/res/layout/activity_virtual_fences.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_web_view.xml b/app/src/main/res/layout/activity_web_view.xml new file mode 100644 index 0000000..299003b --- /dev/null +++ b/app/src/main/res/layout/activity_web_view.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_calender_and_time_layout.xml b/app/src/main/res/layout/dialog_calender_and_time_layout.xml new file mode 100644 index 0000000..91a254a --- /dev/null +++ b/app/src/main/res/layout/dialog_calender_and_time_layout.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_calender_layout.xml b/app/src/main/res/layout/dialog_calender_layout.xml new file mode 100644 index 0000000..94cb7ad --- /dev/null +++ b/app/src/main/res/layout/dialog_calender_layout.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_common_layout.xml b/app/src/main/res/layout/dialog_common_layout.xml new file mode 100644 index 0000000..d4d1661 --- /dev/null +++ b/app/src/main/res/layout/dialog_common_layout.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_dfu_new.xml b/app/src/main/res/layout/dialog_dfu_new.xml new file mode 100644 index 0000000..be736d9 --- /dev/null +++ b/app/src/main/res/layout/dialog_dfu_new.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_legal_info.xml b/app/src/main/res/layout/dialog_legal_info.xml new file mode 100644 index 0000000..e24510a --- /dev/null +++ b/app/src/main/res/layout/dialog_legal_info.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_list_item_layout.xml b/app/src/main/res/layout/dialog_list_item_layout.xml new file mode 100644 index 0000000..6751402 --- /dev/null +++ b/app/src/main/res/layout/dialog_list_item_layout.xml @@ -0,0 +1,9 @@ + + diff --git a/app/src/main/res/layout/dialog_my_layout.xml b/app/src/main/res/layout/dialog_my_layout.xml new file mode 100644 index 0000000..91e86db --- /dev/null +++ b/app/src/main/res/layout/dialog_my_layout.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_package_upgrade.xml b/app/src/main/res/layout/dialog_package_upgrade.xml new file mode 100644 index 0000000..6a995c8 --- /dev/null +++ b/app/src/main/res/layout/dialog_package_upgrade.xml @@ -0,0 +1,45 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_select_map_layout.xml b/app/src/main/res/layout/dialog_select_map_layout.xml new file mode 100644 index 0000000..a378ed9 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_map_layout.xml @@ -0,0 +1,37 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_map_type_layout.xml b/app/src/main/res/layout/dialog_select_map_type_layout.xml new file mode 100644 index 0000000..3f1f76b --- /dev/null +++ b/app/src/main/res/layout/dialog_select_map_type_layout.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_pet_label_layout.xml b/app/src/main/res/layout/dialog_select_pet_label_layout.xml new file mode 100644 index 0000000..e8c2b25 --- /dev/null +++ b/app/src/main/res/layout/dialog_select_pet_label_layout.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_set_pet_weight_layout.xml b/app/src/main/res/layout/dialog_set_pet_weight_layout.xml new file mode 100644 index 0000000..da95d56 --- /dev/null +++ b/app/src/main/res/layout/dialog_set_pet_weight_layout.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_tracker_dfu_list_layout.xml b/app/src/main/res/layout/dialog_tracker_dfu_list_layout.xml new file mode 100644 index 0000000..547df61 --- /dev/null +++ b/app/src/main/res/layout/dialog_tracker_dfu_list_layout.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_year_and_month_layout.xml b/app/src/main/res/layout/dialog_year_and_month_layout.xml new file mode 100644 index 0000000..89961c0 --- /dev/null +++ b/app/src/main/res/layout/dialog_year_and_month_layout.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_account_v2.xml b/app/src/main/res/layout/fragment_account_v2.xml new file mode 100644 index 0000000..a4a3bfd --- /dev/null +++ b/app/src/main/res/layout/fragment_account_v2.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_activity_v2.xml b/app/src/main/res/layout/fragment_activity_v2.xml new file mode 100644 index 0000000..9e454aa --- /dev/null +++ b/app/src/main/res/layout/fragment_activity_v2.xml @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_base_baidu_map.xml b/app/src/main/res/layout/fragment_base_baidu_map.xml new file mode 100644 index 0000000..6f566cb --- /dev/null +++ b/app/src/main/res/layout/fragment_base_baidu_map.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_base_email_valid.xml b/app/src/main/res/layout/fragment_base_email_valid.xml new file mode 100644 index 0000000..7f0e0b6 --- /dev/null +++ b/app/src/main/res/layout/fragment_base_email_valid.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bind_phone_cn.xml b/app/src/main/res/layout/fragment_bind_phone_cn.xml new file mode 100644 index 0000000..c9637f5 --- /dev/null +++ b/app/src/main/res/layout/fragment_bind_phone_cn.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_create_account_v2_one.xml b/app/src/main/res/layout/fragment_create_account_v2_one.xml new file mode 100644 index 0000000..8223fa2 --- /dev/null +++ b/app/src/main/res/layout/fragment_create_account_v2_one.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_create_account_v2_three.xml b/app/src/main/res/layout/fragment_create_account_v2_three.xml new file mode 100644 index 0000000..1e5851e --- /dev/null +++ b/app/src/main/res/layout/fragment_create_account_v2_three.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_credit_card_payment.xml b/app/src/main/res/layout/fragment_credit_card_payment.xml new file mode 100644 index 0000000..3c94c52 --- /dev/null +++ b/app/src/main/res/layout/fragment_credit_card_payment.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forget_password_cn_finish.xml b/app/src/main/res/layout/fragment_forget_password_cn_finish.xml new file mode 100644 index 0000000..89a202e --- /dev/null +++ b/app/src/main/res/layout/fragment_forget_password_cn_finish.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forget_password_cn_start.xml b/app/src/main/res/layout/fragment_forget_password_cn_start.xml new file mode 100644 index 0000000..a8d7926 --- /dev/null +++ b/app/src/main/res/layout/fragment_forget_password_cn_start.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forgot_password_v2_one.xml b/app/src/main/res/layout/fragment_forgot_password_v2_one.xml new file mode 100644 index 0000000..4be491d --- /dev/null +++ b/app/src/main/res/layout/fragment_forgot_password_v2_one.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_forgot_password_v2_there.xml b/app/src/main/res/layout/fragment_forgot_password_v2_there.xml new file mode 100644 index 0000000..037964a --- /dev/null +++ b/app/src/main/res/layout/fragment_forgot_password_v2_there.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_google_map.xml b/app/src/main/res/layout/fragment_google_map.xml new file mode 100644 index 0000000..c7cf79c --- /dev/null +++ b/app/src/main/res/layout/fragment_google_map.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000..4c37b68 --- /dev/null +++ b/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_pet.xml b/app/src/main/res/layout/fragment_home_pet.xml new file mode 100644 index 0000000..deed188 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_pet.xml @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_track.xml b/app/src/main/res/layout/fragment_home_track.xml new file mode 100644 index 0000000..ac3b0c6 --- /dev/null +++ b/app/src/main/res/layout/fragment_home_track.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login_cn_account.xml b/app/src/main/res/layout/fragment_login_cn_account.xml new file mode 100644 index 0000000..e1eab11 --- /dev/null +++ b/app/src/main/res/layout/fragment_login_cn_account.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login_cn_code.xml b/app/src/main/res/layout/fragment_login_cn_code.xml new file mode 100644 index 0000000..3b6f386 --- /dev/null +++ b/app/src/main/res/layout/fragment_login_cn_code.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_login_cn_first.xml b/app/src/main/res/layout/fragment_login_cn_first.xml new file mode 100644 index 0000000..e6e26d7 --- /dev/null +++ b/app/src/main/res/layout/fragment_login_cn_first.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_map_v2.xml b/app/src/main/res/layout/fragment_map_v2.xml new file mode 100644 index 0000000..0029956 --- /dev/null +++ b/app/src/main/res/layout/fragment_map_v2.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml new file mode 100644 index 0000000..46735b2 --- /dev/null +++ b/app/src/main/res/layout/fragment_mine.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_payment_fail.xml b/app/src/main/res/layout/fragment_payment_fail.xml new file mode 100644 index 0000000..1802262 --- /dev/null +++ b/app/src/main/res/layout/fragment_payment_fail.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_payment_success.xml b/app/src/main/res/layout/fragment_payment_success.xml new file mode 100644 index 0000000..88ec8ec --- /dev/null +++ b/app/src/main/res/layout/fragment_payment_success.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_paypal_payment.xml b/app/src/main/res/layout/fragment_paypal_payment.xml new file mode 100644 index 0000000..9014bca --- /dev/null +++ b/app/src/main/res/layout/fragment_paypal_payment.xml @@ -0,0 +1,35 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_pet_v2.xml b/app/src/main/res/layout/fragment_pet_v2.xml new file mode 100644 index 0000000..3c87a2f --- /dev/null +++ b/app/src/main/res/layout/fragment_pet_v2.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_record.xml b/app/src/main/res/layout/fragment_record.xml new file mode 100644 index 0000000..08b4693 --- /dev/null +++ b/app/src/main/res/layout/fragment_record.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_register_cn_finish.xml b/app/src/main/res/layout/fragment_register_cn_finish.xml new file mode 100644 index 0000000..3579b6e --- /dev/null +++ b/app/src/main/res/layout/fragment_register_cn_finish.xml @@ -0,0 +1,32 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_register_cn_start.xml b/app/src/main/res/layout/fragment_register_cn_start.xml new file mode 100644 index 0000000..3debaa1 --- /dev/null +++ b/app/src/main/res/layout/fragment_register_cn_start.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_route_v2.xml b/app/src/main/res/layout/fragment_route_v2.xml new file mode 100644 index 0000000..bade677 --- /dev/null +++ b/app/src/main/res/layout/fragment_route_v2.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/horizontal_calender_view.xml b/app/src/main/res/layout/horizontal_calender_view.xml new file mode 100644 index 0000000..c8df3f0 --- /dev/null +++ b/app/src/main/res/layout/horizontal_calender_view.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_associated_pet.xml b/app/src/main/res/layout/item_associated_pet.xml new file mode 100644 index 0000000..c9acc4a --- /dev/null +++ b/app/src/main/res/layout/item_associated_pet.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_baidu_map_poi_result.xml b/app/src/main/res/layout/item_baidu_map_poi_result.xml new file mode 100644 index 0000000..bf4b023 --- /dev/null +++ b/app/src/main/res/layout/item_baidu_map_poi_result.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_bottom_sheet_add_layout.xml b/app/src/main/res/layout/item_bottom_sheet_add_layout.xml new file mode 100644 index 0000000..0220a31 --- /dev/null +++ b/app/src/main/res/layout/item_bottom_sheet_add_layout.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_choose_plan_layout.xml b/app/src/main/res/layout/item_choose_plan_layout.xml new file mode 100644 index 0000000..3dd9185 --- /dev/null +++ b/app/src/main/res/layout/item_choose_plan_layout.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_credit_card_layout.xml b/app/src/main/res/layout/item_credit_card_layout.xml new file mode 100644 index 0000000..0263cec --- /dev/null +++ b/app/src/main/res/layout/item_credit_card_layout.xml @@ -0,0 +1,41 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_duration_set_layout.xml b/app/src/main/res/layout/item_duration_set_layout.xml new file mode 100644 index 0000000..a9550ba --- /dev/null +++ b/app/src/main/res/layout/item_duration_set_layout.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_family_member_layout.xml b/app/src/main/res/layout/item_family_member_layout.xml new file mode 100644 index 0000000..3fa73ad --- /dev/null +++ b/app/src/main/res/layout/item_family_member_layout.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_feedback_image.xml b/app/src/main/res/layout/item_feedback_image.xml new file mode 100644 index 0000000..2c8b821 --- /dev/null +++ b/app/src/main/res/layout/item_feedback_image.xml @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_map_device_msg.xml b/app/src/main/res/layout/item_home_map_device_msg.xml new file mode 100644 index 0000000..a7a00fd --- /dev/null +++ b/app/src/main/res/layout/item_home_map_device_msg.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/layout/item_home_map_device_state.xml b/app/src/main/res/layout/item_home_map_device_state.xml new file mode 100644 index 0000000..6639ecb --- /dev/null +++ b/app/src/main/res/layout/item_home_map_device_state.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_pet_device_state.xml b/app/src/main/res/layout/item_home_pet_device_state.xml new file mode 100644 index 0000000..5e6f751 --- /dev/null +++ b/app/src/main/res/layout/item_home_pet_device_state.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_pet_family.xml b/app/src/main/res/layout/item_home_pet_family.xml new file mode 100644 index 0000000..1aac7f3 --- /dev/null +++ b/app/src/main/res/layout/item_home_pet_family.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_route_notification.xml b/app/src/main/res/layout/item_home_route_notification.xml new file mode 100644 index 0000000..c64260c --- /dev/null +++ b/app/src/main/res/layout/item_home_route_notification.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_horizontal_calender_day.xml b/app/src/main/res/layout/item_horizontal_calender_day.xml new file mode 100644 index 0000000..4b493f1 --- /dev/null +++ b/app/src/main/res/layout/item_horizontal_calender_day.xml @@ -0,0 +1,41 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_invite_family_avatar_layout.xml b/app/src/main/res/layout/item_invite_family_avatar_layout.xml new file mode 100644 index 0000000..fc0f883 --- /dev/null +++ b/app/src/main/res/layout/item_invite_family_avatar_layout.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/layout/item_invite_family_relation_layout.xml b/app/src/main/res/layout/item_invite_family_relation_layout.xml new file mode 100644 index 0000000..2b08d64 --- /dev/null +++ b/app/src/main/res/layout/item_invite_family_relation_layout.xml @@ -0,0 +1,14 @@ + + diff --git a/app/src/main/res/layout/item_led_color_select.xml b/app/src/main/res/layout/item_led_color_select.xml new file mode 100644 index 0000000..cbaaa5b --- /dev/null +++ b/app/src/main/res/layout/item_led_color_select.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/layout/item_map_type_layout.xml b/app/src/main/res/layout/item_map_type_layout.xml new file mode 100644 index 0000000..b856316 --- /dev/null +++ b/app/src/main/res/layout/item_map_type_layout.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/app/src/main/res/layout/item_my_pet_dialog.xml b/app/src/main/res/layout/item_my_pet_dialog.xml new file mode 100644 index 0000000..f2e8ce0 --- /dev/null +++ b/app/src/main/res/layout/item_my_pet_dialog.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_subscription_layout.xml b/app/src/main/res/layout/item_my_subscription_layout.xml new file mode 100644 index 0000000..90cc764 --- /dev/null +++ b/app/src/main/res/layout/item_my_subscription_layout.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_my_tracker_v2_layout.xml b/app/src/main/res/layout/item_my_tracker_v2_layout.xml new file mode 100644 index 0000000..2fb6022 --- /dev/null +++ b/app/src/main/res/layout/item_my_tracker_v2_layout.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_notifications_set_layout.xml b/app/src/main/res/layout/item_notifications_set_layout.xml new file mode 100644 index 0000000..af927fa --- /dev/null +++ b/app/src/main/res/layout/item_notifications_set_layout.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_payment_method_layout.xml b/app/src/main/res/layout/item_payment_method_layout.xml new file mode 100644 index 0000000..f45761b --- /dev/null +++ b/app/src/main/res/layout/item_payment_method_layout.xml @@ -0,0 +1,29 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_permission_state_layout.xml b/app/src/main/res/layout/item_permission_state_layout.xml new file mode 100644 index 0000000..6a450f7 --- /dev/null +++ b/app/src/main/res/layout/item_permission_state_layout.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_pet_label_layout_v2.xml b/app/src/main/res/layout/item_pet_label_layout_v2.xml new file mode 100644 index 0000000..f52378c --- /dev/null +++ b/app/src/main/res/layout/item_pet_label_layout_v2.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/app/src/main/res/layout/item_pets_badges_layout.xml b/app/src/main/res/layout/item_pets_badges_layout.xml new file mode 100644 index 0000000..0311541 --- /dev/null +++ b/app/src/main/res/layout/item_pets_badges_layout.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_pets_parent_badges_layout.xml b/app/src/main/res/layout/item_pets_parent_badges_layout.xml new file mode 100644 index 0000000..1d8ad74 --- /dev/null +++ b/app/src/main/res/layout/item_pets_parent_badges_layout.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_qmui_common_item_view.xml b/app/src/main/res/layout/item_qmui_common_item_view.xml new file mode 100644 index 0000000..ad7775a --- /dev/null +++ b/app/src/main/res/layout/item_qmui_common_item_view.xml @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recharge_amount.xml b/app/src/main/res/layout/item_recharge_amount.xml new file mode 100644 index 0000000..ddacad5 --- /dev/null +++ b/app/src/main/res/layout/item_recharge_amount.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recharge_amount_cn.xml b/app/src/main/res/layout/item_recharge_amount_cn.xml new file mode 100644 index 0000000..b7d21e7 --- /dev/null +++ b/app/src/main/res/layout/item_recharge_amount_cn.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recharge_device.xml b/app/src/main/res/layout/item_recharge_device.xml new file mode 100644 index 0000000..9341e5c --- /dev/null +++ b/app/src/main/res/layout/item_recharge_device.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recharge_history_cn.xml b/app/src/main/res/layout/item_recharge_history_cn.xml new file mode 100644 index 0000000..73b1c07 --- /dev/null +++ b/app/src/main/res/layout/item_recharge_history_cn.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_select_map.xml b/app/src/main/res/layout/item_select_map.xml new file mode 100644 index 0000000..44c7960 --- /dev/null +++ b/app/src/main/res/layout/item_select_map.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_select_type_card_shade_layout.xml b/app/src/main/res/layout/item_select_type_card_shade_layout.xml new file mode 100644 index 0000000..1365b15 --- /dev/null +++ b/app/src/main/res/layout/item_select_type_card_shade_layout.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_shadow_image_view.xml b/app/src/main/res/layout/item_shadow_image_view.xml new file mode 100644 index 0000000..03481ac --- /dev/null +++ b/app/src/main/res/layout/item_shadow_image_view.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/app/src/main/res/layout/item_subscribe_summary_layout.xml b/app/src/main/res/layout/item_subscribe_summary_layout.xml new file mode 100644 index 0000000..22ab74f --- /dev/null +++ b/app/src/main/res/layout/item_subscribe_summary_layout.xml @@ -0,0 +1,27 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_subscription_history_layout.xml b/app/src/main/res/layout/item_subscription_history_layout.xml new file mode 100644 index 0000000..1bd390b --- /dev/null +++ b/app/src/main/res/layout/item_subscription_history_layout.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_subscription_plan_detail_layout.xml b/app/src/main/res/layout/item_subscription_plan_detail_layout.xml new file mode 100644 index 0000000..f4d9f4c --- /dev/null +++ b/app/src/main/res/layout/item_subscription_plan_detail_layout.xml @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/app/src/main/res/layout/item_subscription_plan_layout.xml b/app/src/main/res/layout/item_subscription_plan_layout.xml new file mode 100644 index 0000000..29d8de5 --- /dev/null +++ b/app/src/main/res/layout/item_subscription_plan_layout.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_text_img_type.xml b/app/src/main/res/layout/item_text_img_type.xml new file mode 100644 index 0000000..4b0f339 --- /dev/null +++ b/app/src/main/res/layout/item_text_img_type.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_text_type.xml b/app/src/main/res/layout/item_text_type.xml new file mode 100644 index 0000000..ad1d6f8 --- /dev/null +++ b/app/src/main/res/layout/item_text_type.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_text_view.xml b/app/src/main/res/layout/item_text_view.xml new file mode 100644 index 0000000..9abade7 --- /dev/null +++ b/app/src/main/res/layout/item_text_view.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/layout/item_title_text_type.xml b/app/src/main/res/layout/item_title_text_type.xml new file mode 100644 index 0000000..c7d7148 --- /dev/null +++ b/app/src/main/res/layout/item_title_text_type.xml @@ -0,0 +1,6 @@ + + diff --git a/app/src/main/res/layout/item_tracker_dfu_state.xml b/app/src/main/res/layout/item_tracker_dfu_state.xml new file mode 100644 index 0000000..feec604 --- /dev/null +++ b/app/src/main/res/layout/item_tracker_dfu_state.xml @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_virtual_fences_layout.xml b/app/src/main/res/layout/item_virtual_fences_layout.xml new file mode 100644 index 0000000..d5a7e2d --- /dev/null +++ b/app/src/main/res/layout/item_virtual_fences_layout.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_wifi_info_layout.xml b/app/src/main/res/layout/item_wifi_info_layout.xml new file mode 100644 index 0000000..b0b8b11 --- /dev/null +++ b/app/src/main/res/layout/item_wifi_info_layout.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_wifi_zone_layout.xml b/app/src/main/res/layout/item_wifi_zone_layout.xml new file mode 100644 index 0000000..6ca589b --- /dev/null +++ b/app/src/main/res/layout/item_wifi_zone_layout.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_assign_options_list.xml b/app/src/main/res/layout/layout_assign_options_list.xml new file mode 100644 index 0000000..40b31e7 --- /dev/null +++ b/app/src/main/res/layout/layout_assign_options_list.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_associated_custom_qmui_group_right.xml b/app/src/main/res/layout/layout_associated_custom_qmui_group_right.xml new file mode 100644 index 0000000..3ee6caf --- /dev/null +++ b/app/src/main/res/layout/layout_associated_custom_qmui_group_right.xml @@ -0,0 +1,34 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_behind_of_credit_card.xml b/app/src/main/res/layout/layout_behind_of_credit_card.xml new file mode 100644 index 0000000..a378231 --- /dev/null +++ b/app/src/main/res/layout/layout_behind_of_credit_card.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_ble_connect_state.xml b/app/src/main/res/layout/layout_ble_connect_state.xml new file mode 100644 index 0000000..282c92b --- /dev/null +++ b/app/src/main/res/layout/layout_ble_connect_state.xml @@ -0,0 +1,15 @@ + + diff --git a/app/src/main/res/layout/layout_bluetooth_find_device.xml b/app/src/main/res/layout/layout_bluetooth_find_device.xml new file mode 100644 index 0000000..c1f1b6e --- /dev/null +++ b/app/src/main/res/layout/layout_bluetooth_find_device.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_create_account_policy_terms.xml b/app/src/main/res/layout/layout_create_account_policy_terms.xml new file mode 100644 index 0000000..90962cf --- /dev/null +++ b/app/src/main/res/layout/layout_create_account_policy_terms.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_credit_card_no_data.xml b/app/src/main/res/layout/layout_credit_card_no_data.xml new file mode 100644 index 0000000..3343d5b --- /dev/null +++ b/app/src/main/res/layout/layout_credit_card_no_data.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_data_board_item.xml b/app/src/main/res/layout/layout_data_board_item.xml new file mode 100644 index 0000000..421c980 --- /dev/null +++ b/app/src/main/res/layout/layout_data_board_item.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_device_light_image_button.xml b/app/src/main/res/layout/layout_device_light_image_button.xml new file mode 100644 index 0000000..c043658 --- /dev/null +++ b/app/src/main/res/layout/layout_device_light_image_button.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_device_recharge_describe.xml b/app/src/main/res/layout/layout_device_recharge_describe.xml new file mode 100644 index 0000000..953a12f --- /dev/null +++ b/app/src/main/res/layout/layout_device_recharge_describe.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_device_recharge_describe_cn.xml b/app/src/main/res/layout/layout_device_recharge_describe_cn.xml new file mode 100644 index 0000000..feda353 --- /dev/null +++ b/app/src/main/res/layout/layout_device_recharge_describe_cn.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_dfu_custom_qmui_group_right.xml b/app/src/main/res/layout/layout_dfu_custom_qmui_group_right.xml new file mode 100644 index 0000000..1ab0ae2 --- /dev/null +++ b/app/src/main/res/layout/layout_dfu_custom_qmui_group_right.xml @@ -0,0 +1,31 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_empty_view.xml b/app/src/main/res/layout/layout_empty_view.xml new file mode 100644 index 0000000..bf0f523 --- /dev/null +++ b/app/src/main/res/layout/layout_empty_view.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_family_empty_view.xml b/app/src/main/res/layout/layout_family_empty_view.xml new file mode 100644 index 0000000..f8880d0 --- /dev/null +++ b/app/src/main/res/layout/layout_family_empty_view.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_front_of_credit_card.xml b/app/src/main/res/layout/layout_front_of_credit_card.xml new file mode 100644 index 0000000..69219f2 --- /dev/null +++ b/app/src/main/res/layout/layout_front_of_credit_card.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_get_phone_code.xml b/app/src/main/res/layout/layout_get_phone_code.xml new file mode 100644 index 0000000..8cc8424 --- /dev/null +++ b/app/src/main/res/layout/layout_get_phone_code.xml @@ -0,0 +1,43 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_head_image_view.xml b/app/src/main/res/layout/layout_head_image_view.xml new file mode 100644 index 0000000..4c5461e --- /dev/null +++ b/app/src/main/res/layout/layout_head_image_view.xml @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_help_image.xml b/app/src/main/res/layout/layout_help_image.xml new file mode 100644 index 0000000..c60ca16 --- /dev/null +++ b/app/src/main/res/layout/layout_help_image.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/layout/layout_help_title1.xml b/app/src/main/res/layout/layout_help_title1.xml new file mode 100644 index 0000000..ee20d85 --- /dev/null +++ b/app/src/main/res/layout/layout_help_title1.xml @@ -0,0 +1,9 @@ + + diff --git a/app/src/main/res/layout/layout_help_title2.xml b/app/src/main/res/layout/layout_help_title2.xml new file mode 100644 index 0000000..543dbe8 --- /dev/null +++ b/app/src/main/res/layout/layout_help_title2.xml @@ -0,0 +1,9 @@ + + diff --git a/app/src/main/res/layout/layout_home_detail_top.xml b/app/src/main/res/layout/layout_home_detail_top.xml new file mode 100644 index 0000000..caa224e --- /dev/null +++ b/app/src/main/res/layout/layout_home_detail_top.xml @@ -0,0 +1,30 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_input_edit_view.xml b/app/src/main/res/layout/layout_input_edit_view.xml new file mode 100644 index 0000000..8de7d7a --- /dev/null +++ b/app/src/main/res/layout/layout_input_edit_view.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_input_edit_view2.xml b/app/src/main/res/layout/layout_input_edit_view2.xml new file mode 100644 index 0000000..6693bb1 --- /dev/null +++ b/app/src/main/res/layout/layout_input_edit_view2.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_list_item.xml b/app/src/main/res/layout/layout_list_item.xml new file mode 100644 index 0000000..befddf1 --- /dev/null +++ b/app/src/main/res/layout/layout_list_item.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_live_issue.xml b/app/src/main/res/layout/layout_live_issue.xml new file mode 100644 index 0000000..d517efd --- /dev/null +++ b/app/src/main/res/layout/layout_live_issue.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_live_v2_data_info.xml b/app/src/main/res/layout/layout_live_v2_data_info.xml new file mode 100644 index 0000000..26364ea --- /dev/null +++ b/app/src/main/res/layout/layout_live_v2_data_info.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_login_cn_policy_terms.xml b/app/src/main/res/layout/layout_login_cn_policy_terms.xml new file mode 100644 index 0000000..8aee98c --- /dev/null +++ b/app/src/main/res/layout/layout_login_cn_policy_terms.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_only_pull_refresh.xml b/app/src/main/res/layout/layout_only_pull_refresh.xml new file mode 100644 index 0000000..f05b3ac --- /dev/null +++ b/app/src/main/res/layout/layout_only_pull_refresh.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_pet_gps_battery.xml b/app/src/main/res/layout/layout_pet_gps_battery.xml new file mode 100644 index 0000000..a11ede1 --- /dev/null +++ b/app/src/main/res/layout/layout_pet_gps_battery.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_pull_refresh_and_load_more.xml b/app/src/main/res/layout/layout_pull_refresh_and_load_more.xml new file mode 100644 index 0000000..8454103 --- /dev/null +++ b/app/src/main/res/layout/layout_pull_refresh_and_load_more.xml @@ -0,0 +1,33 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sport_data.xml b/app/src/main/res/layout/layout_sport_data.xml new file mode 100644 index 0000000..62c6485 --- /dev/null +++ b/app/src/main/res/layout/layout_sport_data.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sport_time.xml b/app/src/main/res/layout/layout_sport_time.xml new file mode 100644 index 0000000..1d5d98d --- /dev/null +++ b/app/src/main/res/layout/layout_sport_time.xml @@ -0,0 +1,33 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_subscribe_count_down.xml b/app/src/main/res/layout/layout_subscribe_count_down.xml new file mode 100644 index 0000000..041607a --- /dev/null +++ b/app/src/main/res/layout/layout_subscribe_count_down.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sure_subscribe_plan_addons_layout.xml b/app/src/main/res/layout/layout_sure_subscribe_plan_addons_layout.xml new file mode 100644 index 0000000..3b17b74 --- /dev/null +++ b/app/src/main/res/layout/layout_sure_subscribe_plan_addons_layout.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml b/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml new file mode 100644 index 0000000..1924a7e --- /dev/null +++ b/app/src/main/res/layout/layout_sure_subscribe_plan_detail_layout.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_sure_subscribe_plan_summary_layout.xml b/app/src/main/res/layout/layout_sure_subscribe_plan_summary_layout.xml new file mode 100644 index 0000000..056dab6 --- /dev/null +++ b/app/src/main/res/layout/layout_sure_subscribe_plan_summary_layout.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_top_bar.xml b/app/src/main/res/layout/layout_top_bar.xml new file mode 100644 index 0000000..3388552 --- /dev/null +++ b/app/src/main/res/layout/layout_top_bar.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_top_pet_data_big.xml b/app/src/main/res/layout/layout_top_pet_data_big.xml new file mode 100644 index 0000000..8ec3a2b --- /dev/null +++ b/app/src/main/res/layout/layout_top_pet_data_big.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_top_pet_data_small.xml b/app/src/main/res/layout/layout_top_pet_data_small.xml new file mode 100644 index 0000000..1e42215 --- /dev/null +++ b/app/src/main/res/layout/layout_top_pet_data_small.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_upload_head_edit.xml b/app/src/main/res/layout/layout_upload_head_edit.xml new file mode 100644 index 0000000..cfd215c --- /dev/null +++ b/app/src/main/res/layout/layout_upload_head_edit.xml @@ -0,0 +1,26 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_virtual_fences_empty_view.xml b/app/src/main/res/layout/layout_virtual_fences_empty_view.xml new file mode 100644 index 0000000..34a4c6d --- /dev/null +++ b/app/src/main/res/layout/layout_virtual_fences_empty_view.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_day.xml b/app/src/main/res/layout/list_item_day.xml new file mode 100644 index 0000000..efc5dc7 --- /dev/null +++ b/app/src/main/res/layout/list_item_day.xml @@ -0,0 +1,36 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/mapbox_search_sdk_result_missing_feedback_layout.xml b/app/src/main/res/layout/mapbox_search_sdk_result_missing_feedback_layout.xml new file mode 100644 index 0000000..f24f896 --- /dev/null +++ b/app/src/main/res/layout/mapbox_search_sdk_result_missing_feedback_layout.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/marker_info_contents.xml b/app/src/main/res/layout/marker_info_contents.xml new file mode 100644 index 0000000..4599f58 --- /dev/null +++ b/app/src/main/res/layout/marker_info_contents.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/pop_subscription_item.xml b/app/src/main/res/layout/pop_subscription_item.xml new file mode 100644 index 0000000..2d72299 --- /dev/null +++ b/app/src/main/res/layout/pop_subscription_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/qmui_common_list_item.xml b/app/src/main/res/layout/qmui_common_list_item.xml new file mode 100644 index 0000000..2f08922 --- /dev/null +++ b/app/src/main/res/layout/qmui_common_list_item.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/sheet_dialog_auto_recharge.xml b/app/src/main/res/layout/sheet_dialog_auto_recharge.xml new file mode 100644 index 0000000..d2320ff --- /dev/null +++ b/app/src/main/res/layout/sheet_dialog_auto_recharge.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/sheet_dialog_select_date.xml b/app/src/main/res/layout/sheet_dialog_select_date.xml new file mode 100644 index 0000000..d779d8f --- /dev/null +++ b/app/src/main/res/layout/sheet_dialog_select_date.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/toast_my_layout.xml b/app/src/main/res/layout/toast_my_layout.xml new file mode 100644 index 0000000..66c1cee --- /dev/null +++ b/app/src/main/res/layout/toast_my_layout.xml @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_credit_card_layout.xml b/app/src/main/res/layout/view_credit_card_layout.xml new file mode 100644 index 0000000..5c07661 --- /dev/null +++ b/app/src/main/res/layout/view_credit_card_layout.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_home_bottom_nav_v2.xml b/app/src/main/res/menu/menu_home_bottom_nav_v2.xml new file mode 100644 index 0000000..69fa637 --- /dev/null +++ b/app/src/main/res/menu/menu_home_bottom_nav_v2.xml @@ -0,0 +1,27 @@ + +

    + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a571e60098c92c2baca8a5df62f2929cbff01b52 GIT binary patch literal 3593 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 P00000NkvXXu0mjfP=x?Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..61da551c5594a1f9d26193983d2cd69189014603 GIT binary patch literal 5339 zcmV<16eR13P)Id|UZ0P}EI-1@)I=X~DGdw1?T_xsK{_uTvL8wG`@xdHSL zi(gOK!kzzrvteWHAo2y%6u%c~FYnJ<{N`T=3@w2g$1Fm|W?3HbvT3QGvT;S=yZYsV z;Ux5#j?uZ!)cIU&lDjT_%=}{Tn4nc%?;kSe8vq_&%eGAXoY=)gfJHN3HRxZ>B(Z_MschsoM6AUCjPu&A03`pU`P@H& z-Hldo)2LhkOv(g+79zsWLK6F$uY^-8!$ow=uuO2jh2SxRvH;PPs;xr%>aSRNI!<*k zq54?efxFGi!}O%x@0qhGX;;FAnHp6DCoZk~0VY&zmNZ7(K!PJ_APP1drc`bP>0_;h z&Qm$bcWJm(}i`WLgp2 zB!Saf;inDgfjrc$$+TEt@mPcR1IsBF%ve$XBbby0fpkyuOahYhptv_F4TPl^cFuY% z?j|wKCAHsATwcEiKD!!=-Rcj*rL{kREWvXSay1%O)$IkoG9;U>9D$AX2iq+}=c!zK zW#~F|y=6S-m(=bSuBh7sp;w||;ji02=~j1>n56y%KZ-d`CU}*Vr4Kbx#$l%nQktf zay7|dPxqqVP#g?4KFBTpC4g94a7d(I?Axdoz50FWHg^b+VQIjj*168V!-BZvwln~A zbKH-RtH}*WGN*#QmN8LoJ=px$01}Vc?i>8J3A9hHnIyNX`EfxD=_YXVIKs{VT3Ndn zW>tOBQlZBH$fP_7=2U+P&b2>w91zzwom{tMxdOJt%p6O<(sru*9vm-yM{=LrGg*A; zdzO^ZUi!GSIH4T8kpm@-mto`OgS_RuFCT{W^#^#*lhAo8$9JBR$l9jsaNtH3yDncj z9=-2VI~SII2{y5Q#*d6e5)(5m5qxJ>5ez6o)AC@Dmht5wuo5#@bKJK+ClNCgSImHK z-n$L4f1hQ)kyUO%%{MT;DuTBj5;{-iWSt||N^Q6Z*Y7p3>zTDvk2$AzYh73y(Ykaq z-S$a`7~Y)6@=WksXsXwxd#=vLpuN{KnDUhFcejffqj+47gj>yxu;Skx*L=&ijF8^lE3`V9ohnj~S&~kFu#to{@S-dohp8hv1H|3H&ftNS7f~Utf0s z-0Ba3@0BRndhI0axt07RCPdAk(OH`c?f>Mvkw)i#6?2gwcRS#Z7G zd>2F_5wA3$3sv9!1Cnl?gV3unFu8II%&++xD(_x{jN2uw{;mRg;AZ(A*EBq*^_OPS zqW3b$^)#DVy#pT1?REno`cCElZvG#G)QHy99*{=~0lSF3y@HHeTsgFs+5^r|WbX5XGTV4F1VJhg!y=hf7Reuqp}5 zpjo-u)jNf=s&|4cp{$jH>RjCOm6?Yz;^2*JxF>3UtZ*dKh{2k!N7v=kX)dSt9Dcop zb81lcyzm@k@zO&sTre7HI`lsiOGC;R*6af7$}J)ahO)%EGMpu4HrV~jI&WLG9e&21 zsJmTC9+#u*QYRowFVdIvCjDi%>vNHH^;Vcw_<5!BNaa2c12vZv4G*(@+qhJ4jaHo2}dFnxWlf-cFM)5Co`@Hf~jXV|1r?XR4QTQ0IB`3a47oVt z|6g6V5B_<=meX43`m1qB(K;T<3&^(kvxbr0HY3{r`e4_B5m;#>1JsFb9^)44eq||r zPuL7M8yn#EKX0t_p#Y8CWhr{I@fJ*t_J%S09bnu6C)j^6u}gryx)1{z z$5(=Sv@^^~4S~O!WMB72Qv<9l`<`YFI~IeALT?Y=U_MF;khm8cvUXB`qZ0oP2Wc83 z#osChA)h-mVaA)Z1=J9Z_Mv4EQKU`0Hs=d~uWLHHTj8F9fi!(vsQuh;Y9yGaXi_p3%9HylQ<{^u|E!Jpr zY4t0U3I+e|NG9!Y>09{qPVF-dsPK9j%*YIZDH(y_R=OYc-^rUv&#w9c?Be_n6N?s8 z9^Am}C9TAD-W?gNlC}N*&tK0ppev0xU{3z$pqt_X^K-X=L7_MAVAb%vKN#(G4ki|| z2CFZAwC7VR2B_UZ-$Otf>JRYdBF~DDeyfUhfnJI$1Eib25%kY`Kj__9fTqtCfnZSN z3+h2LXA+B+vx;J0>)HR4aYLq;ZoMM!gxQvBC!T3I5(z4a1ie%O6wUzYWD+DFsT?SP zO_=Fqx?LS;{=o=h(dLy0j@WC~g~8Fxg5;QT4XloWxSBkOtLCIeEb%q@kX~C136}~W z{!;!!sV!(Bsr5yWTz3}Y>+pMBAtcndmE_Askap!)NVt3&60XRQ-_JnO?`I+V+IdLC z&xu#1<7WJTkCaZW%6ugjd1<_`8UKkBlY z0Le3HPfsN^POO44|8)?{0Y@fde{uqwC=bv&v>e7pE@q z8(`eg?mj^_Z1R%;MZ&a)J+NoLmJOajThV#;*a*1Wppyfh8O(*koU0dg@3+iTmx-3%pq!1D#A~P}?85fI(%ICB387Z+3225a;)w{qpIRI>qdBW1z zFqn4S2W*aeflag*Oo{OpORNt}IpG6SPx^vWVi?R%2m#ypO<Q@c_!eeohr+BJl-$n%^@rJc zVJrtCu`dV*&tLa~{pqb>e+K0&?Y9Z-i?)H~Pa86@&HYs@Enk**Wmz8;Un@HUbREg- z1@g`)8lLw9tyAk@>Tz$-j&g3}R?-3alM`NG7VFx^t)v68d7=kcC;PQ=D@iaWF-&oT zIoY3qPO3`_w|WqasawzTfQ4rwKtIO=-3r|-&;7n`p(ki!T?3by%%?VMEYXl}}eR0u~8-*>a7egC@(77 z0ebnKpj+S})JAty@v{!0HV(4Wd!;iAU3(}SjHJgO!_=c!#v7LSv(=#;ee_JLNvT1y zx^k;{AC~8|mjp6EsR6ujDCRIgc?gIH4#gY;w46o7Xh8+u&ARAjs=MYV(Zd|>5l<)I zq!ydq8;WngK2|GjL#6ng2SIa3pUo2_YEbJuhcaZ!bJ|M+3DA@@K^wP{&U1`1Ji$Jn z0J+J8Lovr7-wPaycQhMdw>~yi0A+MG*48?Xw#eSAWmkVP<>noS@arM=%bUAyX2#;LLWhoZSwe7Dd3P#rU~6 zqIuD8I~kmb8|JQ~HVif#{YH1fk!(F*8$FmR9;Ul?nv-6Z`z>y~#uj9EWSuk(aOv(_ zC;72FM|Kh@4$2eKFze0?lxaBoWI4n7 zst!_O^F5Dg>)A*91N!HK_XgOEvq9IWqHJ6I-g`jDUdcqLQ*%Qw&++2TkjbScru)Lw ztRP-E6myJoykY(s9EfsBAmuqag`OgEwJ`@5SG{TRkuB*wP^|l7e+#rlT(7;8E-aa$zBqnCzNuow4YP46D)HB_>({al(7k>W(V`ap_pTmi-6FrbZPj2 z88Rh-TKHSlukBAMzM`m2y7tw3yq41@CcU9CjNT?5i1N{h&C`OkQeFP0?wq|hUnXc? zTqECW;WlOAY<92p@IexgCuZV676I|WAuBP?^S(d-?6zjTLNCzCaRc>Z&VQ?TTWv<& z=w;r4oUTv&Ut@YGXbkApYlt!}dK{r-q%vvrUWXX!HRzc*`{#wqP@y5u%w&sYz~Yxm zWac@OGI5lj6Cx81rX3=h&oL?Rg#|_1(N)*MhhNNzRZ<^HFYu1&rQEAO>G(9@NN+Fp z`CuUV_F$TGd)LWu(YS+4(mpNPE;7FuBzC=uKoNVag0Q4#2BgKdwz1Fjw1=bRbtuz;rX1c3LE7MhE zk>xL(o*OD8C}=S>MarOPAw;#K&R0K-m=)Q7nkG$G(2|v5z2ENr&a+@OeA^33Ix2lR zwf~Hn)lLp7ENta?tmUvR#BG(^XESLpd z4eagIqL$Z>+GQU%++~u_tHb-5aTYVIm$GtyB^4z~{+^5f5_*9Ky1hSQ7WFPIKcaxy z=iRrAK6D)Kq!YFv%y|FGsF^4IbEc;RmRV)`Uzwa6c*D9N_!fy(j^M_GIFBpi53en= z*uO5v;_H=B8h$gwROT5uQ5~GMP@RLxYL!Q_LG|Pfr5(4%amYp?ni6?hSP#J z>irZI7001yQKOYK-kbQA?r=*I`b@|0oFR%gg(T*i>$J5J1p#4~U6HrAJQS4rYPAy^-!I;eb$Kms1miPp znxu9z(fBqhs4PKV3X42eMfL^am?*ly8X6;V=hyFCxI1@I!=f1d!=3rfz31$AzVkch zp7VX*?j1Mo)#oMtMB>2sS>>u9y+{y;Q4?1|^+Uo-lgUx>5e@WdRZozbvM0%m8E+E& zjRkKC_X0v6qoZ;DkLX5cPgn9y9K?woG4pg)e7W~$bKAG=@-t=M@-yXF2!W6TfI}+35(&+V>#9m}{q7V15swrfqgQl1VStksa9&pOgHMKd~-Qm-SCZ z?FUZ`Kxmd(TGg-o^jTfLhHOaM(jG_+>6}EL#`zf3T%@UpzZWCQyq%NjGwgI>rUEX| zm}93Sne<{E*^&M5Imr+C<9#y@UWRncZce-7vTxrjO={uAC4C?NeF@U!V|2oB?0Q~j2J#&otpvOoP5rT|)SY+M_K^CyIeK-7B zjf!=V=Iu~0vSJ;{q!;VRj_ileNq)#5-4h2NV-^Bh)V)r5OaDA#0B)bInH**;>{;Bg zn;dcx?eBrGsACsab$$pz7O=MSV=QdnVW)fN`UhCnvByqFGU>%SvLpN9bCMtONB6`b zvV)CnE$*G+NC5N%Ue+FPdKJK{0KSI+q^yaogge_O~^OwkSt)o zr543qrFOb^JO7R4*Wb6(kxY6)j$+t-rwpH1svnt?{E$C>9ODpmeJ2*R?r^+`ef2p# zlrfnhgOeLFL7*j%&-RckV14I*Q1i7O^Vt$9=;oPWE-_fv=$bgLLmaw&*vbgESe-U?cKQ`Rhht-`Q@p}56 zi0!jf@^&vp4}`GVK7X$j`L|BtbZ-+nzU@L!e;>Xb=m*DfxIgd!-Thzl`eQv>6y83K zYWCE~?u7>sWggs&4EMj{$vO%ePj+NKrUB4StS}VxP>qI}w{fB7A`l|^9rj-kWJ0*P z7$4oKVA<^(6?p+L-Pr9lOM&}fOMOO2E^!4Aj>2KV> z3x9pi^ACWQ!M$wB6qD+--bTRD7_2y#%Lnsa0rd5MgB4YU2rg6NX5U@A?{-};fmdtV zvo`T}_W*5J=KHtpOM+#!z4uGp>a#dhLSOx_8y)vMp}hv zV{)|CM+=&F?WH|fqAf&(vH0m$p^-{x`|Z-_LS8_={s`t&svx_V1ZivP*!RHBo26*H ztsjB`x-K&sy9|T4Loh;j*No=7CN$nP+R$P#LuYA6lf^WMZWEfj&A8HY9ZfxE8@3sa zA-F0P(y9b_)Fs06TI$#aAZbxz`mt4T`sD9Cd_LO*=L7%1w9i&z+Cg?b^e*JbHpBDy z1~zUroKLKQ^XF?JJ+&FLOXJ{DvK})^H(utKf2o;qYp>99fOoC!*nX zf{{A04z8cChwG{Jke5co?`#6xN;ks&>?WSPrzRR96{(n69u1E#V&HK;7M@jc2&v70 zye1i*wd^TeOys1EO87QsjP37%NPRH^PA6c&aU}wd#lr7+Ec{Qz!T)4DB1%*UEm0z{ zG!cPkk`Qz*8R42VM3t)%tWmP8s}RhHhn!Ex-)ah>s7{BXCIcZCG7)-Fjpf>6L^R|g ztRV;U8nd~1O}SX8%^mw6^^z+p1ePSQ%&)@qBMe7Z^JU|GG8&STth7$9h0E!6eA#%N ziH2`k0%n}s2-mVreA!Uu6|CN=Y}_kj;9eEWmyMz>gKy%Q7ugf5PvAVXNs!eh_Bv%Q z9Q)H~WLpv3OE%ibQ_Xvyis5TsAWtTDC$|6)+J+R z9qR*aBIj`_8FCiDAD>46d|zBi!;G^VZ4K*vIu_EBEp`nnD`RD*Ng5kG1;*Ip5>ppd2QR+CX|Xu zO*%p~sR-1hAh2ACpo*;sugpMHbq?mRnx|zlxHcUjLk+878CPht5OOISA&uEsp=0yu z3J|KxL-^%9F8pdfA})=hi31GT-B0`9sQ1+jp5*MZczBkvENfyQDUX3qMKXff4l6w$ z&u>y*)rqXGlMzv$!x}c3)qDzHHu44~BAWBz*TjB1H>X0TQ*qvx)8OAgfA0QeGDaV-zCDn$*;%0^z10RJkbUBl8kA6B2mmkl*6)jX9=XmbuDuYzYY>jRyV zlU&{k?*>)x)WXG6pBRAf(!go^;@|jQQ{VM7KHCe9fL1ll}^JDk+PzN|`LJh_}kmCs^m#WLmwd60NdohMFX+tTx#?Uz=t1 zsZ;gJ>y=jdh2(D61FMh!!sRV0pYe{qseFy$w-dZ3`%GNms+bt+%wy8fRSd^;PKt>^ zgLoroiVYLzIw>a2bymE=u7rs^MD`1u6%(YBeTfTka`;^_4V)4=j#Q|q*LzL~C5KRdRgR$D<-wqU{rxAoiE9G_nq^fd;fFZx%V+( zz=Qq)42*!CPde(h*x_ei!)?Zrdj~wOKN-lL5ERP>b$3m0PBz57LG|+FTE*)q_#JiK zjwLqG)?)=8V9NSeQ2m;@f%Vy&XVh;zHr>3z5M)~YQ;>O0BNg%;b$AWO;8?upkq3fH z-%f>}Hx3ClXV2mrRuu}2swN`9H>e=Ylmj8AZ2FxmsKaaQZ@dTZMH{oOWj@oLkB9eX z0v>JC0@V^EYM!+CrOb zPS6#8Soy(COrAc)$=#sP5`k%CHc0@CdtFKk&!AvfKq00z5M*549vCaA!)xsU<2~eF zw1KwT^eI~O(Vg!H22W;ag}YJN$~vEB&S}Nj>kPEN0dQ9UZM9DV`Y@!dc;FzoH~Jbf zHsP#O2RP$|0yt|AEdXMR(u&w-^}e-foBwbS+-k7ohcCCyzPJS<>o+iw=Jm|<`VD}x z@Y3fn_u?nO{$^#~#m^w>;-_8osKaZW^=JcavA@v=`ud<@3oNSt_jUqd;O`59lRQ4g z^p9sZY=%(N8b)YJXMBz6z{^ZhIs=-nAdgDqYkfi)}sxy#nquN^!Y*k zX7D*@T^rba+ewpl>#@T}~!e z6KGF##@dBCZWrY9Y1E{wVP$yS0U!p7rB)7;G@>QlQi+Wy_{x^SVdk}U)9Tj&kyiY~ z3Nf?cW3cMlCHcy3*m1KGBI?)M=&{<&ZTO_ic+}xFu8ve2*m+Y6(#yNLj7Oj7o5d2| zunwktpP_g9dg-%WR)LKu;C%Y50COe~Vf;y(fHIeqGZGZAzgby&=_}CRy$Xwe_|is? z6=eni)_FYY@ETVqy1WAn#KzJ~Uv?RfKG8S(8!`Fm)4@xV7-hQ(oYFM;yrPihKD(4X zQ)n$@UdspdFXzCIL#6&wD9Drrnx;Bx18wz~1Nx2!D1N$DON!WBpxD_5gwILEoBTRu zQ+uD%X8<|m`H)RPNC}-h46DfR9FSbz3IDlK2KyRyP}yXl*Y`A5!xz^}=(Q;%2ppSn z?Eq9X>8XuglbG8(8I|CEM%LuEYw?)&hZ|d#{7x&P1fW}Jl0{OdSC@EY7hJo4>kk9(ENBaDa($pr^v%^Fw$S=) zn0hMRG%P;w`St+Dte<&1AeqX!a_|U+21kp%s_eCMhQ@_*7pGKw57~atX z<<1)sXvnzPR{)rBST?ziZ{2Nzs;lSWPV?PeaWtZ-2V?7J&a* zRpZ<1-yPK+fc>^PZ}umE)T?>W%(U1zU9I~T#%+tDpUtf;eS*g^YtHTl$Gj!5=G>kx z*Ho8svF7&~z*}k4#&qPsmJf#c*Jk|GTL8Ys3|cNb1KLrmhADXx`q|Qt0C3E9lNzR~ zQy{lN)8+cP+ZVy}gdBYIX*~uYJf-~kjl|Fq?Ews1$a_A#ZcVRAthl-ter@SWllv{r zaQ#kWzh<91)7S6bg8SW+-=^l@Kz!ya2tA$AV-knfq?%rw`pyg7e(tG=vss#+%IJFy zn;`GjiHDxJJ;|<18VJ!SVb0kN^gO9^84amWXbI-Q+(vGYk5=}1PZSC=X2Iz@7av&w zH8+jmU783%<#KR6nMiWN_CY2%82dHBY)7$MTZw^!f|w;30PVjy?F0sZv(VW5>mv)` z#@*W>)FhJtQoyN91g@u&+FBfJCC;aS>sRwuB4(RbVqDe?2hwNU?yi{=k|Yi&m4VOR z81S}Ac%Brd9FTxdo(Oyo#DQ;qJopwQKzN}X!Vb$ocvuX6hb7>5gh){$gsaK+w3t+o zVriQkONM}wWC$-?1@Bjoc3C5bKms_hf=Fcw@XN#yRG|PTjR>5|V^8cg+X;-3!2B z&jR4@i-yU0AHn$ji-;_S@duW``1~cnKNJg|hvUHU&@y6YIZQZAGAz2Og{Ah45AaZaeOfHOp zfFp#{MN;4&5dptQM1k|w@!(HZA*_t>x?b%<)zVce=*$jPeTgotF4)_))Lg;=8`0tAYk9{%Vxt~a0 zEO_O|!qkIO2stDL??dt6T^J8OhZDf3NKER!oX|)KzUo8}s*^x?ObWshDFLs7cgr)t zPa^|=lC%gsK&ybT>NJ>LlLLV|6$Bk$)f#*v6?_Wg4MRu0G`!o5y)~jgkKOj67|&ub zVS3us^Ull3vM18nN7^{#E(C{tizsb8^2zcS#8BEe7A&QdLGd^e2i`{$C~YPl{fJQJ zBT5@VNdowlB~#ismBqGEh6ukh5vCkhfm2ny#aSn|OsWvUsO<1$#Mtfm5GSIS3FmZu z9jk;HvcZEaxx?NL@Z<9qgGWIu@DIk=fJe@I6p;YbVjJ+tc|oZd{K@Qd!6WAd+9U|k ztpew&gcg@-G1%uWI6<)egYLw3Mm*WusoYZ|5`#ls&Pea$@d^o`wWl2!=EOt-0)bN@ z3F~n%mL@D0JSMEiQ9>!T#0ESjtVfvy0tj`u;7P)Qpo#=go!UxfA0`}Id4JeKegtB3 z+%nIuKSzs0$9^_PMtu{p~z>_4uPqCy+ zwZWtfAf=NF-dP(D9>=9j=*cvTQ@IF6uAZKbnEE_g?AYnkC3?jpZ_)LX$SE zDi!#IGJ+~82&$zNe85Q+6RFDphfkw+AQpQG=u#o1 zCXMhuy%ig|$ePs<@=e?Ug5jTtrAOZP@q*(iA|sr>U9{cp`(&WU8oj*W;MJypP%9@1 z8&7G&O<1oI3HX*Jb*VO3+XJhW;G~VSV8SBjkv0xn=ito0ffxib!Jt3%mWEAgBEv_2 zJTu+(gyf#}HIOCDnB77Guyi>aHDrNrmCOpfBVoNr#q!liyHp#msw7KbwE}@#u-Z&4 zj=ncCb6N)ad?4^PbQ&|}Psqd9=JVfmEL^U`)d(m24=}H`w5>?Tn@4&wr_ZE`$W2%; zGW){vWD0yzxro&DIL5gmzQtRYYzeMWp$;5&FVMX_+j%DCJn{LvY13O`kC8=S5O@+W zdi2^EDS@TQdf~ZLu&xLdo7b$ha>nVnn3+(rl9^B%!}wH48NbS8W+DOZM1mu9X{$CQ z`MvW+`jN^|1+o1W`k=o4AOD76t-(mCm+byN*ug$yhIrzEWhFeFjI;%An`T}yWasFSq8TBU(BUsr`Els9~96gNDMC0z9>h&OoeUa6h1 zHEPG(itwbDg!X~t-ceQ?Pg9$+$MZiE7|gR)AeeZg?f&+h<4~93{1<%2`l8@>)ZsPj zm=~@0*gf)p_ULX!5X6|BvOih#gk2r{|A)U=){M0000mR-|nJ ziD!nlM5WpyKdG{c3k2M;jXYyyVo*^yGIoo3`~=S|F7P^2q1SWS$X&WX;`m|lvakY#7qwtaxT_5#?fq+k)xD_wHQ zyOv!iWuFs&s&k8$>66s&pN$6(OHEJH8Iv+e1ce=IQ2k}QWOKrE(R&G&rrwRul5JO? z9Uk8YLMp2>9IqF#Te_G{OqvQMdu+CapwA4T<&Q@QcIv*Lg9wCU@r|C(t0{!0uNy}p2{-c$-u10k!W;Vg~%I&@z+#7Zi7r~hD8!> zpn1}&ANh%cY`4tCA32CA8i#xOs?h4F_7zdAHMab<*W)CuwR|(~gd5`m3bQqKX^YNG z+~{>s$Jk%6cClss$H84jVN#H-lJD2DGwI}SA zu}tz|ZwBc|Pw=EGw^kh`Vk_xMX|KfNCGdbgab3{y-S*BeH0I5?Fmdh355OcbEk&^| zvJH}xPR|SFnmgsUkXAZ4wj<1U04=0TZjaXuYB~;x?~Ljrb98Ioa7$W@Q2QHJmAU3m zqlJ2~r0VR++WqVw;&dIr@dIHqjUh+ASQh@B(NS@~cD1|dsV_-;UPjE8^RNw3E?oOx zSawJ0BrAl>2pdY6WexcT5X1q?^`Am81jG3nOs~fmQ$LhX9bynlAH4$-4lBA9QiYq@ z87)AMgAz(4!fMjm9M<0w0a6v{tIV^NELObpXP3`b)U*@x89Tb^oO+db`gC@e(i|b` ze67ZZ)BB~r(*Qpqoo`Z}T1l_aj#u&OY)!Dzm}f9df7x`HDRr$b;S`>(2aRx?w^7$t zp_L2SLwiLhm-FJ$ZHb+HJ7c0JKl0+sH@!SL|IheR2Of?`TP?pRa8i{~W;*EZeiU;! z5qg1lRW#x}?|K&Fq6|x^H3Q09CRZ14A}?5rOE%fsHgbZ;pRpI;nrtX##M(YnKkkk3 z+~&?#V1fxYR?-#{_;rMDS7${>_1W~iW^pf+R{8V$q~hG zUj~ld*aJ{`0%9kHw*9lEZDL0H32F{V&21_p^|9KQOZ%(tH&iu#-3N2M1Oqu=%QMi) z3a!@quYHxs5mE$*16Q&)2UBmDU*nJw+cVC%T6}3p3y>DMkb|)L)lti?c%_LG1@z1Y z`O0Nc)Qe2`t(A=Nx@S-67lfIMT>Z~C1iCb;(6G!=-@6n{h*4Lbzb@xt6wbJ=GtlqPq%4|UJ~huHD1cmeY)$p=}87X%EjT<#QNXdk!a+04QLozV|jq@$tbmh zpao9vHJHhQpjvywl(1?PE{BS zfR{NBD8e6C^$``kE!T9P9nZe@25vZLg&y^Ao*qb^nTes4#=LOmYXkDsiTF=zn}0jrbE{YJ2QDvE0x2)7y(Ha}6$KtxlNp z;n(;S{ex!!X?=Ij-kdhogzEktXGnH|JzUO_edSyAXRv4nLYTwEfl#KVS+7%bqIYCP z&ur^~ZSZtANr8eUyQne{v(gw++&~%2)9p(*3iM+2oFo6$4_%fmG}($R8Zaq{=*v4` zV!nyJ@5vIXQ1m?j1P)8`sLf>nrc_UlatmZ=)H+st(SRps zxN#&CRCYp(79mnAy*pBRv1>hmJjf?BH^u0slOl&xgTlsm$Om)hVJd^1pw4p?10fzlXzO(| zbC^>xs!xnAKfHePWTo%hPXFv8`7IYqX4gT` zQp(=7i+KlBm-}5**KPuCw9u!rR)J;9#3s|m!}eO2EEDB?Pkw-lW*+C<{DR2Le5qD; zzW@8)0)O3mN~otlX@tuhMxW;eIGuX+$rh3RWDgY7H8H4MMK0V0;bN9|!@w63^l3&5 z&0)q+q@6rD=7qQk$KedGU)PVDaA-g0fo}fn9X~WTc}y8_Lj%CE2dVh@8NOLV10^oF zQI_gsGrQl%rRNcT`SgZzAFOvvC4dF?AeqWY?4l@*#U3O*MGdG^xOm5JV%3;SOATnC z?9tAd{*w^|RtEk`S%@DO?b=lWR>)||^HL+is%@`JzWz^pKeH;4-@qzLS8dlpcx49nHQ47}Z2YEuTDZEA(kW3fYY_p}B6cIFk zMbt8vgs1oug8 zCnR@us&d9lEL~oxDKzSww@MWCZXwy07+^2K-AXe{GvG?+83e%j7Yl=f%Wb4B)huao zbP=@84F{aNVYG1Qhajw~Y1qVPFM1Qkkb`Yy&!y;yTE(C{18v*gn>iwt74810m`a_j zaeX94mEQ@K&M}<#Z@w(hKC*E2WHWD)aW;8Ua;S+nTxrjgc~uYuVX9eNx@n2>nQ}l) z;B1~Sl1qH^^=wCgv3{;zvR7E`t1eGiP7&c2d+p1;-4J!)xm3Fy$-)_obcQRPY%u7? z7XZstD$nFs>PYE%Mk7Z{QrB2riY@bl%aA*O>%{wOH%T-++P~>LC$UivlwLe&{{}*+ zkbH2ug77!!3m_rRpBFHht_jt>Us4q($OqsvHD3?|8t7vwAtJ;_*cvb{S`NuWeEIon zjsj(8M}cyEYQ>V-6XE1Hk4Wp-sts3$%7Mpv9*9VOz!5|H}i>_1X} zG`$FAG#B1$-wY#f-mxdT>FlkZLKBH?LVAFB!E}EpL75H{6wBvM^fdB%R?-j~0d|zFTA*n!Sbq@R7I$sS)Sf>=TgS> z7DkZ`m`^wC_Q@rUNntv|0Ijbf9@edvA$M)+#jMo`0r?s#41#UZ0l`5jQ8RIPkWYkL zLuSnjlMf=nsvrXsbLOTQ^D;=vJ4mu6B%p$6II+3u_iquF#Dv=&_{Ne5M{*;lK;68G zCcB|s+9?b}BBHf%?-TpXD^VR_P2J5myX1qdO&uW~Rc4(W7+B=mt#w&%j7)yuSIH`t zvogKN-ARwD5bj&d;OK|`hx40`q@@8|QhsDpp0fOFB|4a zU1aM=Yf<2ymK zU)xMo{8RuIn0NEhLK+-->qo3hthYqL6fpI~8=Tz!8VDrj z@vG(yaO``ZSJL~M*f_nb>_GJJSMJoZ*88oEkhy(K3iaPYXuH$dX>EnPP{xi--@Dwg z8bG_SeeY6%=g@5Mxo0Doc1WM#-}0nC;rzZU_NEIRnJ6u}J@fBxdZ$f@l{?MD&mg$S z$EPCM$0zZwcWT`FU8Ej^5NG;)p+aG`xn!?$Ve)&}j!{ORq1@*_ZMk}L0Xz(ns0%wv z9I$7!d>;Njr6K{E7`|9mr3TLh#}wtivvU+hRX$+hNoyYhzm|q6NXEYB#;z=!b~YVO zWr0qjXwDrkt-=^PD4HVWGMq`hmTMQky0!3gBy|fkG9WF~kSkw-QzO(sS=AbRuW`op ziGH!+lMV1j#rCixt9)sG6m~TjhW8@qc&IPD{BVWND zE}dlIZ@O6{V18XdiKR=l<6aTB2BC&kpPu^4(Q%5cZf_ImMCN6)=Q;MHw2-oy@2Dq? zBq7jYByn6Ri}-6uueQEcae}Jfz;iW9-@@@%gT6?;;VkD{|RNoav#$0VNE zk286ieB7O8wkeB~4|tO=-Xbmsf3}F4F>ZOgHfk8otsKVsWsAHTSaa8kixa6o-Ri^V z0)MR_rp^PW%$7L2Smf5N&hU;cW4ZGprO>fj*|YxR`_GR&s^#MgsOp7EmAx&@#MrCd zyIaPnnh;UNM5d{7{h@D7*U-~T?d!MX93o|1b~=jXSLmU?qT;fW${(B>2Xkjm*GkNF z&(^d3J)=9>N78NIp1Mp3lsdWVqBKFPu2q<(dE3}t|E*)2wDb9~gCECHE8@~_#Vp&a zzNrs!hW)H{u=fDT_Q!n=TZu}6ReD;sxxz$>nGv(gZ_n! z;P!3tj(sx=w_Y;NUw>m_{`wMv#{|y_Ub1-3epZZSuq+;f$KpBgTzJmvqStkVy|*s` zM7`DU*~KB<%nCwg%`Dow)2uKggWyjBFe?a#HD!ljS;;<_ksr(p*2VkiF?cKmbFM4& z+~gW~t?C^C>-4Ya@sh;rW(KqwmFF{kRIbk7OSAYiGH)Iyv5bNP|Oc%MLy< zDcH#LMkFZP`;8>w)lnA#s)G}RUX#6^Nq!Juov?0LN3Ooo=BM}OB}u$qk$-#rTyG!J zz^B;bZA%Yeqp7)&MS6V+P+bhH1J-3#$pLOeJjJ?Vou#$qz3BDm>Tz#J<@(Mhjmi_7 z8q(lZr3ZwQ^MZI2T3-Tiz`9_a=p2(RHcfeYc|LQ*E-<#K!H)(uQpJDA=KFRbjX2B^ z&zTu)AojKfCjgEB92Km2qTgZNNgJ>&+}zM$13Jk`OFz$h66yIRv;j;b%OxA!kOh!{ z1{j|kP)<-m0P^5adYGmR6qVz!tav}nFAU{f9?Rk} ze9L29uueS6V%y4%^VWky!J*^{34#uP%Shnt-=fStZCuKJPTch<3hYY{mD`mb1U}gD z;1amsISPEsZ@hON{O+FOT^`HgF?`EoU9e7k%VS$ZA4Y;>{(+=v#|7=)>72lM05p@C z>l=nWe@*F6%}wTW_isUE?vmQiY5L0f4cw@DRj`za4Q*f%)GmDJtIs&F-fRK z#NPcxd%r}G^+5pcb1ym{XeK%xC0sR@;7vKbU-!1>EH1YrnO^uHfJADW@S}T!n4&P7 zc}f`t+=Mbb%~5q!j!zDo6REPy_d$TF%cs;7rMc#P5jv-1ohN1X;6}Qco?h(4E396b z4+2#CKG#R6ds{#z6a%OdN=cDO+ zSNB6MEo%}RaJJt#Gr--XAP7wIH;5+ZZ2)PQo*xVzWyfefMOK;W*m*w^p1gSu_uu>h zmc{>5SRT!TdC?x;=f|>)nNxh;7v+D^x?r97o*&zaZN|3CDnob^8UMBp3@$qO)o3md zu(=HNBi60;vb}Ce^L*-Rf^16;LfF%5AQFk-*C#1pnB(`(O^{J;AVfd=jn?7JlPk1N zN;5&(m7HlLIAnIWozOv&TVA$b`?}jSX@0-5CgFueyP^26hw$jlpESk$t_46d^+Na; zt;52?UCQ%KC5*W6*q3Cp?s=7P%Tt+DPc!2v}}i**qIC%@o(7vVLT3(}tFgF&|M zI}>0c>HRsc?$T>x9k4FS7C;;wXL`bj2-{x>r%e<`$LtW96eZ|N6fBkHdMe8e9h>71 z*IyJ9BFd>3qMz*}Q-B4em(D8KN+&tDJ4a#donv&-1wASc@;`otn{v(aL*ToDoiYV5 zB=y`)yqpwu`(ic6}Qm@e#8oiZY&!zPc7LgOB-9MjYT=b_D(` ze+ii{%jnV|euhHe_X~@5!KQm*kor6iN?$*M-(Nq0r{yoG>3B(iBqH!V;xRF2cV0h+ zlD{57+_Nky>Vm>hFwR{szV>&8JE4q}!E55Rl^%%6FhhpF+RjIA)sIx$CNIVNX>6Lg zaT}lBuM7e3_{e9s=wygJb86lu8Y3X-&j?BQd0l{lCH|QMn~9LPf_3_7I{iHSkLzLr z>q`J`6zKit2@}Fy|A*Yl_J+6_die0BGjcblzAFJZn~m-u`s1&Juj@>@Ea18E8h9-9e6FgCSLoU z2tdrxSLy4X4%s$$2y)D=AxjltOtQzj$4T$B*UK9XSQo5Qy$HZe z#G>h$n?UQtDj(_dK&5~B(d^q>_Slylf<;B&3l|etP7%=cLwC@kcn|O?zp~^9$ar4Z zAjp>#0b>!Y8=p2{Td~d9c0T177w-|;7X1h&7u*jLj+?#}4@iW_%}jsWbP;ceBR;nf z{cc6TU1;d;;a(g?WtSH3g{v=$K-fTtmju=c>xOky)DCPbwi(;bha)oK3$2Uxf^nqB zWx{dGx6=~Ln?{`s)mu-<^uLP1jJ*6$ZA_49{uYRNmP!3~Q3DhJfpx<=PRrk{G!w+- zg^*LjSm&E<)w_3~dx#`GAujvb%Xey*3E2Vp$`%0A3>W^mMqR*$NSu#p8Y-d!qre1ZX_q2lFqDa{`|zQvh`D?!A8c-U)zpmgSn(T7Xo+Q#HYqVQ+at zVgYu~8)Tdt_)J*>U=HTWivop>Eq!($Hm4t@$a_+MaY6ReQrLX+I0WB13HM(l_h{dwhwH(AFj~dEdJvjn4WQmK?fF57#_2Q z`!Aj-o%}n`AA#;!TNrj~8O4IQAo%^oWBKlB`D+L%IS=|-$`e4%)mRI;mMTF1t#j0s zWrA?I4l|RAh>0(|0YeX(GXfkWIJ6j|ORp(ifUuHOG5NzzF9WS}t04J)ro!XOUOa@U z8S6kV(@QBPsJFxT5i$kn=lAs&6SCJSWfI2BCLdxl?&W~qFDu04BW^y-SGoXc53u0{a z!>e(x%iqAyS&{JdSr0Hhw-!RK{t7~&@?(W^a?V|u=V0b#KZ;)pV(5w(pJQ)7Ee4Y~ zFVISIq9dW!ZfLAaQKzZH)R60{`5-0`Ym7mH(Jj9^2V%HdRg+W$5?=JjT_}Eb4_=km zV>+6gyX5(O3SkWb!oNr-alXDEMn>9#R*DN4Wck!gfLtFMh#5pW-fY#gQ&+lqw@ONy zT?Zy;JMG5$@VcfVa53e5b2}9w>0u_AL<_(q#uH4h1cL9KlQm977+r9|R73~LwV+BW z0vZ_#3~@-bo}Ll7w=T&z`_e=3_|5ZwoB)qr{Q;Iq!7wv!9n6U*0%ZOIO9`n8IV#*O zPR30*<#3pA+=g;peQ};$Bxp&7i3d$bGk1yCI34X&_A_0d{ig}={LL${z4kpZLw2AQ zWe*la48wGRcw$zNj;=7hy%9$2HOCFREu}8Vupc(p_}O~SOm?NHrVBEdKRNg)u0duy z>z*wY!v4ZblzgqIHBBdM zwONuJo3l>5!2VA}#JvpAk9Gp>%asCX#H_)c&@x8?wSNZ>e}818zFaQg}6 zSRiAIqS^}MkIA3*Qxd#FYqKlDBsU1MpOwMA=a1#$(Tk@v-9X>JkcB5=Jbd{FJb3xE z^0Sxn@sO0oNt1hjUm9Lj;=!w@@c7lUDxXP1_Mc^76u%a6<&bHj*TJnsQthpiRE^nw6PFLEI6UO0mlQNdslxe-hwyukDlL8LcKuZ}1m z2A6%nGIk5t#P5I^(Y`Pvh9K6j3e4jC8N?&j!Gfes;F`9V)_rDDH6#bXtmHtLmBK(L z#sRcr7y%68T*Ty4#5;mchMQOfZex~qnk$U(pSv8n?I~E$T=v#PCOBx(<15YndN&2d ze9TaFFG%mUCk#Kol1VK{q!$o_e=?_-dE5hZk1U75KU=`yBMgT8VhKZzT2KvUgQrwzLXK* zj3Y1dho4&k#uwdSIvFi|$VZHhbcTg-8+nmW1&AdAq;0DdK!SYC86mV$glw;JG(Q6m zE^|HZmU?bLUEJ5Nt?DAh0-M@6_mMgk#SEWlv~vreo9-J>gbkxvCUivl?D zB3~@PC2wBjkGy0HqoZ6{0Th!@C)_wG0whQXkmLlK$xan`%c@q2GpM;wwnk3n+JA9k zjxj?mKklsBM=QRwJ(1X8j(7@Uc4nPq1mHtHnw_uDdBB9TPQ1uRvtt}y zRRDS9W3R6+fIRZ)WEA2V^&$s{?i(7)@x~~$ozM=Z z;F2S?^&HUbjE-V3CB_SuC2oV!(JnA1+7-sc5X2(fh}-E7W8&RmEF!^!!YEMyb{XHp zjSDAkC}7=!&-p&oMY~RxonOa?0<;nxVG+%|>ZhXYamS*PHZK z7VU?5(Sb1Y)LIJruwa;f#usLt7QpN?o(#@nY~PZh-l53~)tkK|Eq3EKAx3 zUTFtlVd5rONIas2$(vwN@@80+vIQ2UZh^&!v|w1A9t`H`Az+!l4FYcc0?RUXfiwG+IuR%c^6*fQvoh{fLW9eFY*y+b`~XW=0!dgAVER^3G&hAYot1h(C;U0 zdeG6J&uHYZr(w_LwYgcoQAgdr_-Oa;gAXkZ!W)m3ai=_v1oXM}j<4cHJ{5ojXcNO+ zc#)42?&L@mz?T>KIN^?oaf3xko8^-);qB-o5&?+$F-Uf=LO%9>;<$)Ll5>9UXSyA^ z>)5wrn;Q52N|#6-=YkH+y0jml5$BL8EiS0d?r59BA7EUJJ0V>$`Dk`9DxMhT%8PvL z^;Ce%e!R%XUXKDSPTHcd=X0KpZlVh;y-EZ~@eq@b&`xm{YNfis-~)?uns!qiMi*cB z`2IXb!6$0|rq(*wJ%D>uSzYfBn3T1i5uM5FmvUz(s^v(cz>XpV^FEjhuDRRBK!N-e39pNTqvQTt@3N`1sOeXo_%+ zQyF*2pgE!M99i{WEmBK^gMY%mT9;b zjc)nocBlX`{=9QLW8*x)90ibLb|k$W-DFp=zP^hHu$Cb|)wP_OoYY(%V4+ zmfhF|W70e*`6I$@q0ic>n~@uqqk4IsbR(7S-CL-%YK8k+`VBg;_%PmpY?L1;vMWBQ zln1xsNI(**dpnrdF($zk-`tK#G!YYXgTKTXNCprXN1WS2!lezd|XGF3$3y z3mzKhZ5V{vfEkHuO(Hx%;k$yT|(53 zW`PSTv5pj&)zpc1qPZQb^zAgjq9A@gdO8$j!o?m>k;*_n&Anp9?L9)ncsEer_Dv+= zVi4to;ileyVWSB*AE-2KI%MH_{{-AYY+rUrXj^iiLKzS5wk`e1yO+%PI0@y zHg-EKh~5ATV_1-2Zc*GuF&4*fVvw*I)}-tP_tbr0PJDawWCj*wlC>aq9$}e=`JAm3 zR_WWoHe)x2SaRkivJ0uehhS#Uv zmu`xPd(~R4YbWxzXVaEVhc7tmpE&-8FEvLvCn)3b_2aVq!61?JxQnY{Zlpg#E+b+dpCZAPrj#+O zxjZA3rWP=|r64}OL24xo)7HXhV)I952t?TP&GtE_G;PsT136&1_^3Wjk2DduNx2un z&>@E{!nui=J|98Oh9$la?Zb_*nsIArVr>$MZu#bRro?)|?Dzo1xgB=W#gww;mF+TZ zKDwHmw}Upn|JJ!^c5s_{FNsO_o&UlTUa(oKUY+q5hVWPD2KWE|yCYa}=1D8elVt1q z)I=0vZu&-=Uf`SCnG)v>vl9Y%CDw4l#eBXcF+H-#M?atOc2>a`>*<7xj~wXDw!PWk zL4Fkx*dd4`VPL<&85>5%*uO!y5+i1M$9**+YWmp9Mftnn>(q5H;u62y4iz9VkQe!g z@yVW*0!Sv-Fugz`Tnw^?o?QN>kIN)a>m6*1yT@$Q41QeS6jBUEAT4p}uU>yOW;!?(a@uBXKlvKd6a9)b_!xXpWF1 zMG@}Q1Rt24v|eFWle77_jA%tX9@^`1EjP_oguNc)kiHwtPPP8D6Rv7~N!!*=rCmcK zUs42g!&Tsa_RU*LR3;B?}i*Mv|C9egC4Y&#VmXSs(v%woR?rHa6&=G{iup zIZjZxvx5BJzeR_(TK$4%Y$Z|bUG$Xbk9ihste|s*0*^`RL;Ki~AS=S1nur2ykZX1{ zlPE;k-$|o^63;vqnf~}Py(dA67}B1ah$8{FhD&obze*wk zq-=Pbd?Y^6u|g}+QAh-&8B8=gxGiPYNx|=5_)Xi_erR`NcB1{9t$Uk>YI69Rq~@$nZ3wOip{H@Y{ z;f@&z)w~@PU@j3rBW_KFMuMYgWFi6S?V8EXBF??U+&wOy4ESN;tpNhl;QtQlIgvFt zeQ8}uo!MUBXVGqSsH}S|| zVNv|OXinjFAzcXKei@s93YFz4(oS_2YR1?Li2y>FfuyvJgF8&U^Nw#WBv-b1yw3S(|sz3a&KUCj+Rlw0Ba(5@%-me4e*6A}iu z>(g~~|5cOhbat2@81t)b`ozl~52mL1il$u;gjIR_U`fFqn31;y%nE|RtT3c1@`GX8 zjX=B!0!)&;V1CL*uuKjHCnBoYIAN>3_xNCMt0FtoAUYcu{Hw(%z{SmvHscc zCz~jplQtQ;VXJdTML3ihL_6OzjB$C0!2d@@tSQqvx;%H}K8p<9T^3O~n-(1I?>;T4 z&q9Nh9kqH*!E>^t51_rBT(d=o4&B=@K7Gr71M#xv2zpNf+FYFUSkFm~=GPgr1`*D+7~fG#ZOVVf_5BKg|Kn%P|J!~PmSM{dVQu;V_FQUsZaT3t_PsTG z?I!;;Q&Sru8nZU{V`>IeRomkY&FFihd0|McUYzm9)ri?Ia+mU z)m24Rr9Eq6K4!1g_}@-EA3>VYn;MWf5@pk!2Ho0pM0Lj3z9plHfjXEJ1dIC;b1Kq#ey`7v5d~0000NkO6f-7Hbq160FV;1OBOz`!j8!i<;h*8O2%V5;$SaSVxY zKRf+q*&G9&wzFG|Z@iq8=lSq&{FaRAITzFTE(_NPyWRNldHq>USGTombx#|e5A{v2 zS;3&0Y^SVfc$QCC?)<7%(=7CL(}tG9XhKdajxqqlzP5mmiC$5iiL z|M`3Geb3;}bsh1RPWwAzE<{R4+UL#x9pkl}egB*54<_jeZJ+O1^J&R4_jlnBXFn{d z*l_Tdcz|8euZ1F4dUB%jpF#Ha(c6`0l{0##ep4b8=a9G^HN! zSg2@a%rcf*F~2K}U+Rc}e*5~x(@XVl9)4hYezi>dVv*Yo#~S}IUD)8_=&s%HPwlNv zYl1kV?AnxxmT?Z@{Vh`#i|osvsoLyXi+OIu$uiiR`v{?}aj8r1cOwIphLp=yZ3DeiqQ-^ALldhc-6ct+W!+ACfE z?!F8T;<43C$V>jkp0Q%Fb)^2f{}W>DMM`u|By(@=I;6PMcc+m?=C1V_EMIwV-fIvQ zIqMKOd*LF>ql@;HomW~uRcX%aD)x*zdDqu`8tMi0H_Oi2G`-60Of_)4E^4$&X%Ej2 z*4>BW?O)WUKdo2X_xH!o*Q~2NB&5C@$G*yFId{1F8bg=d#Wzp$Py{5{It< literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/logo_abbidot.png b/app/src/main/res/mipmap-xhdpi/logo_abbidot.png new file mode 100644 index 0000000000000000000000000000000000000000..a97961e62b22a555d4299cae23f3f37ecc80457f GIT binary patch literal 4907 zcmV+`6V&X9P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b216f2d313cc673d8b8c4da591c174ebed52795c GIT binary patch literal 11873 zcmV-nE}qeeP)>j(mnvHsDN`- z)Hpc!RY~GsN8h7-e0h){1pPyutMv!xY8((UfI!|$uSc$h*USS<3D;)>jA&v@d9D7< zHT4Fjd$j16?%uwChG$oUbXRr5R1Xal{*3>Jzr)wyYfFQK2UQ7FC4)xfYKnLmrg}CT zknXNCFx_kFjC)(1$K4CqX>!La*yN7qWum)8&xqa=WfSER0aGsfzxV7lce(d?1>-gF zT6j&oHvWy`fRfqbDIfBK#+iKbXJl;cI`!U`>C-Z|ZJwUFC3f0BTOUu$+zK-?w}I2c zzrg0fKA2AaJ?-8WL7Gm4*T8GxHSyZ?Z`|7&Lw??be;eC?ZBfFcU=N%Wj6KBvZxnGY zW*HlYn%(vHHM_eZiRe8Mh?L<^HSumhuE(R}*~|XjpKX@0A;&bsKgTTHKNn@1?*FMI ziC%~AA@9X&;I$@Z1myD9r^@@g@42>+Hj%br8^zmsYn%e-Q zJ01asY3^x8Y3?9WsvAD%7~OWuCO_vGrn==C-gf&mAk`CW|2+V+?`;R8+vIh(-2}>= zUIVX%*Tie%-@w1c|4r5gk!Tx9TaD8^OlXWGW|a;qty1|t3YvTjXbn@{9SzdluNiU^ z!ztArCo!8S#{egkOmsn+hyeP9f?z06_+GpQUdx07sE`aesB*~9*{p4%w$iqfK44!8 zx@6^ymlHUykB{k(yz9H$@Q(YNJZRid*#?}2DRtuI2~Z)RxHe|9HgoMKeZf9q-;^Mg zAvod#XmH1E(8!GSL2i$a!N?3>9-M6U>6U8ZD-xi55?LlU+9$4W>w}EbJq8yy4$6lF zagKOwV4UiyM_@UH!0>}S;_kZa;@nfE0!YlwjYwaY?fU3w-iL$qnZ!)}#A7{Wd{oLq z9Gw0ct2>ZE+$|R0d_r(sA0CAfch(7>EJXweg?*xZBOuXODX-tVaV&}&Bjuwgt3!S^ zyzOpF2JWTUAm-#7|# z`yNb>^X^rtA>vKwyn8#kxj#Pszl~4MgXR5QS#vXYfKb`o-v`^DgwbbNu4D1fF4*v2 z5Sg%JU@pUT@V$5qycS+lLHd@3W9^c8=*iT0FZD|4&iEj1N&3F__74yKyMc6Q=hKKR z$AAAMpVmJF%jMw_*#9h+KFe|)Y{$+g;owgu-cE+=;Ct~JcrC^1TSOL)`I7WK56myD z?Odq>Yd(!MxVpO0pgUeEgVWcLPsL6O&#*La7?|cISZ3+|;Q8i!p>Z7KX9f6f5WwIcT{gIli9H^Jc;nVYHw=1SpQ z7lFssgJ0*VG=uy(1H>&jX6yg$47#zlJ~&4T=gRmUVS`&PV?_nyY>`k2P{sF+&IOs1 zepgq5)&=WH3bl*R)7IZ)QRxyI=d~uIkcu^ap zN`MroZ&;vr(*<;6Y-7lreO2M{5L@M}qJPWPMLh0N0;IrwBXiX68gXU8HfwS2Dr}{i z51I{9R_GRtdz1hvZr}KLNH56=dLNnJzhWTDGkaBuS&S>Grbh{o0``q}Wzn|DWDcv# z-Ia-4*G*UJ;#`*!AO-Imy0R-PK;!HpNBLSIZY8sdW|Un!l65_!uB(KiFeN~W**8|G z54v#<&%fI;;~QGhD34WY7W-5+xaGE8l5$ifKnmP9TwuJu3N+8#?87-N_q3i5ob@g{ z=@58wiwm5U09B5@@d34Nfjz^p{BlO8uZPm*N2~1c(`A;i0VI1*(V9sHAmT0=YhAe}LpS8KjTfWEvwOeZ#pNb=wC9g*co?D^%u3 z?j2;-$LZES9XwtIMH=}D8!CymJqe}Nb{-FpgQV{%N`8;e!NaWQkeizeS-IKp=d*Z0 z*THsRd$3)yv`5yyxj#GxA+P?1oZKARC+r*cQI_@y?As@tQ@d-sVAdZlCOFs5Wod=@ z%xhHIx^2=~pR%<;)9-G9lP@m8$DAxW;CJ3XhFSNvS6U0S`2O$kB&vH$Qx_Hth}coORr_6AxujsJMnz>RD@nll zJnIb|_y-@K!;HJzDjh%${~m;w*>7ndurJuBip(&vY7ysF@8WXk{inGz&belidG)f` z^FmcKxape2Quhi62n)}TJx>x@p|dZp(0jBh3qS)?S3}CXe?->jFA~dPpDKKbf&hdd zX$4tdC39YrTb-6+kBpCfbmQy{_|s6Oy&bu{)=I`_1i;g**P?(L&ugwM0HLem;lVy& zUld`DOSG^UXAj-CPaTGHFH=g-OxRcbt~vV%abM*L5L%o~{{_Pb7EogfEa~7^BtVlh zHo?6Q|D$cjwqqZ#FAB3rO6C|#U)2v;Zo#=1?#7t=>h3(QuEA~B6lsHJd92oszO!Bw zP-7P3MLyX=1{o)CXxdtO-7zF{`7wP1)ufC-m`KF`8~@&L@|wYEYeXm9OVc;wR1Y}# zEKZcRW83kXinPj(b4=Y>u+6PD)QZ|~AY%-^5JfZyY@ z;PdDdZIdK@o0qvm3R~qoy*wCm|ueH}s?oID#m1a>0T9L-7zgcs8c71)cM1bdal$rYTd~bX3S8@iZfsP_S{QnG z*)Pa~BBT^>#2 zAY?+KIEckR-!2*1bV|miOw$ZMg>zw8SZ12;Ph$ywKdCYb+m3x0o9?G@0O6eD+>Z`- zebCxew+)ShB&ic(rs^xr6V@8jGPh(=fMob;rSbsC=AXTg{3gB9f>Th5Z|;EgKYJ7l zATsCZeasTPvb%VWGp0;zm0(qxy{KBh2-_cLWc~sZ?goAus350!;UXb!qGGE2xxkZ` z{=XyED3SJ25l&yj4d03P0zXZ>`-pw5=o4sBwhs>EEWEQ52K;5S8<~&@AQk8S7z5QZ zy6${zTIN;^R&$Ih@GNEA0>Fhhd8{HUim%q%h-@J*xKe+>h?=jE(6`p^=@bJPhz_Bo@5Pw$X6Mu`BiRp=Vs11I+;(f>zz1B9!ne8IW23c8yJ zKZp3i_|wkxIpY2mg@ET{b`~7UhyaV2jW8)}HP|QafJ;x(1YHZq2FFO=0QHTu&+cqJ zSf8>{(rPphP`3>e`^Xz0{M{eVVg(IsNajW8xo0Ny+B=KWzFDCAhXtI=h_CR1vYofj zfzC-Q&^T^M^fQ(2sfB_eI`B9OOm2C|7oaHHEQtVO=Bb97w^=XaRL^(v1PC*YM;~7Z za$9I|#NpvJJ!mz&{7`Y3+_U$u;Kva6eDG+T;N+OR3*HKFXOG@LgIOt?zz~bRLdhkr0(BK)4P>voPD&ZRhsWmKdN;3kQEg()j<$ z3m_~$7h2cz^xaFCeSU2rcu=ONS5hlbQ2;%C{}M)Ba4rN7$|`;{y!a^0I^z50By6A% z8QgR&_cUJj!jh-0$M#V#9UxYT*lM(PTcew9neqS#|L@SVc)_>VV1{!nEebUEo9BZ^ z3% zE51hhef9?uNC(0AFi+4X!SjUh)v)hQi0szw!z&mSomf-}y3HYsrS^#9cjn^Aw&Cw^ossr>Jb~*@xHg zkiP%n@`hEC!vB#h{nq00VA&mT5W1 zC>fwu=9;z1bHhfQ z36vnnrYq0WK|j=1B;zm#Sdg%ZS|Y4yl(ndSLXr=txs0+vCR&Y@0H7{b-(wb5udDm$ zepBymeqUa<_25C_Ut*?5hlcVLBB*tFudt1(``Lt zqdY#eoohH0ndmU1f6Y<>VtIa@hJ8A=pPUwufdJ{>b}jQ83-RAyQk`?T)lX-C1e+_{ zDLgu%OF%!&mI1T|biH9cW&|WohA+o@jkO-hED&Kd(K)OM< z*@OCwz2p0o9xx^FfQ6y}!h;bqKRi)ReizW5pVjxV6BLMO6L^4I$GKgGD zKeay19R{7Zf6;NYjv=zZ77?pR1`q~IjT_e|Kerxrb#*ubBs7pN3ZQZ68zJ+}e{}0X zI=zNhAKubuY2H&vAGqsat&sTt2@zi7)yKEezxQK);SM|Q-Qjb=-<77!xBr9DaURrN z=||WxfV}g-Ves(kcX4@%5aC?ocZeAuSb#^|wWBOZ7(j~x>8AQ>^~iI}!NHDRWew1v zTdQGioIlJAT0`UoGtaNduVB>Le40gsg=1@@_QHY?f0%W_8)k(R*6dIprgeD=ns z1UyvHb{s^-xG%IoeUltPd&Bf?m`pX+?NVRT09q6WwHVS1GqI)`-jhbs6IunHlUQ69 zW{~1ci>->PB;-pn#HGG}4(K0T0CSG71_Sb}{>R)r9pu#ePjgOx%`2=!^QrnAo)6kb zEMfW?PZ)h_IcOZUfIhsASyFLDV3x%egHfGY0GdRm=UreX0ay3TBG5cz#p&$ALee_7 zC{IC5=dC#fTZ2i616apyfdL_oq770`i}Q)kwy46G_+S|UinJF4$hI&%3?K^8rNWko zKOd3&tsFJWAycFcp!3{V7a9jOB@NfYA z%m7-E2auHTZ~$3>X|M~md?J7Zz=ImV0~G2g7#@swC_qUBpm=YrWiA#T-58=+glI)R zh;WYagw|dM=G-K6{|#k;W1)(40I8@{Yhci>5yn9pXBPUF2SBvJ*H+PqD-9m?0}P-O zUIZX3!SGOkjuL>*@&H*%2ah;Fr+I*Upzj%L!SJBPLCcdLAnD;j8I%N&I6OpsW9?}{ zTEELH3b`+}_2YlVxv#I+rZK%ERZ4)wdw#-l>iR~=uZaF zUsi(Q>2t(_0JMMrw3-7*faT%g(c%FjF<0NS*2TjUR5CmiAOem}91oB%cre~Eh_VOE zfHx-s22`&c1XNYbKu zbY~b-6bBDl9JD;*011Hy-4zeenA03ULg1kQ5tn6l!4+na0KFhUl3JcZ0EIaUhKB>l zfdeQ(44_irp^A3^y=yCT^~s01=k8f}8b@a~_cf%Af5hEbb!Ng^_u4(%fj4pGbz`Ca zb!R$hMZv=ZH1{M2kWhFiK*tuqPv;mw0^z}UhX-hO0f3~12VE8gD1Ive$Vo6f2upr| z>?DRqmx#EoTVLjfYNhyXfgBemNS&$iI=hyx@99tu!2 z0q7zDD3JgpAv_eIM2FnI2@cR>_ssw5cWa}IbKX>~X+5FtE1w&y+ovU-4b$HEwB4_x z(|pVQOLs@!@P+|F_F(kaLZ(GvbZ8L_J7Nn9Pp^mXkJ^Fp5o=CIZ3^qy;yfKkEdk>b zocf7`Eu%6ygRAXFW1N;=~4GSXz zU`VhN3=DRFffrDYFfb%fgF>A06v}Hk3<~2kID9#bjdX|QiMzlw$^!;RtboChsFg4z ziq|R_5-l!g7#hPAi*kXXaV{`C-W_Z&@1*NQ!{S{zB@iXLGf+qp$^S=?8?Y^-q?x+>kuz;fKM73l{)%HwOloih)?&!PU*;_$LM?F(MP zyI|p&^q+PH$aU0c=q+d8CZx?B4@~@mOa$0t22PXmz%Kpl4u=&O*@JTrgwpVvi z*` zVQP?Psg`Fzk(P%OTAUeS-V~al7nT>YJo&6o5te6AIA?tZhp(WPXL-_ZU>fa7txwUG z#~Fsi6k&Oo^+An53v^`{U7a45;8vvN878tky!G+SL2IYsI|Ym9JJo4U=em}x?kj&V z-JJ&0Z8}&F979sRY)MmkSq~b=bt26(3u(+_cz7YTJca}&X=0v&>pVIqtYF4@FBo%{ z#6YF2^N7bhh0=5)y!U-hxG(4hEtV?gDVVAc40obdXJEu~sbZdj>pTWAj_~uPEigH0 zU5POdRRWEDK4Gax??23QnorQcmFG6~TGx{~crFMKl32TT`=)qvSr?5H3l1CHaFOUs z=*r@xdV{}R=!79S=&nQn34kXbK<5aYCl*K)Fc-H-C<5sGV!`lWpp4+;14sZoB7iP$ zg~`dJO{Kv@q?hQJgKbdrHa&}TTf1rPujz@b+?_ziTVVhXO<_&X1uCpx`Bf;mHrs3c>K8 z4C5SO0RnVU44|UmNpPgr2ix4mbtGn9U23&%+=kXZmr?Ls^vX0xXuJB|+iH_e{fmo> zC9O`E^_Q(U|8ociT(B1m55_wP(98>KIe<K8 zyE2S(5(B6xaERL?@aQHvaqB)ietJ|(t+_t6KCS9CEsNB>#FU;|A&%6}U46$p>S0|; zn!DTp!fbB%-)rbZQE;S$2ZbkuQGm|p0VEYXB7m&n$1o2LpbJX`!&3+#f$)d`x=H}L zL;xzn@*q6a`XoE$;yAUp8SH^`S>Dzse=LMs{IzPeCC^<+KpjC{*=^Tsd4Ay>ZouLs z_7PCeLjelm0kRSV4+V&r|8WGMxlw);AffP}#X)coAX?ij5FQFpJOZ?h0JJ_2pn~uu zIb~~;zuV1kVgi}N??}SlmX+?PmY4M@l#$ix(5xk{8MK(7F+wML*}LNQ$;$H^3lSom zENSa`bWbf30i-3R+Y(RJDL~;x03@KEXAl7h7YGMMuM`XqJu3(Sy2b!1;I=40NshUA zuUOALv)?x!N(1Lk<&}ArWQA~zpnlDk4Lgu$wQhlvR+ETc?f`LnXRA1fq^Rf7J-vul z5n?HZmH^AcXIt9A44`O#df1aJm4s+{@&P0O9tu#xat4r}2p|zWWRCix>pE%)o$SB& z!?|N~Sf9;lRTVircq>HD5mIST6OX{}rvB%=;C@$E7Rt)x@vY6cCWR9!>8?5gG>ZpF zhB8zNP=se5Kr&PkA~?7;K>-p74?Sp#0`v<^x$GwbhlfWmiLLqgjElrMV{_M-&81wd zPoaQXg)@JhYjtg|r+Lo$K34OKLnN=S{ig1W42~qb>R5i744#q0W!}Akg#Gf z5kN7k1j8c&=sE{bzXI^+lGkh6nmljYr;9XgVg#%`4M=r}1 zkB8(15MK&{lUiCCDg`LihXCYCwq3RHgM}T5@fP_~PB0#t)S_mL1;NbzXy1pHz zUSR+wvbcw2%jyTrb6ZW(wWO}AMT3s?elIx$&ZW6B+;nSFqgnkfXcoJ!pXf~&v{Kza z;VQK}0pi^mT7r_cC$N4Q0m51yErIY9256Z~m4pZm0yJ10ASvO&c*ii22gskE&e0e5 zx-KsN)cddnbhQ0`BhC?(O(^PY3Czfw(ex1H`*C zoVen)Cn!K+>k0uRZ6%=&0d;&N0VsAuK7fQ2gHeDk?}Wjzs|3S?GD=(lRw*1ndWlZB z-jkzo$_l=59djJ#hRsp)igaDYxw3jHwW&|VTS0pE+&eQAtNV=zMDhkGUrbcQA|aNa zViloTh?@u?A!Vo>K&$fsB(#!nusA>h;lX$(4g2t1lW)}Xf5EQ-vDI-Q$ZDy`{U zRiNuC$_iCwOW+M_HmunmeJoLLt%H`yCYPPT;{L8|$NL9m{@QP|bbs)Cc!EAl^7;X{ zJi#E`9`w%GfZkcAbBn<+XerDK^Mi>Yp3pC7G0_s}cb+Mj*HTUwIO!8W3d$hV7N$h4 zg`eXB>B(UFVRrPC45|oT_ViX8PQ)rli7DEVQ;Z}05a$LCS9ZhjcoH|pI&q3aEeE4` zrUXvL2`e}yiYaL&)xcyISbTj4%(@)|-CH1;^;^FgJWX%t6sxoc&-GLQ1-6ph+IVx0}#d4ytT60SqLNUXseVpoy10dE>E#`?l5p9Tov`5YR!ak`o(E0Usf z+D>B~)WVcsMOvJ)0|L@dXFFfq1E#+$zSF2(GXtCpHYbf0A?_(H9>NvPruEykRC|NSjnmJ?sGvT^&9F#0Ub`(~&A0uy7_!nhC*B6pY=>IqKKzrv!( zKp0Pc#zVlxg@=JtMWDQ3LL^g^7fhsD0~4dyz@+H4uq0s{I4AFcsj)sVDRwQ9H%y8{ z`Otf_P?M?F!Q=!^Q&5R0Uzn1_32T_wr5vG^gi|lBC-Q@-mzXYdns(VgPggcjO~1O4 z(=~kF0JBpzWxEh~ChxSr*P>^qK{yBXo7Km#qA8o3YKjO?zUoC5pf%$&v(}nwCR2~O z+%igDNn#=o!RJnoB(V>E=^8#u`(8tmo#AmOT4xs#H)cbNzz`)LH<9|mfojM6=h3rx5=kydl(Yu z40cy{!H{@oS_q~W>p*wYMZ){G;vMrX4)#lM;)KC65ym_ii;dZ~IE}%>XI#zLoK#n2 zcnWTH(A$A(aP)U;)UK6&pFMMuaWMC2@xPX zlMv74k)@JwFagMx0^}lbz^uow^I)ou0WSjJUXo?8`V2@yv7 zE$X$d_bqwuUcGvCjqcm0h3JsMr0YbfZgkO6UI6jyMEWGi#h3?cdC>9*g+~_wit(Z+ zf>D5Es3aUrEDzo_F(ko7VtD%IEfRjxII#fKJjX_mG1kJduF;f^c?&iN)fFvhmNYX{ zWgTeAI@FDHuy?nBiGSiG@MrN!3Q<`AgzA689W0VJ5r90X+Y(wy$N{v50c0mrB_UcK z5kLjuNhlf~+@8=&UQVksyEuSz?$u_t{+wP1=47%}>)g^@T3G^w z3!Agjx6zK>w;rc$f$*r- zRqd`)Q>7CNnCmLiLSb3PM0Hp?*^WWfvtGMq2HiGKzMw@c0lify)h%0I0O1O`;ol@X zi?$V142Id32%t!NnJNhp91bAY;>%EzoU+mS;Jy}#cf#tnX=sdNsM?}#4_edAjcuLE z81qPKiK?@;2;9hPOCaio`!g69bzV7QZJ(o-Z*YL{h*^44Rsm~N9sn7!`_AwfTxsih zcz|%B5CM{N>A7>pn+}Tx`Qn)2*s%{{TQ;V(KSy|q zT5QDCP(1ytl}f!D->NpM(-X~blcC*4ciS>03WHkymLYMsR$c(n?Cd79L{gMw;93u! zMTh_y@Bj%c21Cmu0*Kx8M?Oqgewu^7$3VI38q=62`rnvRmsLl#CypH*LvAcK3M*u z;3+CDs>ODRTNbcJy_*mGc8r?uxZ{0J{QLpq1hhaSGkkOS7|B4uH_?>#y`l&aPI74_ z8F&se9%hLrf)xTt0(f-U$zVDpvl^Q0o`XlM;7Mibd**!j#&y)mCI;V*EyC)wWMft9 zbB}kVwMI4A+C@|P39CV4qh6Tq;~=&etvR{RhN-75f_&c&j$H}taEDL4dy@tvNxqmC z18WLV3ELA05UwQ^0;m*ta65;@IG;$YlY?=NZoED8KW7KC{&IV(?m7NU^I<)vGH`m) zF{q*PEwegJ*%;OMQmu}p)~EsV@9ofJS8rGc7s=FdP`eJ(HtoH3;vNzs-KSr$c4Y){0F$KOY>eN6Od%>}g&Eh7L;yuQln4*HVcj^pPdW(>xw-@z%r@~_eU4i~k8RWL z_gFc0?>B~h%osT8w9lNoYR|@^fzs+o7aP@K*+ok_h;>!J!)%SWNVOW()9<`=sC)OV zQxp0evwW*VCJ#^Wz+-CJmxbgM2b45ljZNKIoPCjtgcP6zA9^Ms1xO4Y9qu6SPsG~f zlK1Bji$m{4*CFwh#_5I7Ywzs0UDuCKXlr5YLHc4KvN&}}A4y*sI4#*2)cKNQ9ii5! z8Z*^(Ss~QdG(IAqN-@{gn@F?854|RR<2-6>&z(PA(L8DS9w%6zSSEzShyX<_RIU+q zb*{Pi^MF*(Pqz2>!|c1i(62u-x?Qrc6a>pD3a|6n!Q@153Xpz`!zZ0+yIdUvCe|*8 z#5TD!K#t?S!vgD)d+nd|{yYDPS324b+uC$cx5?Ocww^;>l`3a(I%)#$RH%s@+&69twDR~x`*&V;!krzF3hsU|*4v!~_ zbI%zO@1A3EX-kgd_1(E+l2*frBoF$xzK?Q-!RH;p;NHy8uHez)y7+7{vt*hEiwK=g$s;azI!U@u7 z+_mkH9_B+9_I01K&3Mba(4l`UO&fmN>7{9eJ6K)Z3iGdTfk}V+!{pQen3}#BrrzBG z(=xXftEm~AVf>YKU>5HMrZJu{Cc+J7gnPr>3qCOX1WCmY*u3n&ZGM`b&rhM6PG;NG zruJXdxJ%oi%+mCs)`ql^S{u@4Y&+{ibJi!N#gP+8s%+W5KFdtLW_v-MDNJO7#4M8t zD5Abi^g55}ILpvV%fWPw&f3Ypb@Q8as@JyZvAy@rPSH4Eo}qcj;=b1L1^;QETKJUc zxz6cD&$Ul4e5!R~!GD^EE${ch*`klWX)~I*u;f=K0jie$!W&H2N40000UbW%=J z06=*Idw;(`f4_8cc6EAlcz1kAQ+GQ{RRsY~J|tv`hGYN$010qNS#tmY3labT3lag+ z-G2N400YZOL_t(&L*<$2cH=Mzh1*HvW%hla`2F8 zmytK4=}q|}s$6dHQZK4Hqc35J@Vo=yO@ilxG2LVE{B6uY!iymrU*LL^{ZuSbcsa`< zeR0)&-KF5)A48J8yzwr z_-{8>{?hOi!G`i=K=2>04ezY^bKv>J8OKnBw+*(3SI_FgNE*&)=3UNn(_YjN9ADWe zo0<&XB=}bwDzCy1>2Cf{8V&diQ*UhU03Mc~TJDwRul9MI=Urh{16&syDUY>BKcjx^ zrl~s~OB6PPf1lG{-EQK3zG2YXleBhq;de9oauxcO@S#}XMekwN-ZmiR3%vR)c9@|( z%OCi0<5nmBF{01^JjNKVg|~-$_biCupW0o~of-UnE_Xy`KCn++3%)+gP={dGVH|Q+ z!8gvHMZMBQGtTgqU!w3i^Uv7W#1mI{=d((AriBt}xl7gjmY#&BPF*Z4coaUAJ$l_4 zX&)17<Z@HTGH68dm+b4tJ&S(?syvDHXeEv5m=J*MO97!RKdXHAD>R(}{-P zb^L1hSn^V0ur(FV`a{aZ@bJMkeJb|e_y7L>`T6z7_a)Sx?UIc0n)9~0Vm|Zx`W`i; zO=@!~`=Qw@&%V=JD!l@qn%$jZ8g8rfRl$pEeqZQD&FE#d-z&WKH~K2?ce&)Dd$XD^ z@_xVUTIz>Zi6h?b)_S|=g=U%Q(`3Kr5ad4qFAHEE6^>mub=@Aj+<)>v<4RccjRgiDKbhrrT^fOOXqN-ec?r!*_w(l7t_ z!#neSc;>k?_nx^q_netizZ3aJTZIsh1`hxL5UQyvzI~zz|8<;aPvegAdh-*(v{%ql z003&@@$W3Lp5{!}s&BObfY0mzKu{PzwdseHi^wY*O zD-9LJC;HT`U&8~R2(G)T5f}i#2maU5CYA&4007!?HAMw|pM`^LZ;0u1OH;01k;Zpw z$0?VVek|I>bf7>H^=k)49szNAfpi#tOE5kz37;UE^RJQi51tszejTC20@EY{qCD!H z&oqUf#lYDpjgaqXk*Y9R@JLHw3(3bJc_aUtjV|tad~Xu>Fit>#o$xtOdg*k8k5}2|G z1;^AO7Vipl^>BEnTzGWzv?WboC*(}njK1~k%kwb~Zn>@ePQJCRH1opZ1`_9%W_&yn z(J>KGBU91#DuROaa&d)}2o5qy7%ZsJfxZ%b+e|FYBmhjh!HuwOje=Ot;qT7xeDhdc z@6~r(NN=-5=9g5H7)+0ekQ*2fBI7xua6%%Yl%dx2GQ7(_?Q@X#S9duXh|yt4>W@@Q z?!29E?Y~^SmlX8;c>%s`9zRail!+8MpyHNFY>o)&7_ z^Yao&p;bJ15rTKjem82-0{R&RX>>{6te=os&rr_Wu+YVlIyeIU?4%(#uI+P2AdPSB z-sA4p`Wn`j!zawPz9%So^yAy>3{&9KXJ;$=RRsM4kIEpHTGH$!O~Qw(Nya#G0|vQ@ zbBH22#SEDxe6@k&4n=jTK#H>1qHGhibpP#nzvB^;jFAau!A&g4nVaiYKK3Jl{K@V~ zkJb2LWXD>(v(WQcj$P+cY{i*!lcDpUdP3P1U#wK|cdLI+mMl~=IOT*(8#2^buKXnk z>$Us-lYO2>=6E*z`XW}`Mp6TNIDza9)SeQ{RlEc*=ehOxR8N9$-2{GguQFIe*tj`) zsIo1}KGzh6;-M#btu1fTcwjN{PdyJl6cs9*&DNb@o8b;p&vOw+j7TRMwrzFiI_ z0LPm4#68dJH>vV$hJ6aw7~_3DKS^1O#L;bOpk(l5f9YK|isvAinKh5lq*3V8TTk0t z#ETpTOa=J_q|aWHo|vad>?hGDw(|&Z(L@`3xp>b3MknV?IBL+sZ> z*Ev3#{h(p)ft6H}?`Smn;Lki{x3CD)Wl^B<64f;~&O-5^QPU_k`LvTkrTfJ=4nzEa zk&1s4A8@MQJBv)aVvWZX5yTo@#}E`CVl)=Ie4?VmQ+yP4m-cAX6~9|XDaT`o_GPu4 z31w%S6IA?I4CqWq=u8bsOjQ(qd59v91hL|v*Z81!uEsYtkRKf``((l#uNq0?6yJyv z>ZXK+mH@}8;zEGt&uA_%(>F);_r0%-MO&WJGX+J8eioYG%Y3Fm|H=Rm7p|vYW=j!&dAs3_mI)- zu$iqKstNS=`xWdga35+j)qsiSUs)>Bt}CA^xUrB6B`B=3*|%4<(Iv5yoVh1m__9gg zu;x6n`2FeJ24kt}sF35}`tvv51HDMG@|&_+59{uI>@vkUe8kO#)_}5 z-JOl}naR?S`S1AMz{2$-0Xp+=^o+t>VP*igxSo5#lXNLEd@}$IgSv1Yrbrp zC*~&gH3z-i_v@T9#WJ2njj`i`5eDbfl(^7m#f-S=Pk-(L*8F*l-Ni==JZ+3#O`;C; zl0XYIP8kCCRHZZJV)Zetjq(}{zL-I6ZFI|cOhZBeRg`buUm#)3tPDZ7M=jCZRqZ(= z-}(xNsIuRXVP(S8{~mSNdFw^5ZB13!jJBV@07QlcSO=w-K1ZFN?1ZPe@9R!}(%5<9 zds?GHCFO{BKqw_>;@tXUqrV2@c<$|nH+XmA>-BxWlB+mHF*ba;RHF|`L5plKk?`!p z^}FpYR-T$>e$ujnd36QdNIv}jCmAgpAkH^*Y>+#B2is#6_|PpzH}r(Psp8ut5U!h( z@UH|);$IqWZILw5B$FN#=CxAShtZ=DmlNz)lxP+Ij=yhWXRq*x>asllYcn1wSE7UN zxNX04&)BD#ql~DOv`OYVI4LVtH_yQz^SQbwCg9EFLpN@?amqsozyJKCsczQv>CVHQ zTXz0V9It}#a)*GI!^K_WsWiMseH|_)UsNMqS<$A2&uri%EHry%9Xo}@3@8!bO zpW!-oUC$9D4lZN1t|dE&*3TDB|M$X;>+-X)g3XuUNjH9097uf=hQMP}6V+P<)Mn1L zHy{u1rhUe(a>2?WW5PVC^zSBKvzm6`2mVOlNlyE_{L{;o%qmA>$TW2{?#+@mGn z)>**PH=Hdov3tEN8)7#K`(Z-!8NBUS2bcS?iZkr29#=s_6IK({cHnYjqfdqlU34e= zChRrr(7vZ6Zbt{D1K`q^lZGC;*5rGnS#GJpgBJW{>FY8rPJ2!y`>NzfIbyItA!~0I zxI2rr&QLc5H_2XTpS&O_*jmj--!4t(O0$`3R?aJ6evoT)`IB@0sp1(_*p8VW(ILeb zwS?8$=Z49bh7Y`%4VP{pn`W-I^8MfAv~2obV)u&+zQoS9xzXs5#)7C*UOPUJP@<>*btano_ z@+r`I&Ow3qJX(?IIqSSlq(!4e!+iCeb2_NS8!Lccm%4dc;vW6Qgo=D=snrmFS7%w= zLhEN`gP5sy&+~#EC3!L>OkEI#;qgJ~B5O*9X?$i@mMO@HohEW(9>qGb#x^lq6JgV9 z@HQqUXl7YFs!M=kY*+U?WT?E`m2HXWD6l!?$>6=3jT$E{lenf?U0A|9+3fmw(m#H8 zJ~f{uy$6buw37V(LV2C5U+2SB&-o_?#AGL6^?&E@@>+3A<0Ka{igNrCsXPA@OhbN8uhiAWON*!_mB&e!F+~p2H;f*UX=Et|Pi#Ed z3>VjD1`2xNvx#YPA`q~L_{P7D_fPxFXH+Qigwj&7l(dbC#ou>WS2aGr&6KB7^L@H; zOHICrKzfc5^4Dki)xv+{yTK>6`iEQK$)Y-X}xO*XmAm&8nP_s&0Ov2F#|X z??De(Kf$b(mPWkt|M?OBbfQmeWqD>~`x{{84c$7;eNhD#2@?22!Y+;v?0FgLSD9rV zg-pq~P*`piV9RI9v;o2K)3_-O!ZUR1dey-PV#-=sT_e1Ev88qOXG-n4P{XNH?FPyM z-2D~`bujOoCi*D@X$TF8jsv7upGK0^;Ws8<(^u|zo{i2CsxQ4Z`^0L7l->xWWNek} z1BuQx=Q70=rdmN6uDR<}V&kA2p(P$(p8mm(a>;990(8 z5Je46_2o)FO$iDHX((MMOt7o^Ztw5P)@d~VAzwv6CmtF(G=MqK*pHvT{if9wRhY@Y zCsob&FJkM%k=#aVPQBoqk@8B?w$Rk=WNe7{dP`#lYC3yXTLVn zx11Rx3Iz(bj+F&v%lt3jq|UDhe>&lVB7ycffy|K>*tK!4E9)nmy=*_2U=kbkdOoP> zS%?O=!8bPt+r!n4q5_uq69$uo9*l%H%t>$31#1#!;&5870-RMdAoLxpP{WDn&-y#B z4GI!**vQE(YQQI7!OdrfSgl3goX!ro?&GXw)CQ=6F-w-Dv0^2n9^f$D20KZF@Cknz zgg@;tpg;qmS?Flrz^vV;MS-6kz?c~472vs~Df_t3YBSLMwb!3{`QmvCMdAqq+;trl z-OW?;@wITLtUWq$mZ)}`2*C+y`)05lT7tlzh%Y`OQLM9S4-w<#<`)v|^TQa#_Xbyx zE5vk_vjU;g%kqB92p>R~;8!kEeBa{(7iZ_`qc;@GSRzl^UjIqTAE)wZe{u96m}(vy zkSv~txFFKRwIj0jIl1)pa9wM$42hJ#Zq8j>9GCSn=H$!mc{dpVg|6bTFnH@!tM!L< zKiT%F?LauC@YtLb1>pu4Z?~`~51e+dIiVEQ z&$N;Pcm0fHx5mbr+INg5p4}t(v@#wq8m4JEsSVUbKJF*RCV{@=jjdGIU74ShsB6o5 zup=~cN2VP0xcK>t3rldyrbCK8GC4RH2l6|?VD*=zg*nt#i58rpi>MyERj9CnqHh0( zbLy=Y_VQ<=z$=Sye-^_4U?TqY)E2!7nx=gFq8ahS0xLxcv9zb?A}6tXA&I>ZxaJUQ zu?J8#48hf8m%m+M(w^MyBv#Q_;QJm7dJPgNDV{5y74z5<-h0_9lv`ru=L?PKF@RwR z8Xvx7u6QMOK0KAUWoruVMuy(IsMelv49R=4eNgKW)Bs}HlDDV9Z7`prejW)4)!G

    vYLwm%CKZ!D7;)=iPz1&HTUMt%qH19s@1c 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/logo.png b/app/src/main/res/mipmap-xxxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..875789ed2bf835e83e7560186939804f2d7b55c0 GIT binary patch literal 1619 zcmV-Z2CVssP)W#D<9~mDfPjF0etv&{e}I61e}8{~fPjC0e}8{}fPjF1e}900 zfPjF2fPjF2fPjF2fPjF2c6N4>l9GRae}#pGfPjE}e0+d_fPQ{{e}8{|etvm*d4Yj} ze}8|N$>i^E`1}9>03>u$PE!ECuAfhTK)*nLqn@3Zp_`hSq#UB0pz;j|`xjOtrkbUs z6-kzeNS*)y010qNS#tmY3labT3lag+-G2N400mb`L_t(|UhSLLV%s_lhV8btr0zD| zd&KYmiq!&13<99+R7yD*cL&(j z?Y%@j`W$1Ex56v8^YT=@e%uVOr=tm%Xf+mNrn^q6QMUd52Ee2{2J(*&6=j~c&g_bzH zoIIH$kFqW>wSmTJ0qC1iPL81$Ofj_LsCANqIYk5lb9zSwq5me(M4|<@#X!R#{GIm# z6>DtTw%rY3O&S!+V+E?f zDuEBS0QB*;TwZ(cPV#{yd|g_h_Zlb;HU2g9E?s`X$=Yr+3SAB8aDq*q-~)79%uQQr z3qU`t?ehM#X&OSXKiB1@jF%qZIL<9V%^L-pIx-z`zf#U8&*O`cjRJkSwn9m$QKC}+ zjwyMht>>-cnk>-VkwRAoN+R^48;gtf@@E1K{hsRqm!E)wObU+gMCa7j9Orqceqr%= z-0u&EBkAXsfWEs6pd#!XP;xA%N%Xis&CdZLT?AB^IjXww+J*})8|5)jAq@Auj(EDfB{(sMooK;O#pgNqP226OmpT z=s7#3a-fd4?L|QOJs^3zM0lP~ab_+JG<3jmI0Cj1lW=!x{5O?FvRaVE6U;#jX`4oyo zr(bBKH@#rgd4&qAC>}{)MaV!?rGn1`P|-E!s+@raf2XShMI(LkaWeigj#n35!x-g} z=06-(fLa%R;ZL-{=RY?$Uq1z}QHn}U$zOOZ{?JX8 z!r)lK5{gn$ndSBVRdtaHbb&C`bvd_&;vM~hRv&T^ji?or9x|8ZV^fIsOS6=RCY#UY z%|76gd7?wgBSfX@@s=90doVe(x2mhZXTJa&(lM6WSAjYd6A!{sW;!HJbQP^U9XxxJ z{HJr6XyxhSIqZX_=rnG{;|a;0zNd57ex-(8|IrxUj!wJU!?2R>E6%(u{sG*;4zSl2 R8v6hM002ovPDHLkV1mfD{5t>u literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/logo_abbidot.png b/app/src/main/res/mipmap-xxxhdpi/logo_abbidot.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a4d03801ff73ad19f0e67c78ebbf37f62a6a88 GIT binary patch literal 10193 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..1285489 --- /dev/null +++ b/app/src/main/res/values-de/strings.xml @@ -0,0 +1,930 @@ + + + Haben Sie bereits einen GPS-Tracker? + Noch nicht + Ja + Hallo! + Willkommen in der ABBIDOT Tracker App! + Registrieren + Anmelden + Willkommen zurück + Schön, Sie wiederzusehen! + E-Mail + Telefon + Passwort + Passwort vergessen? + Mit WeChat anmelden + Mit Verifizierungscode anmelden + Mit Apple anmelden + Mit Konto anmelden + WeChat Ein-Klick-Anmeldung + Neues Passwort festlegen + Bestätigungscode gesendet + Noch kein Konto? + Mit Passwort anmelden + Registrieren + Hallo, + Zurück zur Anmeldung + Anmeldepasswort festlegen + Los geht\'s! + Vollständiger Name + Los geht\'s + Wir haben den Bestätigungscode an Ihre E-Mail gesendet. + Bestätigungscode + Weiter + Erneut senden + E-Mail nicht erhalten? + Zustimmung fortsetzen. + Bitte lesen und zustimmen + und + Nutzungsbedingungen + Datenschutzerklärung + Absenden + Bindung + Abgeschlossen + + Copyright © %d ABBIDOT All rights reserved + Daten + Karte + Profil + Meine Bestellungen + Hilfe-Center + Feedback + Einstellungen + Einstellung + Benachrichtigungen + Sprache + Konto + Über + Cache leeren + Abmelden + Feedback + Fragetyp (erforderlich) + Über die App + Über den Tracker + Sonstiges + Bitte beschreiben Sie Ihr Problem oder Ihren Vorschlag + Bitte wählen Sie einen Fragetyp + Bitte hinterlassen Sie Ihre E-Mail für schnellere Hilfe + + Bild hochladen + Name + Geschlecht + Geburtstag + Standort + E-Mail + Telefon + Rasse + Gewicht + Höhe + Höhe richtig messen + Messen Sie vom Boden bis zum höchsten Punkt des Widerrists Ihres Haustieres + Speichern + Tags + + Tracker-ID eingeben + Aktivieren + Aktivieren Sie das Gerät, um fortzufahren + Nein, danke + Aktivieren + Mein Tracker + %d Trackers + Tracker + Mein Tracker + Autorisiert + LED-Licht + Zaun + Einstellung + Neues Haustier + Kopplung aufheben + Netzwerk + GPS + Akku: %s%% + Tage + Bluetooth verbunden + Bluetooth nicht verbunden + LED-Licht + Aus + Ein + Zaun + Zugehöriges Haustier + Zugeordnet + Keine Haustiere zum Zuordnen + Neues Haustier hinzufügen + Familie + Familie hinzufügen + Laden Sie Familienmitglieder ein, den Standort oder die Aktivität des Haustiers zu teilen. Familienmitglieder können keine Zäune erstellen oder Einstellungen ändern. + Einladen + Einladung erfolgreich, bitte benachrichtigen Sie Ihre Familie. + Zurück + GPS-Aktualisierungen + Ausschalten + Zäune + Zaundetails + Name + Form + Zaun aktivieren + Radius + Fertigstellen + Aktuell + Anhaltend + Atemmodus + Langsames Blinken + Blinken + + Mein Haustier + %d Haustiers + Haustiere + Meine Haustiere + Autorisiert + Männlich + Weiblich + %s Jahre + %d Jahr + %d Pfund + %d Zoll + Über + Bearbeiten + Aktivitätsabzeichen + %d/100 Verdient + Alle + Alle abbrechen + + Zuletzt: %s + Ich schlafe jetzt + Ich trainiere jetzt + ICH BIN VERLOREN!!! + Niedriger Akkustand + Live-Tracking beenden + Live-Tracking aktualisiert den Standort in Echtzeit, verbraucht jedoch mehr Akkuleistung + Karte auswählen + Google Maps + Gaode Karte + Abbrechen + App nicht installiert. Bitte zuerst herunterladen und installieren + + Aktive Zeit + Ziel + Schritte + Distanz + Kalorien + Tracking-Zeit + Schlafenszeit + Aktive Zeit + Verlauf + Aktivitätsdetails + Ziel festlegen + Ändern + Aktuell + Verfolgen + Punkt + min + s + Meilen + kcal + Tage + Bitte vollständig ausfüllen + E-Mail-Format ungültig + Erfolgreich + Erfolgreich hochgeladen + Erfolgreich hinzugefügt + Erfolgreich gespeichert + Anmeldung erfolgreich + Fertig + Hinweise + Berechtigungsabfrage fehlgeschlagen + Berechtigung erfolgreich erhalten + Zäune hinzufügen + Zäune bearbeiten + Passwort vergessen + Routenverlauf & Punkte anzeigen + Keine Daten + Keine Haustiere + Bitte zuerst ein Haustier koppeln + Erfolgreich gelöscht + Möchten Sie dies wirklich löschen? + Möchten Sie das Gerät wirklich entkoppeln? + Entkopplung erfolgreich + Kopplung erfolgreich + Gewicht muss über 0 liegen + Heute\t%s + Heute + min + s + %d%% + Meilen + kcal + Tage + Ihr Gerät ist abgelaufen, bitte erneuern Sie + Möchten Sie das Haustier wirklich entkoppeln? + Live-Tracking beenden? + Möchten Sie die Daten Ihres Haustieres wirklich mit \' %s \' teilen? + Möchten Sie dieses Haustier wirklich hinzufügen? + Löschen + Abbrechen + %dY %dMo + Ja + Mo + Ja + Benachrichtigungen + Alle auswählen + Alle abbrechen + Anfrage fehlgeschlagen, bitte versuchen Sie es erneut + Karte wird geladen… + Erfolgreich registriert + Hallo leeres Fragment + Alle Fotos + Fotos und Videos + Alle Videos + Auswählen + Abgeschlossen(%1$d/%2$d) + Vorschau + Bis zu %d Fotos/Video + Bis zu %d Fotos + Bis zu %d Videos + Es kann nur ein Dateityp ausgewählt werden + Kamera konnte nicht gestartet werden + Ungültiges Bild + Bitte gewähren Sie die entsprechenden Berechtigungen + Die Foto-Breite muss größer als %1$d und die Höhe größer als %1$d sein. + Dieses Bildformat wird nicht unterstützt + Bearbeiten + Löschen + Keine passenden Fotos + Keine passenden Videos + Bitte gewähren Sie die entsprechenden Berechtigungen + Bitte gewähren Sie die entsprechenden Berechtigungen + Original + %1$d/%2$d + Fertigstellen + Abbrechen + Vorlage + Text + Datum + Doppelklicken zum Bearbeiten + Anpassen + Fotoauswahl + Videoauswahl + Bitte wählen Sie 2 bis 9 Fotos aus + GIF + Video + + Meine Karte + Tage + Stand: %s + Automatische Verlängerung: + Aufladeverlauf + Aufladen + Aufladebetrag + Verlängerung zu %.2f/Jahr danach & jederzeit kündbar + Bestelldetails + Zwischensumme + Gutschein + Aktionscode + Gesamtsumme + Endbetrag + Bereits %d% reduziert + Bezahlen + Zahlungsmethode auswählen + Neue Karte hinzufügen + Bestätigen + Zahlung + Zahlung erfolgreich + Zahlung fehlgeschlagen, bitte erneut versuchen + Erneut versuchen + Zurück + Abonnementplan: + %d Jahre Verbindungsabonnement + Zahlungsintervall: + Ablaufdatum: + Abonnement aktiv bis %s + Autoverlängerung aus. Abonnement endet am %s + Englisch + Möchten Sie sich wirklich abmelden? + App-Cache löschen bestätigen? + Heller Modus + Firmware-Update + Erfolgreich übermittelt, danke für Ihr Feedback + Erfolgreich gelöscht + Lädt… + Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut + Automatisches Abonnement kündigen? Bestätigen? + Automatische Verlängerung erfolgreich gekündigt + Automatische Verlängerung: Kein Ablaufdatum, bequeme Nutzung + $%s/Monat + $\t%.2f + Speichern & Bestätigen + Kartennummer + Name des Karteninhabers + KARTENINHABER + ABLAUFDATUM + MM/JJ + CVV + Bitte Zahlungsmethode wählen + Benutzer bricht Zahlung ab + Zahlung erfolgreich + Zahlung fehlgeschlagen, bitte erneut versuchen + Ungültiges Ablaufdatum + Ungültiges Kreditkartenformat + Möchten Sie das Gerät wirklich ausschalten? + Zuschneiden + Verbindung zu Bluetooth wird hergestellt + Konto löschen + Kontolöschung löscht alle Daten dauerhaft. Sind Sie sicher? + Konto erfolgreich gelöscht + Zum Beenden erneut drücken + Falscher Benutzername oder Passwort + Bestätigungscode-Fehler + Bestätigungscode abgelaufen + Registrierung fehlgeschlagen + Benutzer existiert nicht + Benutzer existiert bereits + Ungültiges E-Mail-Format + Gerät trennen? + Verbindung erfolgreich + Verbindung fehlgeschlagen + Aktivierung erfolgreich + Aktivierung fehlgeschlagen, bitte erneut versuchen + Erstanmeldung + Bitte verbinden Sie Ihre Handynummer + Bitte geben Sie Ihre Handynummer ein + Passwort zurücksetzen + Bestellung absenden + $ + Verbleibende Nutzungstage + Gültigkeitsdauer + Tage + Gerät + Reaktivieren + Gesamtbetrag + Abbidot + Version%s + Allgemeine Geschäftsbedingungen + Datenschutzerklärung + Website + Passwort zurücksetzen + Zahlung stornieren + Bitte Bluetooth am Telefon aktivieren + Sie können nicht mit sich selbst teilen + Aktueller Benutzer hat dieses Gerät bereits gekoppelt + Vorname + Nachname + Online + Offline + %s%% + Rechtliche Informationen + Willkommen in der Abbidot App! Um Ihre Rechte besser zu schützen, erläutern wir in dieser Datenschutzerklärung, wie wir Ihre Daten erfassen, nutzen, verarbeiten und schützen. Bitte lesen Sie die Datenschutzerklärung und Nutzungsbedingungen sorgfältig. + Datenschutzerklärung & Nutzungsbedingungen akzeptieren + Ich akzeptiere + Ablehnen + Keine Download-Adresse + Firmware herunterladen und aktualisieren? + Bitte warten… + Versionsbeschreibung + Firmware-Name + Firmware-Version + Firmware-Dateigröße + Aktualisieren + Update erfolgreich + Update fehlgeschlagen + Firmware herunterladen + Wechsle in DFU-Modus + Suche nach DFU-Geräten + Gerät existiert nicht + Verbinde Geräte + Gerät erneut verbinden + Gerät getrennt + Getrennt + Aktualisierung läuft + Vorbereitung des Updates + Gerät erfolgreich verbunden + Aktuell neueste Version + Tracker ist mit anderem Konto gekoppelt + Aktivität + Route + Haustier + Mehr + km + Schlaf + Live + Zone + Tracker + Abzeichen + Alle anzeigen + Verwalten + Aktivitätsziel + Zeit + Startzeit + Endzeit + Virtuelle Zäune + WLAN-Zone + Verbunden + Schwaches Signal + Akku + Bluetooth + Licht + Von + Bis + Routenverlauf & Punkte prüfen + Alle lesen + Abonnement + Hilfe + Funktionsweise + FAQ + Maßeinheiten + Shop + Abmelden + Kalorien Ø + Zeit Ø + Gesamtdaten + Std + Gesamtdistanz + Letzte 7 Tage + Letzte 30 Tage + OK + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + Richtung + Je schneller der Ton, desto näher die Distanz. + Geschwindigkeit + Radar stoppen + WLAN-Zone bearbeiten + WLAN-Name: + Sicherheitszone + Neue hinzufügen + No-Go-Zone + Noch keine Zone hinzugefügt + Sicherheitszone hinzufügen + Sicherheitszone bearbeiten + Zaunname + Zonenname + No-Go-Zone hinzufügen + No-Go-Zone bearbeiten + Datenübersicht + Minimum + Empfohlen + Std + Tagesziel festlegen + Passen Sie den Tagesablauf Ihres Haustiers für mehr Freude an: Fokussierte Aktivität morgens und abends unter Berücksichtigung von Bedürfnissen, Art und Rasse. + Großartig! Bereit zu starten! + Gesamte Aktivitätsdistanz + km + Tagesdurchschnittliche Aktivitätszeit + Ø Kalorien + Tagesdurchschnittliche Ruhezeit + Profil + Pfund + Zoll + Typ + Geschlecht + Hund + Katze + Andere + kg + cm + Mitglieder + +\Einladen + Aktiv + Ausstehend + Beziehung + Geteilte Familienmitglieder/Freunde können Standort und Daten Ihres Haustiers einsehen, ohne sie zu bearbeiten. + Avatar wählen + Freund + Liebe + Neue Meilensteine freischalten! + Kollege + Sie haben Ihr Haustier erfolgreich eingerichtet und das Sicherheitsabzeichen verdient! + Herzlichen Glückwunsch! + Teilen + Anmelden + Registrierung + Konto erstellen + Mit Registrierung akzeptieren Sie die AGB und Datenschutzerklärung von Nation Remit. + Datenschutzerklärung. + Mindestens 6 Zeichen + Land + E-Mail-Adresse + Willkommen zurück + Geben Sie Ihre registrierte E-Mail-Adresse ein. Wir senden einen 4-stelligen Code an Ihre E-Mail. + Weiter + Bitte geben Sie den 4-stelligen Code ein, der an %s gesendet wurde. + OTP-Verifizierung + Verbleibende Zeit:\t + Sek. + Code erneut senden + Neues Passwort erstellen + Jetzt zurücksetzen + Passwort bestätigen + Passwort erfolgreich zurückgesetzt! + Zurücksetzen + Standard + Satellit + Zäune anzeigen + Genauigkeit anzeigen + Eingabe + Auswählen + Immer an Ihrer Seite! + Unterstützt von + Weniger anzeigen + Alle anzeigen + Abenteuer + Sozial + Sportlich + Neuer Tracker + Neuen Tracker hinzufügen + Laden und einschalten + Schritt 1: + Laden Sie den Tracker zuerst auf; rotes Licht leuchtet. + Kabel abziehen, 3 grüne Blitze – Gerät eingeschaltet. + Schritt 2: + Suche nach Tracker + Halten Sie das Telefon nahe an den Tracker. + Bestätigen Sie, dass die 6-stellige ID mit der auf der Tracker-Rückseite übereinstimmt. + Mit Tracker koppeln + ID-Nummer + Nein + Finden Sie die 6-stellige ID auf der Tracker-Rückseite. + ID zur Kopplung eingeben + Tracker-ID fehlerhaft, bitte prüfen und erneut versuchen + Gerät bereits gekoppelt, bitte prüfen und erneut versuchen + Tracker hinzufügen + Erfolgreich\ngekoppelt + Wählen Sie Ihren Plan + Vorteile + Monatliches Abonnement + $%s + /pro Monat + /pro Jahr + $%s/pro Monat + $%s/pro Jahr + Beliebt + Plan bestätigen + Gerätenummer + Allgemeine Geschäftsbedingungen + Automatische Verlängerung + Über automatische Verlängerung + Ihr Jahresabonnement verlängert sich automatisch am Ende jeder Periode für ununterbrochenen Service. + Zusammenfassung + Steuer + Gesamtbetrag inkl. Steuer + Zahlungsmethode + Karte auswählen + Keine Karte gefunden + Neue Karte hinzufügen + Primär + Zahlung durchführen + Weiterleitung zu PayPal + Zahlungsmethode hinzufügen + Neue Karte speichern + Zahlung erfolgreich + Läuft ab am + MM/JJ + CVC + Akzeptierte Zahlungskarten + Als primäre Karte festlegen + Name auf Karte + Berechtigungen + Überspringen + Aktivieren + Berechtigungen für besseres Erlebnis erteilen. + Abonnementdetails + Tracker-ID + Plan: + ($%s/Jahr) + (Verlängerung zu + pro Jahr) + Verlängert am: + Wohnortangabe verbessert Akkulaufzeit und Sicherheit + Energiesparzone einrichten + Dauerhafter Wohnort spart Energie, verbessert Ortung. + Ist dies das Zuhause Ihres Haustieres? + Dauerhafter Wohnsitz + WLAN-Netzwerk wählen, kein Passwort nötig. + Später + Welche Maßeinheiten für Ihr Haustier? + Größe Ihres Haustieres + Länge + Gewicht Ihres Haustieres + Benachrichtigungseinstellungen + Betreten/Verlassen der Sicherheitszone/No-Go-Zone + Tracker-Status + Abonnement/Akku-Warnungen/Ausschalten + Aktivitäts-/Schlaf-Erinnerung/Zielerreichung + WLAN-Zone + Über WLAN-Zone + Wählen Sie ein Netzwerk in einem vertrauten Bereich, in dem Ihr Haustier viel Zeit verbringt. Wie Ihr Zuhause. In Reichweite erkennt Ihr Tracker dieses Netzwerk als WLAN-Zone. + Büro + Solange der Tracker deinen Buddy sicher in einer WLAN-Zone erkennt, bleibt LIVE-Tracking, Licht und Ton aus, um die Akkulaufzeit zu verlängern. + Energie sparen + In Bluetooth-Reichweite? Ort einen nahen Tracker per Radar. Live wird verfügbar, beendet aber den Energiesparmodus. + Haustier-Tracking + WLAN-Zoneneinstellungen + Problem oder Vorschlag eingeben + Hinterlass deine E-Mail, wir helfen dir schneller + E-Mail-Adresse eingeben + Datei wählen + Ausschalten + Haustierart? + Name deines Haustiers? + Aktuelle LED + Sicherheitszone verlassen + In der WLAN-Zone + WLAN-Zone verlassen + In der No-Go-Zone + Starkes Signal + WLAN-Zone + %sFuß + %sMeilen/h + Deaktivieren + Bitte gültige E-Mail-Adresse verwenden. + Bitte vollständigen Namen eingeben. + Bitte gültiges Passwort verwenden. + Bitte Region auswählen. + An ABBIDOT + Die eingegebenen Passwörter stimmen nicht überein! + Noch kein Mitglied + +Einladen + Mitglieder einladen + Anderes Haustier zuweisen + Zuweisung aufheben %s + Anderen Tracker zuweisen + Dadurch werden alle %s-Daten dauerhaft von Ihrem Konto gelöscht. + Dadurch werden alle + -Daten dauerhaft von Ihrem Konto gelöscht. + Möchten Sie %s die Zuweisung zu diesem Tracker %s aufheben? + Zuhause + Möchten Sie die Familie %s wirklich löschen? + Live-Dauer + %s Min + Info zur Live-Dauer + Live-Modus sucht Haustiere mit Ortungsupdates alle 2-3 Sekunden, verbraucht aber mehr Akku. Standard-Tracking sendet weiterhin regelmäßige Updates. + Live-Tracking endet automatisch nach der eingestellten Dauer. Sie können es früher stoppen, um Akku zu sparen. + Kurz halten + Bluetooth + •\Erforderlich für präzise Aktivitätssynchronisierung + GPS-Standort + •\Zeigt Ihren Standort auf der Karte\n•\Erforderlich zur Aktivitätsdaten-Synchronisierung\n•\Erhöht die Tracker-Genauigkeit + •\Erlaube Benachrichtigungen, um wichtige Infos zu erhalten – z.B. wenn dein Buddy eine Sicherheitszone verlässt oder der Ladezustand kritisch ist. + Benachrichtigungen erhalten + AKTIVIEREN + Gerät nicht aktiviert. Abonniere zum Freischalten. + Aktivierung\nErfolgreich + Anmeldung\nerfolgreich! + Stunden + Wird gesucht… + Tracker an & nah halten zum Scannen. + Akku unter %s%% + Draußen + Drinnen + 7-Tage-Schnitt + Automatische Verlängerung stoppen + Automatische Verlängerung + Zu viele Geofences erstellt + LIVE-Modus beendet. Dauer unter „Live-Dauer“ einstellbar. + Schwaches GPS-Signal + Kein Netzsignal + Tracker ausgeschaltet + Starte Live… + Verbinde mit Netzwerk + GPS-Positionierung + Startet %s-min Live + Startet + -min Live + Zeitüberschreitung. Bitte erneut versuchen. + Schließen + Info zu Live + Live-Tracking endet in einer Stunde automatisch. Kann vorher gestoppt werden, um Akku zu sparen. + Ruhemodus + Ruhezeit + Ruhezeit + Kein Signal + WLAN + Maßeinheit wählen + Metrisch(cm, kg) + Imperial(in, lb) + km/h + mph + m + Fuß + Geofence-Benachrichtigungen + Mein Geofence + Dein Feedback hilft uns besser zu werden. + Nachricht eingeben + Tracker im Ruhemodus + Bitte E-Mail weiter verifizieren + Code gültig für %ss + Code gültig für + Minuten + Passwort erstellen + E-Mail-Änderung erfolgreich! + E-Mail ändern + Neue E-Mail eingeben + Reaktivierungsgebühr + App im Hintergrund laufen lassen für Tracker-Statusbenachrichtigungen. + Erinnerung + Gestern + Ein-/Ausschalten + Tracker vollständig laden, dann Kabel entfernen. Bei grünem Blinken ist er eingeschaltet. + Abonnement auswählen/abschließen, dann im App Tracker aktivieren. Aktivierter Tracker nutzt GPS und Mobilfunk. + Aktiver Tracker + (GPS/Mobilfunk variiert je Umgebung. Vor Anwendung an verschiedenen Orten prüfen.) + Tracker-Status prüfen + Bei 15 min Bewegungslosigkeit schaltet Tracker GPS/Mobilfunk ab (Ruhemodus). Bei Bewegung startet er automatisch neu. + Tracker mit Heim-WLAN verbinden (passwortfrei). In der WLAN-Zone ist GPS deaktiviert. Verbindet alle 10–60 Minuten bei minimalem Stromverbrauch mit dem Netz. + Wenn sich Ihr Tracker außerhalb der WLAN-Zone befindet, aktiviert er das GPS und verbindet sich alle 1/3/5/10/15 Minuten mit dem Netzwerk. + „Haustier“ > „Tracker“ wählen. „GPS-Update“ klicken und 1/3/5/10/15 Minuten auswählen. + (Kürzere Intervalle erhöhen den Akkuverbrauch. Standard: Alle 15 Minuten.) + Live-Modus startet Schnellortung in 15–20 Sekunden. Höchster Akkuverbrauch – nur im Notfall nutzen. + Tracker-Akku-Lebensdauer + 1. Geofence-Einstellung: „Haustier“ > „Mein Geofence“. „Verwalten“ > „+ Neu“ für Sicherheits-/No-Go-Zonen. + 2. Grenze festlegen: Ort auf Karte wählen, Radius/Form anpassen. + 3. Speichern: Geofence aktivieren. + 4. Benachrichtigungen: „Account“ > „Einstellungen“ > „Benachrichtigungen“ aktivieren. + Mein Geofence erstellen + Tracker im Ruhemodus + (Sehr geringer Verbrauch) + Tracker in WLAN-Zone + Tracker außerhalb WLAN-Zone + (Geringer Verbrauch) + (Standardverbrauch) + (Höchster Verbrauch) + Passendes GPS-Update-Intervall wählen + Tracker im Live-Modus + Frische Pfoten + Tag-1-Fan + Navigations-Neuling + Pelziger Freund + Potentieller Kumpel + Monatskamerad + Schwanzwedel-Entdecker + Pfotastischer Partner + 1-Jahres-Umarmer + Purrfekter Partner + 2-Jahres-Gefährte + Treuer Freund + 3-Jahres-Harmonie + Langzeit-Fellfreund + Willkommen! Starte mit deinem ersten Abzeichen. + Erster Tag gemeistert! Dein Einsatz ist notiert. + Logge dich am Tag 1 ein für dieses Abzeichen! + Du findest dich zurecht. Erkunde weiter für Meilensteine! + Drei Tage aktiv für diesen Meilenstein! + Eine Woche dabei – schon Teil unserer Fellfamilie! + Eine Woche aktiv für „Pelziger Freund“! + Großes Potenzial! Weiter so. + 15 Tage engagiert für dieses Abzeichen! + Ein Monat dabei – geschätztes Mitglied! + Ein Monat in der Community für dieses Abzeichen! + Drei Monate Abenteuer – gut gemacht! + Drei Monate dabei für „Schwanzwedel-Entdecker“! + Sechs Monate tolle Partnerschaft. Danke fürs Dabeibleiben! + Sechs Monate dabei für „Pfotastischer Partner“! + Ein ganzes Jahr Einsatz! Auf viele weitere! + Ein Jahr dabei für dieses Abzeichen! + 18 Monate und stark dabei. Du bist purrfekt! + 18 Monate engagiert für „Purrfekter Partner“! + Zwei Jahre Treue – hoch geschätzt! + Zwei Jahre dabei für den „2-Jahres-Gefährten“! + 30 Monate treue Begleitung. Du bist ein Schatz! + 30 Monate treu für dieses Abzeichen! + Drei Jahre Harmonie. Danke, dass du dabei bist! + Drei Jahre Harmonie für dieses Abzeichen! + Fünf Jahre wunderbare Freundschaft. Dein Engagement inspiriert! + Fünf Jahre Einsatz für „Langzeit-Fellfreund“! + Wie erhält man? + Familieneinladung + Aktive Zeit: + Dein Freund %s lädt dich zur Familie %s ein. + Dein Freund + lädt dich zur + Familie ein. + Läuft ab am: + Abgelaufen am: + JAHRE + MONATE + TAGE + Automatische Verlängerung + Abonnement-Bestellung + Bestell-ID: + Grund für Rückerstattung + Rückerstattung anfragen + Erstattung + Wartend + Rückzahlung läuft + Erstattet + Verlängerung: $%s/year on %s + Verlängerung: + /Jahr am + Verlängerung: $%s/month on %s + Verlängerung: + /Monat am + Jahresschutz + 12,90€/Jahr für Sorgenfreiheit + jährlichen Austausch. + Austauschgarantie + Rabattcode eingeben + Prüfen + Jahresschutz + Jahresschutz: + Bluetooth-Verbindung fehlgeschlagen + LED-Einstellungen + Tracker neben Handy? Per Bluetooth verbinden und LED anpassen. Änderungen sofort aktiv. + Bluetooth-Einrichtung + Tracker nicht in Reichweite? LED-Einstellungen übers Netz vornehmen. Dauert meist Minuten. + Doppeltes WLAN nicht erlaubt + Netzwerkeinrichtung + Genaues Gewicht für präzise Kalorienberechnung. + Autoverlängerung aktivieren + Info zu Gewicht + Bestellung + Premium festlegen + Basis + Premium + Abgelehnt + Abgelaufen + Tarif upgraden + Restwert + /%s Monat + (Verlängerung zu $%s jährlich danach) + (Verlängerung zu + jährlich danach) + (Verlängerung zu $%s monatlich danach) + (Verlängerung zu + monatlich danach) + Haustiere orten und trainieren, um Verlust/Gefahren vorzubeugen. + /%s Jahr + Erweiterte Einstellungen + Konto löschen + Namen ändern + Ihre E-Mail-Adresse: + Jetzt ändern + Ein Bestätigungscode wird an %s gesendet. + Upgrade zu Prime für exklusive Funktionen! + Jetzt upgraden + Aktivitätszeit + Fehlgeschlagen + Neue Firmware erkannt: %s + Nicht festgelegt + Fertig + Wetter speichern? + %s Min + Verbinden + Passwort überspringen + Verbinde... + Falsches Passwort. Bitte erneut versuchen. + Ihr Zugriff ist abgelaufen. + „%s“ lädt dich ein, den Status von „%s“ zu prüfen. + Solange der Tracker deinen Buddy sicher in der Energiesparzone erkennt, bleiben LIVE-Tracking, Licht und Ton aus. + Info zur Tracking-Dauer + Ihr Abonnement ist abgelaufen. Bitte aufladen. + %s Geofences gesetzt + %s ist in der Nähe + Tracker nur löschen, wenn du ihn zurückgibst oder weitergibst. + Tracker löschen + Wird gelöscht + LED-Einstellung + Reserve + Abonnementplan + Halte das Handy nahe an den Tracker %s. + Verbinde Tracker + Jahresschutz inklusive, nicht änderbar + Erfolgreich gelöscht + Zahlungsmethode bearbeiten + Karte wirklich löschen? + Konto existiert. Jetzt anmelden? + Datum außerhalb des Bereichs + Nächstes Mal Tracker schütteln zum Aufwecken. + Tracker einschalten: App > „Haustier“ > „Tracker“ > „Netzwerk“, „GPS“, „Akku“, „WLAN-Zone“, „Bluetooth“ oder „Licht“ für Statusprüfung. + Tracker lädt + Abonniert + Senden + Zum Einschalten Kabel anschließen. Nach erstem Start: Schütteln zum Einschalten. + Kein Signal. Prüfen, ob Haustier im Innenbereich. + Kartennummer existiert bereits. Überschreiben? + Passwort eingeben. + E-Mail-Adresse eingeben. + Wi-Fi gewährleistet Tracker-Verbindung bei schwachem LTE. + Updated: %s + + \ No newline at end of file diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..64f6d3b --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..17a54dd --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-w1240dp/dimens.xml b/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..ec434d3 --- /dev/null +++ b/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/app/src/main/res/values-w600dp/dimens.xml b/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..10125a3 --- /dev/null +++ b/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..b646d3a --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,975 @@ + + + 奥地利 + 比利时 + 丹麦 + 法国 + 德国 + 希腊 + 匈牙利 + 爱尔兰 + 列支敦士登 + 墿£®å ¡ + è·å…° + 波兰 + 罗马尼亚 + 西ç­ç‰™ + 瑞典 + 英国 + æ·å…‹ + 冰岛 + 斯洛ä¼å…‹ + 塞浦路斯 + 爱沙尼亚 + 芬兰 + 拉脱维亚 + ç«‹é™¶å®› + æŒªå¨ + è‘¡è„牙 + 斯洛文尼亚 + 乌克兰 + 以色列 + 美国 + 加拿大 + 墨西哥 + 澳大利亚 + 哥伦比亚 + æ–°åŠ å¡ + 韩国 + 䏭国尿¹¾ + 中国 + 日本 + + + + + + 已有设备? + 还没有 + 是的 + Hello! + 欢迎使用ABBIDOT宠物定ä½APP + 注册 + 登录 + 欢迎 + 很高兴è§åˆ°ä½  + 邮箱 + æ‰‹æœºå· + å¯†ç  + 忘记密ç ï¼Ÿ + 微信登录 + 验è¯ç ç™»å½• + Apple登录 + è´¦å·ç™»å½• + 微信一键登录 + è®¾ç½®æ–°å¯†ç  + 验è¯ç å·²å‘é€ + 没有账å·ï¼Ÿ + 使用密ç ç™»å½• + 注册 + 嗨, + 返回登录 + è®¾ç½®ç™»å½•å¯†ç  + è®©æˆ‘ä»¬å¼€å§‹å§ + å…¨å + èŽ·å– + 我们已将验è¯ç å‘é€åˆ°æ‚¨çš„电å­é‚®ä»¶ + 验è¯ç  + 下一步 + é‡å‘ + 还没有收到电å­é‚®ä»¶ï¼Ÿ + è¯·é˜…è¯»å¹¶åŒæ„《æœåŠ¡å议》和《éšç§æ”¿ç­–》 + è¯·é˜…è¯»å¹¶åŒæ„ + å’Œ + 《æœåŠ¡å议》 + 《éšç§æ”¿ç­–》 + æäº¤ + 绑定 + å®Œæˆ + + æ•°æ® + 地图 + 我的 + æˆ‘çš„è®¢å• + 帮助中心 + å馈中心 + 设置 + 设置 + 消æ¯ä¸­å¿ƒ + 语言 + 叿ˆ· + 关于 + 清除缓存 + 退出登录 + å馈中心 + 问题类型(必填) + 关于APP + 关于设备 + 其它 + 请输入您的问题或建议 + 请选择问题类型 + 请留下您的电å­é‚®ä»¶ï¼Œä»¥ä¾¿æˆ‘们更快地帮助您 + + 上传图片 + åç§° + 性别 + 生日 + 地点 + 邮箱 + 手机 + å“ç§ + ä½“é‡ + 肩高 + 如何测é‡èº«é«˜ + ä»Žåœ°é¢æµ‹é‡åˆ°å® ç‰©è‚©èƒ›éª¨çš„æœ€é«˜ç‚¹ + ä¿å­˜ + 标签 + + 输入设备ID + 激活 + 激活设备以继续 + ä¸ç”¨äº†ï¼Œè°¢è°¢ + 激活 + 我的设备 + %d个设备 + 设备 + 我的设备 + 被授æƒçš„ + LEDç¯ + å›´æ  + 设置 + 新宠物 + 解绑 + 网络 + GPS + 电é‡ï¼š%s%% + 天 + è“牙已连接 + è“牙未连接 + LEDç¯ + å…³ + å¼€ + å›´æ  + å…³è”宠物 + å…³è” + 没有宠物å¯å…³è” + 添加新宠物 + 家人 + 添加家人 + 邀请您的家人分享宠物的ä½ç½®æˆ–活动。 家庭æˆå‘˜ä¸èƒ½åˆ›å»ºæ …æ æˆ–修改设置。 + 邀请 + 邀请æˆåŠŸï¼Œè¯·é€šçŸ¥ä½ çš„å®¶äºº + 返回 + 追踪时间 + 关机 + å›´æ  + å›´æ è¯¦æƒ… + åç§° + å½¢å¼ + å¯ç”¨å›´æ  + åŠå¾„ + å®Œæˆ + å½“å‰ + 常亮 + å‘¼å¸ + 慢闪 + å¿«é—ª + + 我的宠物 + %dåª + 宠物 + 我的宠物 + 分享的 + 雄 + 雌 + %då¹´ + %då¹´ + %d磅 + %d 英寸 + 关于 + 编辑 + 活动勋章 + %d/100 已获得 + 全选 + å–æ¶ˆå…¨é€‰ + + 更新时间:%s + 我在ç¡è§‰ + 我在è¿åЍ + 我走丢了ï¼ï¼ï¼ + 电é‡ä½Ž + åœæ­¢ç›´æ’­ + ç›´æ’­ä¼šåŠæ—¶æ›´æ–°ä½ç½®ï¼Œä½†æ˜¯ä¼šæ¯”较耗电 + 选择地图 + 谷歌地图 + 高德地图 + å–æ¶ˆ + APP未安装,请先下载安装APP + + è¿åŠ¨æ—¶é—´ + 目标 + 步数 + 里程 + å¡è·¯é‡Œ + 追踪时间 + ç¡çœ æ—¶é—´ + è¿åŠ¨æ—¶é—´ + åŽ†å² + 历å²è®°å½• + 设置目标 + 修改 + å½“å‰ + 轨迹 + 点 + 分钟 + æ­¥ + ç±³ + å¤§å¡ + 天 + 请完整填写 + 电å­é‚®ä»¶æ ¼å¼ä¸æ­£ç¡® + æˆåŠŸ + 上传æˆåŠŸ + 添加æˆåŠŸ + ä¿å­˜æˆåŠŸ + 登录æˆåŠŸ + 修改æˆåŠŸ + æç¤º + æœªèƒ½èŽ·å¾—è®¸å¯ + æˆåŠŸèŽ·å¾—è®¸å¯ + æ·»åŠ å›´æ  + ç¼–è¾‘å›´æ  + å¿˜è®°å¯†ç  + 显示轨迹/点 + æ— æ•°æ® + 无宠物 + 请先绑定宠物 + æˆåŠŸåˆ é™¤ + 确定è¦åˆ é™¤ï¼Ÿ + 确定è¦è§£ç»‘设备? + 解绑æˆåŠŸ + 绑定æˆåŠŸ + 体é‡å¿…须大于0 + 今天\t%s + 今天 + 分钟 + æ­¥ + %d%% + 英里 + å¤§å¡ + 天 + 您的设备已过期,请充值 + 确定è¦è§£ç»‘宠物? + åœæ­¢ç›‘控宠物轨迹? + 确定è¦åˆ†äº«\'%s\'çš„å® ç‰©æ•°æ® + ç¡®å®šè¦æ·»åŠ æ­¤å® ç‰©å—? + 删除 + å–æ¶ˆ + %då¹´%d月 + å¹´ + 月 + 确定 + 通知 + 全选 + å–æ¶ˆå…¨é€‰ + 请求失败,请é‡è¯• + 地图加载中… + 注册æˆåŠŸ + 你好,空白片段 + 全部图片 + 图片和视频 + 全部视频 + 选择 + 完æˆ(%1$d/%2$d) + 预览 + 最多支æŒ%d个图片或视频 + 最多支æŒ%d个图片 + 最多支æŒ%d个视频 + åªèƒ½é€‰æ‹©ä¸€ç§ç±»åž‹çš„æ–‡ä»¶ + 无法å¯åŠ¨ç›¸æœº + 图片错误 + 请å…许相关æƒé™ + 照片的宽度应大于%1$d,高度应大于%1$d + 䏿”¯æŒè¯¥å›¾åƒæ ¼å¼ + 编辑 + 清除 + 没有匹é…的照片 + 没有匹é…的视频 + 请å…许相关æƒé™ + 请å…许相关æƒé™ + 原始 + %1$d/%2$d + å®Œæˆ + å–æ¶ˆ + æ¨¡æ¿ + 文本 + 日期 + åŒå‡»ç¼–辑 + 自定义 + 选择照片 + 选择视频 + 请选择2 \~ 9张照片 + GIF + 视频 + + 我的E-simå¡ + 天 + 截止至%s + 自动订阅: + 充值记录 + 充值 + é€‰æ‹©å¥—é¤ + æ­¤åŽä»¥%.2f/年续订,å¯éšæ—¶å–æ¶ˆ + 订å•详情 + å°è®¡ + 优惠券 + ä¼˜æƒ ç  + 积分 + 总计 + 已优惠%d + 支付 + ä»˜æ¬¾æ–¹å¼ + æ·»åŠ æ–°å¡ + 确认 + 支付详情 + 支付æˆåŠŸ + 支付失败,请é‡è¯• + é‡è¯• + 返回 + 订阅计划: + %d年连接订阅 + 付款间隔: + 截止日期: + 订阅计划有效期至%s + 自动续订已关闭,订阅计划将在%s之åŽä¸å¯ç”¨ + 简体中文 + 确定è¦é€€å‡ºç™»å½•å—? + ç¡®å®šè¦æ¸…除缓存? + ç¯å…‰æ¨¡å¼ + 固件å‡çº§ + æäº¤æˆåŠŸï¼Œè°¢è°¢æ‚¨çš„å馈 + 清除æˆåŠŸ + 加载中... + ç™»å½•å¤±è´¥ï¼Œè¯·é‡æ–°ç™»å½• + 确定è¦å–消自动订阅? + 自动订阅已æˆåŠŸå–æ¶ˆ + 自动订阅更方便,因为您ä¸å¿…担心订阅过期 + $%s/月 + ï¿¥\t%.2f + ä¿å­˜å¹¶ç¡®è®¤ + å¡å· + æŒå¡äººå§“å + æŒå¡äºº + 截止日期 + MM/YY + CVV + è¯·é€‰æ‹©æ”¯ä»˜æ–¹å¼ + ç”¨æˆ·å–æ¶ˆä»˜æ¬¾ + 支付æˆåŠŸ + 支付失败,请é‡è¯• + 失效日期 + ä¿¡ç”¨å¡æ ¼å¼æ— æ•ˆ + 您确定è¦å…³é—­è®¾å¤‡å—? + è£å‰ªå›¾ç‰‡ + 连接中… + 账户注销 + 注销账户将删除账户下所有的数æ®,是å¦ç»§ç»­? + 注销æˆåŠŸ + 冿¬¡è¿”å›žé€€å‡ºç¨‹åº + ç”¨æˆ·åæˆ–密ç é”™è¯¯ + 验è¯ç é”™è¯¯ + 验è¯ç å·²è¿‡æœŸ + 注册失败 + 用户ä¸å­˜åœ¨ + 用户已存在 + 邮箱格å¼ä¸å¯¹ + æ˜¯å¦æ–­å¼€è¿žæŽ¥è®¾å¤‡? + 连接æˆåŠŸ + 连接失败 + 激活æˆåŠŸ + 激活失败,请é‡è¯• + 首次登录 + 请绑定手机 + è¯·è¾“å…¥æ‰‹æœºå· + æ‰¾å›žå¯†ç  + æäº¤è®¢å• + $ + 剩余å¯ç”¨å¤©æ•°ï¼š + 有效期: + %d天 + 设备:%s + 釿–°æ¿€æ´»ï¼š%s + åˆè®¡ï¼š%s + 爱彼宠物 + 版本%s + æœåŠ¡åè®® + éšç§æ”¿ç­– + 官网 + ä¿®æ”¹å¯†ç  + å–æ¶ˆæ”¯ä»˜ + 请打开手机è“牙 + ä¸èƒ½åˆ†äº«ç»™è‡ªå·± + 当å‰ç”¨æˆ·å·²ç»ç»‘定该设备 + å§“ + å + 在线 + 离线 + %s%% + æ³•å¾‹ä¿¡æ¯ + 欢迎使用Abbidot应用ï¼ä¸ºäº†æ›´å¥½åœ°ä¿éšœæ‚¨çš„æƒç›Šï¼Œæˆ‘ä»¬å°†åœ¨æœ¬ã€Šéšç§æ”¿ç­–ã€‹å£°æ˜Žä¸­å‘æ‚¨è¯´æ˜Žæˆ‘们如何收集ã€ä½¿ç”¨ã€å¤„ç†å’Œä¿éšœæ‚¨æä¾›ç»™æˆ‘们的信æ¯ã€‚请仔细阅读《éšç§æ”¿ç­–》和《æœåŠ¡æ¡æ¬¾ã€‹ã€‚ + 接å—éšç§æ”¿ç­–ä¸Žæ¡æ¬¾ã€‚ + æˆ‘æŽ¥å— + æ‹’ç» + æ²¡æœ‰ä¸‹è½½åœ°å€ + 是å¦ä¸‹è½½å›ºä»¶å¹¶å‡çº§? + 请ç¨ç­‰… + 版本说明 + 固件åç§° + 固件版本 + å›ºä»¶å¤§å° + å‡çº§ + å‡çº§æˆåŠŸ + å‡çº§å¤±è´¥ + 下载固件 + 进入DFUæ¨¡å¼ + æœç´¢DUF设备 + 设备ä¸å­˜åœ¨ + 连接设备 + é‡è¿žè®¾å¤‡ + 设备已断开 + 断开连接 + å‡çº§ä¸­ + 准备å‡çº§ + 设备连接æˆåŠŸ + 当剿˜¯æœ€æ–°ç‰ˆæœ¬ + 该设备已被绑定 + 活动 + 路线 + 宠物 + 更多 + 公里 + ç¡çœ  + 实时 + 区域 + 追踪器 + 徽章 + 查看全部 + ç®¡ç† + 活动目标 + æ—¶é—´ + 开始时间 + ç»“æŸæ—¶é—´ + è™šæ‹Ÿå›´æ  + WiFi区域 + 已连接 + ä¿¡å·å¼± + ç”µé‡ + è“牙 + æŒ‡ç¤ºç¯ + 从 + 到 + 检查轨迹和地点 + 全部已读 + 订阅 + 帮助 + 使用说明 + 常è§é—®é¢˜ + 计é‡å•ä½ + 商店 + 退出登录 + å¹³å‡å¡è·¯é‡Œ + 平凿—¶é—´ + æ€»æ•°æ® + å°æ—¶ + 总è·ç¦» + 最近7天 + 最近30天 + 确定 + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 乿œˆ + åæœˆ + å一月 + å二月 + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + æ–¹å‘ + 声音传播速度加快时,è·ç¦»æ›´è¿‘。 + 速度 + åœæ­¢é›·è¾¾æ‰«æ + 编辑WiFi区域 + WiFiå称: + 安全区域 + 添加新区域 + ç¦å…¥åŒºåŸŸ + 尚未添加区域 + 添加安全区域 + 编辑安全区域 + å›´æ åç§° + 区域åç§° + 添加ç¦å…¥åŒºåŸŸ + 编辑ç¦å…¥åŒºåŸŸ + æ•°æ®é¢æ¿ + 最å°å€¼ + 推è值 + å°æ—¶ + è®¾ç½®æ¯æ—¥ç›®æ ‡ + ä¸ºå® ç‰©å®šåˆ¶æ¯æ—¥è¶£å‘³æ´»åŠ¨ï¼Œä¸“æ³¨æ—©æ™šäº’åŠ¨ï¼Œå…¼é¡¾å…¶éœ€æ±‚ã€ç‰©ç§ä¸Žå“ç§ + 太棒了ï¼å¼€å§‹å§ï¼ + 活动总è·ç¦» + 公里 + æ—¥å‡æ´»åŠ¨æ—¶é•¿ + å¹³å‡å¡è·¯é‡Œ + æ—¥å‡ä¼‘æ¯æ—¶é•¿ + 档案 + 磅 + 英寸 + 类型 + 性别 + ç‹— + 猫 + å…¶ä»– + åƒå…‹ + 厘米 + æˆå‘˜ + +\邀请 + 活跃中 + å¾…å¤„ç† + 关系 + 共享的家庭æˆå‘˜æˆ–朋å‹å¯æŸ¥çœ‹å® ç‰©ä½ç½®å’Œæ—¥æœŸï¼Œä½†æ— æ³•编辑 + é€‰æ‹©å¤´åƒ + æœ‹å‹ + 爱人 + è§£é”æ–°æˆå°±ï¼ + åŒäº‹ + 宠物信æ¯è®¾ç½®æˆåŠŸï¼ŒèŽ·å¾—å®‰å…¨å¾½ç« ï¼ + æ­å–œï¼ + 分享 + 登录 + 注册 + 创建账户 + 注册å³è¡¨ç¤ºæŽ¥å—Nation Remitçš„æ¡æ¬¾ä¸Žæ¡ä»¶å’Œéšç§æ”¿ç­– + éšç§æ”¿ç­– + 至少6个字符 + 国家/地区 + 电å­é‚®ç®± + æ¬¢è¿Žå›žæ¥ + 输入您档案的注册邮箱,我们将å‘é€4使•°éªŒè¯ç è‡³è¯¥é‚®ç®± + ç»§ç»­ + 请输入å‘é€è‡³ %s çš„4使•°éªŒè¯ç  + OTPéªŒè¯ + 剩余时间:\t + ç§’ + é‡å‘验è¯ç  + åˆ›å»ºæ–°å¯†ç  + ç«‹å³é‡ç½® + ç¡®è®¤å¯†ç  + 密ç é‡ç½®æˆåŠŸï¼ + é‡ç½® + 标准视图 + 嫿˜Ÿè§†å›¾ + æ˜¾ç¤ºå›´æ  + 显示精确度 + 输入 + 选择 + æ—¶åˆ»ç›¸ä¼´ï¼ + æŠ€æœ¯æ”¯æŒ + æ”¶èµ· + 查看全部 + 探险家 + 社交达人 + è¿åЍå¥å°† + 新追踪器 + 添加追踪器 + 充电并开机 + 第一步: + 先为追踪器充电,红ç¯äº®èµ· + 拔掉充电线åŽç»¿ç¯é—ªçƒ3次——设备已å¯åЍ + 第二步: + æœç´¢è¿½è¸ªå™¨ + 将手机é è¿‘追踪器 + 确认6字符ID与追踪器背é¢ä¸€è‡´ + é…对追踪器 + IDå· + å¦ + åœ¨è¿½è¸ªå™¨èƒŒé¢æ‰¾åˆ°6字符ID + 输入IDé…对 + 追踪器ID错误,请核对åŽé‡è¯• + 设备已被绑定,请核对åŽé‡è¯• + 添加追踪器 + é…对æˆåŠŸ + é€‰æ‹©å¥—é¤ + æƒç›Š + 月付 + $%s + /月 + /å¹´ + $%s/月 + $%s/å¹´ + 热门 + ç¡®è®¤æ‚¨çš„å¥—é¤ + è®¾å¤‡ç¼–å· + æ¡æ¬¾ä¸Žæ¡ä»¶ + 自动续订 + 关于自动续订 + æ‚¨çš„å¹´åº¦è®¢é˜…å°†åœ¨æ¯æœŸç»“æŸæ—¶è‡ªåŠ¨ç»­è®¢ï¼Œä»¥ç¡®ä¿æœåŠ¡ä¸é—´æ–­ã€‚ + æ‘˜è¦ + 税费 + å«ç¨Žæ€»è®¡ + æ”¯ä»˜æ–¹å¼ + 选择å¡ç‰‡ + 未找到å¡ç‰‡ + 添加新å¡ç‰‡ + ä¸»è¦æ”¯ä»˜æ–¹å¼ + ç«‹å³æ”¯ä»˜ + å³å°†è·³è½¬è‡³PayPal + æ·»åŠ æ”¯ä»˜æ–¹å¼ + ä¿å­˜æ–°å¡ç‰‡ + 支付æˆåŠŸ + 有效期至 + 月/å¹´ (MM/YY) + å®‰å…¨ç  (CVC) + 接å—çš„æ”¯ä»˜å¡ + 设为主è¦å¡ç‰‡ + æŒå¡äººå§“å + æƒé™ + 跳过 + å¯ç”¨ + 授予æƒé™ä»¥æå‡ä½“验。 + 订阅详情 + 追踪器ID + 套é¤ï¼š + (按æ¯å¹´ $%s 续订) + (续订价 + /å¹´) + 续订日期: + 添加居ä½åœ°å¯æå‡ç”µæ± ç»­èˆªå¹¶æä¾›é¢å¤–安全ä¿éšœ + 建立çœç”µåŒºåŸŸ + 常ä½åœ°ç‚¹å¯çœç”µå¹¶ä¼˜åŒ–定ä½ã€‚ + 这是您宠物的家å—? + 常ä½åœ°ç‚¹ + 选择Wi-Fi网络,无需密ç ã€‚ + ç¨åŽ + 您宠物的计é‡å•使˜¯ï¼Ÿ + 您宠物的身高 + 身长 + æ‚¨å® ç‰©çš„ä½“é‡ + 通知设置 + 进入或离开安全区域/ç¦å…¥åŒºåŸŸ + è¿½è¸ªå™¨çŠ¶æ€ + 订阅/低电é‡è­¦å‘Š/关机 + 活动/ç¡çœ æé†’/ç›®æ ‡è¾¾æˆ + WiFi区域 + 关于WiFi区域 + 在您宠物ç»å¸¸åœç•™çš„å¯ä¿¡åœ°ç‚¹ï¼ˆå¦‚家中)选择一个网络。一旦进入覆盖范围,您的追踪器将识别此网络为WiFi区域。 + 办公室 + åªè¦è¿½è¸ªå™¨æ£€æµ‹åˆ°æ‚¨çš„爱宠安全处于WiFiåŒºåŸŸå†…ï¼Œå°±ä¼šå…³é—­å®žæ—¶è¿½è¸ªã€æŒ‡ç¤ºç¯å’Œå£°éŸ³ä»¥å»¶é•¿ç”µæ± ç»­èˆªã€‚ + çœç”µæ¨¡å¼ + 在è“牙范围内?å¯ä½¿ç”¨é›·è¾¾ç²¾ç¡®å®šä½é™„近追踪器。实时追踪也将å¯ç”¨ï¼Œä½†ä½¿ç”¨å®ƒä¼šç»“æŸçœç”µæ¨¡å¼ã€‚ + 正在追踪您的宠物 + WiFi区域设置 + 输入您的问题或建议 + 请留下您的邮箱,我们能更快帮助您 + 输入您的电å­é‚®ç®±åœ°å€ + 选择文件 + 关机 + 您的宠物类型是? + 您的宠物å字是? + 当å‰LEDçŠ¶æ€ + 已离开安全区域 + 处于WiFi区域内 + 已离开WiFi区域 + 处于ç¦å…¥åŒºåŸŸ + ä¿¡å·å¼º + WiFi区域 + %s英尺 (ft) + %s英里/å°æ—¶ (mph) + åœç”¨ + 请使用有效的邮箱地å€ã€‚ + 请输入全å。 + 请使用有效的密ç ã€‚ + 请选择地区。 + å‘é€è‡³ABBIDOT + 输入的密ç ä¸ä¸€è‡´ï¼ + å°šæ— æˆå‘˜ + +邀请 + 邀请æˆå‘˜ + 绑定其他宠物 + 解绑 %s + 绑定其他追踪器 + 这将从您的账户中永久删除所有 %s æ•°æ® + 这将从您的账户中永久删除所有 + æ•°æ® + 您确定è¦å°† %s 从追踪器%sä¸Šå–æ¶ˆç»‘定å—? + å®¶ + 您确定è¦åˆ é™¤å®¶åº­æˆå‘˜%s + 实时追踪时长 + %s 分钟 (Min) + 关于实时追踪时长 + 实时模å¼å¯å¸®åŠ©å¯»æ‰¾å® ç‰©ï¼Œæ¯2~3秒更新一次ä½ç½®ï¼Œä½†ä¼šæ¶ˆè€—更多电é‡ã€‚默认追踪ä»ä¼šæä¾›å¸¸è§„更新。 + å®žæ—¶è¿½è¸ªå°†åœ¨è®¾å®šçš„æ—¶é•¿ç»“æŸæ—¶åœæ­¢ï¼Œä½†æ‚¨ä¹Ÿå¯ä»¥æå‰åœæ­¢ä»¥èŠ‚çœç”µé‡ã€‚ + 请尽é‡ç¼©çŸ­æ—¶é•¿ + è“牙 + •\t ç¡®ä¿æ´»åŠ¨æ•°æ®åŒæ­¥å‡†ç¡®çš„å¿…è¦æ¡ä»¶ã€‚ + GPS ä½ç½® + •\t 在地图上显示您自己的ä½ç½® \n•\t åŒæ­¥æ´»åŠ¨æ•°æ®æ‰€å¿…需 \n•\t æå‡è¿½è¸ªå™¨ç²¾åº¦ + •\t å…许接收通知以掌æ¡é‡è¦ä¿¡æ¯ï¼Œä¾‹å¦‚您的爱宠是å¦ç¦»å¼€äº†å®‰å…¨åŒºåŸŸï¼Œæˆ–者您是å¦è¯¥è€ƒè™‘为设备充电了。 + 接收通知 + å¼€å¯ + 设备未激活。请订阅以激活。 + 激活æˆåŠŸï¼ + 注册æˆåŠŸï¼ + å°æ—¶ (hours) + 正在æœç´¢â€¦ + è¯·ä¿æŒè¿½è¸ªå™¨å¼€æœºå¹¶åœ¨é™„近以便扫æã€‚ + 电é‡ä½ŽäºŽ%s%% + 户外 + 室内 + 7æ—¥å‡å€¼ + åœæ­¢è‡ªåŠ¨ç»­è®¢ + 自动续订 + 您创建的围æ è¿‡å¤š + 实时追踪已结æŸã€‚实时追踪时长å¯é€šè¿‡â€œå®žæ—¶è¿½è¸ªæ—¶é•¿â€è®¾ç½®ã€‚ + GPSä¿¡å·å¼± + æ— ç½‘ç»œä¿¡å· + 追踪器已关机 + 正在å¯åŠ¨å®žæ—¶è¿½è¸ªâ€¦ + 正在连接网络 + GPS定ä½ä¸­ + 正在å¯åЍ %s-分钟实时追踪 + 正在å¯åЍ + -分钟实时追踪 + 超时,请é‡è¯• + 关闭 + 关于实时追踪 + å®žæ—¶è¿½è¸ªå°†åœ¨ä¸€å°æ—¶åŽåœæ­¢ï¼Œä½†æ‚¨ä¹Ÿå¯ä»¥æå‰åœæ­¢ä»¥èŠ‚çœç”µé‡ã€‚ + 休æ¯ä¸­ + ä¼‘æ¯æ—¶é•¿ + ä¼‘æ¯æ—¶é—´ + æ— ä¿¡å· + WiFi + 选择计é‡å•ä½ + 公制 (厘米, åƒå…‹) + 英制 (英寸, 磅) + 公里/å°æ—¶ (km/h) + 英里/å°æ—¶ (mph) + ç±³ (m) + 英尺 (ft) + å›´æ è­¦æŠ¥ + æˆ‘çš„å® ç‰©å›´æ  + 您的å馈帮助我们åšå¾—更好。 + è¾“å…¥æ¶ˆæ¯ (Type Message) + 追踪器处于ç¡çœ æ¨¡å¼ + è¯·ç»§ç»­éªŒè¯æ‚¨çš„邮箱 + 验è¯ç æœ‰æ•ˆæœŸä¸º %ss + 验è¯ç æœ‰æ•ˆæœŸä¸º + 分钟 + åˆ›å»ºå¯†ç  + 邮箱更改æˆåŠŸï¼ + 更改邮箱 + 输入新邮箱 + 设备激活费 + è¯·ä¿æŒåº”用在åŽå°è¿è¡Œä»¥æŽ¥æ”¶è¿½è¸ªå™¨çжæ€é€šçŸ¥ã€‚ + æé†’ + 昨天 + 开机/关机 + ä¸ºè¿½è¸ªå™¨å……æ»¡ç”µï¼Œç„¶åŽæ‹”掉充电线。当绿ç¯é—ªçƒæ—¶ï¼Œè¿½è¸ªå™¨å³å·²å¼€æœºã€‚ + 选择并完æˆè®¢é˜…,然åŽç‚¹å‡»åœ¨åº”用中激活追踪器。激活åŽï¼Œè¿½è¸ªå™¨å³å¯ç”¨äºŽGPS追踪和移动网络连接。 + 激活追踪器 + (GPS和移动网络状æ€å¯èƒ½å› çŽ¯å¢ƒè€Œå¼‚ã€‚åœ¨ç»™å® ç‰©ä½©æˆ´å‰ï¼Œè¯·æ£€æŸ¥æ‚¨å‘¨å›´çš„ä¸åŒä½ç½®ä»¥è¯„ä¼°GPS和网络状æ€ã€‚) + æ£€æŸ¥è®¾å¤‡çŠ¶æ€ + 当追踪器检测到15分钟无è¿åŠ¨æ—¶ï¼Œå®ƒä¼šå…³é—­GPS和移动网络,自动进入ç¡çœ æ¨¡å¼ã€‚一旦检测到è¿åŠ¨ï¼Œè¿½è¸ªå™¨å°†æ¿€æ´»å¹¶æ¢å¤æ­£å¸¸è¿è¡Œã€‚ + 将追踪器连接到家庭WiFi(无需密ç ï¼‰ã€‚在WiFi区域内,GPS激活将被ç¦ç”¨ã€‚它æ¯10-60分钟连接一次网络,功耗æžä½Žã€‚ + 当您的追踪器在WiFi区域外时,它会激活GPSå¹¶æ¯1/3/5/10/15分钟连接一次网络。 + 选择‘宠物’ > ‘追踪器’。点击‘GPS更新’选择1/3/5/10/15分钟。 + (更短的网络连接间隔会更快耗尽追踪器电é‡ã€‚默认情况下,网络æ¯15åˆ†é’Ÿé‡æ–°è¿žæŽ¥ä¸€æ¬¡ã€‚) + å½“å®žæ—¶æ¨¡å¼æ¿€æ´»æ—¶ï¼Œè¿½è¸ªå™¨è¿›å…¥å¿«é€Ÿå®šä½å’Œè”网状æ€ï¼Œé€šå¸¸åœ¨15-20秒内完æˆã€‚此模å¼è€—电最快,因此最好仅在紧急情况下使用。 + 追踪器电池续航 + å›´æ è®¾ç½®ï¼šé€‰æ‹©â€œå® ç‰©â€ > “我的宠物围æ â€ã€‚点击“管ç†â€œ> â€+ 添加新围æ â€ä¸ºå®‰å…¨åŒºåŸŸæˆ–ç¦å…¥åŒºåŸŸåˆ›å»ºæˆ–编辑围æ ã€‚ + 定义边界:在地图上选择一个ä½ç½®ï¼Œè°ƒæ•´å›´æ çš„åŠå¾„或形状。 + ä¿å­˜è®¾ç½®ï¼šä¿å­˜ä»¥æ¿€æ´»åœ°ç†å›´æ ã€‚ + å¼€å¯é€šçŸ¥ï¼šå‰å¾€â€œè´¦æˆ·â€ > "设置"。点击"通知"å¹¶å¼€å¯ã€‚ + åˆ›å»ºæˆ‘çš„å® ç‰©å›´æ  + 追踪器处于ç¡çœ æ¨¡å¼ + (超低功耗) + 追踪器处于WiFi区域内 + 追踪器在WiFi区域外 + (低功耗) + (标准功耗) + (最高功耗) + 选择åˆé€‚çš„GPSæ›´æ–°é—´éš” + è¿½è¸ªå™¨å¤„äºŽå®žæ—¶è¿½è¸ªæ¨¡å¼ + èŒæ–°é©¾åˆ° (Fresh Paws) + 一日守护者 (Day 1 Devotee) + 探索新秀 (Newbie Navigator) + 毛茸伙伴 (Furry Friend) + 潜力èŒå‹ (Pawtential Pal) + 满月伙伴 (Month Mate) + 摇尾探险家 (Tailwag Explorer) + è¶…æ£’æ‹æ¡£ (Pawsome Partner) + ä¸€å¹´æŠ±æŠ±æ— (1 Year Hugger) + å–µä¸å¯è¨€ (Purrfect Partner - 适用于猫) / æ±ªæ˜ŸæŒšå‹ (适用于狗) + 两年åŒä¼´ (2 Year Companion) + å¿ å®žå¥½å‹ (Faithful Friend) + ä¸‰è½½å’Œè° (3 Year Harmony) + èµ„æ·±æ¯›å‹ (Furr-timer Friend) + 欢迎加入社区ï¼å¼€å¯æ‚¨çš„èŒçˆªä¹‹æ—…,领å–首枚徽章。 + 您刚刚å¯ç¨‹ï¼é¦–日的投入已被记录在册。 + 登录一天å³å¯èŽ·å¾—æ­¤å¾½ç« ï¼ + 您正在熟悉环境。æŒç»­æŽ¢ç´¢ï¼Œè¾¾æˆæ–°çš„é‡Œç¨‹ç¢‘ï¼ + è¿žç»­æŽ¢ç´¢ä¸‰å¤©ï¼Œè¾¾æˆæ­¤é‡Œç¨‹ç¢‘ï¼ + 一周过去,您已æˆä¸ºæˆ‘ä»¬æ¯›èŒ¸å¤§å®¶åº­çš„ä¸€å‘˜ï¼ + ä¿æŒæ´»è·ƒä¸€å‘¨ï¼Œå³å¯èŽ·å¾—â€œæ¯›èŒ¸ä¼™ä¼´â€å¾½ç« ï¼ + 您展现出巨大潜力ï¼ç»§ç»­ä¿æŒã€‚ + æŒç»­äº’动åäº”å¤©ï¼Œè§£é”æ­¤å¾½ç« ï¼ + 一个月了,您已æˆä¸ºæˆ‘们社区的å®è´µæˆå‘˜ï¼ + 加入社区满一个月,å³å¯è¾¾æˆæ­¤å¾½ç« ï¼ + 三个月的探索与冒险——åšå¾—å¥½ï¼ + ä¸Žæˆ‘ä»¬å…±åŒæŽ¢ç´¢ä¸‰ä¸ªæœˆï¼Œèµ¢å¾—â€œæ‘‡å°¾æŽ¢é™©å®¶â€å¾½ç« ï¼ + 六个月的超棒åˆä½œã€‚æ„Ÿè°¢æ‚¨çš„åšæŒï¼ + 相伴六个月,å³å¯èŽ·å¾—â€œè¶…æ£’æ‹æ¡£â€å¾½ç« ï¼ + æ•´æ•´ä¸€å¹´çš„å¥‰çŒ®ï¼æ„¿æœªæ¥æ›´å¤šç²¾å½©ï¼ + ä¸Žæˆ‘ä»¬ç›¸ä¼´ä¸€å¹´ï¼Œè¾¾æˆæ­¤é‡Œç¨‹ç¢‘ï¼ + å八个月ä¾ç„¶å‡ºè‰²ã€‚您真是喵ä¸å¯è¨€/汪星挚å‹ï¼ + æŒç»­äº’动å八个月,赢得“喵ä¸å¯è¨€/汪星挚å‹â€å¾½ç« ï¼ + ä¸Žæˆ‘ä»¬å…±åº¦ä¸¤å¹´â€”â€”è¡·å¿ƒæ„Ÿè°¢æ‚¨çš„å¿ è¯šï¼ + 与我们共度两年,å³å¯èŽ·å¾—â€œä¸¤å¹´åŒä¼´â€å¾½ç« ï¼ + 三å个月的忠实陪伴。您是ç贵的朋å‹ï¼ + æˆä¸ºå¿ å®žæœ‹å‹ä¸‰åä¸ªæœˆï¼Œèµ¢å¾—æ­¤å¾½ç« ï¼ + å’Œè°å…±å¤„ä¸‰è½½ã€‚æ„Ÿè°¢ä¸€è·¯ç›¸ä¼´ï¼ + 与我们和è°å…±å¤„ä¸‰å¹´ï¼Œå°†èµ¢å¾—æ­¤å¾½ç« ï¼ + äº”å¹´çš„ç¾Žå¥½æƒ…è°Šã€‚æ‚¨çš„åšæŒä»¤äººåŠ¨å®¹ï¼ + åšæŒäº”年,将解锓资深毛å‹â€å¾½ç« ï¼ + 如何获å–? + 邀请家人 + 活跃时长: + æ‚¨çš„æœ‹å‹ %s 邀请您æˆä¸º %s 的家人。 + æ‚¨çš„æœ‹å‹ + 邀请您æˆä¸º + 的家人。 + 有效期至: + 过期于: + å¹´ + 月 + 天 + 自动续费 + è®¢é˜…è®¢å• + 订å•å·ï¼š + 请输入您的退款原因 + 申请退款 + 退款 + ç­‰å¾…å¤„ç† + 退款中 + 已退款 + 续费:$%s/年,于%s + 续费: + /年,于 + 续费:$%s/月,于%s + 续费: + /月,于 + 年度护ç†ä¿éšœ + $12.90/年,安心无忧,æ¯å¹´å¯è½»æ¾æ›´æ¢1å°è®¾å¤‡ã€‚ + æ¢æ–°ä¿éšœ + è¾“å…¥æŠ˜æ‰£ç  + éªŒè¯ + å¹´åº¦æŠ¤ç† + 年度护ç†ï¼š + è“牙连接失败 + LEDç¯è®¾ç½® + å½“è¿½è¸ªå™¨åœ¨æ‰‹æœºæ—æ—¶ï¼Œå»ºè®®é€šè¿‡è“牙连接追踪器并调整LED设置。更改将立å³ç”Ÿæ•ˆã€‚ + è“牙设置 + 当追踪器ä¸åœ¨æ‰‹æœºæ—时,您å¯ä»¥é€šè¿‡ç½‘络远程设置LEDç¯ã€‚在此情况下,设置通常需è¦å‡ åˆ†é’Ÿæ‰èƒ½ç”Ÿæ•ˆã€‚ + 抱歉,ä¸å…许é‡å¤çš„WiFi + 网络设置 + 设置准确体é‡ä»¥æé«˜å¡è·¯é‡Œè®¡ç®—精度。 + å¼€å¯è‡ªåŠ¨ç»­è´¹ + å…³äºŽä½“é‡ + è®¢å• + 设置高级版 + 基础版 + 高级版 + å·²æ‹’ç» + 已过期 + å‡çº§æ‚¨çš„å¥—é¤ + 剩余价值 + /%s月 + ï¼ˆæ­¤åŽæŒ‰æ¯å¹´ $%s 续订) + (æ­¤åŽæŒ‰ + /å¹´ç»­è´¹) + ï¼ˆæ­¤åŽæŒ‰æ¯æœˆ $%s 续订) + (æ­¤åŽæŒ‰ + /月续费) + 追踪并训练宠物,以防丢失或å±é™©ã€‚ + /%s å¹´ + 高级设置 + 删除账户 + 更改åç§° + 您的电å­é‚®ç®±åœ°å€ï¼š + ç«‹å³æ›´æ”¹ + å°†å‘é€éªŒè¯ç è‡³ %s + å‡çº§è‡³é«˜çº§ç‰ˆï¼Œè§£é”ç‹¬å®¶åŠŸèƒ½ï¼ + ç«‹å³å‡çº§ + 活动时间 + 失败 + 检测到新固件版本:%s + 未设置 + å®Œæˆ + 是å¦ä¿å­˜ï¼Ÿ + %s 分钟 + 连接 + è·³è¿‡å¯†ç  + 正在连接 + 密ç é”™è¯¯ï¼Œè¯·é‡è¯•。 + 您的查看æƒé™å·²ç»“æŸã€‚ + “%sâ€é‚€è¯·æ‚¨æŸ¥çœ‹â€œ%s†+ åªè¦è¿½è¸ªå™¨æ£€æµ‹åˆ°æ‚¨çš„爱宠安全处于çœç”µåŒºåŸŸå†…ï¼Œå°±ä¼šå…³é—­å®žæ—¶è¿½è¸ªã€æŒ‡ç¤ºç¯å’Œå£°éŸ³ä»¥å»¶é•¿ç”µæ± ç»­èˆªã€‚ + 关于追踪时长 + 您的订阅已过期,请续费 + %s å›´æ è®¾ç½® + %s 在附近 + 仅在您è¦é€€å›žæˆ–èµ é€è¿½è¸ªå™¨æ—¶ï¼Œæ‰å°†å…¶ä»Žæ‚¨çš„账户中删除。 + 删除追踪器 + 将被删除 + LEDç¯è®¾ç½® + 预留 + è®¢é˜…å¥—é¤ + 将手机é è¿‘追踪器%s + 正在连接追踪器 + 包å«å¹´åº¦æŠ¤ç†ï¼Œä¸å¯è°ƒæ•´ + 删除æˆåŠŸ + ç¼–è¾‘ä»˜æ¬¾æ–¹å¼ + 确定删除此å¡ç‰‡ï¼Ÿ + 账户已存在。立å³ç™»å½•? + 所选日期超出范围 + 下次请摇一摇唤醒您的追踪器。 + å¼€å¯è¿½è¸ªå™¨ï¼Œæ‰“开应用,å‰å¾€ä»ªè¡¨ç›˜â€œå® ç‰©â€œ>“追踪器“,然åŽç‚¹å‡»â€œç½‘络“ã€â€œGPS“ã€â€œç”µé‡â€œã€â€œWiFi区域“ã€â€œè“牙“或“指示ç¯â€œä»¥æ£€æŸ¥è¿žæŽ¥ã€ä¿¡å·æˆ–电é‡çжæ€ã€‚ + 追踪器正在充电中 + 已订阅 + å‘é€ + 首次开机请连接电æºçº¿ã€‚之åŽå¯é€šè¿‡æ‘‡åŠ¨å¼€æœºã€‚ + æ— ä¿¡å·ã€‚请检查宠物是å¦åœ¨å®¤å†…。 + å¡å·å·²å­˜åœ¨ã€‚是å¦è¦†ç›–? + 请输入密ç ã€‚ + 请输入邮箱。 + 当LTEä¿¡å·å¼±æ—¶ï¼ŒWi-Fiå¯ç¡®ä¿è¿½è¸ªå™¨ä¿æŒè¿žæŽ¥ + 更新于:%s + + 低至 + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..409a6bf --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,31 @@ + + + + @string/txt_january + @string/txt_february + @string/txt_march + @string/txt_april + @string/txt_may + @string/txt_june + @string/txt_july + @string/txt_august + @string/txt_september + @string/txt_october + @string/txt_november + @string/txt_december + + + @string/txt_january_abbr + @string/txt_february_abbr + @string/txt_march_abbr + @string/txt_april_abbr + @string/txt_may_abbr + @string/txt_june_abbr + @string/txt_july_abbr + @string/txt_august_abbr + @string/txt_september_abbr + @string/txt_october_abbr + @string/txt_november_abbr + @string/txt_december_abbr + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..003910f --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,373 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + + + #00000000 + + + #FFFFFFFF + #F2FFFFFF + #E6FFFFFF + #D9FFFFFF + #CCFFFFFF + #BFFFFFFF + #B3FFFFFF + #A6FFFFFF + #99FFFFFF + #8CFFFFFF + #80FFFFFF + #73FFFFFF + #66FFFFFF + #59FFFFFF + #4DFFFFFF + #40FFFFFF + #33FFFFFF + #26FFFFFF + #1AFFFFFF + #0DFFFFFF + + + #FF000000 + #F2000000 + #E6000000 + #D9000000 + #CC000000 + #B000000F + #B3000000 + #A6000000 + #99000000 + #8C000000 + #80000000 + #73000000 + #66000000 + #59000000 + #4D000000 + #40000000 + #33000000 + #26000000 + #1A000000 + #0D000000 + + + #FF808080 + + #FFFF0000 + + #FFFFD700 + + #FFFFFF00 + + #FF008000 + + #FF0000FF + + #FF800080 + + #FFFFC0CB + + #FFFFA500 + + #FF5722 + #FF9800 + #FFC107 + #3FB830 + #00BAED + #263238 + #455A64 + #ECEFF1 + + #eeeeee + #ffffff + + #E44909 + #eb613b + #FF018786 + + + #fd9276 + + #2fbeff + #d2d2d2 + #a3a3a3 + #000000 + + #FF6345 + #1a2323 + #ffffff + #8b9797 + #000000 + #1a2323 + #0a0a0a + #1f1f1f + #212121 + #524279 + #333333 + #ff0000 + #10AFFF + + + #00ffff + #0000ff + #ff00ff + + + + + #60000000 + #B0000000 + #90FFFFFF + #C0FFFF00 + #0F0 + #00FF00 + #FEB748 + + + #f2f2f2 + #5b6b75 + + + + #f5f5f5 + #e8e8e8 + #ababb1 + #00b0ed + #0abd6f + #fb8b1e + #ff3e47 + + + #dcdcdc + #32b374 + #4aa5de + #524279 + + #80999999 + #1a1a2323 + + + #33B5E5 + #cccccc + + + #ffffff + #10000000 + #ff359ff2 + #00000000 + #DE000000 + + #702216 + #323232 + #8B8B8B + #237EAD + + + #4d4d4d + #e6e6e6 + + #32b374 + #7d7d7d + #CFCFCF + #e75a85 + #f8f8f8 + #e5e5e5 + + #666666 + #262b45 + + #364cbd + #bfbfbf + + #2f2b38 + #4e4e4e + #85899a + #262b45 + #545768 + #fec86e + + #f3f3f3 + #87AADC + + #d6d6d6 + #90bdda + #8879a8 + + #312952 + + #bdbcc1 + #1ea7de + #47b673 + #f08726 + #e84148 + + + #803cbcb7 + #800de6e8 + + #3ea2ff + #c4f0f1 + #191b26 + + + #0e86fe + #205c82 + #768ab1 + + #f5f5f5 + #25abff + + #12191d + #D3FF53 + #a0D3FF53 + #464747 + #727272 + #50585D + #566567 + #555555 + #1AA1ED + #0FCFDE + #00DCA9 + #FF6279 + #F6C82D + #37BA55 + #F5F8FB + #898989 + #EDEDED + #3B3B3B + #FFFF00 + #FF7F00 + #FF6D2E + #7F7F7F + #A5A5A5 + #808080 + #363636 + #0F1719 + #525252 + #8FEBFF + #F4F4F4 + #E5E5E5 + #6F6F6F + #849198 + #6C6C6C + #F6F6F6 + #9B9B9B + #A0A0A0 + #C2C2C2 + #7A7A7A + #420090FF + #009800 + #ED3636 + #4C4C4C + #FA1934 + #FF333D + #737373 + #EFEFEF + #1188FF + #fbe191 + #eed280 + #88FFFFFF + + #578fff + #393a3f + #00AA00 + #00ABEB + #595959 + #FE3A3A + #02494C + #B9FF4E + #2aB9FF4E + #26B9FF4E + #575D5E + #dddddd + #00484F + #EEEFEF + #F8F9F9 + #868A8B + #ACB3B6 + #FFF2E8 + #154C4B4B + #4C4B4B1A + #CFD1D1 + #004751 + #E0E3E5 + #FF6B00 + #124446 + #030F21 + #C1C7CB + #3AB7FF + #A9B2B8 + #E2EECC + #313B3E + #C2E1E3 + #638F74 + #4D3C3C43 + #567B7C + #1A262A + #364B52 + #1E2C30 + #FF3A0F + #FF2400 + #3aFF2400 + #1f4c4b4b + #F8FFE4 + #E7F9EF + #ECF3FB + #0CC25F + #FF7527 + #F1FFC9 + #9DFF07 + #E6F5F0 + #606C87 + #001239 + #1F3462 + #ADB4C1 + #F4FAFA + #C2E5E2 + #6b9898 + #3f00c400 + #6400c400 + #7f00c400 + #b400c400 + #00bf00 + #849199 + #FFC439 + #D9D9D9 + #98A2B3 + #667185 + #FFDBDB + #FF7511 + #FFD7D1 + #E3FAFF + #FFE5C6 + #D4EBFF + #EAFFBC + #DEEEF7 + #FFDFFA + #FFFB9C + #C2FFB9 + #B9FFDD + #D1E6FF + #F9D1FF + #DAE1E8 + #2DE3B5 + #0066FF + #2600D1FF + #455053 + #FFE9E9 + #00878C + #92C545 + #2999C5 + #EA7B2B + #101928 + #FF3D00 + #F6FEFF + #4d02494C + #E6E7EE + #FFE0E0 + #EEEFEF + #64000000 + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..e545693 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,101 @@ + + + + + 1px + + + 999dp + + + 15dp + + + 10dp + 0.5dp + 24dp + 22dp + 10dp + 18dp + 20dp + 16dp + 2dp + 3dp + 4dp + 6dp + 7dp + 8dp + 1dp + 30dp + 50dp + 53dp + 56dp + 58dp + 60dp + 64dp + 66dp + 68dp + 70dp + 72dp + 78dp + 80dp + 90dp + 32dp + 34dp + 100dp + 180dp + 190dp + 200dp + 220dp + 255dp + 260dp + 270dp + 280dp + 290dp + 300dp + 350dp + 28dp + 26dp + 110dp + 120dp + 130dp + 140dp + 150dp + 160dp + 170dp + 12dp + 13dp + 14dp + 38dp + 36dp + 40dp + 47.9dp + 47dp + 45dp + 42dp + 44dp + + + 8sp + 10sp + 11sp + 12sp + 14sp + 16sp + 18sp + 20sp + 22sp + 24sp + 25sp + 26sp + 28sp + 36sp + 34sp + 32sp + 49sp + 40sp + 18sp + 16dp + + + \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml new file mode 100644 index 0000000..9a6d77c --- /dev/null +++ b/app/src/main/res/values/ids.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/qmui_themes.xml b/app/src/main/res/values/qmui_themes.xml new file mode 100644 index 0000000..02e792d --- /dev/null +++ b/app/src/main/res/values/qmui_themes.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..6b8ade3 --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..9be597a --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/test/java/com/abbidot/tracker/ExampleUnitTest.kt b/app/src/test/java/com/abbidot/tracker/ExampleUnitTest.kt new file mode 100644 index 0000000..7f5acdf --- /dev/null +++ b/app/src/test/java/com/abbidot/tracker/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.abbidot.tracker + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/baselibrary/.gitignore b/baselibrary/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/baselibrary/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/baselibrary/build.gradle b/baselibrary/build.gradle new file mode 100644 index 0000000..604f243 --- /dev/null +++ b/baselibrary/build.gradle @@ -0,0 +1,62 @@ +plugins { + id 'com.android.library' + id 'kotlin-android' +} + +android { + compileSdkVersion 33 +// buildToolsVersion "30.0.3" + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 33 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + lint { + abortOnError false + disable 'RestrictedApi' + } + namespace 'com.abbidot.baselibrary' +} + +dependencies { + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' + + // Android官方库 + api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + api 'androidx.core:core-ktx:1.13.1' + api 'androidx.appcompat:appcompat:1.7.0' + api 'com.google.android.material:material:1.10.0' + + //SharedPreferences的替代https://github.com/Tencent/MMKV + implementation 'com.tencent:mmkv-static:2.2.2' + + // Retrofit2 + api 'com.squareup.retrofit2:retrofit:3.0.0' +// implementation("com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit2}") + implementation 'com.squareup.retrofit2:converter-gson:3.0.0' +// implementation("com.squareup.retrofit2:converter-scalars:${versions.retrofit2}") + + //okhttp3 + implementation 'com.squareup.okhttp3:okhttp:5.1.0' + implementation 'com.squareup.okhttp3:logging-interceptor:5.1.0' +} \ No newline at end of file diff --git a/baselibrary/consumer-rules.pro b/baselibrary/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/baselibrary/proguard-rules.pro b/baselibrary/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/baselibrary/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/baselibrary/src/androidTest/java/com/abbidot/baselibrary/ExampleInstrumentedTest.kt b/baselibrary/src/androidTest/java/com/abbidot/baselibrary/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..19afc98 --- /dev/null +++ b/baselibrary/src/androidTest/java/com/abbidot/baselibrary/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.abbidot.baselibrary + +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.baselibrary.test", appContext.packageName) + } +} \ No newline at end of file diff --git a/baselibrary/src/main/AndroidManifest.xml b/baselibrary/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a5918e6 --- /dev/null +++ b/baselibrary/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ConState.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ConState.kt new file mode 100644 index 0000000..5880a2a --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ConState.kt @@ -0,0 +1,45 @@ +package com.abbidot.baselibrary.constant + +import androidx.annotation.IntDef + +/** + *Created by .yzq on 2021/11/8/008. + * @link + * @description:è®¾å¤‡è¿žæŽ¥çŠ¶æ€ + */ +@IntDef( + ConState.DISCONNECTED, + ConState.CONNECTED, + ConState.CONNECTING, + ConState.CONNECTING_MAC, + ConState.CONNECTION_FAIL, + ConState.BLUETOOTH_ON, + ConState.BLUETOOTH_OFF, + ConState.DEVICE_NOT_FOUND +) +@Retention(AnnotationRetention.SOURCE) +annotation class ConState { + companion object { + //连接断开 + const val DISCONNECTED = 0 + + //已连接 + const val CONNECTED = 1 + + //连接中 + const val CONNECTING = 2 + + //连接指定Mac设备 + const val CONNECTING_MAC = 3 + + //没有找到设备 + const val DEVICE_NOT_FOUND = 4 + + //未连接,连接失败 + const val CONNECTION_FAIL = 5 + + //打开è“牙 + const val BLUETOOTH_ON = 6 + const val BLUETOOTH_OFF = 7 + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/constant/DeviceType.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/DeviceType.kt new file mode 100644 index 0000000..1813294 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/DeviceType.kt @@ -0,0 +1,17 @@ +package com.abbidot.baselibrary.constant + +import androidx.annotation.IntDef + +/** + *Created by .yzq on 2021/11/9/009. + * @link + * @description:设备类型 + */ +@IntDef(DeviceType.TYPE_ONE, DeviceType.TYPE_TWO) +@Retention(AnnotationRetention.SOURCE) +annotation class DeviceType { + companion object { + const val TYPE_ONE = 1 + const val TYPE_TWO = 2 + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/constant/EventName.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/EventName.kt new file mode 100644 index 0000000..1570af3 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/EventName.kt @@ -0,0 +1,108 @@ +package com.abbidot.baselibrary.constant + +import androidx.annotation.StringDef + +/** + * EventBuså‘逿¶ˆæ¯å + */ +@StringDef( + EventName.RefreshHomeList, + EventName.Test, + EventName.FinishActivity, + EventName.UpdateUserInfo, + EventName.UpdateData, + EventName.LogOut, + EventName.PayBack, + EventName.HistoryDataSnapshot, + EventName.ActiveGoal, + EventName.UpdateReportInterval, + EventName.DeviceReceiveData, + EventName.WXLoginResult, + EventName.ChangePassword, + EventName.ConnectDeviceState, + EventName.RefreshFences, + EventName.DeleteFences, + EventName.RefreshPet, + EventName.DeletePet, + EventName.RefreshWiFiZone, + EventName.RefreshDevice, + EventName.DeleteWiFiZone, + EventName.DeleteFamily, + EventName.RefreshFamily, + EventName.DeleteDevice, + EventName.GPSSwitchState, + EventName.RefreshPackage, + EventName.LiveAutoEnd, + EventName.LiveOpenTimeOut, + EventName.SetGoal, + EventName.RefreshMessage, + EventName.BluetoothSwitch, + EventName.BleReport, + EventName.BleReportData, + EventName.LogReport, + EventName.ActionConDeviceState +) +@Retention(AnnotationRetention.SOURCE) +annotation class EventName { + companion object { + const val RefreshHomeList = "refreshHomeList" + const val Test = "test" + const val FinishActivity = "finishActivity" + const val UpdateUserInfo = "updateUserInfo" + const val UpdateData = "updateData" + const val RefreshFences = "refreshFences" + const val RefreshMessage = "refreshMessage" + const val DeleteFences = "deleteFences" + const val RefreshDevice = "refreshDevice" + const val DeleteDevice = "deleteDevice" + const val DeletePet = "deletePet" + const val RefreshPet = "refreshPet" + const val RefreshPackage = "refreshPackage" + const val SetGoal = "setGoal" + const val DeleteFamily = "deleteFamily" + const val RefreshFamily = "refreshFamily" + const val RefreshWiFiZone = "refreshWiFiZone" + const val DeleteWiFiZone = "deleteWiFiZone" + const val LogOut = "logOut" + + //支付æˆåŠŸè¿”å›ž + const val PayBack = "payBack" + const val HistoryDataSnapshot = "historyDataSnapshot" + const val ActiveGoal = "activeGoal" + const val UpdateReportInterval = "updateReportInterval" + + //已找到设备,正在去连接或已ç»è¿žæŽ¥ä¸Šçš„è®¾å¤‡çŠ¶æ€ + const val ConnectDeviceState = "connectDeviceState" + + //去æœç´¢æŸ¥æ‰¾è¿žæŽ¥è®¾å¤‡,è¿™ç§æ“ä½œè®¾å¤‡çŠ¶æ€ + const val ActionConDeviceState = "actionConDeviceState" + + //è“ç‰™å¼€å…³åˆ‡æ¢ + const val BluetoothSwitch = "bluetoothSwitch" + + //gpså¼€å…³çŠ¶æ€ + const val GPSSwitchState = "gpsSwitchState" + + //ç›´æ’­è‡ªåŠ¨ç»“æŸ + const val LiveAutoEnd = "liveAutoEnd" + const val LiveOpenTimeOut = "liveOpenTimeOut" + + //æŽ¥æ”¶åˆ°è®¾å¤‡è¿”å›žçš„æ•°æ® + const val DeviceReceiveData = "deviceReceiveData" + + //微信登录æˆåŠŸè¿”å›ž + const val WXLoginResult = "wxLoginResult" + + //ä¿®æ”¹å¯†ç æˆåŠŸè¿”å›ž + const val ChangePassword = "changePassword" + + //è“ç‰™ä¸ŠæŠ¥æ•°æ® + const val BleReport = "bleReport" + + //è“ç‰™ä¸ŠæŠ¥çš„æ•°æ® + const val BleReportData = "bleReportData" + + //æ—¥å¿—ä¸ŠæŠ¥æ•°æ® + const val LogReport = "logReport" + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/constant/MMKVKey.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/MMKVKey.kt new file mode 100644 index 0000000..f6b9920 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/MMKVKey.kt @@ -0,0 +1,99 @@ +package com.abbidot.baselibrary.constant + +import androidx.annotation.StringDef + +/** + * 存储SharedPreferencesçš„keyï¼Œæžšä¸¾å¸¸é‡ + */ +@StringDef( + MMKVKey.UserId, + MMKVKey.Email, + MMKVKey.UserName, + MMKVKey.HeadUrl, + MMKVKey.Phone, + MMKVKey.Location, + MMKVKey.Gender, + MMKVKey.BirthdayDate, + MMKVKey.PetSelectPosition, + MMKVKey.Token, + MMKVKey.LineSelectPosition, + MMKVKey.isBindDevice, + MMKVKey.isBindPet, + MMKVKey.DebugIp, + MMKVKey.FirstOpen, + MMKVKey.FirstDeviceId, + MMKVKey.FirstDeviceOutId, + MMKVKey.FirstDeviceMac, + MMKVKey.HeightUnit, + MMKVKey.WeightUnit, + MMKVKey.MeasureUnit, + MMKVKey.ActivityGoal, + MMKVKey.CountryCode, + MMKVKey.MapShowDefaultLat, + MMKVKey.MapShowDefaultLon, + MMKVKey.MealType, + MMKVKey.isExistNewInvite, + MMKVKey.OnlyGoogleMap, + MMKVKey.MapType, + MMKVKey.ShowFence, + MMKVKey.Shared +) +@Retention(AnnotationRetention.SOURCE) +annotation class MMKVKey { + companion object { + // const val SPName = "abbidot_sp" + const val UserId = "userId" + const val Token = "token" + const val UserName = "username" + const val Email = "email" + const val HeadUrl = "imgurl" + const val isBindDevice = "isBindDevice" + const val isBindPet = "isBindPet" + const val isExistNewInvite = "isExistNewInvite" + const val Phone = "phone" + const val ActivityGoal = "activityGoal" + const val Location = "location" + const val Gender = "gender" + const val BirthdayDate = "birthdayDate" + const val CountryCode = "countryCode" + + //首次绑定æµç¨‹ + const val FirstDeviceId = "firstDeviceId" + const val FirstDeviceOutId = "firstDeviceOutId" + const val FirstDeviceMac = "firstDeviceMac" + const val HeightUnit = "heightUnit" + const val WeightUnit = "weightUnit" + + //1:Imperial 2:Metric + const val MeasureUnit = "measureUnit" + + //ä¿å­˜é¦–页弹窗选中的宠物下标 + const val PetSelectPosition = "petSelectPosition" + + //ä¿å­˜åކå²è®°å½•展示线还是点的类型 + const val LineSelectPosition = "lineSelectPosition" + + //国内外æœåŠ¡å™¨ç«¯å£åˆ‡æ¢ + const val DebugIp = "debugIp" + + //åªä½¿ç”¨è°·æ­Œåœ°å›¾ + const val OnlyGoogleMap = "onlyGoogleMap" + const val MapShowDefaultLat = "mapDefaultLat" + const val MapShowDefaultLon = "mapDefaultLon" + + //地图模å¼ç±»åž‹ + const val MapType = "mapType" + + //mapé¡µæ˜¯å¦æ˜¾ç¤ºå›´æ  + const val ShowFence = "isShowFence" + + //是首次打开APP + const val FirstOpen = "firstOpen" + + //套é¤ç±»åž‹ + const val MealType = "mealType" + + //是å¦åˆ†äº«çš„ + const val Shared = "shared" + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ResultCode.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ResultCode.kt new file mode 100644 index 0000000..d9a8d14 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/constant/ResultCode.kt @@ -0,0 +1,21 @@ +package com.abbidot.baselibrary.constant + +import androidx.annotation.IntDef + +/** + *Created by .yzq on 2022/3/4/004. + * @link + * @description: + */ +@IntDef(ResultCode.ResultCode_1, ResultCode.ResultCode_2, ResultCode.ResultCode_3, + ResultCode.ResultCode_4, ResultCode.ResultCode_5) +@Retention(AnnotationRetention.SOURCE) +annotation class ResultCode() { + companion object { + const val ResultCode_1 = 1 + const val ResultCode_2 = 2 + const val ResultCode_3 = 3 + const val ResultCode_4 = 4 + const val ResultCode_5 = 5 + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt new file mode 100644 index 0000000..9e8a79e --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/XEventBus.kt @@ -0,0 +1,50 @@ +package com.abbidot.baselibrary.eventbus + +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.Observer +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.core.EmptyMessage +import com.abbidot.baselibrary.eventbus.core.EventLiveData + +object XEventBus { + + private val channels = HashMap>() + + private fun with(@EventName eventName: String): EventLiveData { + synchronized(channels) { + if (!channels.containsKey(eventName)) { + channels[eventName] = EventLiveData() + } + return (channels[eventName] as EventLiveData) + } + } + + fun post(@EventName eventName: String, message: T) { + val eventLiveData = with(eventName) + eventLiveData.postValue(message!!) + } + + fun observe(owner: LifecycleOwner, + @EventName eventName: String, + sticky: Boolean = false, + observer: Observer) { + with(eventName).observe(owner, sticky, observer) + } + + fun post(@EventName eventName: String) { + val eventLiveData = with(eventName) + eventLiveData.postValue(EmptyMessage) + } + + /** + * 空Message调用 + */ + fun observe(owner: LifecycleOwner, + @EventName eventName: String, + sticky: Boolean = false, + observer: () -> Unit) { + with(eventName).observe(owner, sticky) { + observer() + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EmptyMessage.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EmptyMessage.kt new file mode 100644 index 0000000..b862b48 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EmptyMessage.kt @@ -0,0 +1,4 @@ +package com.abbidot.baselibrary.eventbus.core + +object EmptyMessage { +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventLiveData.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventLiveData.kt new file mode 100644 index 0000000..37a87b5 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventLiveData.kt @@ -0,0 +1,16 @@ +package com.abbidot.baselibrary.eventbus.core + +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.Observer + + +class EventLiveData : MutableLiveData() { + + fun observe(owner: LifecycleOwner, sticky: Boolean, observer: Observer) { + observe(owner, wrapObserver(sticky, observer)) + } + + private fun wrapObserver(sticky: Boolean, observer: Observer): Observer { + return EventObserverWrapper(this, sticky, observer) + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventObserverWrapper.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventObserverWrapper.kt new file mode 100644 index 0000000..3b9277c --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/EventObserverWrapper.kt @@ -0,0 +1,30 @@ +package com.abbidot.baselibrary.eventbus.core + +import androidx.lifecycle.Observer +import com.abbidot.baselibrary.util.reflect.ReflectHelper + +class EventObserverWrapper(liveData: EventLiveData, + sticky: Boolean, + private val observerDelegate: Observer) : Observer { + + private var preventNextEvent = false + + companion object { + private const val START_VERSION = -1 + } + + init { + if (!sticky) { + val version = ReflectHelper.of(liveData).getField("mVersion") as? Int ?: START_VERSION + preventNextEvent = version > START_VERSION + } + } + + override fun onChanged(t: T) { + if (preventNextEvent) { + preventNextEvent = false + return + } + observerDelegate.onChanged(t) + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/LiveData.java b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/LiveData.java new file mode 100644 index 0000000..a2a1948 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/LiveData.java @@ -0,0 +1,495 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.abbidot.baselibrary.eventbus.core; + +import androidx.annotation.MainThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.arch.core.executor.ArchTaskExecutor; +import androidx.arch.core.internal.SafeIterableMap; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleEventObserver; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModel; + +import java.util.Iterator; +import java.util.Map; + +import static androidx.lifecycle.Lifecycle.State.DESTROYED; +import static androidx.lifecycle.Lifecycle.State.STARTED; + +/** + * LiveData is a data holder class that can be observed within a given lifecycle. + * This means that an {@link Observer} can be added in a pair with a {@link LifecycleOwner}, and + * this observer will be notified about modifications of the wrapped data only if the paired + * LifecycleOwner is in active state. LifecycleOwner is considered as active, if its state is + * {@link Lifecycle.State#STARTED} or {@link Lifecycle.State#RESUMED}. An observer added via + * {@link #observeForever(Observer)} is considered as always active and thus will be always notified + * about modifications. For those observers, you should manually call + * {@link #removeObserver(Observer)}. + * + *

    An observer added with a Lifecycle will be automatically removed if the corresponding + * Lifecycle moves to {@link Lifecycle.State#DESTROYED} state. This is especially useful for + * activities and fragments where they can safely observe LiveData and not worry about leaks: + * they will be instantly unsubscribed when they are destroyed. + * + *

    + * In addition, LiveData has {@link LiveData#onActive()} and {@link LiveData#onInactive()} methods + * to get notified when number of active {@link Observer}s change between 0 and 1. + * This allows LiveData to release any heavy resources when it does not have any Observers that + * are actively observing. + *

    + * This class is designed to hold individual data fields of {@link ViewModel}, + * but can also be used for sharing data between different modules in your application + * in a decoupled fashion. + * + * @param The type of data held by this instance + * @see ViewModel + */ +public abstract class LiveData { + @SuppressWarnings("WeakerAccess") /* synthetic access */ final Object mDataLock = new Object(); + static final int START_VERSION = -1; + @SuppressWarnings( + "WeakerAccess") /* synthetic access */ static final Object NOT_SET = new Object(); + + private SafeIterableMap, ObserverWrapper> mObservers = + new SafeIterableMap<>(); + + // how many observers are in active state + @SuppressWarnings("WeakerAccess") /* synthetic access */ int mActiveCount = 0; + // to handle active/inactive reentry, we guard with this boolean + private boolean mChangingActiveState; + private volatile Object mData; + // when setData is called, we set the pending data and actual data swap happens on the main + // thread + @SuppressWarnings("WeakerAccess") /* synthetic access */ volatile Object mPendingData = NOT_SET; + private int mVersion; + + private boolean mDispatchingValue; + @SuppressWarnings("FieldCanBeLocal") + private boolean mDispatchInvalidated; + private final Runnable mPostValueRunnable = new Runnable() { + @SuppressWarnings("unchecked") + @Override + public void run() { + Object newValue; + synchronized (mDataLock) { + newValue = mPendingData; + mPendingData = NOT_SET; + } + setValue((T) newValue); + } + }; + + /** + * Creates a LiveData initialized with the given {@code value}. + * + * @param value initial value + */ + public LiveData(T value) { + mData = value; + mVersion = START_VERSION + 1; + } + + /** + * Creates a LiveData with no value assigned to it. + */ + public LiveData() { + mData = NOT_SET; + mVersion = START_VERSION; + } + + @SuppressWarnings("unchecked") + private void considerNotify(ObserverWrapper observer) { + /* 修改æºç ï¼Œå®žçްåŽå°æ”¶æ¶ˆæ¯åŠŸèƒ½ + if (!observer.mActive) { + return; + } + // Check latest state b4 dispatch. Maybe it changed state but we didn't get the event yet. + // + // we still first check observer.active to keep it as the entrance for events. So even if + // the observer moved to an active state, if we've not received that event, we better not + // notify for a more predictable notification order. + if (!observer.shouldBeActive()) { + observer.activeStateChanged(false); + return; + } + */ + + if (observer.mLastVersion >= mVersion) { + return; + } + observer.mLastVersion = mVersion; + observer.mObserver.onChanged((T) mData); + } + + @SuppressWarnings("WeakerAccess") /* synthetic access */ + void dispatchingValue(@Nullable ObserverWrapper initiator) { + if (mDispatchingValue) { + mDispatchInvalidated = true; + return; + } + mDispatchingValue = true; + do { + mDispatchInvalidated = false; + if (initiator != null) { + considerNotify(initiator); + initiator = null; + } else { + for (Iterator, ObserverWrapper>> iterator = + mObservers.iteratorWithAdditions(); iterator.hasNext(); ) { + considerNotify(iterator.next().getValue()); + if (mDispatchInvalidated) { + break; + } + } + } + } while (mDispatchInvalidated); + mDispatchingValue = false; + } + + /** + * Adds the given observer to the observers list within the lifespan of the given + * owner. The events are dispatched on the main thread. If LiveData already has data + * set, it will be delivered to the observer. + *

    + * The observer will only receive events if the owner is in {@link Lifecycle.State#STARTED} + * or {@link Lifecycle.State#RESUMED} state (active). + *

    + * If the owner moves to the {@link Lifecycle.State#DESTROYED} state, the observer will + * automatically be removed. + *

    + * When data changes while the {@code owner} is not active, it will not receive any updates. + * If it becomes active again, it will receive the last available data automatically. + *

    + * LiveData keeps a strong reference to the observer and the owner as long as the + * given LifecycleOwner is not destroyed. When it is destroyed, LiveData removes references to + * the observer & the owner. + *

    + * If the given owner is already in {@link Lifecycle.State#DESTROYED} state, LiveData + * ignores the call. + *

    + * If the given owner, observer tuple is already in the list, the call is ignored. + * If the observer is already in the list with another owner, LiveData throws an + * {@link IllegalArgumentException}. + * + * @param owner The LifecycleOwner which controls the observer + * @param observer The observer that will receive the events + */ + @MainThread + public void observe(@NonNull LifecycleOwner owner, @NonNull Observer observer) { + assertMainThread("observe"); + if (owner.getLifecycle().getCurrentState() == DESTROYED) { + // ignore + return; + } + LifecycleBoundObserver wrapper = new LifecycleBoundObserver(owner, observer); + ObserverWrapper existing = mObservers.putIfAbsent(observer, wrapper); + if (existing != null && !existing.isAttachedTo(owner)) { + throw new IllegalArgumentException("Cannot add the same observer" + " with different " + + "lifecycles"); + } + if (existing != null) { + return; + } + owner.getLifecycle().addObserver(wrapper); + } + + /** + * Adds the given observer to the observers list. This call is similar to + * {@link LiveData#observe(LifecycleOwner, Observer)} with a LifecycleOwner, which + * is always active. This means that the given observer will receive all events and will never + * be automatically removed. You should manually call {@link #removeObserver(Observer)} to stop + * observing this LiveData. + * While LiveData has one of such observers, it will be considered + * as active. + *

    + * If the observer was already added with an owner to this LiveData, LiveData throws an + * {@link IllegalArgumentException}. + * + * @param observer The observer that will receive the events + */ + @MainThread + public void observeForever(@NonNull Observer observer) { + assertMainThread("observeForever"); + AlwaysActiveObserver wrapper = new AlwaysActiveObserver(observer); + ObserverWrapper existing = mObservers.putIfAbsent(observer, wrapper); + if (existing instanceof LiveData.LifecycleBoundObserver) { + throw new IllegalArgumentException("Cannot add the same observer" + " with different " + + "lifecycles"); + } + if (existing != null) { + return; + } + wrapper.activeStateChanged(true); + } + + /** + * Removes the given observer from the observers list. + * + * @param observer The Observer to receive events. + */ + @MainThread + public void removeObserver(@NonNull final Observer observer) { + assertMainThread("removeObserver"); + ObserverWrapper removed = mObservers.remove(observer); + if (removed == null) { + return; + } + removed.detachObserver(); + removed.activeStateChanged(false); + } + + /** + * Removes all observers that are tied to the given {@link LifecycleOwner}. + * + * @param owner The {@code LifecycleOwner} scope for the observers to be removed. + */ + @SuppressWarnings("WeakerAccess") + @MainThread + public void removeObservers(@NonNull final LifecycleOwner owner) { + assertMainThread("removeObservers"); + for (Map.Entry, ObserverWrapper> entry : mObservers) { + if (entry.getValue().isAttachedTo(owner)) { + removeObserver(entry.getKey()); + } + } + } + + /** + * Posts a task to a main thread to set the given value. So if you have a following code + * executed in the main thread: + *

    +     * liveData.postValue("a");
    +     * liveData.setValue("b");
    +     * 
    + * The value "b" would be set at first and later the main thread would override it with + * the value "a". + *

    + * If you called this method multiple times before a main thread executed a posted task, only + * the last value would be dispatched. + * + * @param value The new value + */ + protected void postValue(T value) { + boolean postTask; + synchronized (mDataLock) { + postTask = mPendingData == NOT_SET; + mPendingData = value; + } + if (!postTask) { + return; + } + ArchTaskExecutor.getInstance().postToMainThread(mPostValueRunnable); + } + + /** + * Sets the value. If there are active observers, the value will be dispatched to them. + *

    + * This method must be called from the main thread. If you need set a value from a background + * thread, you can use {@link #postValue(Object)} + * + * @param value The new value + */ + @MainThread + protected void setValue(T value) { + assertMainThread("setValue"); + mVersion++; + mData = value; + dispatchingValue(null); + } + + /** + * Returns the current value. + * Note that calling this method on a background thread does not guarantee that the latest + * value set will be received. + * + * @return the current value + */ + @SuppressWarnings("unchecked") + @Nullable + public T getValue() { + Object data = mData; + if (data != NOT_SET) { + return (T) data; + } + return null; + } + + int getVersion() { + return mVersion; + } + + /** + * Called when the number of active observers change from 0 to 1. + *

    + * This callback can be used to know that this LiveData is being used thus should be kept + * up to date. + */ + protected void onActive() { + + } + + /** + * Called when the number of active observers change from 1 to 0. + *

    + * This does not mean that there are no observers left, there may still be observers but their + * lifecycle states aren't {@link Lifecycle.State#STARTED} or {@link Lifecycle.State#RESUMED} + * (like an Activity in the back stack). + *

    + * You can check if there are observers via {@link #hasObservers()}. + */ + protected void onInactive() { + + } + + /** + * Returns true if this LiveData has observers. + * + * @return true if this LiveData has observers + */ + @SuppressWarnings("WeakerAccess") + public boolean hasObservers() { + return mObservers.size() > 0; + } + + /** + * Returns true if this LiveData has active observers. + * + * @return true if this LiveData has active observers + */ + @SuppressWarnings("WeakerAccess") + public boolean hasActiveObservers() { + return mActiveCount > 0; + } + + @MainThread + void changeActiveCounter(int change) { + int previousActiveCount = mActiveCount; + mActiveCount += change; + if (mChangingActiveState) { + return; + } + mChangingActiveState = true; + try { + while (previousActiveCount != mActiveCount) { + boolean needToCallActive = previousActiveCount == 0 && mActiveCount > 0; + boolean needToCallInactive = previousActiveCount > 0 && mActiveCount == 0; + previousActiveCount = mActiveCount; + if (needToCallActive) { + onActive(); + } else if (needToCallInactive) { + onInactive(); + } + } + } finally { + mChangingActiveState = false; + } + } + + class LifecycleBoundObserver extends ObserverWrapper implements LifecycleEventObserver { + @NonNull + final LifecycleOwner mOwner; + + LifecycleBoundObserver(@NonNull LifecycleOwner owner, Observer observer) { + super(observer); + mOwner = owner; + } + + @Override + boolean shouldBeActive() { + return mOwner.getLifecycle().getCurrentState().isAtLeast(STARTED); + } + + @Override + public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) { + Lifecycle.State currentState = mOwner.getLifecycle().getCurrentState(); + if (currentState == DESTROYED) { + removeObserver(mObserver); + return; + } + Lifecycle.State prevState = null; + while (prevState != currentState) { + prevState = currentState; + activeStateChanged(shouldBeActive()); + currentState = mOwner.getLifecycle().getCurrentState(); + } + } + + @Override + boolean isAttachedTo(LifecycleOwner owner) { + return mOwner == owner; + } + + @Override + void detachObserver() { + mOwner.getLifecycle().removeObserver(this); + } + } + + private abstract class ObserverWrapper { + final Observer mObserver; + boolean mActive; + int mLastVersion = START_VERSION; + + ObserverWrapper(Observer observer) { + mObserver = observer; + } + + abstract boolean shouldBeActive(); + + boolean isAttachedTo(LifecycleOwner owner) { + return false; + } + + void detachObserver() { + } + + void activeStateChanged(boolean newActive) { + if (newActive == mActive) { + return; + } + // immediately set active state, so we'd never dispatch anything to inactive + // owner + mActive = newActive; + changeActiveCounter(mActive ? 1 : -1); + if (mActive) { + dispatchingValue(this); + } + } + } + + private class AlwaysActiveObserver extends ObserverWrapper { + + AlwaysActiveObserver(Observer observer) { + super(observer); + } + + @Override + boolean shouldBeActive() { + return true; + } + } + + static void assertMainThread(String methodName) { + if (!ArchTaskExecutor.getInstance().isMainThread()) { + throw new IllegalStateException("Cannot invoke " + methodName + " on a background" + + " thread"); + } + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/MutableLiveData.java b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/MutableLiveData.java new file mode 100644 index 0000000..6a5f592 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/eventbus/core/MutableLiveData.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.abbidot.baselibrary.eventbus.core; + +/** + * {@link LiveData} which publicly exposes {@link #setValue(T)} and {@link #postValue(T)} method. + * + * @param The type of data hold by this instance + */ +@SuppressWarnings("WeakerAccess") +public class MutableLiveData extends LiveData { + + /** + * Creates a MutableLiveData initialized with the given {@code value}. + * + * @param value initial value + */ + public MutableLiveData(T value) { + super(value); + } + + /** + * Creates a MutableLiveData with no value assigned to it. + */ + public MutableLiveData() { + super(); + } + + @Override + public void postValue(T value) { + super.postValue(value); + } + + @Override + public void setValue(T value) { + super.setValue(value); + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/list/BaseRecyclerAdapter.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/list/BaseRecyclerAdapter.kt new file mode 100644 index 0000000..f2c4619 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/list/BaseRecyclerAdapter.kt @@ -0,0 +1,247 @@ +/* + * Tencent is pleased to support the open source community by making QMUI_Android available. + * + * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the MIT License (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://opensource.org/licenses/MIT + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is + * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.abbidot.baselibrary.list + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +/** + * @author cginechen + * @date 2016-10-19 + * @description é…åˆDiffUtilä½¿ç”¨å–æ¶ˆnotifyDataSetChanged()方法 + */ +abstract class BaseRecyclerAdapter(ctx: Context, list: MutableList?) : + RecyclerView.Adapter() { + + private var mData: MutableList = mutableListOf() + val mContext: Context + private val mInflater: LayoutInflater + private var mClickListener: OnItemClickListener? = null + private var mLongClickListener: OnItemLongClickListener? = null + + //æ˜¯å¦æ˜¾ç¤ºæ²¡æœ‰æ•°æ®çš„æ·»åŠ æŒ‰é’® + var isShowNoDataAddButton = true + + // æ˜¯å¦æ˜¾ç¤ºç©ºå¸ƒå±€ï¼Œé»˜è®¤æ˜¾ç¤º + private var showEmptyView = true + + //é‡è¯•事件,整个view点击 + private var mAgainClickListener: OnAgainClickListener? = null + + /** + * viewType--分别为item以åŠç©ºview + */ + private val mViewTypeEmpty = 0 + private val mViewTypeItem = 1 + + init { + list?.apply { + mData.addAll(this.toList()) + } + mContext = ctx + mInflater = LayoutInflater.from(ctx) + } + + open fun setData(list: MutableList?, isNeedNotifyData: Boolean = false) { + clearData() + if (null == list) { + if (mData.size == 0) { + showEmptyView(true) + } else { + showEmptyView(false) + } + } + list?.apply { + mData.addAll(list) + //出现没有数æ®å°±æ˜¾ç¤ºç©ºå¸ƒå±€ + if (mData.size == 0) { + showEmptyView(true) + } else { + showEmptyView(false) + } + if (isNeedNotifyData) { + notifyItemRangeInserted(0, list.size) +// notifyItemRangeChanged(0, list.size) + } + } + } + + private fun clearData() { + notifyItemRangeRemoved(0, mData.size) + mData.clear() + } + + fun getData() = mData + + fun remove(oldList: MutableList, pos: Int): MutableList { + val newList: MutableList = oldList.toMutableList() + newList.removeAt(pos) + return newList + } + + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder { + val holder: RecyclerViewHolder + //空布局 + if (getEmptyLayoutId(viewType) != 0 && viewType == mViewTypeEmpty) { + holder = RecyclerViewHolder( + mContext, mInflater.inflate(getEmptyLayoutId(viewType), parent, false) + ) + if (null != mAgainClickListener) { + holder.itemView.setOnClickListener { + mAgainClickListener!!.onAgainListener() + } + } + mEmptyViewHolder = holder + } else { + holder = RecyclerViewHolder( + mContext, mInflater.inflate(getItemLayoutId(viewType), parent, false) + ) + if (null != mClickListener) { + holder.itemView.setOnClickListener { + mClickListener!!.onItemClick(holder.itemView, holder.layoutPosition) + } + } + if (null != mLongClickListener) { + holder.itemView.setOnLongClickListener { + mLongClickListener!!.onItemLongClick(holder.itemView, holder.layoutPosition) + true + } + } + } + return holder + } + + override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) { + if (mData.size > 0) bindData(holder, position, mData[position]) + else noData(holder) + } + + private var mEmptyViewHolder: RecyclerViewHolder? = null + + override fun onBindViewHolder( + holder: RecyclerViewHolder, position: Int, payloads: MutableList + ) { + if (payloads.isEmpty()) { + onBindViewHolder(holder, position) + } else { + partBindData(holder, position, payloads[0] as T) + } + } + + /** + * åˆ¤æ–­æ˜¯å¦æ˜¯ç©ºå¸ƒå±€ + */ + 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() + } + } + + fun getItem(pos: Int) = mData[pos] + + //åªæœ‰ç©ºå¸ƒå±€é»˜è®¤æ‰æœ‰ä¸€ä¸ªitem + override fun getItemCount() = + if (mData.size == 0 && getEmptyLayoutId(mViewTypeEmpty) != 0) 1 else mData.size + + override fun getItemViewType(position: Int) = + if (isEmptyPosition(position)) mViewTypeEmpty else mViewTypeItem + + fun add(pos: Int, item: T) { + mData.add(pos, item) + notifyItemInserted(pos) + } + + fun prepend(items: List) { + mData.addAll(0, items) + notifyDataSetChanged() + } + + fun append(items: List) { + mData.addAll(items) + notifyDataSetChanged() + } + + fun delete(pos: Int) { + mData.removeAt(pos) + notifyItemRemoved(pos) + } + + fun showNoDataAddButton(show: Boolean) { + isShowNoDataAddButton = show + notifyDataSetChanged() + } + + /** + * 设置显示空布局 等于0䏿˜¾ç¤ºç©ºå¸ƒå±€ + */ + abstract fun getEmptyLayoutId(viewType: Int): Int + abstract fun getItemLayoutId(viewType: Int): Int + abstract fun bindData(holder: RecyclerViewHolder?, position: Int, item: T) + + //没有数æ®ï¼Œç©ºå¸ƒå±€çš„æƒ…况 + open fun noData(holder: RecyclerViewHolder?) { + + } + + //å±€éƒ¨åˆ·æ–°æ•°æ® + open fun partBindData(holder: RecyclerViewHolder, position: Int, item: T) { + bindData(holder, position, mData[position]) + } + + fun setOnItemClickListener(listener: OnItemClickListener?) { + mClickListener = listener + } + + fun setOnItemLongClickListener(listener: OnItemLongClickListener?) { + mLongClickListener = listener + } + + fun setOnAgainClickListener(listener: OnAgainClickListener?) { + mAgainClickListener = listener + } + + interface OnItemClickListener { + fun onItemClick(itemView: View?, pos: Int) + } + + interface OnItemLongClickListener { + fun onItemLongClick(itemView: View?, pos: Int) + } + + /** + * 点击å±å¹•é‡è¯• æŽ¥å£ + */ + interface OnAgainClickListener { + /** + * 点击å±å¹•é‡è¯• + */ + fun onAgainListener() + } + +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/list/RecyclerViewHolder.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/list/RecyclerViewHolder.kt new file mode 100644 index 0000000..83d4061 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/list/RecyclerViewHolder.kt @@ -0,0 +1,86 @@ +/* + * Tencent is pleased to support the open source community by making QMUI_Android available. + * + * Copyright (C) 2017-2018 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the MIT License (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://opensource.org/licenses/MIT + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is + * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.abbidot.baselibrary.list + +import android.content.Context +import android.util.SparseArray +import android.view.View +import android.widget.Button +import android.widget.EditText +import android.widget.ImageButton +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView + +/** + * @author cginechen + * @date 2016-10-19 + */ +class RecyclerViewHolder(ctx: Context?, itemView: View?) : RecyclerView.ViewHolder(itemView!!) { + + private val mViews: SparseArray = SparseArray() + + private fun findViewById(viewId: Int): T { + var view = mViews[viewId] + if (view == null) { + view = itemView.findViewById(viewId) + mViews.put(viewId, view) + } + return view as T + } + + fun getView(viewId: Int): View { + return findViewById(viewId) + } + + fun getTextView(viewId: Int): TextView { + return getView(viewId) as TextView + } + + fun getButton(viewId: Int): Button { + return getView(viewId) as Button + } + + fun getImageView(viewId: Int): ImageView { + return getView(viewId) as ImageView + } + + fun getImageButton(viewId: Int): ImageButton { + return getView(viewId) as ImageButton + } + + fun getEditText(viewId: Int): EditText { + return getView(viewId) as EditText + } + + fun setText(viewId: Int, value: String?): RecyclerViewHolder { + val view = findViewById(viewId) + view.text = value + return this + } + + fun setBackground(viewId: Int, resId: Int): RecyclerViewHolder { + val view = findViewById(viewId) + view.setBackgroundResource(resId) + return this + } + + fun setClickListener(viewId: Int, listener: View.OnClickListener?): RecyclerViewHolder { + val view = findViewById(viewId) + view.setOnClickListener(listener) + return this + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseNetworkApi.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseNetworkApi.kt new file mode 100644 index 0000000..bbff261 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseNetworkApi.kt @@ -0,0 +1,133 @@ +package com.abbidot.baselibrary.network.base + +import com.abbidot.baselibrary.network.exception.ErrorCode +import com.abbidot.baselibrary.network.exception.NetworkErrorCodeException +import com.abbidot.baselibrary.network.exception.NetworkException +import com.abbidot.baselibrary.network.interceptor.CommonRequestInterceptor +import com.abbidot.baselibrary.network.interceptor.CommonResponseInterceptor +import com.abbidot.baselibrary.network.interceptor.DoubleDefault0Adapter +import com.abbidot.baselibrary.network.interceptor.StringNullAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.google.gson.GsonBuilder +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor +import retrofit2.HttpException +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import java.lang.reflect.ParameterizedType +import java.util.concurrent.TimeUnit + +/** + * 网络请求å°è£… + */ +abstract class BaseNetworkApi(private val baseUrl: String) : IService { + + protected val service: I by lazy { + getRetrofit().create(getServiceClass()) + } + + protected open fun getRetrofit(): Retrofit { + //添加gsonè§£æžnull拦截器 + val gson = GsonBuilder().registerTypeAdapter(String::class.java, StringNullAdapter()) + .registerTypeAdapter(Double::class.java, DoubleDefault0Adapter()).create() + + return Retrofit.Builder().baseUrl(baseUrl).client(getOkHttpClient()) + .addConverterFactory(GsonConverterFactory.create(gson)).build() + } + + private fun getServiceClass(): Class { + val genType = javaClass.genericSuperclass as ParameterizedType + return genType.actualTypeArguments[0] as Class + } + + private fun getOkHttpClient(): OkHttpClient { + val okHttpClient = getCustomOkHttpClient() + if (null != okHttpClient) { + return okHttpClient + } + return defaultOkHttpClient + } + + protected open fun getCustomOkHttpClient(): OkHttpClient? { + return null + } + + protected open fun getCustomInterceptor(): Interceptor? { + return null + } + + protected suspend fun getResult(block: suspend () -> BaseResponse): Result { + for (i in 1..RETRY_COUNT) { + try { + val response = block() + //处ç†â€response.code != OK“情况 + if (response.code != ErrorCode.OK) { + + //处ç†ä¿¡ç”¨å¡æ”¯ä»˜è¿”回结果 + if (response.code == ErrorCode.ERROR) { + val message = response.message + if (message == "支付失败") { + return Result.success("${ErrorCode.CREDIT_CARD_PAY_FAIL}" as T) + } + } + + + throw NetworkErrorCodeException.of( + response.code, "exception code is ${response.code},response code not 200" + ) + } + //适用于åªç®¡è¯·æ±‚æˆåŠŸ(T=String),ä¸éœ€è¦å¤„ç†ç»“æžœæ•°æ® + val data = response.data + if (null == data || data == "") { + + //处ç†ä¿¡ç”¨å¡æ”¯ä»˜è¿”回结果 + if (response.code == ErrorCode.OK) { + val message = response.message + if (message == "支付æˆåŠŸ") { + return Result.success("${ErrorCode.CREDIT_CARD_PAY_SUCCESS}" as T) + } + } + + //throw NetworkException.of(ErrorCode.VALUE_IS_NULL, "response data is null") + return Result.success("${response.code}" as T) + } + return Result.success(response.data) + } catch (throwable: Throwable) { + LogUtil.e("BaseNetworkApi-->Throwable", throwable.message.toString()) + if (throwable is NetworkException) { + return Result.failure(throwable) + } else if (throwable is NetworkErrorCodeException) { + return Result.failure(throwable) + } + if ((throwable is HttpException && throwable.code() == ErrorCode.UNAUTHORIZED)) { + // 这里刷新token,然åŽé‡è¯• + } + } + } + return Result.failure(NetworkException.of(ErrorCode.VALUE_IS_NULL, "unknown")) + } + + companion object { + const val TAG = "BaseNetworkApi" + + //失败é‡è¯•请求次数 + private const val RETRY_COUNT = 1 + private val defaultOkHttpClient by lazy { + val builder = OkHttpClient.Builder().callTimeout(10L, TimeUnit.SECONDS) + .connectTimeout(10L, TimeUnit.SECONDS).readTimeout(10L, TimeUnit.SECONDS) + .writeTimeout(10L, TimeUnit.SECONDS).retryOnConnectionFailure(true) + //添加拦截器 + builder.addInterceptor(CommonRequestInterceptor()) + builder.addInterceptor(CommonResponseInterceptor()) + if (AppUtils.isDebug()) { + val loggingInterceptor = HttpLoggingInterceptor() + loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY) + builder.addInterceptor(loggingInterceptor) + } + + builder.build() + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseResponse.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseResponse.kt new file mode 100644 index 0000000..b64dff1 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/BaseResponse.kt @@ -0,0 +1,11 @@ +package com.abbidot.baselibrary.network.base + +/** + * 网络数æ®è¿”回基类 + */ +data class BaseResponse( + var code: Int = 0, + val message: String? = null, + val redirect: String? = null, + val data: T? = null +) diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/IService.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/IService.kt new file mode 100644 index 0000000..6a4f8a9 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/base/IService.kt @@ -0,0 +1,4 @@ +package com.abbidot.baselibrary.network.base + +interface IService { +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/ErrorCode.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/ErrorCode.kt new file mode 100644 index 0000000..532f9d3 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/ErrorCode.kt @@ -0,0 +1,79 @@ +package com.abbidot.baselibrary.network.exception + +import androidx.annotation.IntDef + +@IntDef( + ErrorCode.OK, + ErrorCode.UNAUTHORIZED, + ErrorCode.CUSTOM_FIRST, + ErrorCode.VALUE_IS_NULL, + ErrorCode.DEVICE_RENEWAL, + ErrorCode.TOKEN_OVERDUE, + ErrorCode.USER_PASSWORD_ERROR, + ErrorCode.VERIFY_CODE_ERROR, + ErrorCode.VERIFY_CODE_EXPIRE, + ErrorCode.REGISTER_FAIL, + ErrorCode.USER_NO_EXIST, + ErrorCode.USER_HAS_EXIST, + ErrorCode.EMAIL_FORMAT_ERROR, + ErrorCode.NO_SHARE_MYSELF, + ErrorCode.DEVICE_HAS_BOUND, + ErrorCode.DEVICE_HAS_BIND, + ErrorCode.DEVICE_NOT_EXIST +) +@Retention(AnnotationRetention.SOURCE) +annotation class ErrorCode { + companion object { + const val OK = 200 + const val ERROR = 500 + const val UNAUTHORIZED = 401 + const val CUSTOM_FIRST = 600 + const val VALUE_IS_NULL = CUSTOM_FIRST + 1 + + //505-注册æˆåŠŸ 507-登录æˆåŠŸ + //设备已过期,请续费 + const val DEVICE_RENEWAL = 501 + + //TOKEN失效或者过期 + const val TOKEN_OVERDUE = 502 + + //503-ç”¨æˆ·åæˆ–密ç é”™è¯¯ + const val USER_PASSWORD_ERROR = 503 + + //504-验è¯ç é”™è¯¯ + const val VERIFY_CODE_ERROR = 504 + + //511-验è¯ç å·²è¿‡æœŸ + const val VERIFY_CODE_EXPIRE = 511 + + //506-注册失败 + const val REGISTER_FAIL = 506 + + //508-用户ä¸å­˜åœ¨ + const val USER_NO_EXIST = 508 + + //509-用户已存在 + const val USER_HAS_EXIST = 509 + + // 510-邮箱格å¼ä¸å¯¹ + const val EMAIL_FORMAT_ERROR = 510 + + //ä¸èƒ½åˆ†äº«ç»™è‡ªå·± + const val NO_SHARE_MYSELF = 512 + + //513 当å‰ç”¨æˆ·å·²ç»ç»‘定该设备 + const val DEVICE_HAS_BOUND = 513 + + //514 设备已ç»å­˜åœ¨,已绑定 + const val DEVICE_HAS_BIND = 514 + + //515 设备未存在 + const val DEVICE_NOT_EXIST = 515 + + //ä¿¡ç”¨å¡æ”¯ä»˜æˆåŠŸ + const val CREDIT_CARD_PAY_SUCCESS = 1 + + //ä¿¡ç”¨å¡æ”¯ä»˜å¤±è´¥ + const val CREDIT_CARD_PAY_FAIL = 2 + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkErrorCodeException.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkErrorCodeException.kt new file mode 100644 index 0000000..57033f7 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkErrorCodeException.kt @@ -0,0 +1,17 @@ +package com.abbidot.baselibrary.network.exception + +/** + * 网络错误ç è¿”回 + */ +class NetworkErrorCodeException private constructor(val code: Int, message: String) : + RuntimeException(message) { + + override fun toString(): String { + return "$code" + } + + companion object { + fun of(code: Int, message: String) = NetworkErrorCodeException(code, message) + } + +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkException.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkException.kt new file mode 100644 index 0000000..1baad21 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/exception/NetworkException.kt @@ -0,0 +1,13 @@ +package com.abbidot.baselibrary.network.exception + +class NetworkException private constructor(val code: Int, message: String) : RuntimeException(message) { + + override fun toString(): String { + return "exception code is $code msg is $message" + } + + companion object { + fun of(code: Int, message: String) = NetworkException(code, message) + } + +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonRequestInterceptor.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonRequestInterceptor.kt new file mode 100644 index 0000000..762e3a3 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonRequestInterceptor.kt @@ -0,0 +1,92 @@ +package com.abbidot.baselibrary.network.interceptor + +import android.os.Build +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import okhttp3.FormBody +import okhttp3.HttpUrl +import okhttp3.Interceptor +import okhttp3.Response + + +/** + * 开始请求的拦截器 + * 拦截器获å–GET/POSTè¯·æ±‚å‚æ•°å¹¶æ·»åŠ å…¬å…±è¯·æ±‚å¤´ + */ +class CommonRequestInterceptor : Interceptor { + + //https://blog.csdn.net/u014619545/article/details/98634994 +// companion object { +// //æ ¹æ®headersæ¥åЍæ€åˆ‡æ¢BaseUrl +// const val HEADERS_NAME = "urlName" +// const val HEADERS_value = "WXBaseUrl" +// +// //微信BaseUrl +// const val WX_BASE_URL = "https://api.weixin.qq.com/sns/" +// } + + override fun intercept(chain: Interceptor.Chain): Response { + //获å–原始的chain + val request = chain.request() + //获å–chain的创建者builder + val builder = request.newBuilder() + // 手机型å“牌 + builder.addHeader("brand", Build.BRAND) + //æ‰‹æœºåž‹å· + builder.addHeader("model", Build.MODEL) + + //è¯·æ±‚å‚æ•°çš„key+value添加list中 + val paramList = mutableListOf() + // GET方法 + if (request.method == "GET") { + val urlBuilder: HttpUrl.Builder = request.url.newBuilder() + val httpUrl = urlBuilder.build() + // 打å°å…¨éƒ¨get傿•° + val paramKeys: Set = httpUrl.queryParameterNames + for (key in paramKeys) { + val value = httpUrl.queryParameter(key) + LogUtil.e("${request.method}è¯·æ±‚å‚æ•°", "$key,$value") + paramList.add("$key$value") + } + + //åŠ¨æ€æ›´æ”¹BaseUrl + //获å–当å‰çš„BaseUrl +// val oldBaseUrl = request.url +// //获å–头信æ¯çš„é›†åˆ +// val urlNameList: List = request.headers(HEADERS_NAME) +// if (urlNameList.isNotEmpty()) { +// val urlName = urlNameList[0] +// //删除原有é…置中的值,就是namesAndValues集åˆé‡Œçš„值 +// builder.removeHeader(HEADERS_NAME) +// LogUtil.e("HeaderName$urlName") +// } + } else if (request.method == "POST") { + if (request.body is FormBody) { + val formBody = request.body as FormBody + // 打å°å…¨éƒ¨post傿•° + for (i in 0 until formBody.size) { + val key = formBody.encodedName(i) + val value = formBody.encodedValue(i) + LogUtil.e("${request.method}è¯·æ±‚å‚æ•°", "${key},${value}") + paramList.add("$key$value") + } + } + } + + val sign = if (paramList.size > 0) { + //按keyçš„å­—æ¯æŽ’åº + paramList.sort() + Utils.get32Md5Value(Utils.SECRET_KEY + paramList.joinToString("")) + } else { + Utils.get32Md5Value(Utils.SECRET_KEY) + } + + val token = MMKVUtil.getString(MMKVKey.Token) + builder.addHeader("token", token) + builder.addHeader("sign", sign) + + return chain.proceed(builder.build()) + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonResponseInterceptor.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonResponseInterceptor.kt new file mode 100644 index 0000000..8c87fc5 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/CommonResponseInterceptor.kt @@ -0,0 +1,21 @@ +package com.abbidot.baselibrary.network.interceptor + +import com.abbidot.baselibrary.network.base.BaseNetworkApi +import com.abbidot.baselibrary.util.LogUtil +import okhttp3.Interceptor +import okhttp3.Response + +/** + * 请求返回åŽçš„æ‹¦æˆªå™¨ + */ +class CommonResponseInterceptor : Interceptor { + + override fun intercept(chain: Interceptor.Chain): Response { + val startTime = System.currentTimeMillis() + val request = chain.request() + val response = chain.proceed(request) + LogUtil.d(BaseNetworkApi.TAG, + "url=${request.url}, requestTime=${System.currentTimeMillis() - startTime}ms") + return response + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/DoubleDefault0Adapter.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/DoubleDefault0Adapter.kt new file mode 100644 index 0000000..79da31f --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/DoubleDefault0Adapter.kt @@ -0,0 +1,36 @@ +package com.abbidot.baselibrary.network.interceptor + +import android.text.TextUtils +import com.google.gson.TypeAdapter +import com.google.gson.stream.JsonReader +import com.google.gson.stream.JsonToken +import com.google.gson.stream.JsonWriter + +/** + *Created by .yzq on 2024/9/10/010. + * @link + * @description:处ç†gsonè§£æžæœåС噍Double返回null或"" + */ +class DoubleDefault0Adapter : TypeAdapter() { + override fun write(writer: JsonWriter?, value: Double?) { + if (value == null) { + writer!!.nullValue() + return + } + writer!!.value(value) + } + + override fun read(reader: JsonReader): Double { + if (reader.peek() === JsonToken.NULL) { + reader.nextNull() + //原先是返回Null,这里改为返回空字符串 + return 0.0 + } + val jsonStr = reader.nextString() + return if (jsonStr == "null" || TextUtils.isEmpty(jsonStr)) { + 0.0 + } else { + jsonStr.toDouble() + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/StringNullAdapter.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/StringNullAdapter.kt new file mode 100644 index 0000000..ee6f057 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/network/interceptor/StringNullAdapter.kt @@ -0,0 +1,36 @@ +package com.abbidot.baselibrary.network.interceptor + +import com.google.gson.TypeAdapter +import com.google.gson.stream.JsonReader +import com.google.gson.stream.JsonToken +import com.google.gson.stream.JsonWriter + +/** + *Created by .yzq on 2022/2/18/018. + * @link + * @description:处ç†gsonè§£æžæœåŠ¡å™¨è¿”å›žnull,å˜æˆ"" + */ +class StringNullAdapter : TypeAdapter() { + + override fun write(writer: JsonWriter?, value: String?) { + if (value == null) { + writer!!.nullValue() + return + } + writer!!.value(value) + } + + override fun read(reader: JsonReader): String { + if (reader.peek() === JsonToken.NULL) { + reader.nextNull() + //原先是返回Null,这里改为返回空字符串 + return "" + } + val jsonStr = reader.nextString() + return if (jsonStr == "null") { + "" + } else { + jsonStr + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt new file mode 100644 index 0000000..44c42ff --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt @@ -0,0 +1,121 @@ +package com.abbidot.baselibrary.util + +import android.content.Context +import android.content.pm.ApplicationInfo +import android.content.pm.PackageManager +import android.content.res.Configuration +import android.content.res.Resources +import com.abbidot.baselibrary.constant.MMKVKey +import java.util.Locale + + +/** + *Created by .yzq on 2021/11/6/006. + * @link + * @description: app属性相关工具类 + */ +class AppUtils { + + companion object { + + private var isDebug: Boolean? = null + + /** + * å±å¹•密度,系统æºç æ³¨é‡Šä¸æŽ¨è使用 + */ + private val DENSITY = Resources.getSystem().displayMetrics.density + private val SCALED_DENSITY = Resources.getSystem().displayMetrics.scaledDensity + + fun isDebug(): Boolean { + return if (isDebug == null) false else isDebug!! + } + + fun syncIsDebug(context: Context) { + if (isDebug == null) { + isDebug = + context.applicationInfo != null && context.applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0 + } + } + + + /** + * æ ¹æ®åŒ…å判断app是å¦å®‰è£… + */ + fun isAppInstalled(context: Context, packageName: String): Boolean { + val pm = context.packageManager + return try { + pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES) + true + } catch (e: PackageManager.NameNotFoundException) { + false + } + } + + /** + * 把以 dp 为å•ä½çš„值,转化为以 px 为å•ä½çš„值 + * + * @param dpValue 以 dp 为å•ä½çš„值 + * @return px value + */ + fun dpToPx(dpValue: Float) = dpValue * DENSITY + 0.5f + + /** + * 把以 dp 为å•ä½çš„值,转化为以 px 为å•ä½çš„值 + * + * @param dpValue 以 dp 为å•ä½çš„值 + * @return px value + */ + fun dpToPx(dpValue: Int) = (dpValue * DENSITY + 0.5f).toInt() + + /** + * å•ä½è½¬æ¢: sp -> px + * + * @param sp + * @return + */ + fun spToPx(sp: Int) = (SCALED_DENSITY * sp + 0.5).toInt() + + /** + * å•ä½è½¬æ¢: sp -> px + * + * @param sp + * @return + */ + fun spToPx(sp: Float) = SCALED_DENSITY * sp + 0.5f + + + const val SWITCH_MAP_TYPE = "Map" + + // const val SWITCH_BASE_URL_TYPE = "BaseUrl" + private const val SWITCH_PAGE_TYPE = "PageUrl" + + /** + * æ˜¯å¦æ˜¯å›½å†… + */ + fun isChina(type: String = SWITCH_PAGE_TYPE): Boolean { + return false + if (isDebug()) { + if (type == SWITCH_MAP_TYPE && MMKVUtil.getBoolean(MMKVKey.OnlyGoogleMap, false)) { + //åªå¯ç”¨è°·æ­Œåœ°å›¾ + return false + } + return MMKVUtil.getBoolean(MMKVKey.DebugIp, true) + } + val locale = Locale.getDefault() + val lang = locale.language + "-" + locale.country + if (lang.contains("CN") || lang.contains("zh")) { + return true + } + return false + } + + /** + * åˆ¤æ–­æ˜¯å¦æ˜¯æ·±è‰²æ¨¡å¼ + */ + fun isDarkThemeEnabled(context: Context): Boolean { + val nightModeFlags = + context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK + return nightModeFlags == Configuration.UI_MODE_NIGHT_YES + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/LogUtil.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/util/LogUtil.kt new file mode 100644 index 0000000..fb0997c --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/LogUtil.kt @@ -0,0 +1,75 @@ +package com.abbidot.baselibrary.util + +import android.util.Log +import java.util.* + +/** + *Created by .yzq on 2021/11/3/003. + * @link + * @description: 日志相关工具类 + */ +class LogUtil { + + companion object { + + private const val TAG = "AbbiDot" + + private fun isLoggable(): Boolean { + return AppUtils.isDebug() + } + + fun i(tag: String, fmt: String, vararg args: Any) { + if (isLoggable()) { + Log.i(tag, format(fmt, *args)) + } + } + + fun i(msg: String) { + i(TAG, msg) + } + + fun d(tag: String, fmt: String, vararg args: Any) { + if (isLoggable()) { + Log.d(tag, format(fmt, *args)) + } + } + + fun d(msg: String) { + d(TAG, msg) + } + + fun w(tag: String, fmt: String, vararg args: Any) { + if (isLoggable()) { + Log.w(tag, format(fmt, *args)) + } + } + + fun w(msg: String) { + w(TAG, msg) + } + + fun e(tag: String, fmt: String, vararg args: Any) { + if (isLoggable()) { + Log.e(tag, format(fmt, *args)) + } + } + + fun e(msg: String) { + e(TAG, msg) + } + + fun e(tag: String, t: Throwable, fmt: String, vararg args: Any) { + if (isLoggable()) { + Log.e(tag, format(fmt, *args), t) + } + } + + private fun format(fmt: String, vararg args: Any): String { + return if (args.isEmpty()) { + fmt + } else { + String.format(Locale.getDefault(), fmt, *args) + } + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/MMKVUtil.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/util/MMKVUtil.kt new file mode 100644 index 0000000..6391694 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/MMKVUtil.kt @@ -0,0 +1,98 @@ +package com.abbidot.baselibrary.util + +import android.app.Application +import android.os.Parcelable +import com.abbidot.baselibrary.constant.MMKVKey +import com.tencent.mmkv.MMKV + +/** + *Created by .yzq on 2021/11/6/006. + * @link + * @description:本类为MMKVçš„å°è£…类,防止代ç å…¥ä¾µ + */ +object MMKVUtil { + fun init(application: Application) { + MMKV.initialize(application) + } + + fun putBoolean(@MMKVKey key: String, value: Boolean) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getBoolean(@MMKVKey key: String, defaultValue: Boolean = false): Boolean { + return MMKV.defaultMMKV().decodeBool(key, defaultValue) + } + + fun putString(@MMKVKey key: String, value: String) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getString(@MMKVKey key: String, defaultValue: String = ""): String { + return MMKV.defaultMMKV().decodeString(key, defaultValue)!! + } + + fun putInt(@MMKVKey key: String, value: Int) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getInt(@MMKVKey key: String, defaultValue: Int = 0): Int { + return MMKV.defaultMMKV().decodeInt(key, defaultValue) + } + + fun putFloat(@MMKVKey key: String, value: Float) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getFloat(@MMKVKey key: String, defaultValue: Float = 0F): Float { + return MMKV.defaultMMKV().decodeFloat(key, defaultValue) + } + + fun putLong(@MMKVKey key: String, value: Long) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getLong(@MMKVKey key: String, defaultValue: Long = 0L): Long { + return MMKV.defaultMMKV().decodeLong(key, defaultValue) + } + + fun putDouble(@MMKVKey key: String, value: Double) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getDouble(@MMKVKey key: String, defaultValue: Double = 0.0): Double { + return MMKV.defaultMMKV().decodeDouble(key, defaultValue) + } + + fun putByteArray(@MMKVKey key: String, value: ByteArray) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getByteArray(@MMKVKey key: String, defaultValue: ByteArray = ByteArray(0)): ByteArray { + return MMKV.defaultMMKV().decodeBytes(key, defaultValue)!! + } + + fun putStringSet(@MMKVKey key: String, value: Set) { + MMKV.defaultMMKV().encode(key, value) + } + + fun getStringSet(@MMKVKey key: String, + defaultValue: Set = mutableSetOf()): Set { + return MMKV.defaultMMKV().decodeStringSet(key, defaultValue)!! + } + + fun putParcelable(@MMKVKey key: String, value: Parcelable) { + MMKV.defaultMMKV().encode(key, value) + } + + //清空所有sp + fun clearAll() { + //æ­£å¼æµ‹è¯•æ ‡è¯†ä¸æ¸…空 + val debugIp = getBoolean(MMKVKey.DebugIp, true) + MMKV.defaultMMKV().clearAll() + putBoolean(MMKVKey.DebugIp, debugIp) + } + + inline fun getParcelable(@MMKVKey key: String): T? { + return MMKV.defaultMMKV().decodeParcelable(key, T::class.java) + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/Utils.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/util/Utils.kt new file mode 100644 index 0000000..8eff28e --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/Utils.kt @@ -0,0 +1,378 @@ +package com.abbidot.baselibrary.util + +import android.os.Build +import android.text.TextUtils +import java.security.MessageDigest +import java.security.NoSuchAlgorithmException +import java.text.SimpleDateFormat +import java.time.LocalDate +import java.time.Period +import java.util.Calendar +import java.util.Date +import java.util.Locale +import java.util.regex.Pattern +import kotlin.math.abs +import kotlin.math.atan2 +import kotlin.math.cos +import kotlin.math.roundToInt +import kotlin.math.sin + + +/** + *Created by .yzq on 2022/1/19/019. + * @link + * @description:工具类 + */ +class Utils { + + companion object { + + //HTTP请求加密key + var SECRET_KEY = "" + const val DATE_FORMAT_PATTERN_CN = "yyyy-MM-dd" + const val DATE_FORMAT_PATTERN_CN2 = "yyyy-MM-dd HH:mm:ss" + const val DATE_FORMAT_PATTERN_CN3 = "yyyy/MM/dd HH:mm:ss" + const val DATE_FORMAT_PATTERN_EN1 = "MMM d, yyyy | HH:mm" + const val DATE_FORMAT_PATTERN_EN2 = "d MMM yyyy hh:mm a" + const val DATE_FORMAT_PATTERN_EN3 = "MMM d, yyyy" + const val DATE_FORMAT_PATTERN_EN4 = "MMM d yyyy" + const val DATE_FORMAT_PATTERN_EN5 = "d/M" + const val DATE_FORMAT_PATTERN_EN6 = "dd/MM/yyyy HH:mm" + const val DATE_FORMAT_PATTERN_EN7 = "dd/MM/yyyy" + const val DATE_FORMAT_PATTERN_EN8 = "hh:mm a" + const val DATE_FORMAT_PATTERN_EN9 = "MMM d, yyyy hh:mm a" + const val DATE_FORMAT_PATTERN_EN10 = "dd/MM/yyyy HH:mm:ss" + + //返回星期几 简写 + const val WEEK_FORMAT_PATTERN = "E" + + /** + * æ—¶é—´æˆ³è½¬æŒ‡å®šæ ¼å¼æ—¶é—´ + * + * @param time 13使—¶é—´æˆ³ + * @return æ—¶é—´ + */ + fun formatTime(time: Long, format: String): String { + val sdf = SimpleDateFormat(format, Locale.getDefault()) + return if (time < 1000000000000) { + sdf.format(Date(time * 1000)) + } else { + sdf.format(Date(time)) + } + } + + /** + * 获å–当剿—¶é—´ + * @param format è¿”å›žæ—¶é—´æ ¼å¼ + */ + fun getCurrentTime(format: String): String { + val date = Calendar.getInstance().time + val sdf = SimpleDateFormat(format, Locale.getDefault()) + return sdf.format(date) + } + + /** + * æŠŠå­—ç¬¦ä¸²è½¬æˆæ—¥æœŸ + * @param parseFormat 字符串是什么格å¼çš„æ—¥æœŸå°±ä¼ ä»€ä¹ˆæ ¼å¼ + * @param resultFormat 转æ¢åŽçš„æ ¼å¼ + */ + fun stringToDate( + dateString: String, + parseFormat: String = DATE_FORMAT_PATTERN_CN2, + resultFormat: String = DATE_FORMAT_PATTERN_CN2 + ): String { + return try { + formatTime(stringToTimestamp(dateString, parseFormat), resultFormat) + } catch (e: Exception) { + e.printStackTrace() + LogUtil.e("è§£æžå¤±è´¥,$e") + "" + } + } + + /** + * æŠŠå­—ç¬¦ä¸²è½¬æˆæ—¶é—´æˆ³,返回13使—¶é—´æˆ³ + * @param parseFormat 字符串是什么格å¼çš„æ—¥æœŸå°±ä¼ ä»€ä¹ˆæ ¼å¼ + */ + fun stringToTimestamp( + dateString: String, parseFormat: String = DATE_FORMAT_PATTERN_CN2 + ): Long { + return try { + val formatter = SimpleDateFormat(parseFormat, Locale.getDefault()) + val date = formatter.parse(dateString) + date?.time ?: 0 + } catch (e: Exception) { + e.printStackTrace() + LogUtil.e("è§£æžå¤±è´¥,$e") + 0 + } + } + + /** + * 获å–这个时间戳的,å‰å‡ å¤©13使—¶é—´æˆ³ + */ + fun getBeforeHowTimestamp(cTimestamp: Long, before: Long): Long { + return cTimestamp - (before * 24 * 60 * 60 * 1000L) + } + + /** + * 获å–这个时间戳的,åŽå‡ å¤©13使—¶é—´æˆ³ + */ + fun getAfterHowTimestamp(cTimestamp: Long, after: Long): Long { + return cTimestamp + (after * 24 * 60 * 60 * 1000L) + } + + /** + * 计算2个日期相册多少年,多少月 + */ + fun differYear(startDate: String, endDate: String): Array { + val result = arrayOfNulls(2) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val period = Period.between(LocalDate.parse(startDate), LocalDate.parse(endDate)) + result[0] = period.years + result[1] = period.months + } else { + val dfs = SimpleDateFormat(DATE_FORMAT_PATTERN_CN, Locale.getDefault()) + val sDate = dfs.parse(startDate) + val eDate = dfs.parse(endDate) + // 得到两者的毫秒数 +// val between = (eDate.time - sDate.time) + val year = eDate.year - sDate.year + val month = eDate.month - sDate.month + //2021-8-1,2122-1-1 + if (month < 0) { + result[0] = year - 1 + //å–ç»å¯¹å€¼ + result[1] = 12 - abs(month) + } else { + result[0] = year + result[1] = month + } + } + return result + } + + /** + * 秒转æ¢ä¸º 时分秒 + */ + fun timeConversion(time: Int): String { + var hour = 0 + var minutes = 0 + var second = 0 + val temp = time % 3600 + if (time > 3600) { + hour = time / 3600 + if (temp != 0) { + if (temp > 60) { + minutes = temp / 60 + if (temp % 60 != 0) { + second = temp % 60 + } + } else { + second = temp + } + } + } else { + minutes = time / 60 + if (time % 60 != 0) { + second = time % 60 + } + } + return "${fill2Digits(hour)}:${fill2Digits(minutes)}:${fill2Digits(second)}" + } + + /** + * 把秒转æ¢ä¸º day hour min + */ + fun getSecondToDayHourMin(second: Long): Array { + val day = second / (24 * 60 * 60) + val hour = (second % (24 * 60 * 60)) / (60 * 60) + val min = ((second % (24 * 60 * 60)) % (60 * 60)) / 60 + return arrayOf( + fill2Digits(day.toInt()), fill2Digits(hour.toInt()), fill2Digits(min.toInt()) + ) + } + + /** + * 把秒转æ¢ä¸º year month day + */ + fun getDayToYearMonthDay(second: Long): Array { + if (second <= 0) return arrayOf("0", "0", "0") + val year = second / 365 + val month = (second % 365) / 30 + val day = (second % 365) % 30 + return arrayOf( + fill2Digits(year.toInt()), fill2Digits(month.toInt()), fill2Digits(day.toInt()) + ) + } + + + /** + * @param d 需è¦å¤„ç†çš„æ•°å­— + * @param num ä¿ç•™ä½æ•°(åªèƒ½æ˜¯1或者2) + * @return ä¿ç•™numä½å°æ•°åŽçš„字符串 + */ + fun formatDecimal(d: Double, num: Int = 2): String { + return if (num == 2) { + String.format(Locale("en", "US"), "%.2f", d) + } else { + String.format(Locale("en", "US"), "%.1f", d) + } + } + + /** + * @param f 需è¦å¤„ç†çš„æ•°å­— + * @param num ä¿ç•™ä½æ•°(åªèƒ½æ˜¯1或者2) + * @return ä¿ç•™numä½å°æ•°åŽçš„字符串 + */ + fun formatDecimal(f: Float, num: Int): String { + return if (num == 2) { + String.format(Locale("en", "US"), "%.2f", f) + } else { + String.format(Locale("en", "US"), "%.1f", f) + } + } + + /** + * å››èˆäº”入喿•´ + */ + fun roundOffToInt(f: Double): Int { + return f.roundToInt() + } + + const val KM = 0 + const val KCAL = 1 + + /** + * 处ç†è½¬æ¢ä¸ºåƒ ä¸è¶³åƒä¸è½¬æ¢ + * + * @param d 需è¦å¤„ç†çš„æ•°å­— double类型æ‰ä¼šç²¾å‡†å››èˆäº”å…¥ + * @param num ä¿ç•™ä½æ•°(åªèƒ½æ˜¯1或者2) + * @param unitType å•ä½ç±»åž‹ 0里程m,km 1å¡è·¯é‡Œ cal kcal + * @return + */ + fun convertThousand(d: Double, num: Int, unitType: Int): String { + return if (d < 1000) { + var unit = " m" + when (unitType) { + KM -> unit = " m" + KCAL -> unit = " Cal" + } + formatDecimal(d, num) + unit + } else { + var unit = " Km" + when (unitType) { + KM -> unit = " Km" + KCAL -> unit = " KCal" + } + formatDecimal(d / 1000, num) + unit + } + } + + /** + * ä¸ªä½æ•°è¡¥0è½¬ä¸¤ä½æ•° + */ + fun fill2Digits(value: Int): String { + var str = value.toString() + if (value < 10) { + str = "0$value" + } + return str + } + + /** + * md5加密ã€32ä½å°å†™åР坆 + */ + fun get32Md5Value(sSecret: String): String { + if (TextUtils.isEmpty(sSecret)) { + return "" + } + try { + val bmd5 = MessageDigest.getInstance("MD5") + bmd5.update(sSecret.toByteArray()) + var i: Int + val buf = StringBuffer() + val b = bmd5.digest() + for (offset in b.indices) { + i = b[offset].toInt() + if (i < 0) i += 256 + if (i < 16) buf.append("0") + buf.append(Integer.toHexString(i)) + } + return buf.toString() + } catch (e: NoSuchAlgorithmException) { + e.printStackTrace() + } + return "" + } + + /** + * 判断邮箱emailæ ¼å¼æ˜¯å¦æ­£ç¡® + */ + fun isValidEmail(email: String): Boolean { + val str = + "^([a-zA-Z0-9_\\-.+]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" + return isRegularExpression(email, str) + } + + /** + * 是å¦ç¬¦åˆè¯¥æ­£åˆ™è¡¨è¾¾å¼ + */ + fun isRegularExpression(value: String, regex: String): Boolean { + val p = Pattern.compile(regex) + val m = p.matcher(value) + return m.matches() + } + + /** + *求圆弧上æŸä¸ªç‚¹çš„åæ ‡ + * @angle è§’åº¦æ˜¯ä»¥åœ†çš„å³æ–¹å¼€å§‹è®¡ç®—角度,顺时针增加 + */ + fun getPointOnCircleArc( + centerX: Float, centerY: Float, radius: Float, angle: Double + ): FloatArray { + val angleInRadians = Math.toRadians(angle) + val x = (centerX + radius * cos(angleInRadians)).toFloat() + val y = (centerY + radius * sin(angleInRadians)).toFloat() + return floatArrayOf(x, y) + } + + /** + * 获å–圆弧上æŸä¸ªç‚¹å’Œåœ†å¿ƒè§’度 + */ + fun getAngleFromCenter(x: Float, y: Float, centerX: Float, centerY: Float): Double { + val angle = atan2((y - centerY).toDouble(), (x - centerX).toDouble()) + // 转æ¢ä¸ºè§’度 + return Math.toDegrees(angle) + } + + /** + *æ ¹æ®ä¿¡å·åŒºé—´è½¬æ¢ä¸ºä¿¡å·çº§åˆ« + * @param numLevels 级别个数 + */ + fun calculateSignalLevel( + rssi: Int, numLevels: Int, minRssi: Int = -100, maxRssi: Int = -55 + ): Int { + return if (rssi <= minRssi) { + 0 + } else if (rssi >= maxRssi) { + numLevels - 1 + } else { + val inputRange: Float = (maxRssi - minRssi).toFloat() + val outputRange = (numLevels - 1).toFloat() + ((rssi - minRssi).toFloat() * outputRange / inputRange).toInt() + } + } + + /** + * æ ¹æ®ç”µé‡è®¡ç®—级别 + */ + fun calculatePowerLevel(power: Int): Int { + return if (power in 10..24) 1 + else if (power in 25..49) 2 + else if (power in 50..74) 3 + else if (power >= 75) 4 + else 0 + } + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectArgument.java b/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectArgument.java new file mode 100644 index 0000000..4724f2e --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectArgument.java @@ -0,0 +1,46 @@ +package com.abbidot.baselibrary.util.reflect; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +public final class ReflectArgument { + private final Class clazz; + private final T value; + + private ReflectArgument(@NonNull Class clazz, @Nullable T value) { + this.clazz = clazz; + this.value = value; + } + + public static ReflectArgument of(@NonNull String className, @Nullable T value) { + Class clazz = ReflectHelper.getClassForName(className); + return new ReflectArgument<>(clazz, value); + } + + public static ReflectArgument of(@NonNull Class clazz, @Nullable T value) { + return new ReflectArgument<>(clazz, value); + } + + public static ReflectArgument of(@NonNull T value) { + Class clazz = (Class) value.getClass(); + return new ReflectArgument<>(clazz, value); + } + + static Class[] getClasses(@NonNull ReflectArgument[] args) { + final int size = args.length; + Class[] result = new Class[size]; + for (int i = 0; i < size; i++) { + result[i] = args[i].clazz; + } + return result; + } + + static Object[] getValues(@NonNull ReflectArgument[] args) { + final int size = args.length; + Object[] result = new Object[size]; + for (int i = 0; i < size; i++) { + result[i] = args[i].value; + } + return result; + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectHelper.java b/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectHelper.java new file mode 100644 index 0000000..c79732e --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/reflect/ReflectHelper.java @@ -0,0 +1,239 @@ +package com.abbidot.baselibrary.util.reflect; + +import androidx.annotation.NonNull; + + +import com.abbidot.baselibrary.util.LogUtil; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * å射调用帮助类 + */ +public final class ReflectHelper { + private static final String TAG = "ReflectHelper"; + + private static final Object NOT_FOUND = new Object(); + + private static final Map CACHE = new ConcurrentHashMap<>(); + + private Object inst; + private Class clazz; + + private ReflectHelper(Class clazz) { + this.clazz = clazz; + } + + public ReflectHelper setInstance(Object o) { + this.inst = o; + return this; + } + + public Object getField(@NonNull String fieldName) { + Field field = getClassField(this.clazz, fieldName); + if (field != null) { + try { + return field.get(this.inst); + } catch (Exception e) { + LogUtil.Companion.e(TAG, "getField error=%s", e); + } + } + return null; + } + + public boolean setField(String fieldName, Object value) { + Field field = getClassField(this.clazz, fieldName); + if (field != null) { + try { + field.set(this.inst, value); + return true; + } catch (Exception e) { + LogUtil.Companion.e(TAG, "setField error=%s", e); + } + } + return false; + } + + /** + * 执行å射方法,并返回执行状æ€å’Œå‡½æ•°è¿”回值 + * + * @param outResult 方法返回值 + * @param methodName 方法åç§° + * @param args 傿•°åˆ—表,包å«ç±»åž‹å’Œå€¼ + * @return 是å¦è°ƒç”¨æˆåŠŸ + */ + public boolean invoke(Object[] outResult, String methodName, ReflectArgument... args) { + Method method = getClassMethod(this.clazz, methodName, ReflectArgument.getClasses(args)); + if (method != null) { + try { + Object result = method.invoke(this.inst, ReflectArgument.getValues(args)); + if (outResult != null && outResult.length > 0) { + outResult[0] = result; + } + return true; + } catch (Exception e) { + LogUtil.Companion.e(TAG, "invoke error=%s", e); + } + } + return false; + } + + /** + * 执行å射方法 + * + * @param methodName 方法åç§° + * @param args 傿•°åˆ—表,包å«ç±»åž‹å’Œå€¼ + * @return 函数返回值 + */ + public Object invoke(String methodName, ReflectArgument... args) { + Object[] result = new Object[1]; + if (invoke(result, methodName, args)) { + return result[0]; + } + return null; + } + + /** + * 新建对象实例 + * + * @param args æž„é€ æ–¹æ³•å‚æ•° + * @return 新实例 + */ + public Object newInstance(ReflectArgument... args) { + Constructor constructor = getClassConstructor(this.clazz, ReflectArgument.getClasses(args)); + if (constructor != null) { + try { + return constructor.newInstance(ReflectArgument.getValues(args)); + } catch (Exception e) { + LogUtil.Companion.e(TAG, "newInstance error=%s", e); + } + } + return null; + } + + private static Field getClassField(Class target, String fieldName) { + if (target == null || target == Object.class) { + return null; + } + String key = target.getName() + '#' + fieldName; + Object value = CACHE.get(key); + if (value == NOT_FOUND) { + LogUtil.Companion.d(TAG, "getClassField NOT_FOUND %s", key); + return null; + } + Field field = (Field) value; + if (field == null) { + try { + field = target.getDeclaredField(fieldName); + field.setAccessible(true); + } catch (Exception e) { + //中间过程ä¸è®°å½• + } + if (field == null) { + // 递归查找父类 + field = getClassField(target.getSuperclass(), fieldName); + } + putCache(key, field); + } + return field; + } + + private static Constructor getClassConstructor(Class target, Class[] paramTypes) { + if (target == null) { + return null; + } + String key = target.getName() + "#(" + Arrays.toString(paramTypes) + ')'; + Object value = CACHE.get(key); + if (value == NOT_FOUND) { + LogUtil.Companion.d(TAG, "getClassConstructor NOT_FOUND %s", key); + return null; + } + Constructor constructor = (Constructor) value; + if (constructor == null) { + try { + constructor = target.getDeclaredConstructor(paramTypes); + constructor.setAccessible(true); + } catch (Exception e) { + LogUtil.Companion.e(TAG, "getClassConstructor NOT_FOUND %s error=%s", key, e); + } + putCache(key, constructor); + } + return constructor; + } + + private static Method getClassMethod(Class target, String methodName, Class[] paramTypes) { + if (target == null || target == Object.class) { + return null; + } + String key = target.getName() + '#' + methodName + '(' + Arrays.toString(paramTypes) + ')'; + Object value = CACHE.get(key); + if (value == NOT_FOUND) { + LogUtil.Companion.d(TAG, "getClassMethod NOT_FOUND %s", key); + return null; + } + Method method = (Method) value; + if (method == null) { + try { + method = target.getDeclaredMethod(methodName, paramTypes); + method.setAccessible(true); + } catch (Exception e) { + //中间过程ä¸è®°å½• + } + if (method == null) { + // 递归查找父类 + method = getClassMethod(target.getSuperclass(), methodName, paramTypes); + } + putCache(key, method); + } + return method; + } + + static Class getClassForName(String className) { + Object value = CACHE.get(className); + if (value == NOT_FOUND) { + LogUtil.Companion.d(TAG, "getClassForName NOT_FOUND %s", className); + return null; + } + + Class clazz = (Class) value; + if (clazz == null) { + try { + clazz = Class.forName(className); + } catch (Exception e) { + LogUtil.Companion.e(TAG, "getClassForName NOT_FOUND %s error=%s", className, e); + } + putCache(className, clazz); + } + return clazz; + } + + public static ReflectHelper of(Class clazz) { + return new ReflectHelper(clazz); + } + + public static ReflectHelper of(String className) { + return new ReflectHelper(getClassForName(className)); + } + + public static ReflectHelper of(Object inst) { + return new ReflectHelper(inst != null ? inst.getClass() : null).setInstance(inst); + } + + public static int getFieldCount(@NonNull Class clazz) { + return clazz.getFields().length; + } + + private static void putCache(String key, Object value) { + if (value == null || value == NOT_FOUND) { + LogUtil.Companion.e(TAG, "NOT_FOUND %s", key); + value = NOT_FOUND; + } + CACHE.put(key, value); + } +} \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Base64.java b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Base64.java new file mode 100644 index 0000000..e0cf317 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Base64.java @@ -0,0 +1,604 @@ +package com.abbidot.baselibrary.util.rsa; + +import java.io.UnsupportedEncodingException; + +public class Base64 { + /** + * Chunk size per RFC 2045 section 6.8. + * + *

    The {@value} character limit does not count the trailing CRLF, but counts + * all other characters, including any equal signs.

    + * + * @see
    RFC 2045 section 6.8 + */ + static final int CHUNK_SIZE = 76; + + /** + * Chunk separator per RFC 2045 section 2.1. + * + * @see RFC 2045 section 2.1 + */ + static final byte[] CHUNK_SEPARATOR = "\r\n".getBytes(); + + /** + * The base length. + */ + static final int BASELENGTH = 255; + + /** + * Lookup length. + */ + static final int LOOKUPLENGTH = 64; + + /** + * Used to calculate the number of bits in a byte. + */ + static final int EIGHTBIT = 8; + + /** + * Used when encoding something which has fewer than 24 bits. + */ + static final int SIXTEENBIT = 16; + + /** + * Used to determine how many bits data contains. + */ + static final int TWENTYFOURBITGROUP = 24; + + /** + * Used to get the number of Quadruples. + */ + static final int FOURBYTE = 4; + + /** + * Used to test the sign of a byte. + */ + static final int SIGN = -128; + + /** + * Byte used to pad output. + */ + static final byte PAD = (byte) '='; + + // Create arrays to hold the base64 characters and a + // lookup for base64 chars + private static byte[] base64Alphabet = new byte[BASELENGTH]; + private static byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH]; + + // Populating the lookup and character arrays + static { + for (int i = 0; i < BASELENGTH; i++) { + base64Alphabet[i] = (byte) -1; + } + for (int i = 'Z'; i >= 'A'; i--) { + base64Alphabet[i] = (byte) (i - 'A'); + } + for (int i = 'z'; i >= 'a'; i--) { + base64Alphabet[i] = (byte) (i - 'a' + 26); + } + for (int i = '9'; i >= '0'; i--) { + base64Alphabet[i] = (byte) (i - '0' + 52); + } + + base64Alphabet['+'] = 62; + base64Alphabet['/'] = 63; + + for (int i = 0; i <= 25; i++) { + lookUpBase64Alphabet[i] = (byte) ('A' + i); + } + + for (int i = 26, j = 0; i <= 51; i++, j++) { + lookUpBase64Alphabet[i] = (byte) ('a' + j); + } + + for (int i = 52, j = 0; i <= 61; i++, j++) { + lookUpBase64Alphabet[i] = (byte) ('0' + j); + } + + lookUpBase64Alphabet[62] = (byte) '+'; + lookUpBase64Alphabet[63] = (byte) '/'; + } + + private static boolean isBase64(byte octect) { + if (octect == PAD) { + return true; + } else if (base64Alphabet[octect] == -1) { + return false; + } else { + return true; + } + } + + /** + * Tests a given byte array to see if it contains + * only valid characters within the Base64 alphabet. + * + * @param arrayOctect byte array to test + * @return true if all bytes are valid characters in the Base64 + * alphabet or if the byte array is empty; false, otherwise + */ + public static boolean isArrayByteBase64(byte[] arrayOctect) { + + arrayOctect = discardWhitespace(arrayOctect); + + int length = arrayOctect.length; + if (length == 0) { + // shouldn't a 0 length array be valid base64 data? + // return false; + return true; + } + for (int i = 0; i < length; i++) { + if (!isBase64(arrayOctect[i])) { + return false; + } + } + return true; + } + + /** + * Encodes binary data using the base64 algorithm but + * does not chunk the output. + * + * @param binaryData binary data to encode + * @return Base64 characters + */ + public static byte[] encodeBase64(byte[] binaryData) { + return encodeBase64(binaryData, false); + } + + /** + * Encodes binary data using the base64 algorithm and chunks + * the encoded output into 76 character blocks + * + * @param binaryData binary data to encode + * @return Base64 characters chunked in 76 character blocks + */ + public static byte[] encodeBase64Chunked(byte[] binaryData) { + return encodeBase64(binaryData, true); + } + + /** + * Decodes a byte[] containing containing + * characters in the Base64 alphabet. + * + * @param pArray A byte array containing Base64 character data + * @return a byte array containing binary data + */ + public static byte[] decode(byte[] pArray) { + return decodeBase64(pArray); + } + + /** + * Encodes binary data using the base64 algorithm, optionally + * chunking the output into 76 character blocks. + * + * @param binaryData Array containing binary data to encode. + * @param isChunked if isChunked is true this encoder will chunk + * the base64 output into 76 character blocks + * @return Base64-encoded data. + */ + public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) { + int lengthDataBits = binaryData.length * EIGHTBIT; + int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; + int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; + byte[] encodedData = null; + int encodedDataLength = 0; + int nbrChunks = 0; + + if (fewerThan24bits != 0) { + //data not divisible by 24 bit + encodedDataLength = (numberTriplets + 1) * 4; + } else { + // 16 or 8 bit + encodedDataLength = numberTriplets * 4; + } + + // If the output is to be "chunked" into 76 character sections, + // for compliance with RFC 2045 MIME, then it is important to + // allow for extra length to account for the separator(s) + if (isChunked) { + + nbrChunks = + (CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil((float) encodedDataLength / CHUNK_SIZE)); + encodedDataLength += nbrChunks * CHUNK_SEPARATOR.length; + } + + encodedData = new byte[encodedDataLength]; + + byte k = 0, l = 0, b1 = 0, b2 = 0, b3 = 0; + + int encodedIndex = 0; + int dataIndex = 0; + int i; + int nextSeparatorIndex = CHUNK_SIZE; + int chunksSoFar = 0; + + //log.debug("number of triplets = " + numberTriplets); + for (i = 0; i < numberTriplets; i++) { + dataIndex = i * 3; + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex + 1]; + b3 = binaryData[dataIndex + 2]; + + //log.debug("b1= " + b1 +", b2= " + b2 + ", b3= " + b3); + + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = + ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = + ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = + ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); + + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + //log.debug( "val2 = " + val2 ); + //log.debug( "k4 = " + (k<<4) ); + //log.debug( "vak = " + (val2 | (k<<4)) ); + encodedData[encodedIndex + 1] = + lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex + 2] = + lookUpBase64Alphabet[(l << 2) | val3]; + encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f]; + + encodedIndex += 4; + + // If we are chunking, let's put a chunk separator down. + if (isChunked) { + // this assumes that CHUNK_SIZE % 4 == 0 + if (encodedIndex == nextSeparatorIndex) { + System.arraycopy( + CHUNK_SEPARATOR, + 0, + encodedData, + encodedIndex, + CHUNK_SEPARATOR.length); + chunksSoFar++; + nextSeparatorIndex = + (CHUNK_SIZE * (chunksSoFar + 1)) + + (chunksSoFar * CHUNK_SEPARATOR.length); + encodedIndex += CHUNK_SEPARATOR.length; + } + } + } + + // form integral number of 6-bit groups + dataIndex = i * 3; + + if (fewerThan24bits == EIGHTBIT) { + b1 = binaryData[dataIndex]; + k = (byte) (b1 & 0x03); + //log.debug("b1=" + b1); + //log.debug("b1<<2 = " + (b1>>2) ); + byte val1 = + ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4]; + encodedData[encodedIndex + 2] = PAD; + encodedData[encodedIndex + 3] = PAD; + } else if (fewerThan24bits == SIXTEENBIT) { + + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex + 1]; + l = (byte) (b2 & 0x0f); + k = (byte) (b1 & 0x03); + + byte val1 = + ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); + byte val2 = + ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex + 1] = + lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2]; + encodedData[encodedIndex + 3] = PAD; + } + + if (isChunked) { + // we also add a separator to the end of the final chunk. + if (chunksSoFar < nbrChunks) { + System.arraycopy( + CHUNK_SEPARATOR, + 0, + encodedData, + encodedDataLength - CHUNK_SEPARATOR.length, + CHUNK_SEPARATOR.length); + } + } + + return encodedData; + } + + /** + * Decodes Base64 data into octects + * + * @param base64Data Byte array containing Base64 data + * @return Array containing decoded data. + */ + public static byte[] decodeBase64(byte[] base64Data) { + // RFC 2045 requires that we discard ALL non-Base64 characters + base64Data = discardNonBase64(base64Data); + + // handle the edge case, so we don't have to worry about it later + if (base64Data.length == 0) { + return new byte[0]; + } + + int numberQuadruple = base64Data.length / FOURBYTE; + byte[] decodedData = null; + byte b1 = 0, b2 = 0, b3 = 0, b4 = 0, marker0 = 0, marker1 = 0; + + // Throw away anything not in base64Data + + int encodedIndex = 0; + int dataIndex = 0; + { + // this sizes the output array properly - rlw + int lastData = base64Data.length; + // ignore the '=' padding + while (base64Data[lastData - 1] == PAD) { + if (--lastData == 0) { + return new byte[0]; + } + } + decodedData = new byte[lastData - numberQuadruple]; + } + + for (int i = 0; i < numberQuadruple; i++) { + dataIndex = i * 4; + marker0 = base64Data[dataIndex + 2]; + marker1 = base64Data[dataIndex + 3]; + + b1 = base64Alphabet[base64Data[dataIndex]]; + b2 = base64Alphabet[base64Data[dataIndex + 1]]; + + if (marker0 != PAD && marker1 != PAD) { + //No PAD e.g 3cQl + b3 = base64Alphabet[marker0]; + b4 = base64Alphabet[marker1]; + + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex + 1] = + (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4); + } else if (marker0 == PAD) { + //Two PAD e.g. 3c[Pad][Pad] + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + } else if (marker1 == PAD) { + //One PAD e.g. 3cQ[Pad] + b3 = base64Alphabet[marker0]; + + decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex + 1] = + (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + } + encodedIndex += 3; + } + return decodedData; + } + + /** + * Discards any whitespace from a base-64 encoded block. + * + * @param data The base-64 encoded data to discard the whitespace + * from. + * @return The data, less whitespace (see RFC 2045). + */ + static byte[] discardWhitespace(byte[] data) { + byte[] groomedData = new byte[data.length]; + int bytesCopied = 0; + + for (byte datum : data) { + switch (datum) { + case (byte) ' ': + case (byte) '\n': + case (byte) '\r': + case (byte) '\t': + break; + default: + groomedData[bytesCopied++] = datum; + } + } + + byte[] packedData = new byte[bytesCopied]; + + System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); + + return packedData; + } + + /** + * Discards any characters outside of the base64 alphabet, per + * the requirements on page 25 of RFC 2045 - "Any characters + * outside of the base64 alphabet are to be ignored in base64 + * encoded data." + * + * @param data The base-64 encoded data to groom + * @return The data, less non-base64 characters (see RFC 2045). + */ + static byte[] discardNonBase64(byte[] data) { + byte[] groomedData = new byte[data.length]; + int bytesCopied = 0; + + for (byte datum : data) { + if (isBase64(datum)) { + groomedData[bytesCopied++] = datum; + } + } + + byte[] packedData = new byte[bytesCopied]; + + System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); + + return packedData; + } + + /** + * Encodes a byte[] containing binary data, into a byte[] containing + * characters in the Base64 alphabet. + * + * @param pArray a byte array containing binary data + * @return A byte array containing only Base64 character data + */ + public static byte[] encode(byte[] pArray) { + return encodeBase64(pArray, false); + } + + public static String encode(String str) throws UnsupportedEncodingException + { + String baseStr = new String(encode(str.getBytes("UTF-8"))); + String tempStr = Digest.digest(str).toUpperCase(); + String result = tempStr+baseStr; + return new String(encode(result.getBytes("UTF-8"))); + } + + public static String decode(String cryptoStr) throws + UnsupportedEncodingException { + if(cryptoStr.length()<40) + return ""; + try + { + String tempStr = new String(decode(cryptoStr.getBytes("UTF-8"))); + String result = tempStr.substring(40, tempStr.length()); + return new String(decode(result.getBytes("UTF-8"))); + } + catch(ArrayIndexOutOfBoundsException ex) + { + return ""; + } + } + + /** + * Decodes Base64 data into octects + * + * @param encoded string containing Base64 data + * @return Array containind decoded data. + */ + public static byte[] decode2(String encoded) { + + if (encoded == null) { + return null; + } + + char[] base64Data = encoded.toCharArray(); + // remove white spaces + int len = removeWhiteSpace(base64Data); + + if (len % FOURBYTE != 0) { + return null;//should be divisible by four + } + + int numberQuadruple = (len / FOURBYTE); + + if (numberQuadruple == 0) { + return new byte[0]; + } + + byte[] decodedData; + byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; + char d1 = 0, d2 = 0, d3 = 0, d4 = 0; + + int i = 0; + int encodedIndex = 0; + int dataIndex = 0; + decodedData = new byte[(numberQuadruple) * 3]; + + for (; i < numberQuadruple - 1; i++) { + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++])) + || !isData((d3 = base64Data[dataIndex++])) + || !isData((d4 = base64Data[dataIndex++]))) { + return null; + }//if found "no data" just return null + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + } + + if (!isData((d1 = base64Data[dataIndex++])) || !isData((d2 = base64Data[dataIndex++]))) { + return null;//if found "no data" just return null + } + + b1 = base64Alphabet[d1]; + b2 = base64Alphabet[d2]; + + d3 = base64Data[dataIndex++]; + d4 = base64Data[dataIndex++]; + if (!isData((d3)) || !isData((d4))) {//Check if they are PAD characters + if (isPad(d3) && isPad(d4)) { + if ((b2 & 0xf) != 0)//last 4 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 1]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex] = (byte) (b1 << 2 | b2 >> 4); + return tmp; + } else if (!isPad(d3) && isPad(d4)) { + b3 = base64Alphabet[d3]; + if ((b3 & 0x3) != 0)//last 2 bits should be zero + { + return null; + } + byte[] tmp = new byte[i * 3 + 2]; + System.arraycopy(decodedData, 0, tmp, 0, i * 3); + tmp[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + tmp[encodedIndex] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + return tmp; + } else { + return null; + } + } else { //No PAD e.g 3cQl + b3 = base64Alphabet[d3]; + b4 = base64Alphabet[d4]; + decodedData[encodedIndex++] = (byte) (b1 << 2 | b2 >> 4); + decodedData[encodedIndex++] = (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf)); + decodedData[encodedIndex++] = (byte) (b3 << 6 | b4); + + } + + return decodedData; + } + + private static boolean isWhiteSpace(char octect) { + return (octect == 0x20 || octect == 0xd || octect == 0xa || octect == 0x9); + } + + private static boolean isData(char octect) { + return (octect < BASELENGTH && base64Alphabet[octect] != -1); + } + + private static boolean isPad(char octect) { + return (octect == PAD); + } + + /** + * remove WhiteSpace from MIME containing encoded Base64 data. + * + * @param data the byte array of base64 data (with WS) + * @return the new length + */ + private static int removeWhiteSpace(char[] data) { + if (data == null) { + return 0; + } + + // count characters that's not whitespace + int newSize = 0; + int len = data.length; + for (int i = 0; i < len; i++) { + if (!isWhiteSpace(data[i])) { + data[newSize++] = data[i]; + } + } + return newSize; + } +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Digest.java b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Digest.java new file mode 100644 index 0000000..b163d7e --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/Digest.java @@ -0,0 +1,177 @@ +package com.abbidot.baselibrary.util.rsa; + +import com.abbidot.baselibrary.util.LogUtil; + +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + + +public class Digest { + private static final String ENCODE = "UTF-8"; + + private String signMD5(String aValue, String encoding) { + try { + byte[] input = aValue.getBytes(encoding); + MessageDigest md = MessageDigest.getInstance("MD5"); + return toHex(md.digest(input)); + } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { + LogUtil.Companion.e("signMD5 Exception" + e.getMessage()); + return null; + } + } + + private String hmacSign(String aValue) { + try { + byte[] input = aValue.getBytes(); + MessageDigest md = MessageDigest.getInstance("MD5"); + return toHex(md.digest(input)); + } catch (NoSuchAlgorithmException e) { + LogUtil.Companion.e(e.getMessage()); + return null; + } + } + + private String hmacSign(String aValue, String aKey) { + return hmacSign(aValue, aKey, ENCODE); + } + + public static String hmacSign(String aValue, String aKey, String encoding) { + byte[] k_ipad = new byte[64]; + byte[] k_opad = new byte[64]; + byte[] keyb; + byte[] value; + try { + keyb = aKey.getBytes(encoding); + value = aValue.getBytes(encoding); + } catch (UnsupportedEncodingException e) { + keyb = aKey.getBytes(); + value = aValue.getBytes(); + } + Arrays.fill(k_ipad, keyb.length, 64, (byte) 54); + Arrays.fill(k_opad, keyb.length, 64, (byte) 92); + for (int i = 0; i < keyb.length; i++) { + k_ipad[i] = (byte) (keyb[i] ^ 0x36); + k_opad[i] = (byte) (keyb[i] ^ 0x5c); + } + + MessageDigest md; + try { + md = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + LogUtil.Companion.e("hmacSign Exception:" + e.getMessage()); + return null; + } + md.update(k_ipad); + md.update(value); + byte[] dg = md.digest(); + md.reset(); + md.update(k_opad); + md.update(dg, 0, 16); + dg = md.digest(); + return toHex(dg); + } + + private String hmacSHASign(String aValue, String aKey, String encoding) { + byte[] k_ipad = new byte[64]; + byte[] k_opad = new byte[64]; + byte[] keyb; + byte[] value; + try { + keyb = aKey.getBytes(encoding); + value = aValue.getBytes(encoding); + } catch (UnsupportedEncodingException e) { + keyb = aKey.getBytes(); + value = aValue.getBytes(); + } + Arrays.fill(k_ipad, keyb.length, 64, (byte) 54); + Arrays.fill(k_opad, keyb.length, 64, (byte) 92); + for (int i = 0; i < keyb.length; i++) { + k_ipad[i] = (byte) (keyb[i] ^ 0x36); + k_opad[i] = (byte) (keyb[i] ^ 0x5c); + } + + MessageDigest md; + try { + md = MessageDigest.getInstance("SHA"); + } catch (NoSuchAlgorithmException e) { + LogUtil.Companion.e("hmacSHASign Exception:" + e.getMessage()); + return null; + } + md.update(k_ipad); + md.update(value); + byte[] dg = md.digest(); + md.reset(); + md.update(k_opad); + md.update(dg, 0, 20); + dg = md.digest(); + return toHex(dg); + } + + public static String digest(String aValue) { + return digest(aValue, ENCODE); + } + + public static String digest(String aValue, String encoding) { + aValue = aValue.trim(); + byte[] value; + try { + value = aValue.getBytes(encoding); + } catch (UnsupportedEncodingException e) { + value = aValue.getBytes(); + } + MessageDigest md; + try { + md = MessageDigest.getInstance("SHA"); + } catch (NoSuchAlgorithmException e) { + LogUtil.Companion.e("digest Exception:" + e.getMessage()); + return null; + } + return toHex(md.digest(value)); + } + + + private String digest(String aValue, String alg, String encoding) { + aValue = aValue.trim(); + byte[] value; + try { + value = aValue.getBytes(encoding); + } catch (UnsupportedEncodingException e) { + value = aValue.getBytes(); + } + MessageDigest md; + try { + md = MessageDigest.getInstance(alg); + } catch (NoSuchAlgorithmException e) { + LogUtil.Companion.e("digest Exception:" + e.getMessage()); + return null; + } + return toHex(md.digest(value)); + } + + private String udpSign(String aValue) { + try { + byte[] input = aValue.getBytes(StandardCharsets.UTF_8); + MessageDigest md = MessageDigest.getInstance("SHA1"); + return new String(Base64.encode(md.digest(input)), ENCODE); + } catch (Exception e) { + return null; + } + } + + private static String toHex(byte[] input) { + if (input == null) + return null; + StringBuilder output = new StringBuilder(input.length * 2); + for (byte b : input) { + int current = b & 0xff; + if (current < 16) + output.append("0"); + output.append(Integer.toString(current, 16)); + } + return output.toString(); + } + +} diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/RSA.java b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/RSA.java new file mode 100644 index 0000000..f0a5cc0 --- /dev/null +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/rsa/RSA.java @@ -0,0 +1,187 @@ +package com.abbidot.baselibrary.util.rsa; + +/* + --------------------------------------------**********-------------------------------------------- + + 该算法于1977年由美国麻çœç†å·¥å­¦é™¢MIT(Massachusetts Institute of Technology)çš„Ronal Rivest,Adi Shamirå’ŒLen + Adleman三ä½å¹´è½»æ•™æŽˆæå‡ºï¼Œå¹¶ä»¥ä¸‰äººçš„å§“æ°Rivest,Shamirå’ŒAdlernan命å为RSA算法,是一个支æŒå˜é•¿å¯†é’¥çš„公共密钥算法,需è¦åŠ å¯†çš„æ–‡ä»¶å¿«çš„é•¿åº¦ä¹Ÿæ˜¯å¯å˜çš„! + + 所谓RSA加密算法,是世界上第一个éžå¯¹ç§°åŠ å¯†ç®—æ³•ï¼Œä¹Ÿæ˜¯æ•°è®ºçš„ç¬¬ä¸€ä¸ªå®žé™…åº”ç”¨ã€‚å®ƒçš„ç®—æ³•å¦‚ä¸‹ï¼š + + 1.找两个éžå¸¸å¤§çš„质数på’Œq(通常på’Œq都有155åè¿›åˆ¶ä½æˆ–都有512å进制ä½ï¼‰å¹¶è®¡ç®—n=pq,k=(p-1)(q-1)。 + + 2.å°†æ˜Žæ–‡ç¼–ç æˆæ•´æ•°M,ä¿è¯Mä¸å°äºŽ0但是å°äºŽn。 + + 3.ä»»å–一个整数e,ä¿è¯eå’Œk互质,而且eä¸å°äºŽ0但是å°äºŽk。加密钥匙(称作公钥)是(e, n)。 + + 4.找到一个整数d,使得ed除以k的余数是1(åªè¦eå’Œnæ»¡è¶³ä¸Šé¢æ¡ä»¶ï¼Œd肯定存在)。解密钥匙(称作密钥)是(d, n)。 + + 加密过程: 加密åŽçš„ç¼–ç C等于Mçš„e次方除以n所得的余数。 + + 解密过程: 解密åŽçš„ç¼–ç N等于Cçš„d次方除以n所得的余数。 + + åªè¦eã€då’Œn满足上é¢ç»™å®šçš„æ¡ä»¶ã€‚M等于N。 + + --------------------------------------------**********-------------------------------------------- + */ + +import com.abbidot.baselibrary.util.LogUtil; + +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.security.Key; +import java.security.KeyFactory; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.SecureRandom; +import java.security.Signature; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.HashMap; +import java.util.Map; + +import javax.crypto.Cipher; + + +/** + * æºç é“¾æŽ¥ + */ +public class RSA { + + private static final String CHAR_ENCODING = "UTF-8"; + private static final String AES_ALGORITHM = "AES/CBC/PKCS5Padding"; + private static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding"; + + /** + * 生æˆå¯†é’¥å¯¹ + */ + private Map generateKeyPair() throws Exception { + // 指定keyçš„å¤§å° + int keySize = 2048; + /** RSAç®—æ³•è¦æ±‚有一个å¯ä¿¡ä»»çš„éšæœºæ•°æº */ + SecureRandom sr = new SecureRandom(); + /** 为RSA算法创建一个KeyPairGenerator对象 */ + KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); + /** 利用上é¢çš„éšæœºæ•°æ®æºåˆå§‹åŒ–这个KeyPairGenerator对象 */ + kpg.initialize(keySize, sr); + /** 生æˆå¯†åŒ™å¯¹ */ + KeyPair kp = kpg.generateKeyPair(); + /** 得到公钥 */ + Key publicKey = kp.getPublic(); + byte[] publicKeyBytes = publicKey.getEncoded(); + String pub = new String(Base64.encodeBase64(publicKeyBytes), CHAR_ENCODING); + /** 得到ç§é’¥ */ + Key privateKey = kp.getPrivate(); + byte[] privateKeyBytes = privateKey.getEncoded(); + String pri = new String(Base64.encodeBase64(privateKeyBytes), CHAR_ENCODING); + + Map map = new HashMap<>(); + map.put("publicKey", pub); + map.put("privateKey", pri); + RSAPublicKey rsp = (RSAPublicKey) kp.getPublic(); + BigInteger bint = rsp.getModulus(); + byte[] b = bint.toByteArray(); + byte[] deBase64Value = Base64.encodeBase64(b); + String retValue = new String(deBase64Value); + map.put("modulus", retValue); + return map; + } + + /** + * 加密方法 source: æºæ•°æ® + */ + public static String encrypt(String source, String publicKey) throws Exception { + Key key = getPublicKey(publicKey); + /** 得到Cipher对象æ¥å®žçŽ°å¯¹æºæ•°æ®çš„RSA加密 */ + Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); + cipher.init(Cipher.ENCRYPT_MODE, key); + byte[] b = source.getBytes(); + /** 执行加密æ“作 */ + byte[] b1 = cipher.doFinal(b); + return new String(Base64.encodeBase64(b1), CHAR_ENCODING); + } + + /** + * 解密算法 cryptograph:密文 + */ + private String decrypt(String cryptograph, String privateKey) throws Exception { + Key key = getPrivateKey(privateKey); + /** 得到Cipher对象对已用公钥加密的数æ®è¿›è¡ŒRSA解密 */ + Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); + cipher.init(Cipher.DECRYPT_MODE, key); + byte[] b1 = Base64.decodeBase64(cryptograph.getBytes()); + /** 执行解密æ“作 */ + byte[] b = cipher.doFinal(b1); + return new String(b); + } + + /** + * 得到公钥 + * + * @param key 密钥字符串(ç»è¿‡base64ç¼–ç ï¼‰ + * @throws Exception + */ + private static PublicKey getPublicKey(String key) throws Exception { + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decodeBase64(key.getBytes())); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePublic(keySpec); + } + + /** + * 得到ç§é’¥ + * + * @param key 密钥字符串(ç»è¿‡base64ç¼–ç ï¼‰ + * @throws Exception + */ + private PrivateKey getPrivateKey(String key) throws Exception { + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(key.getBytes())); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + return keyFactory.generatePrivate(keySpec); + } + + private String sign(String content, String privateKey) { + try { + PKCS8EncodedKeySpec priPKCS8 = + new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey.getBytes())); + KeyFactory keyf = KeyFactory.getInstance("RSA"); + PrivateKey priKey = keyf.generatePrivate(priPKCS8); + + Signature signature = Signature.getInstance("SHA256WithRSA"); + + signature.initSign(priKey); + signature.update(content.getBytes(CHAR_ENCODING)); + + byte[] signed = signature.sign(); + + return new String(Base64.encodeBase64(signed)); + } catch (Exception e) { + LogUtil.Companion.e("sign Exception:" + e.getMessage()); + } + + return null; + } + + private boolean checkSign(String content, String sign, String publicKey) { + try { + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + byte[] encodedKey = Base64.decode2(publicKey); + PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey)); + + + Signature signature = Signature.getInstance("SHA256WithRSA"); + + signature.initVerify(pubKey); + signature.update(content.getBytes(StandardCharsets.UTF_8)); + + return signature.verify(Base64.decode2(sign)); + + } catch (Exception e) { + LogUtil.Companion.e("checkSign Exception:" + e.getMessage()); + } + return false; + } + +} \ No newline at end of file diff --git a/baselibrary/src/test/java/com/abbidot/baselibrary/ExampleUnitTest.kt b/baselibrary/src/test/java/com/abbidot/baselibrary/ExampleUnitTest.kt new file mode 100644 index 0000000..5d03f8d --- /dev/null +++ b/baselibrary/src/test/java/com/abbidot/baselibrary/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.abbidot.baselibrary + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..5c0edc5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,59 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext.kotlin_version = '2.2.0' + repositories { + google() + mavenCentral() + + // hms +// maven { url 'http://developer.huawei.com/repo/'} +// fcm +// maven { url "https://maven.google.com" } + } + dependencies { + classpath 'com.android.tools.build:gradle:8.11.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.4.2' +// classpath 'com.google.dagger:hilt-android-gradle-plugin:2.46.1' + classpath 'com.google.dagger:hilt-android-gradle-plugin:2.57' + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + + // fcm +// classpath 'com.google.gms:google-services:4.3.4' + // hms +// classpath 'com.huawei.agconnect:agcp:1.4.1.300' + } +} + +allprojects { + repositories { + google() + mavenCentral() + maven { url 'https://jitpack.io' } +// jcenter() // Warning: this repository is going to shut down soon + + //mapbox + maven { + url 'https://api.mapbox.com/downloads/v2/releases/maven' + authentication { + basic(BasicAuthentication) + } + credentials { + // Do not change the username below. + // This should always be `mapbox` (not your username). + username = "mapbox" + // Use the secret token you stored in gradle.properties as the password + password = project.properties['MAPBOX_DOWNLOADS_TOKEN'] ?: "" + } + } + //hms +// maven {url 'http://developer.huawei.com/repo/'} + //fcm +// maven { url "https://maven.google.com" } + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/easyPhotos/.gitignore b/easyPhotos/.gitignore new file mode 100644 index 0000000..8a43cc8 --- /dev/null +++ b/easyPhotos/.gitignore @@ -0,0 +1,73 @@ +.DS_Store + +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# IntelliJ +*.iml +.idea +.idea/workspace.xml +.idea/modules.xml +.idea/tasks.xml +.idea/gradle.xml +.idea/assetWizardSettings.xml +.idea/dictionaries +.idea/libraries +.idea/caches + +# Keystore files +# Uncomment the following line if you do not want to check your keystore files in. +#*.jks + +# External native build folder generated in Android Studio 2.2 and later +.externalNativeBuild + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Freeline +freeline.py +freeline/ +freeline_project_description.json + +# fastlane +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/test_output +fastlane/readme.md + +# test +/src/test +/src/androidTest \ No newline at end of file diff --git a/easyPhotos/build.gradle b/easyPhotos/build.gradle new file mode 100644 index 0000000..f967bf4 --- /dev/null +++ b/easyPhotos/build.gradle @@ -0,0 +1,57 @@ +//apply plugin: 'com.android.library' +//apply plugin: 'com.github.dcendents.android-maven' +//group = 'com.github.HuanTanSheng' +plugins { + id 'com.android.library' +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 15 + targetSdkVersion 33 + vectorDrawables.useSupportLibrary = true + } + namespace 'com.huantansheng.easyphotos' +} + +dependencies { + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'com.google.android.material:material:1.10.0' + implementation 'androidx.recyclerview:recyclerview:1.3.1' + implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0' + implementation 'com.github.chrisbanes:PhotoView:2.3.0' +} +// +//// æŒ‡å®šç¼–ç  +//tasks.withType(JavaCompile) { +// options.encoding = "UTF-8" +//} + +// 打包æºç  +//task sourcesJar(type: Jar) { +// from android.sourceSets.main.java.srcDirs +// classifier = 'sources' +//} + +//制作文档 +//task javadoc(type: Javadoc) { +// failOnError false +// source = android.sourceSets.main.java.sourceFiles +// classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) +// classpath += configurations.compile +//} + +// 打包文档 +//task javadocJar(type: Jar, dependsOn: javadoc) { +// classifier = 'javadoc' +// from javadoc.destinationDir +//} + +//artifacts { +// archives sourcesJar +//// archives javadocJar +//} \ No newline at end of file diff --git a/easyPhotos/proguard-rules.pro b/easyPhotos/proguard-rules.pro new file mode 100644 index 0000000..068a256 --- /dev/null +++ b/easyPhotos/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\androidSpace\android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/easyPhotos/src/main/AndroidManifest.xml b/easyPhotos/src/main/AndroidManifest.xml new file mode 100644 index 0000000..21a6226 --- /dev/null +++ b/easyPhotos/src/main/AndroidManifest.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/Builder/AlbumBuilder.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/Builder/AlbumBuilder.java new file mode 100644 index 0000000..f1abbe9 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/Builder/AlbumBuilder.java @@ -0,0 +1,678 @@ +package com.huantansheng.easyphotos.Builder; + +import android.app.Activity; +import android.net.Uri; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; + +import com.huantansheng.easyphotos.callback.SelectCallback; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.engine.ImageEngine; +import com.huantansheng.easyphotos.models.ad.AdListener; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.EasyPhotosActivity; +import com.huantansheng.easyphotos.utils.result.EasyResult; +import com.huantansheng.easyphotos.utils.uri.UriUtils; + +import java.io.File; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.Arrays; + +/** + * EasyPhotosçš„å¯åŠ¨ç®¡ç†å™¨ + * Created by huan on 2017/10/18. + */ +public class AlbumBuilder { + + /** + * å¯åŠ¨æ¨¡å¼ + * CAMERA-相机 + * ALBUM-相册专辑 + * ALBUM_CAMERA-带有相机按钮的相册专辑 + */ + private enum StartupType { + CAMERA, + ALBUM, + ALBUM_CAMERA + } + + private static final String TAG = "com.huantansheng.easyphotos"; + private static AlbumBuilder instance; + private WeakReference mActivity; + private WeakReference mFragmentV; + private WeakReference mFragment; + private StartupType startupType; + private WeakReference adListener; + + //ç§æœ‰æž„造函数,ä¸å…è®¸å¤–éƒ¨è°ƒç”¨ï¼ŒçœŸæ­£å®žä¾‹åŒ–é€šè¿‡é™æ€æ–¹æ³•实现 + private AlbumBuilder(Activity activity, StartupType startupType) { + mActivity = new WeakReference(activity); + this.startupType = startupType; + } + + private AlbumBuilder(android.app.Fragment fragment, StartupType startupType) { + mFragment = new WeakReference(fragment); + this.startupType = startupType; + } + + private AlbumBuilder(FragmentActivity activity, StartupType startupType) { + mActivity = new WeakReference(activity); + this.startupType = startupType; + } + + private AlbumBuilder(Fragment fragment, StartupType startupType) { + mFragmentV = new WeakReference(fragment); + this.startupType = startupType; + } + + /** + * 内部处ç†ç›¸æœºå’Œç›¸å†Œçš„实例 + * + * @param activity Activity的实例 + * @return AlbumBuilder EasyPhotos的实例 + */ + + private static AlbumBuilder with(Activity activity, StartupType startupType) { + clear(); + instance = new AlbumBuilder(activity, startupType); + return instance; + } + + + private static AlbumBuilder with(android.app.Fragment fragment, StartupType startupType) { + clear(); + instance = new AlbumBuilder(fragment, startupType); + return instance; + } + + private static AlbumBuilder with(FragmentActivity activity, StartupType startupType) { + clear(); + instance = new AlbumBuilder(activity, startupType); + return instance; + } + + private static AlbumBuilder with(Fragment fragmentV, StartupType startupType) { + clear(); + instance = new AlbumBuilder(fragmentV, startupType); + return instance; + } + + + /** + * 创建相机 + * + * @param activity 上下文 + * @return AlbumBuilder + */ + + public static AlbumBuilder createCamera(Activity activity) { + return AlbumBuilder.with(activity, StartupType.CAMERA); + } + + + public static AlbumBuilder createCamera(android.app.Fragment fragment) { + return AlbumBuilder.with(fragment, StartupType.CAMERA); + } + + public static AlbumBuilder createCamera(FragmentActivity activity) { + return AlbumBuilder.with(activity, StartupType.CAMERA); + } + + public static AlbumBuilder createCamera(Fragment fragmentV) { + return AlbumBuilder.with(fragmentV, StartupType.CAMERA); + } + + /** + * 创建相册 + * + * @param activity 上下文 + * @param isShowCamera æ˜¯å¦æ˜¾ç¤ºç›¸æœºæŒ‰é’® + * @param imageEngine 图片加载引擎的具体实现 + * @return + */ + public static AlbumBuilder createAlbum(Activity activity, boolean isShowCamera, + @NonNull ImageEngine imageEngine) { + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + if (isShowCamera) { + return AlbumBuilder.with(activity, StartupType.ALBUM_CAMERA); + } else { + return AlbumBuilder.with(activity, StartupType.ALBUM); + } + } + + public static AlbumBuilder createAlbum(android.app.Fragment fragment, boolean isShowCamera, + @NonNull ImageEngine imageEngine) { + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + if (isShowCamera) { + return AlbumBuilder.with(fragment, StartupType.ALBUM_CAMERA); + } else { + return AlbumBuilder.with(fragment, StartupType.ALBUM); + } + } + + public static AlbumBuilder createAlbum(FragmentActivity activity, boolean isShowCamera, + @NonNull ImageEngine imageEngine) { + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + if (isShowCamera) { + return AlbumBuilder.with(activity, StartupType.ALBUM_CAMERA); + } else { + return AlbumBuilder.with(activity, StartupType.ALBUM); + } + } + + public static AlbumBuilder createAlbum(Fragment fragmentV, boolean isShowCamera, + @NonNull ImageEngine imageEngine) { + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + if (isShowCamera) { + return AlbumBuilder.with(fragmentV, StartupType.ALBUM_CAMERA); + } else { + return AlbumBuilder.with(fragmentV, StartupType.ALBUM); + } + } + + /** + * 设置fileProvider字段 + * + * @param fileProviderAuthority fileProvider字段 + * @return AlbumBuilder + */ + public AlbumBuilder setFileProviderAuthority(String fileProviderAuthority) { + Setting.fileProviderAuthority = fileProviderAuthority; + return AlbumBuilder.this; + } + + /** + * 设置选择数 + * + * @param selectorMaxCount 最大选择数 + * @return AlbumBuilder + */ + public AlbumBuilder setCount(int selectorMaxCount) { + if (Setting.complexSelector) return AlbumBuilder.this; + Setting.count = selectorMaxCount; + return AlbumBuilder.this; + } + + /** + * 设置是å¦ä½¿ç”¨å®½é«˜æ•°æ® + * + * @param useWidth 是å¦ä½¿ç”¨å®½é«˜æ•°æ®ï¼Œéœ€è¦ä½¿ç”¨å†™true,ä¸ç”¨å†™false。 + * true:会ä¿è¯å®½é«˜æ•°æ®çš„æ­£ç¡®æ€§ï¼Œè¿”回速度慢,耗时。 + * false:宽高数æ®ä¸º0。 + * @return AlbumBuilder + */ + public AlbumBuilder setUseWidth(boolean useWidth) { + Setting.useWidth = useWidth; + return AlbumBuilder.this; + } + + /** + * 支æŒå¤æ‚选择情况 + * + * @param singleType 是å¦åªèƒ½é€‰æ‹©ä¸€ç§æ–‡ä»¶ç±»åž‹ï¼Œå¦‚用户选择视频åŽä¸å¯ä»¥é€‰æ‹©å›¾ç‰‡ï¼Œè‹¥false则å¯ä»¥åŒæ—¶é€‰æ‹© + * @param videoCount å¯é€‰æ‹©è§†é¢‘类型文件的最大数 + * @param pictureCount å¯é€‰æ‹©å›¾ç‰‡ç±»åž‹æ–‡ä»¶çš„æœ€å¤§æ•° + * @return + */ + public AlbumBuilder complexSelector(boolean singleType, int videoCount, int pictureCount) { + Setting.complexSelector = true; + Setting.complexSingleType = singleType; + Setting.complexVideoCount = videoCount; + Setting.complexPictureCount = pictureCount; + Setting.count = videoCount + pictureCount; + Setting.showVideo = true; + return AlbumBuilder.this; + } + + /** + * 设置相机按钮ä½ç½® + * + * @param cLocation 使用Material Design风格相机按钮 默认 BOTTOM_RIGHT + * @return AlbumBuilder + */ + public AlbumBuilder setCameraLocation(@Setting.Location int cLocation) { + Setting.cameraLocation = cLocation; + return AlbumBuilder.this; + } + + /** + * è®¾ç½®æ˜¾ç¤ºç…§ç‰‡çš„æœ€å°æ–‡ä»¶å¤§å° + * + * @param minFileSize æœ€å°æ–‡ä»¶å¤§å°ï¼Œå•ä½Bytes + * @return AlbumBuilder + */ + public AlbumBuilder setMinFileSize(long minFileSize) { + Setting.minSize = minFileSize; + return AlbumBuilder.this; + } + + /** + * 设置显示照片的最å°å®½åº¦ + * + * @param minWidth 照片的最å°å®½åº¦ï¼Œå•ä½Px + * @return AlbumBuilder + */ + public AlbumBuilder setMinWidth(int minWidth) { + Setting.minWidth = minWidth; + return AlbumBuilder.this; + } + + /** + * 设置显示照片的最å°é«˜åº¦ + * + * @param minHeight 显示照片的最å°é«˜åº¦ï¼Œå•ä½Px + * @return AlbumBuilder + */ + public AlbumBuilder setMinHeight(int minHeight) { + Setting.minHeight = minHeight; + return AlbumBuilder.this; + } + + /** + * è®¾ç½®é»˜è®¤é€‰æ‹©å›¾ç‰‡é›†åˆ + * + * @param selectedPhotos é»˜è®¤é€‰æ‹©å›¾ç‰‡é›†åˆ + * @return AlbumBuilder + */ + public AlbumBuilder setSelectedPhotos(ArrayList selectedPhotos) { + Setting.selectedPhotos.clear(); + if (selectedPhotos.isEmpty()) { + return AlbumBuilder.this; + } + Setting.selectedPhotos.addAll(selectedPhotos); + Setting.selectedOriginal = selectedPhotos.get(0).selectedOriginal; + return AlbumBuilder.this; + } + + /** + * è®¾ç½®é»˜è®¤é€‰æ‹©å›¾ç‰‡é›†åˆ + * + * @param selectedPhotos é»˜è®¤é€‰æ‹©å›¾ç‰‡é›†åˆ + * @param isSequentialSelectedPhotos å½“ä¼ å…¥å·²é€‰ä¸­å›¾ç‰‡æ—¶ï¼Œæ˜¯å¦æŒ‰ç…§ä¹‹å‰é€‰ä¸­çš„é¡ºåºæŽ’åº + * @return AlbumBuilder + */ + public AlbumBuilder setSelectedPhotos(ArrayList selectedPhotos,boolean isSequentialSelectedPhotos) { + Setting.selectedPhotos.clear(); + Setting.isSequentialSelectedPhotos = isSequentialSelectedPhotos; + if (selectedPhotos.isEmpty()) { + return AlbumBuilder.this; + } + Setting.selectedPhotos.addAll(selectedPhotos); + Setting.selectedOriginal = selectedPhotos.get(0).selectedOriginal; + return AlbumBuilder.this; + } + + /** + * 设置默认选择图片地å€é›†åˆ + * + * @param selectedPhotoPaths 默认选择图片地å€é›†åˆ + * @return AlbumBuilder + * @Deprecated android 10 䏿ލè使用直接使用Pathæ–¹å¼ï¼ŒæŽ¨è使用Photoç±» + */ + @Deprecated + public AlbumBuilder setSelectedPhotoPaths(ArrayList selectedPhotoPaths) { + Setting.selectedPhotos.clear(); + ArrayList selectedPhotos = new ArrayList<>(); + for (String path : selectedPhotoPaths) { + File file = new File(path); + Uri uri = null; + if (null != mActivity && null != mActivity.get()) { + uri = UriUtils.getUri(mActivity.get(), file); + } + if (null != mFragment && null != mFragment.get()) { + uri = UriUtils.getUri(mFragment.get().getActivity(), file); + } + if (null != mFragmentV && null != mFragmentV.get()) { + uri = UriUtils.getUri(mFragmentV.get().getActivity(), file); + } + if (uri == null) { + uri = Uri.fromFile(file); + } + Photo photo = new Photo(null, uri, path, 0, 0, 0, 0, 0, 0, null); + selectedPhotos.add(photo); + } + Setting.selectedPhotos.addAll(selectedPhotos); + return AlbumBuilder.this; + } + + /** + * 设置默认选择图片地å€é›†åˆ + * + * @param selectedPhotoPaths 默认选择图片地å€é›†åˆ + * @param isSequentialSelectedPhotos å½“ä¼ å…¥å·²é€‰ä¸­å›¾ç‰‡æ—¶ï¼Œæ˜¯å¦æŒ‰ç…§ä¹‹å‰é€‰ä¸­çš„é¡ºåºæŽ’åº + * @return AlbumBuilder + * @Deprecated android 10 䏿ލè使用直接使用Pathæ–¹å¼ï¼ŒæŽ¨è使用Photoç±» + */ + @Deprecated + public AlbumBuilder setSelectedPhotoPaths(ArrayList selectedPhotoPaths,boolean isSequentialSelectedPhotos) { + Setting.selectedPhotos.clear(); + Setting.isSequentialSelectedPhotos = isSequentialSelectedPhotos; + ArrayList selectedPhotos = new ArrayList<>(); + for (String path : selectedPhotoPaths) { + File file = new File(path); + Uri uri = null; + if (null != mActivity && null != mActivity.get()) { + uri = UriUtils.getUri(mActivity.get(), file); + } + if (null != mFragment && null != mFragment.get()) { + uri = UriUtils.getUri(mFragment.get().getActivity(), file); + } + if (null != mFragmentV && null != mFragmentV.get()) { + uri = UriUtils.getUri(mFragmentV.get().getActivity(), file); + } + if (uri == null) { + uri = Uri.fromFile(file); + } + Photo photo = new Photo(null, uri, path, 0, 0, 0, 0, 0, 0, null); + selectedPhotos.add(photo); + } + Setting.selectedPhotos.addAll(selectedPhotos); + return AlbumBuilder.this; + } + + + /** + * 原图按钮设置,ä¸è°ƒç”¨è¯¥æ–¹æ³•䏿˜¾ç¤ºåŽŸå›¾æŒ‰é’® + * + * @param isChecked åŽŸå›¾é€‰é¡¹é»˜è®¤çŠ¶æ€æ˜¯å¦ä¸ºé€‰ä¸­çŠ¶æ€ + * @param usable 原图按钮是å¦å¯ä½¿ç”¨ + * @param unusableHint 原图按钮ä¸å¯ä½¿ç”¨æ—¶ç»™ç”¨æˆ·çš„æ–‡å­—æç¤º + * @return AlbumBuilder + */ + public AlbumBuilder setOriginalMenu(boolean isChecked, boolean usable, String unusableHint) { + Setting.showOriginalMenu = true; + Setting.selectedOriginal = isChecked; + Setting.originalMenuUsable = usable; + Setting.originalMenuUnusableHint = unusableHint; + return AlbumBuilder.this; + } + + + /** + * æ˜¯å¦æ˜¾ç¤ºæ‹¼å›¾æŒ‰é’® + * + * @param shouldShow æ˜¯å¦æ˜¾ç¤º + * @return AlbumBuilder + */ + public AlbumBuilder setPuzzleMenu(boolean shouldShow) { + Setting.showPuzzleMenu = shouldShow; + return AlbumBuilder.this; + } + + /** + * åªæ˜¾ç¤ºVideo + * + * @return @return AlbumBuilder + */ + + public AlbumBuilder onlyVideo() { + return filter(Type.VIDEO); + } + + /** + * 过滤 + * + * @param types {@link Type} + * @return @return AlbumBuilder + */ + public AlbumBuilder filter(String... types) { + Setting.filterTypes = Arrays.asList(types); + return AlbumBuilder.this; + } + + /** + * æ˜¯å¦æ˜¾ç¤ºgif图 + * + * @param shouldShow æ˜¯å¦æ˜¾ç¤º + * @return @return AlbumBuilder + */ + public AlbumBuilder setGif(boolean shouldShow) { + Setting.showGif = shouldShow; + return AlbumBuilder.this; + } + + /** + * æ˜¯å¦æ˜¾ç¤ºvideo + * + * @param shouldShow æ˜¯å¦æ˜¾ç¤º + * @return @return AlbumBuilder + */ + public AlbumBuilder setVideo(boolean shouldShow) { + Setting.showVideo = shouldShow; + return AlbumBuilder.this; + } + + /** + * 显示最少多少秒的视频 + * + * @param second ç§’ + * @return @return AlbumBuilder + */ + public AlbumBuilder setVideoMinSecond(int second) { + Setting.videoMinSecond = second * 1000; + return AlbumBuilder.this; + } + + /** + * 显示最多多少秒的视频 + * + * @param second ç§’ + * @return @return AlbumBuilder + */ + public AlbumBuilder setVideoMaxSecond(int second) { + Setting.videoMaxSecond = second * 1000; + return AlbumBuilder.this; + } + + /** + * ç›¸å†Œé€‰æ‹©é¡µæ˜¯å¦æ˜¾ç¤ºæ¸…空按钮 + * + * @param shouldShow + * @return + */ + public AlbumBuilder setCleanMenu(boolean shouldShow) { + Setting.showCleanMenu = shouldShow; + return AlbumBuilder.this; + } + + private void setSettingParams() { + switch (startupType) { + case CAMERA: + Setting.onlyStartCamera = true; + Setting.isShowCamera = true; + break; + case ALBUM: + Setting.isShowCamera = false; + break; + case ALBUM_CAMERA: + Setting.isShowCamera = true; + break; + } + if (!Setting.filterTypes.isEmpty()) { + if (Setting.isFilter(Type.GIF)) { + Setting.showGif = true; + } + if (Setting.isFilter(Type.VIDEO)) { + Setting.showVideo = true; + } + } + if (Setting.isOnlyVideo()) { + //åªé€‰æ‹©è§†é¢‘ æš‚ä¸æ”¯æŒæ‹ç…§/拼图等 + Setting.isShowCamera = false; + Setting.showPuzzleMenu = false; + Setting.showGif = false; + Setting.showVideo = true; + } + } + + /** + * å¯åŠ¨ï¼ŒonActivityResultæ–¹å¼ + * + * @param requestCode startActivityForResultçš„è¯·æ±‚ç  + */ + + public void start(int requestCode) { + setSettingParams(); + launchEasyPhotosActivity(requestCode); + } + + /** + * å¯åŠ¨ï¼Œé“¾å¼è°ƒç”¨ + */ + public void start(SelectCallback callback) { + setSettingParams(); + if (null != mActivity && null != mActivity.get() && mActivity.get() instanceof FragmentActivity) { + EasyResult.get((FragmentActivity) mActivity.get()).startEasyPhoto(callback); + return; + } + if (null != mFragmentV && null != mFragmentV.get()) { + EasyResult.get(mFragmentV.get()).startEasyPhoto(callback); + return; + } + throw new RuntimeException("mActivity or mFragmentV maybe null, you can not use this " + + "method... "); + } + + /** + * æ­£å¼å¯åЍ + * + * @param requestCode startActivityForResultçš„è¯·æ±‚ç  + */ + private void launchEasyPhotosActivity(int requestCode) { + if (null != mActivity && null != mActivity.get()) { + EasyPhotosActivity.start(mActivity.get(), requestCode); + return; + } + if (null != mFragment && null != mFragment.get()) { + EasyPhotosActivity.start(mFragment.get(), requestCode); + return; + } + if (null != mFragmentV && null != mFragmentV.get()) { + EasyPhotosActivity.start(mFragmentV.get(), requestCode); + } + } + + /** + * æ¸…é™¤æ‰€æœ‰æ•°æ® + */ + private static void clear() { + Result.clear(); + Setting.clear(); + instance = null; + } + +//*********************AD************************************ + + /** + * 设置广告(ä¸è®¾ç½®è¯¥é€‰é¡¹åˆ™è¡¨ç¤ºä¸ä½¿ç”¨å¹¿å‘Š) + * + * @param photosAdView 使用图片列表的广告View + * @param photosAdIsLoaded 图片列表广告是å¦åŠ è½½å®Œæ¯• + * @param albumItemsAdView 使用专辑项目列表的广告View + * @param albumItemsAdIsLoaded 专辑项目列表广告是å¦åŠ è½½å®Œæ¯• + * @return AlbumBuilder + */ + public AlbumBuilder setAdView(View photosAdView, boolean photosAdIsLoaded, + View albumItemsAdView, boolean albumItemsAdIsLoaded) { + Setting.photosAdView = new WeakReference(photosAdView); + Setting.albumItemsAdView = new WeakReference(albumItemsAdView); + Setting.photoAdIsOk = photosAdIsLoaded; + Setting.albumItemsAdIsOk = albumItemsAdIsLoaded; + return AlbumBuilder.this; + } + + /** + * è®¾ç½®å¹¿å‘Šç›‘å¬ + * 内部使用,无需关心 + * + * @param adListener å¹¿å‘Šç›‘å¬ + */ + public static void setAdListener(AdListener adListener) { + if (null == instance) return; + if (instance.startupType == StartupType.CAMERA) return; + instance.adListener = new WeakReference(adListener); + } + + /** + * åˆ·æ–°å›¾ç‰‡åˆ—è¡¨å¹¿å‘Šæ•°æ® + */ + public static void notifyPhotosAdLoaded() { + if (Setting.photoAdIsOk) { + return; + } + if (null == instance) { + return; + } + if (instance.startupType == StartupType.CAMERA) { + return; + } + if (null == instance.adListener) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (null != instance && null != instance.adListener) { + Setting.photoAdIsOk = true; + instance.adListener.get().onPhotosAdLoaded(); + } + } + }).start(); + return; + } + Setting.photoAdIsOk = true; + instance.adListener.get().onPhotosAdLoaded(); + } + + /** + * 刷新专辑项目列表广告 + */ + public static void notifyAlbumItemsAdLoaded() { + if (Setting.albumItemsAdIsOk) { + return; + } + if (null == instance) { + return; + } + if (instance.startupType == StartupType.CAMERA) { + return; + } + if (null == instance.adListener) { + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (null != instance && null != instance.adListener) { + Setting.albumItemsAdIsOk = true; + instance.adListener.get().onAlbumItemsAdLoaded(); + } + } + }).start(); + return; + } + Setting.albumItemsAdIsOk = true; + instance.adListener.get().onAlbumItemsAdLoaded(); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/EasyPhotos.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/EasyPhotos.java new file mode 100644 index 0000000..ef9fd8c --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/EasyPhotos.java @@ -0,0 +1,345 @@ +package com.huantansheng.easyphotos; + +import android.app.Activity; +import android.app.Fragment; +import android.content.Context; +import android.graphics.Bitmap; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.fragment.app.FragmentActivity; + +import com.huantansheng.easyphotos.Builder.AlbumBuilder; +import com.huantansheng.easyphotos.callback.PuzzleCallback; +import com.huantansheng.easyphotos.engine.ImageEngine; +import com.huantansheng.easyphotos.models.ad.AdListener; +import com.huantansheng.easyphotos.models.album.AlbumModel; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.models.sticker.StickerModel; +import com.huantansheng.easyphotos.models.sticker.entity.TextStickerData; +import com.huantansheng.easyphotos.ui.PuzzleActivity; +import com.huantansheng.easyphotos.utils.bitmap.BitmapUtils; +import com.huantansheng.easyphotos.utils.bitmap.SaveBitmapCallBack; +import com.huantansheng.easyphotos.utils.media.MediaScannerConnectionUtils; +import com.huantansheng.easyphotos.utils.result.EasyResult; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * EasyPhotosçš„å¯åŠ¨ç®¡ç†å™¨ + * Created by huan on 2017/10/18. + */ +public class EasyPhotos { + + //easyPhotos的返回数æ®Key + public static final String RESULT_PHOTOS = "keyOfEasyPhotosResult"; + public static final String RESULT_SELECTED_ORIGINAL = "keyOfEasyPhotosResultSelectedOriginal"; + + /** + * 预加载 + * è°ƒä¸è°ƒç”¨è¯¥æ–¹æ³•都å¯ä»¥ï¼Œä¸è°ƒç”¨ä¸å½±å“EasyPhotos正常使用 + * 第一次扫æåª’体库å¯èƒ½ä¼šæ…¢ï¼Œè°ƒç”¨é¢„加载会使真正打开相册的速度加快 + * 若调用该方法,建议自行判断代ç ä¹¦å†™ä½ç½®ï¼Œå»ºè®®åœ¨ç”¨æˆ·æ‰“开相册的3ç§’å‰è°ƒç”¨ï¼Œæ¯”如app䏻页颿ˆ–调用相册的上一页 + * 该方法如果没有授æƒè¯»å–æƒé™çš„è¯ï¼Œæ˜¯æ— æ•ˆçš„,所以外部加ä¸åŠ æƒé™æŽ§åˆ¶éƒ½å¯ä»¥ï¼ŒåŠ çš„è¯ä¿è¯æ‰§è¡Œï¼Œä¸åŠ ä¹Ÿä¸å½±å“ç¨‹åºæ­£å¸¸ä½¿ç”¨ + * + * @param cxt 上下文 + */ + public static void preLoad(Context cxt) { + AlbumModel.getInstance().query(cxt, null); + } + + /** + * 预加载 + * è°ƒä¸è°ƒç”¨è¯¥æ–¹æ³•都å¯ä»¥ï¼Œä¸è°ƒç”¨ä¸å½±å“EasyPhotos正常使用 + * 第一次扫æåª’体库å¯èƒ½ä¼šæ…¢ï¼Œè°ƒç”¨é¢„加载会使真正打开相册的速度加快 + * 若调用该方法,建议自行判断代ç ä¹¦å†™ä½ç½®ï¼Œå»ºè®®åœ¨ç”¨æˆ·æ‰“开相册的3ç§’å‰è°ƒç”¨ï¼Œæ¯”如app䏻页颿ˆ–调用相册的上一页 + * 该方法如果没有授æƒè¯»å–æƒé™çš„è¯ï¼Œæ˜¯æ— æ•ˆçš„,所以外部加ä¸åŠ æƒé™æŽ§åˆ¶éƒ½å¯ä»¥ï¼ŒåŠ çš„è¯ä¿è¯æ‰§è¡Œï¼Œä¸åŠ ä¹Ÿä¸å½±å“ç¨‹åºæ­£å¸¸ä½¿ç”¨ + * + * @param cxt 上下文 + * @param callBack 预加载完æˆçš„回调,若进行UIæ“作,需自行切回主线程。 + */ + public static void preLoad(Context cxt, AlbumModel.CallBack callBack) { + AlbumModel.getInstance().query(cxt, callBack); + } + + + /** + * 创建相机 + * + * @param activity 上下文 + * @param useWidth 是å¦ä½¿ç”¨å®½é«˜æ•°æ® + * @return AlbumBuilder + */ + public static AlbumBuilder createCamera(Activity activity, + boolean useWidth) { + return AlbumBuilder.createCamera(activity).setUseWidth(useWidth); + } + + public static AlbumBuilder createCamera(Fragment fragment, + boolean useWidth) { + return AlbumBuilder.createCamera(fragment).setUseWidth(useWidth); + } + + public static AlbumBuilder createCamera(FragmentActivity activity, + boolean useWidth) { + return AlbumBuilder.createCamera(activity).setUseWidth(useWidth); + } + + public static AlbumBuilder createCamera(androidx.fragment.app.Fragment fragmentV, + boolean useWidth) { + return AlbumBuilder.createCamera(fragmentV).setUseWidth(useWidth); + } + + /** + * 创建相册 + * + * @param activity 上下文 + * @param isShowCamera æ˜¯å¦æ˜¾ç¤ºç›¸æœºæŒ‰é’® + * @param useWidth 是å¦ä½¿ç”¨å®½é«˜æ•°æ®ã€‚ + * true:会ä¿è¯å®½é«˜æ•°æ®çš„æ­£ç¡®æ€§ï¼Œè¿”回速度慢,耗时,尤其在åŽä¸ºmate30上,å¯èƒ½ç‚¹å‡»å®ŒæˆåŽä¼šåŠ è½½ä¸‰å››ç§’æ‰èƒ½è¿”回。 + * false:有宽高数æ®ä½†ä¸ä¿è¯æ­£ç¡®æ€§ï¼Œç‚¹å‡»å®ŒæˆåŽç§’回,但å¯èƒ½æœ‰å› æ—‹è½¬é—®é¢˜å¯¼è‡´çš„宽高相åçš„æƒ…å†µï¼Œä»¥åŠæžå°‘数的宽高为0情况。 + * @param imageEngine 图片加载引擎的具体实现 + * @return AlbumBuilder 建造者模å¼é…置其他选项 + */ + public static AlbumBuilder createAlbum(Activity activity, boolean isShowCamera, + boolean useWidth, @NonNull ImageEngine imageEngine) { + return AlbumBuilder.createAlbum(activity, isShowCamera, imageEngine).setUseWidth(useWidth); + } + + public static AlbumBuilder createAlbum(Fragment fragment, boolean isShowCamera, + boolean useWidth, @NonNull ImageEngine imageEngine) { + return AlbumBuilder.createAlbum(fragment, isShowCamera, imageEngine).setUseWidth(useWidth); + } + + public static AlbumBuilder createAlbum(FragmentActivity activity, boolean isShowCamera, + boolean useWidth, @NonNull ImageEngine imageEngine) { + return AlbumBuilder.createAlbum(activity, isShowCamera, imageEngine).setUseWidth(useWidth); + } + + public static AlbumBuilder createAlbum(androidx.fragment.app.Fragment fragmentV, + boolean isShowCamera, boolean useWidth, + @NonNull ImageEngine imageEngine) { + return AlbumBuilder.createAlbum(fragmentV, isShowCamera, imageEngine).setUseWidth(useWidth); + } + + +//*********************AD************************************ + + + /** + * è®¾ç½®å¹¿å‘Šç›‘å¬ + * 内部使用,无需关心 + * + * @param adListener å¹¿å‘Šç›‘å¬ + */ + public static void setAdListener(AdListener adListener) { + AlbumBuilder.setAdListener(adListener); + } + + /** + * åˆ·æ–°å›¾ç‰‡åˆ—è¡¨å¹¿å‘Šæ•°æ® + */ + public static void notifyPhotosAdLoaded() { + AlbumBuilder.notifyPhotosAdLoaded(); + } + + /** + * 刷新专辑项目列表广告 + */ + public static void notifyAlbumItemsAdLoaded() { + AlbumBuilder.notifyAlbumItemsAdLoaded(); + } + + +//*************************bitmap功能***********************************/ + + /** + * 回收bitmap + * + * @param bitmap è¦å›žæ”¶çš„bitmap + */ + public static void recycle(Bitmap bitmap) { + BitmapUtils.recycle(bitmap); + } + + /** + * 回收bitmap数组中的所有图片 + * + * @param bitmaps è¦å›žæ”¶çš„bitmap数组 + */ + public static void recycle(Bitmap... bitmaps) { + BitmapUtils.recycle(bitmaps); + } + + /** + * 回收bitmap集åˆä¸­çš„æ‰€æœ‰å›¾ç‰‡ + * + * @param bitmaps è¦å›žæ”¶çš„bitmapé›†åˆ + */ + public static void recycle(List bitmaps) { + BitmapUtils.recycle(bitmaps); + } + + /** + * 给图片添加水å°ï¼Œæ°´å°ä¼šæ ¹æ®å›¾ç‰‡å®½é«˜è‡ªåŠ¨ç¼©æ”¾å¤„ç† + * + * @param watermark æ°´å° + * @param image 添加水å°çš„图片 + * @param srcImageWidth æ°´å°å¯¹åº”的原图片宽度,å³uiåˆ¶ä½œæ°´å°æ—¶å‚è€ƒçš„è¦æ·»åŠ æ°´å°çš„图片的宽度 + * @param offsetX 添加水å°çš„Xè½´åç§»é‡ + * @param offsetY 添加水å°çš„Yè½´åç§»é‡ + * @param addInLeft true 在左下角添加水å°ï¼Œfalse 在å³ä¸‹è§’æ·»åŠ æ°´å° + * @param orientation Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap + * 䏿˜¯ç”¨æˆ·æ‰‹æœºå†…图片,填0å³å¯ã€‚ + * @return 添加水å°åŽçš„bitmap + */ + public static Bitmap addWatermark(Bitmap watermark, Bitmap image, int srcImageWidth, + int offsetX, int offsetY, boolean addInLeft, + int orientation) { + return BitmapUtils.addWatermark(watermark, image, srcImageWidth, offsetX, offsetY, + addInLeft, orientation); + } + + /** + * 给图片添加带文字和图片的水å°ï¼Œæ°´å°ä¼šæ ¹æ®å›¾ç‰‡å®½é«˜è‡ªåŠ¨ç¼©æ”¾å¤„ç† + * + * @param watermark æ°´å°å›¾ç‰‡ + * @param image è¦åŠ æ°´å°çš„图片 + * @param srcImageWidth æ°´å°å¯¹åº”的原图片宽度,å³uiåˆ¶ä½œæ°´å°æ—¶å‚è€ƒçš„è¦æ·»åŠ æ°´å°çš„图片的宽度 + * @param text è¦æ·»åŠ çš„æ–‡å­— + * @param offsetX 添加水å°çš„Xè½´åç§»é‡ + * @param offsetY 添加水å°çš„Yè½´åç§»é‡ + * @param addInLeft true 在左下角添加水å°ï¼Œfalse 在å³ä¸‹è§’æ·»åŠ æ°´å° + * @param orientation Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap + * 䏿˜¯ç”¨æˆ·æ‰‹æœºå†…图片,填0å³å¯ã€‚ + * @return 添加水å°åŽçš„bitmap + */ + public static Bitmap addWatermarkWithText(Bitmap watermark, Bitmap image, int srcImageWidth, + @NonNull String text, int offsetX, int offsetY, + boolean addInLeft, int orientation) { + return BitmapUtils.addWatermarkWithText(watermark, image, srcImageWidth, text, offsetX, + offsetY, + addInLeft, orientation); + } + + /** + * ä¿å­˜Bitmap到指定文件夹 + * + * @param act 上下文 + * @param dirPath 文件夹全路径 + * @param bitmap bitmap + * @param namePrefix ä¿å­˜æ–‡ä»¶çš„å‰ç¼€å,文件最终åç§°æ ¼å¼ä¸ºï¼šå‰ç¼€å+自动生æˆçš„唯一数字字符+.png + * @param notifyMedia æ˜¯å¦æ›´æ–°åˆ°åª’体库 + * @param callBack ä¿å­˜å›¾ç‰‡åŽçš„回调,回调已ç»å¤„于UI线程 + */ + public static void saveBitmapToDir(Activity act, String dirPath, String namePrefix, + Bitmap bitmap, boolean notifyMedia, + SaveBitmapCallBack callBack) { + BitmapUtils.saveBitmapToDir(act, dirPath, namePrefix, bitmap, notifyMedia, callBack); + } + + + /** + * 把Viewç”»æˆBitmap + * + * @param view è¦å¤„ç†çš„View + * @return Bitmap + */ + public static Bitmap createBitmapFromView(View view) { + return BitmapUtils.createBitmapFromView(view); + } + + /** + * å¯åŠ¨æ‹¼å›¾ï¼ˆæœ€å¤šå¯¹9张图片进行拼图) + * + * @param act 上下文 + * @param photos 图片集åˆï¼ˆæœ€å¤šå¯¹9张图片进行拼图) + * @param puzzleSaveDirPath 拼图完æˆä¿å­˜çš„æ–‡ä»¶å¤¹å…¨è·¯å¾„ + * @param puzzleSaveNamePrefix 拼图完æˆä¿å­˜çš„æ–‡ä»¶åå‰ç¼€ï¼Œæœ€ç»ˆæ ¼å¼ï¼šå‰ç¼€+默认生æˆå”¯ä¸€æ•°å­—标识+.png + * @param requestCode 请求code + * @param replaceCustom å•å‡»æ›¿æ¢æ‹¼å›¾ä¸­çš„æŸå¼ å›¾ç‰‡æ—¶ï¼Œæ˜¯å¦ä»¥startForResult的方å¼å¯åŠ¨ä½ çš„è‡ªå®šä¹‰ç•Œé¢ï¼Œè¯¥ç•Œé¢ä¸Žä¼ è¿›æ¥çš„act + * 为åŒä¸€ç•Œé¢ã€‚false则在EasyPhotos内部完æˆï¼Œæ­£å¸¸éœ€æ±‚直接写falseå³å¯ã€‚ + * true的情况适用于:用于拼图的图片集åˆä¸­åŒ…å«ç½‘络图片,是在你的act界é¢ä¸­èŽ·å–并下载的(也å¯ä»¥ç›´æŽ¥ç”¨ç½‘络地å€ï¼Œä¸ç”¨ä¸‹è½½åŽçš„æœ¬åœ°åœ°å€ï¼Œä¹Ÿå°±æ˜¯å¯ä»¥ä¸ä¸‹è½½ä¸‹æ¥ï¼‰ï¼Œè€Œéžå•纯本地相册。举例:你的actä¸­æœ‰ä¸¤ä¸ªæŒ‰é’®ï¼Œä¸€ä¸ªæŒ‡å‘æœ¬åœ°ç›¸å†Œï¼Œä¸€ä¸ªæŒ‡å‘网络相册,用户在该界é¢ä»»æ„选择,选择好图片åŽè·³è½¬åˆ°æ‹¼å›¾ç•Œé¢ï¼Œç”¨æˆ·åœ¨æ‹¼å›¾ç•Œé¢ç‚¹å‡»æ›¿æ¢æŒ‰é’®ï¼Œå°†ä¼šå¯åŠ¨ä¸€ä¸ªæ–°çš„act界é¢ï¼Œè¿™æ—¶ï¼Œactåªè®©ç”¨æˆ·åœ¨ç½‘络相册和本地相册选择一张图片,选择好执行 + * Intent intent = new Intent(); + * intent.putParcelableArrayListExtra(AlbumBuilder.RESULT_PHOTOS + * , photos); + * act.setResult(RESULT_OK,intent); 并关闭act,回到拼图界é¢ï¼Œå®Œæˆæ›¿æ¢ã€‚ + * @param imageEngine 图片加载引擎的具体实现 + */ + + public static void startPuzzleWithPhotos(Activity act, ArrayList photos, + String puzzleSaveDirPath, + String puzzleSaveNamePrefix, int requestCode, + boolean replaceCustom, + @NonNull ImageEngine imageEngine) { + act.setResult(Activity.RESULT_OK); + PuzzleActivity.startWithPhotos(act, photos, puzzleSaveDirPath, puzzleSaveNamePrefix, + requestCode, replaceCustom, imageEngine); + } + + public static void startPuzzleWithPhotos(FragmentActivity act, ArrayList photos, + String puzzleSaveDirPath, + String puzzleSaveNamePrefix, boolean replaceCustom, + @NonNull ImageEngine imageEngine, + PuzzleCallback callback) { + act.setResult(Activity.RESULT_OK); + EasyResult.get(act).startPuzzleWithPhotos(photos, puzzleSaveDirPath, puzzleSaveNamePrefix + , replaceCustom, imageEngine, callback); + } + + + //**************更新媒体库*********************** + + /** + * 更新媒体文件到媒体库 + * + * @param cxt 上下文 + * @param filePaths æ›´æ–°çš„æ–‡ä»¶åœ°å€ + */ + public static void notifyMedia(Context cxt, String... filePaths) { + MediaScannerConnectionUtils.refresh(cxt, filePaths); + } + + /** + * 更新媒体文件到媒体库 + * + * @param cxt 上下文 + * @param files 更新的文件 + */ + public static void notifyMedia(Context cxt, File... files) { + MediaScannerConnectionUtils.refresh(cxt, files); + } + + /** + * 更新媒体文件到媒体库 + * + * @param cxt 上下文 + * @param fileList 更新的文件地å€é›†åˆ + */ + public static void notifyMedia(Context cxt, List fileList) { + MediaScannerConnectionUtils.refresh(cxt, fileList); + } + + + //*********************************贴纸*************************** + + + /** + * æ·»åŠ æ–‡å­—è´´çº¸çš„æ–‡å­—æ•°æ® + * + * @param textStickerData æ–‡å­—è´´çº¸çš„æ–‡å­—æ•°æ® + */ + public static void addTextStickerData(TextStickerData... textStickerData) { + StickerModel.textDataList.addAll(Arrays.asList(textStickerData)); + } + + /** + * æ¸…ç©ºæ–‡å­—è´´çº¸çš„æ•°æ® + */ + public static void clearTextStickerDataList() { + StickerModel.textDataList.clear(); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/PuzzleCallback.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/PuzzleCallback.java new file mode 100644 index 0000000..eeae759 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/PuzzleCallback.java @@ -0,0 +1,22 @@ +package com.huantansheng.easyphotos.callback; + +import com.huantansheng.easyphotos.models.album.entity.Photo; + +/** + * PuzzleCallback + * + * @author joker + * @date 2019/4/9. + */ +public abstract class PuzzleCallback { + /** + * 选择结果回调 + * + * @param photo 返回对象:如果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + */ + public abstract void onResult(Photo photo); + /** + * ä»€ä¹ˆéƒ½æ²¡é€‰ï¼Œå–æ¶ˆé€‰æ‹©å›žè°ƒ + */ + public abstract void onCancel(); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/SelectCallback.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/SelectCallback.java new file mode 100644 index 0000000..c91b3a7 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/callback/SelectCallback.java @@ -0,0 +1,26 @@ +package com.huantansheng.easyphotos.callback; + +import com.huantansheng.easyphotos.models.album.entity.Photo; + +import java.util.ArrayList; + +/** + * SelectCallback + * + * @author joker + * @date 2019/4/9. + */ +public abstract class SelectCallback { + /** + * 选择结果回调 + * + * @param photos 返回对象集åˆï¼šå¦‚果你需è¦äº†è§£å›¾ç‰‡çš„宽ã€é«˜ã€å¤§å°ã€ç”¨æˆ·æ˜¯å¦é€‰ä¸­åŽŸå›¾é€‰é¡¹ç­‰ä¿¡æ¯ï¼Œå¯ä»¥ç”¨è¿™ä¸ª + * @param isOriginal 返回图片地å€é›†åˆæ—¶å¦‚果你需è¦çŸ¥é“用户选择图片时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ï¼Œç”¨å¦‚ä¸‹æ–¹æ³•èŽ·å– + */ + public abstract void onResult(ArrayList photos, boolean isOriginal); + + /** + * ä»€ä¹ˆéƒ½æ²¡é€‰ï¼Œå–æ¶ˆé€‰æ‹©å›žè°ƒ + */ + public abstract void onCancel(); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Code.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Code.java new file mode 100644 index 0000000..92629f1 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Code.java @@ -0,0 +1,21 @@ +package com.huantansheng.easyphotos.constant; + +/** + * Codeå¸¸é‡ + * Created by huan on 2017/10/19. + */ + +public class Code { + //ç›¸æœºè¯·æ±‚ç  + public static final int REQUEST_CAMERA = 11; + //æƒé™è¯·æ±‚ç  + public static final int REQUEST_PERMISSION = 12; + //预览activityè¯·æ±‚ç  + public static final int REQUEST_PREVIEW_ACTIVITY = 13; + //请求应用详情 + public static final int REQUEST_SETTING_APP_DETAILS = 14; + //拼图activityè¯·æ±‚å— + public static final int REQUEST_PUZZLE = 15; + //拼图选择activityè¯·æ±‚å— + public static final int REQUEST_PUZZLE_SELECTOR = 16; +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Key.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Key.java new file mode 100644 index 0000000..4502f6a --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Key.java @@ -0,0 +1,23 @@ +package com.huantansheng.easyphotos.constant; + +/** + * keyçš„å¸¸é‡ + * Created by huan on 2017/10/19. + */ + +public class Key { + //预览图片的当å‰è§’æ ‡ + public static final String PREVIEW_PHOTO_INDEX = "keyOfPreviewPhotoIndex"; + //当å‰é¢„览界é¢çš„专辑index + public static final String PREVIEW_ALBUM_ITEM_INDEX = "keyOfPreviewAlbumItemIndex"; + //é¢„è§ˆç•Œé¢æ˜¯å¦ç‚¹å‡»å®Œæˆ + public static final String PREVIEW_CLICK_DONE = "keyOfPreviewClickDone"; + //拼图界é¢å›¾ç‰‡ç±»åž‹,true-Photo,false-String + public static final String PUZZLE_FILE_IS_PHOTO = "keyOfPuzzleFilesTypeIsPhoto"; + //拼图界é¢å›¾ç‰‡ç»“åˆ + public static final String PUZZLE_FILES = "keyOfPuzzleFiles"; + //拼图界é¢å›¾ç‰‡ä¿å­˜æ–‡ä»¶å¤¹åœ°å€ + public static final String PUZZLE_SAVE_DIR = "keyOfPuzzleSaveDir"; + //拼图界é¢å›¾ç‰‡ä¿å­˜æ–‡ä»¶åå‰ç¼€ + public static final String PUZZLE_SAVE_NAME_PREFIX = "keyOfPuzzleSaveNamePrefix"; +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Type.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Type.java new file mode 100644 index 0000000..e506d0a --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/constant/Type.java @@ -0,0 +1,10 @@ +package com.huantansheng.easyphotos.constant; + +/** + * Created by huan on 2018/1/9. + */ + +public class Type { + public static final String GIF = "gif"; + public static final String VIDEO = "video"; +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/engine/ImageEngine.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/engine/ImageEngine.java new file mode 100644 index 0000000..49226d4 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/engine/ImageEngine.java @@ -0,0 +1,63 @@ +package com.huantansheng.easyphotos.engine; + +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.widget.ImageView; + +import androidx.annotation.NonNull; + +/** + * è‡ªå®šä¹‰å›¾ç‰‡åŠ è½½æ–¹å¼ + * Created by huan on 2018/1/15. + */ +public interface ImageEngine { + /** + * 加载图片到ImageView + * + * @param context 上下文 + * @param uri 图片Uri + * @param imageView 加载到的ImageView + */ + //安å“10推èuri,并且path的方å¼ä¸å†å¯ç”¨ + void loadPhoto(@NonNull Context context, @NonNull Uri uri,@NonNull ImageView imageView); + + /** + * 加载gif动图图片到ImageView,gif动图ä¸åЍ + * + * @param context 上下文 + * @param gifUri gif动图路径Uri + * @param imageView 加载到的ImageView + *

    + * å¤‡æ³¨ï¼šä¸æ”¯æŒåŠ¨å›¾æ˜¾ç¤ºçš„æƒ…å†µä¸‹å¯ä»¥ä¸å†™ + */ + //安å“10推èuri,并且path的方å¼ä¸å†å¯ç”¨ + void loadGifAsBitmap(@NonNull Context context,@NonNull Uri gifUri,@NonNull ImageView imageView); + + /** + * 加载gif动图到ImageView,gif动图动 + * + * @param context 上下文 + * @param gifUri gif动图路径Uri + * @param imageView 加载动图的ImageView + *

    + * å¤‡æ³¨ï¼šä¸æ”¯æŒåŠ¨å›¾æ˜¾ç¤ºçš„æƒ…å†µä¸‹å¯ä»¥ä¸å†™ + */ + //安å“10推èuri,并且path的方å¼ä¸å†å¯ç”¨ + void loadGif(@NonNull Context context,@NonNull Uri gifUri,@NonNull ImageView imageView); + + /** + * 获å–图片加载框架中的缓存Bitmap,ä¸ç”¨æ‹¼å›¾åŠŸèƒ½å¯ä»¥ç›´æŽ¥è¿”回null + * + * @param context 上下文 + * @param uri 图片路径 + * @param width 图片宽度 + * @param height 图片高度 + * @return Bitmap + * @throws Exception 异常直接抛出,EasyPhotoså†…éƒ¨å¤„ç† + */ + //安å“10推èuri,并且path的方å¼ä¸å†å¯ç”¨ + Bitmap getCacheBitmap(@NonNull Context context,@NonNull Uri uri, int width, int height) throws Exception; + + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdEntity.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdEntity.java new file mode 100644 index 0000000..0d624c5 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdEntity.java @@ -0,0 +1,18 @@ +package com.huantansheng.easyphotos.models.ad; + +import android.view.View; + +/** + * 广告实体 + * Created by huan on 2017/10/24. + */ + +public class AdEntity { + public View adView; + public int lineIndex; + + public AdEntity(View adView, int lineIndex) { + this.adView = adView; + this.lineIndex = lineIndex; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdListener.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdListener.java new file mode 100644 index 0000000..ab5ed76 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdListener.java @@ -0,0 +1,11 @@ +package com.huantansheng.easyphotos.models.ad; + +/** + * å¹¿å‘Šç›‘å¬ + * Created by huan on 2017/10/24. + */ + +public interface AdListener { + void onPhotosAdLoaded(); + void onAlbumItemsAdLoaded(); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdViewHolder.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdViewHolder.java new file mode 100644 index 0000000..9b96e3d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/ad/AdViewHolder.java @@ -0,0 +1,20 @@ +package com.huantansheng.easyphotos.models.ad; + +import androidx.recyclerview.widget.RecyclerView; +import android.view.View; +import android.widget.FrameLayout; + +import com.huantansheng.easyphotos.R; + +/** + * 广告viewolder + * Created by huan on 2017/10/28. + */ + +public class AdViewHolder extends RecyclerView.ViewHolder { + public FrameLayout adFrame; + public AdViewHolder(View itemView) { + super(itemView); + adFrame = (FrameLayout) itemView.findViewById(R.id.ad_frame_easy_photos); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/AlbumModel.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/AlbumModel.java new file mode 100644 index 0000000..157d8e5 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/AlbumModel.java @@ -0,0 +1,397 @@ +package com.huantansheng.easyphotos.models.album; + +import android.Manifest; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.Context; +import android.database.Cursor; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; +import android.provider.MediaStore; +import android.text.TextUtils; +import android.util.Log; + +import androidx.core.content.PermissionChecker; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.entity.Album; +import com.huantansheng.easyphotos.models.album.entity.AlbumItem; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.utils.String.StringUtils; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +/** + * 专辑模型 + * Created by huan on 2017/10/20. + *

    + * Modified by Eagle on 2018/08/31. + * 修改内容:将AlbumModelçš„å®žä¾‹åŒ–ä¸Žæ•°æ®æŸ¥è¯¢åˆ†å¼€ + */ +public class AlbumModel { + private static final String TAG = "AlbumModel"; + public static AlbumModel instance; + public Album album; + private String[] projections; + + private AlbumModel() { + album = new Album(); + } + + public static AlbumModel getInstance() { + if (null == instance) { + synchronized (AlbumModel.class) { + if (null == instance) { + instance = new AlbumModel(); + } + } + } + return instance; + } + + /** + * 专辑查询 + * + * @param context 调用查询方法的context + * @param callBack 查询完æˆåŽçš„回调 + */ + public volatile boolean canRun = true; + + public void query(Context context, final CallBack callBack) { + final Context appCxt = context.getApplicationContext(); + + /*******************************官方库的æºç start*******************************/ + // if (PermissionChecker.checkSelfPermission(context, + // Manifest.permission.READ_EXTERNAL_STORAGE) != PermissionChecker + // .PERMISSION_GRANTED) { + // if (null != callBack) callBack.onAlbumWorkedCallBack(); + // return; + // } + /*******************************官方库的æºç end*******************************/ + + + /*********************************自定义添加适é…Android13相册æƒé™start*************************/ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (PermissionChecker.checkSelfPermission(context, + Manifest.permission.READ_MEDIA_IMAGES) != PermissionChecker.PERMISSION_GRANTED) { + if (null != callBack) + callBack.onAlbumWorkedCallBack(); + return; + } + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + if (PermissionChecker.checkSelfPermission(context, + Manifest.permission.READ_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) { + if (null != callBack) + callBack.onAlbumWorkedCallBack(); + return; + } + } + /*********************************自定义添加适é…Android13相册æƒé™end*************************/ + + canRun = true; + new Thread(() -> { + initAlbum(appCxt); + if (null != callBack) + callBack.onAlbumWorkedCallBack(); + }).start(); + } + + public void stopQuery() { + canRun = false; + } + + private synchronized void initAlbum(Context context) { + if (!album.isEmpty()) { + Log.e(TAG, "å·²ç»é¢„加载过相册"); + return; + } + album.clear(); + // long now = System.currentTimeMillis(); + if (Setting.selectedPhotos.size() > Setting.count) { + throw new RuntimeException("AlbumBuilder: 默认勾选的图片张数ä¸èƒ½å¤§äºŽè®¾ç½®çš„选择数ï¼" + "|默认勾选图片张数:" + Setting.selectedPhotos.size() + "|设置的选择数:" + Setting.count); + } + boolean canReadWidth = + android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN; + // boolean isQ = android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.Q; + final String sortOrder = MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC"; + + Uri contentUri; + String selection = null; + String[] selectionAllArgs = null; + + if (Setting.isOnlyVideo()) { + contentUri = MediaStore.Video.Media.getContentUri("external"); + + } else if (!Setting.showVideo) { + contentUri = MediaStore.Images.Media.getContentUri("external"); + + } else { + contentUri = MediaStore.Files.getContentUri("external"); + selection = + "(" + MediaStore.Files.FileColumns.MEDIA_TYPE + "=?" + " OR " + MediaStore.Files.FileColumns.MEDIA_TYPE + "=?)"; + selectionAllArgs = + new String[]{String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE), + String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO)}; + } + + ContentResolver contentResolver = context.getContentResolver(); + + + List projectionList = new ArrayList<>(); + projectionList.add(MediaStore.Files.FileColumns._ID); + // if (isQ) { + // projectionList.add(MediaStore.MediaColumns.RELATIVE_PATH); + // }else { + projectionList.add(MediaStore.MediaColumns.DATA); + // } + projectionList.add(MediaStore.MediaColumns.DISPLAY_NAME); + projectionList.add(MediaStore.MediaColumns.DATE_MODIFIED); + projectionList.add(MediaStore.MediaColumns.MIME_TYPE); + projectionList.add(MediaStore.MediaColumns.SIZE); + projectionList.add(MediaStore.MediaColumns.BUCKET_DISPLAY_NAME); + + if (!Setting.useWidth) { + if (Setting.minWidth != 1 && Setting.minHeight != 1) + Setting.useWidth = true; + } + if (canReadWidth) { + if (Setting.useWidth) { + projectionList.add(MediaStore.MediaColumns.WIDTH); + projectionList.add(MediaStore.MediaColumns.HEIGHT); + if (!Setting.isOnlyVideo()) + projectionList.add(MediaStore.MediaColumns.ORIENTATION); + } + } + + if (Setting.showVideo) { + projectionList.add(MediaStore.MediaColumns.DURATION); + } + + projections = projectionList.toArray(new String[0]); + + Cursor cursor = contentResolver.query(contentUri, projections, selection, + selectionAllArgs, sortOrder); + if (cursor == null) { + // Log.d(TAG, "call: " + "Empty photos"); + } else if (cursor.moveToFirst()) { + String albumItem_all_name = getAllAlbumName(context); + String albumItem_video_name = + context.getString(R.string.selector_folder_video_easy_photos); + + int albumNameCol = cursor.getColumnIndex(MediaStore.MediaColumns.BUCKET_DISPLAY_NAME); + int durationCol = cursor.getColumnIndex(MediaStore.MediaColumns.DURATION); + int WidthCol = 0; + int HeightCol = 0; + int orientationCol = -1; + if (canReadWidth && Setting.useWidth) { + WidthCol = cursor.getColumnIndex(MediaStore.MediaColumns.WIDTH); + HeightCol = cursor.getColumnIndex(MediaStore.MediaColumns.HEIGHT); + orientationCol = cursor.getColumnIndex(MediaStore.MediaColumns.ORIENTATION); + } + boolean hasTime = durationCol > 0; + + do { + long id = cursor.getLong(0); + String path = cursor.getString(1); + String name = cursor.getString(2); + long dateTime = cursor.getLong(3); + String type = cursor.getString(4); + long size = cursor.getLong(5); + long duration = 0; + + + if (TextUtils.isEmpty(path) || TextUtils.isEmpty(type)) { + continue; + } + + if (size < Setting.minSize) { + continue; + } + + boolean isVideo = type.contains(Type.VIDEO);// æ˜¯å¦æ˜¯è§†é¢‘ + + int width = 0; + int height = 0; + int orientation = 0; + if (isVideo) { + if (hasTime) + duration = cursor.getLong(durationCol); + if (duration <= Setting.videoMinSecond || duration >= Setting.videoMaxSecond) { + continue; + } + } else { + if (orientationCol != -1) { + orientation = cursor.getInt(orientationCol); + } + if (!Setting.showGif) { + if (path.endsWith(Type.GIF) || type.endsWith(Type.GIF)) { + continue; + } + } + if (Setting.useWidth) { + if (canReadWidth) { + width = cursor.getInt(WidthCol); + height = cursor.getInt(HeightCol); + } + if (width == 0 || height == 0) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(path, options); + width = options.outWidth; + height = options.outHeight; + } + + if (orientation == 90 || orientation == 270) { + int temp = width; + width = height; + height = temp; + } + + if (width < Setting.minWidth || height < Setting.minHeight) { + continue; + } + + } + } + + Uri uri = ContentUris.withAppendedId(isVideo ? + MediaStore.Video.Media.getContentUri("external") : + MediaStore.Images.Media.getContentUri("external"), id); + + //æŸäº›æœºåž‹ï¼Œç‰¹å®šæƒ…况下三方应用或用户æ“作删除媒体文件时,没有通知媒体库,导致媒体库表中还有其数æ®ï¼Œä½†çœŸå®žæ–‡ä»¶å·²ç»ä¸å­˜åœ¨ + File file = new File(path); + if (!file.isFile()) { + continue; + } + + Photo imageItem = new Photo(name, uri, path, dateTime, width, height, orientation + , size, duration, type); + if (!Setting.selectedPhotos.isEmpty()) { + int selectSize = Setting.selectedPhotos.size(); + for (int i = 0; i < selectSize; i++) { + Photo selectedPhoto = Setting.selectedPhotos.get(i); + if (path.equals(selectedPhoto.path)) { + imageItem.selectedOriginal = Setting.selectedOriginal; + Result.addPhoto(imageItem); + } + } + } + + // åˆå§‹åŒ–“全部â€ä¸“辑 + if (album.isEmpty()) { + // 用第一个图片作为专辑的å°é¢ + album.addAlbumItem(albumItem_all_name, "", path, uri); + } + // 把图片全部放进“全部â€ä¸“辑 + album.getAlbumItem(albumItem_all_name).addImageItem(imageItem); + + if (Setting.showVideo && isVideo && !albumItem_video_name.equals(albumItem_all_name)) { + album.addAlbumItem(albumItem_video_name, "", path, uri); + album.getAlbumItem(albumItem_video_name).addImageItem(imageItem); + } + + // 添加当å‰å›¾ç‰‡çš„专辑到专辑模型实体中 + String albumName; + String folderPath; + if (albumNameCol > 0) { + albumName = cursor.getString(albumNameCol); + folderPath = albumName; + } else { + File parentFile = new File(path).getParentFile(); + if (null == parentFile) { + continue; + } + folderPath = parentFile.getAbsolutePath(); + albumName = StringUtils.getLastPathSegment(folderPath); + } + + album.addAlbumItem(albumName, folderPath, path, uri); + album.getAlbumItem(albumName).addImageItem(imageItem); + } while (cursor.moveToNext() && canRun); + cursor.close(); + if (!Setting.selectedPhotos.isEmpty() && Setting.isSequentialSelectedPhotos) { + int selectSize = Setting.selectedPhotos.size(); + int photoSize = Result.photos.size(); + ArrayList tempList = new ArrayList<>(photoSize); + for (int i = 0; i < selectSize; i++) { + for (int j = 0; j < photoSize; j++) { + if (Result.photos.get(j).path.equals(Setting.selectedPhotos.get(i).path)) { + tempList.add(i, Result.photos.get(j)); + } + } + } + Result.photos = tempList; + } + } + // Log.d(TAG, "initAlbum: " + (System.currentTimeMillis() - now)); + } + + /** + * 获å–全部专辑å + * + * @return 专辑å + */ + public String getAllAlbumName(Context context) { + String albumItem_all_name = + context.getString(R.string.selector_folder_all_video_photo_easy_photos); + if (Setting.isOnlyVideo()) { + albumItem_all_name = context.getString(R.string.selector_folder_video_easy_photos); + } else if (!Setting.showVideo) { + //䏿˜¾ç¤ºè§†é¢‘ + albumItem_all_name = context.getString(R.string.selector_folder_all_easy_photos); + } + return albumItem_all_name; + } + + /** + * 获å–当å‰ä¸“辑项目的图片集 + * + * @return 当å‰ä¸“辑项目的图片集 + */ + public ArrayList getCurrAlbumItemPhotos(int currAlbumItemIndex) { + return album.getAlbumItem(currAlbumItemIndex).photos; + } + + /** + * 获å–专辑项目集 + * + * @return 专辑项目集 + */ + public ArrayList getAlbumItems() { + return album.albumItems; + } + + public interface CallBack { + void onAlbumWorkedCallBack(); + } + + + /** + * 获å–projections + */ + public String[] getProjections() { + if (null == projections || projections.length == 0) { + if (Setting.useWidth) { + projections = new String[]{MediaStore.Files.FileColumns._ID, + MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME, + MediaStore.MediaColumns.DATE_MODIFIED, MediaStore.MediaColumns.MIME_TYPE, + MediaStore.MediaColumns.SIZE, MediaStore.MediaColumns.BUCKET_DISPLAY_NAME + , MediaStore.MediaColumns.WIDTH, MediaStore.MediaColumns.HEIGHT, + MediaStore.MediaColumns.ORIENTATION}; + } else { + projections = new String[]{MediaStore.Files.FileColumns._ID, + MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME, + MediaStore.MediaColumns.DATE_MODIFIED, MediaStore.MediaColumns.MIME_TYPE, + MediaStore.MediaColumns.SIZE, MediaStore.MediaColumns.BUCKET_DISPLAY_NAME}; + } + } + return projections; + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Album.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Album.java new file mode 100644 index 0000000..d3aa004 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Album.java @@ -0,0 +1,49 @@ +package com.huantansheng.easyphotos.models.album.entity; + +import android.net.Uri; + +import java.util.ArrayList; +import java.util.LinkedHashMap; + +/** + * 专辑模型实体类 + * Created by huan on 2017/10/20. + */ + +public class Album { + public ArrayList albumItems; + private LinkedHashMap hasAlbumItems;//用于记录专辑项目 + + public Album() { + albumItems = new ArrayList<>(); + hasAlbumItems = new LinkedHashMap<>(); + } + + private void addAlbumItem(AlbumItem albumItem) { + this.hasAlbumItems.put(albumItem.name, albumItem); + this.albumItems.add(albumItem); + } + + public void addAlbumItem(String name, String folderPath, String coverImagePath, Uri coverImageUri) { + if (null == hasAlbumItems.get(name)) { + addAlbumItem(new AlbumItem(name, folderPath, coverImagePath,coverImageUri)); + } + } + + public AlbumItem getAlbumItem(String name) { + return hasAlbumItems.get(name); + } + + public AlbumItem getAlbumItem(int currIndex) { + return albumItems.get(currIndex); + } + + public boolean isEmpty() { + return albumItems.isEmpty(); + } + + public void clear() { + albumItems.clear(); + hasAlbumItems.clear(); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/AlbumItem.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/AlbumItem.java new file mode 100644 index 0000000..2208275 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/AlbumItem.java @@ -0,0 +1,34 @@ +package com.huantansheng.easyphotos.models.album.entity; + +import android.net.Uri; + +import java.util.ArrayList; + +/** + * 专辑项目实体类 + * Created by huan on 2017/10/20. + */ + +public class AlbumItem { + public String name; + public String folderPath; + public String coverImagePath; + public Uri coverImageUri; + public ArrayList photos; + + AlbumItem(String name, String folderPath, String coverImagePath, Uri coverImageUri) { + this.name = name; + this.folderPath = folderPath; + this.coverImagePath = coverImagePath; + this.coverImageUri = coverImageUri; + this.photos = new ArrayList<>(); + } + + public void addImageItem(Photo imageItem) { + this.photos.add(imageItem); + } + + public void addImageItem(int index, Photo imageItem) { + this.photos.add(index, imageItem); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Photo.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Photo.java new file mode 100644 index 0000000..626e5f3 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/album/entity/Photo.java @@ -0,0 +1,114 @@ +package com.huantansheng.easyphotos.models.album.entity; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + +/** + * 图片item实体类 + * Created by huan on 2017/10/20. + */ + +public class Photo implements Parcelable { + private static final String TAG = "Photo"; + public Uri uri;//图片Uri + public String name;//图片åç§° + public String path;//图片全路径 + public String type;//图片类型 + public int width;//图片宽度 + public int height;//图片高度 + public int orientation;//图片旋转角度 + public long size;//图片文件大å°ï¼Œå•ä½ï¼šBytes + public long duration;//视频时长,å•ä½ï¼šæ¯«ç§’ + public long time;//å›¾ç‰‡æ‹æ‘„的时间戳,å•ä½ï¼šæ¯«ç§’ + public boolean selected;//是å¦è¢«é€‰ä¸­,内部使用,无需关心 + public boolean selectedOriginal;//用户选择时是å¦é€‰æ‹©äº†åŽŸå›¾é€‰é¡¹ + + public Photo(String name, Uri uri, String path, long time, int width, int height,int orientation, long size, long duration, String type) { + this.name = name; + this.uri = uri; + this.path = path; + this.time = time; + this.width = width; + this.height = height; + this.orientation = orientation; + this.type = type; + this.size = size; + this.duration = duration; + this.selected = false; + this.selectedOriginal = false; + } + + @Override + public boolean equals(Object o) { + try { + Photo other = (Photo) o; + return this.path.equalsIgnoreCase(other.path); + } catch (ClassCastException e) { + Log.e(TAG, "equals: " + Log.getStackTraceString(e)); + } + return super.equals(o); + } + + @Override + public String toString() { + return "Photo{" + + "name='" + name + '\'' + + ", uri='" + uri.toString() + '\'' + + ", path='" + path + '\'' + + ", time=" + time + '\'' + + ", minWidth=" + width + '\'' + + ", minHeight=" + height + + ", orientation=" + orientation + + '}'; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(this.uri, flags); + dest.writeString(this.name); + dest.writeString(this.path); + dest.writeString(this.type); + dest.writeInt(this.width); + dest.writeInt(this.height); + dest.writeInt(this.orientation); + dest.writeLong(this.size); + dest.writeLong(this.duration); + dest.writeLong(this.time); + dest.writeByte(this.selected ? (byte) 1 : (byte) 0); + dest.writeByte(this.selectedOriginal ? (byte) 1 : (byte) 0); + } + + protected Photo(Parcel in) { + this.uri = in.readParcelable(Uri.class.getClassLoader()); + this.name = in.readString(); + this.path = in.readString(); + this.type = in.readString(); + this.width = in.readInt(); + this.height = in.readInt(); + this.orientation = in.readInt(); + this.size = in.readLong(); + this.duration = in.readLong(); + this.time = in.readLong(); + this.selected = in.readByte() != 0; + this.selectedOriginal = in.readByte() != 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public Photo createFromParcel(Parcel source) { + return new Photo(source); + } + + @Override + public Photo[] newArray(int size) { + return new Photo[size]; + } + }; +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Area.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Area.java new file mode 100644 index 0000000..2e41bae --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Area.java @@ -0,0 +1,65 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; + +import java.util.List; + +/** + * @author wupanjie + */ +public interface Area { + float left(); + + float top(); + + float right(); + + float bottom(); + + float centerX(); + + float centerY(); + + float width(); + + float height(); + + PointF getCenterPoint(); + + boolean contains(PointF point); + + boolean contains(float x, float y); + + boolean contains(Line line); + + Path getAreaPath(); + + RectF getAreaRect(); + + List getLines(); + + PointF[] getHandleBarPoints(Line line); + + float radian(); + + void setRadian(float radian); + + float getPaddingLeft(); + + float getPaddingTop(); + + float getPaddingRight(); + + float getPaddingBottom(); + + void setPadding(float padding); + + void setPadding(float paddingLeft, float paddingTop, float paddingRight, float paddingBottom); +} + + + + + diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/DegreeSeekBar.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/DegreeSeekBar.java new file mode 100644 index 0000000..2e462bb --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/DegreeSeekBar.java @@ -0,0 +1,353 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.annotation.TargetApi; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Rect; +import android.os.Build; +import androidx.core.content.ContextCompat; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + +import com.huantansheng.easyphotos.R; + +/** + * @author wupanjie + */ +public class DegreeSeekBar extends View { + private static final String TAG = "DegreeSeekBar"; + private Paint mTextPaint; + private Paint mCirclePaint; + private Paint.FontMetricsInt mFontMetrics; + private int mBaseLine; + private float[] mTextWidths; + + private final Rect mCanvasClipBounds = new Rect(); + + private ScrollingListener mScrollingListener; + private float mLastTouchedPosition; + + private Paint mPointPaint; + private float mPointMargin; + + private boolean mScrollStarted; + private int mTotalScrollDistance; + + private Path mIndicatorPath = new Path(); + + private int mCurrentDegrees = 0; + private int mPointCount = 51; + + private int mPointColor; + private int mTextColor; + private int mCenterTextColor; + + //阻尼系数的倒数 + private float mDragFactor = 2.1f; + + private int mMinReachableDegrees = -45; + private int mMaxReachableDegrees = 45; + + private String suffix = ""; + + public DegreeSeekBar(Context context) { + this(context, null); + } + + public DegreeSeekBar(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public DegreeSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public DegreeSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(); + } + + private void init() { + mPointColor = ContextCompat.getColor(getContext(), R.color.easy_photos_fg_primary); + mTextColor = ContextCompat.getColor(getContext(), R.color.easy_photos_fg_primary); + mCenterTextColor = ContextCompat.getColor(getContext(), R.color.easy_photos_fg_accent); + + mPointPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mPointPaint.setStyle(Paint.Style.STROKE); + mPointPaint.setColor(mPointColor); + mPointPaint.setStrokeWidth(2); + + mTextPaint = new Paint(); + mTextPaint.setColor(mTextColor); + mTextPaint.setStyle(Paint.Style.STROKE); + mTextPaint.setAntiAlias(true); + mTextPaint.setTextSize(24f); + mTextPaint.setTextAlign(Paint.Align.LEFT); + mTextPaint.setAlpha(100); + + mFontMetrics = mTextPaint.getFontMetricsInt(); + + mTextWidths = new float[1]; + mTextPaint.getTextWidths("0", mTextWidths); + + mCirclePaint = new Paint(); + mCirclePaint.setStyle(Paint.Style.FILL); + mCirclePaint.setAlpha(255); + mCirclePaint.setAntiAlias(true); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + mPointMargin = (float) w / mPointCount; + + mBaseLine = (h - mFontMetrics.bottom + mFontMetrics.top) / 2 - mFontMetrics.top; + + mIndicatorPath.moveTo(w / 2, h / 2 + mFontMetrics.top / 2 - 18); + mIndicatorPath.rLineTo(-8, -8); + mIndicatorPath.rLineTo(16, 0); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + mLastTouchedPosition = event.getX(); + if (!mScrollStarted) { + mScrollStarted = true; + if (mScrollingListener != null) { + mScrollingListener.onScrollStart(); + } + } + break; + case MotionEvent.ACTION_UP: + mScrollStarted = false; + if (mScrollingListener != null) { + mScrollingListener.onScrollEnd(); + } + invalidate(); + break; + case MotionEvent.ACTION_MOVE: + float distance = event.getX() - mLastTouchedPosition; + if (mCurrentDegrees >= mMaxReachableDegrees && distance < 0) { + mCurrentDegrees = mMaxReachableDegrees; + invalidate(); + break; + } + if (mCurrentDegrees <= mMinReachableDegrees && distance > 0) { + mCurrentDegrees = mMinReachableDegrees; + invalidate(); + break; + } + if (distance != 0) { + onScrollEvent(event, distance); + } + break; + } + return true; + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.getClipBounds(mCanvasClipBounds); + + int zeroIndex = mPointCount / 2 + (0 - mCurrentDegrees) / 2; + mPointPaint.setColor(mPointColor); + for (int i = 0; i < mPointCount; i++) { + + if (i > zeroIndex - Math.abs(mMinReachableDegrees) / 2 + && i < zeroIndex + Math.abs(mMaxReachableDegrees) / 2 + && mScrollStarted) { + mPointPaint.setAlpha(255); + } else { + mPointPaint.setAlpha(100); + } + + if (i > mPointCount / 2 - 8 + && i < mPointCount / 2 + 8 + && i > zeroIndex - Math.abs(mMinReachableDegrees) / 2 + && i < zeroIndex + Math.abs(mMaxReachableDegrees) / 2) { + if (mScrollStarted) { + mPointPaint.setAlpha(Math.abs(mPointCount / 2 - i) * 255 / 8); + } else { + mPointPaint.setAlpha(Math.abs(mPointCount / 2 - i) * 100 / 8); + } + } + + canvas.drawPoint(mCanvasClipBounds.centerX() + (i - mPointCount / 2) * mPointMargin, + mCanvasClipBounds.centerY(), mPointPaint); + + if (mCurrentDegrees != 0 && i == zeroIndex) { + if (mScrollStarted) { + mTextPaint.setAlpha(255); + } else { + mTextPaint.setAlpha(192); + } + mPointPaint.setStrokeWidth(4); + canvas.drawPoint((mCanvasClipBounds.centerX() + (i - mPointCount / 2) * mPointMargin), + mCanvasClipBounds.centerY(), mPointPaint); + mPointPaint.setStrokeWidth(2); + mTextPaint.setAlpha(100); + } + } + + for (int i = -180; i <= 180; i += 15) { + if (i >= mMinReachableDegrees && i <= mMaxReachableDegrees) { + drawDegreeText(i, canvas, true); + } else { + drawDegreeText(i, canvas, false); + } + } + + mTextPaint.setTextSize(28f); + mTextPaint.setAlpha(255); + mTextPaint.setColor(mCenterTextColor); + + if (mCurrentDegrees >= 10) { + canvas.drawText(mCurrentDegrees + suffix, getWidth() / 2 - mTextWidths[0], mBaseLine, + mTextPaint); + } else if (mCurrentDegrees <= -10) { + canvas.drawText(mCurrentDegrees + suffix, getWidth() / 2 - mTextWidths[0] / 2 * 3, mBaseLine, + mTextPaint); + } else if (mCurrentDegrees < 0) { + canvas.drawText(mCurrentDegrees + suffix, getWidth() / 2 - mTextWidths[0], mBaseLine, + mTextPaint); + } else { + canvas.drawText(mCurrentDegrees + suffix, getWidth() / 2 - mTextWidths[0] / 2, mBaseLine, + mTextPaint); + } + + mTextPaint.setAlpha(100); + mTextPaint.setTextSize(24f); + mTextPaint.setColor(mTextColor); + //画中心三角 + mCirclePaint.setColor(mCenterTextColor); + canvas.drawPath(mIndicatorPath, mCirclePaint); + mCirclePaint.setColor(mCenterTextColor); + } + + private void drawDegreeText(int degrees, Canvas canvas, boolean canReach) { + if (canReach) { + if (mScrollStarted) { + mTextPaint.setAlpha(Math.min(255, Math.abs(degrees - mCurrentDegrees) * 255 / 15)); + if (Math.abs(degrees - mCurrentDegrees) <= 7) { + mTextPaint.setAlpha(0); + } + } else { + mTextPaint.setAlpha(100); + if (Math.abs(degrees - mCurrentDegrees) <= 7) { + mTextPaint.setAlpha(0); + } + } + } else { + mTextPaint.setAlpha(100); + } + if (degrees == 0) { + if (Math.abs(mCurrentDegrees) >= 15 && !mScrollStarted) { + mTextPaint.setAlpha(180); + } + canvas.drawText("0°", + getWidth() / 2 - mTextWidths[0] / 2 - mCurrentDegrees / 2 * mPointMargin, + getHeight() / 2 - 10, mTextPaint); + } else { + canvas.drawText(degrees + suffix, getWidth() / 2 + mPointMargin * degrees / 2 + - mTextWidths[0] / 2 * 3 + - mCurrentDegrees / 2 * mPointMargin, getHeight() / 2 - 10, mTextPaint); + } + } + + private void onScrollEvent(MotionEvent event, float distance) { + mTotalScrollDistance -= distance; + postInvalidate(); + mLastTouchedPosition = event.getX(); + mCurrentDegrees = (int) ((mTotalScrollDistance * mDragFactor) / mPointMargin); + if (mScrollingListener != null) { + mScrollingListener.onScroll(mCurrentDegrees); + } + } + + public void setDegreeRange(int min, int max) { + if (min > max) { + Log.e(TAG, "setDegreeRange: error, max must greater than min"); + } else { + mMinReachableDegrees = min; + mMaxReachableDegrees = max; + + if (mCurrentDegrees > mMaxReachableDegrees || mCurrentDegrees < mMinReachableDegrees) { + mCurrentDegrees = (mMinReachableDegrees + mMaxReachableDegrees) / 2; + } + mTotalScrollDistance = (int) (mCurrentDegrees * mPointMargin / mDragFactor); + invalidate(); + } + } + + public void setCurrentDegrees(int degrees) { + if (degrees <= mMaxReachableDegrees && degrees >= mMinReachableDegrees) { + mCurrentDegrees = degrees; + mTotalScrollDistance = (int) (degrees * mPointMargin / mDragFactor); + invalidate(); + } + } + + public void setScrollingListener(ScrollingListener scrollingListener) { + mScrollingListener = scrollingListener; + } + + public int getPointColor() { + return mPointColor; + } + + public void setPointColor(int pointColor) { + mPointColor = pointColor; + mPointPaint.setColor(mPointColor); + postInvalidate(); + } + + public int getTextColor() { + return mTextColor; + } + + public void setTextColor(int textColor) { + mTextColor = textColor; + mTextPaint.setColor(textColor); + postInvalidate(); + } + + public int getCenterTextColor() { + return mCenterTextColor; + } + + public void setCenterTextColor(int centerTextColor) { + mCenterTextColor = centerTextColor; + postInvalidate(); + } + + public float getDragFactor() { + return mDragFactor; + } + + public void setDragFactor(float dragFactor) { + mDragFactor = dragFactor; + } + + public void setSuffix(String suffix) { + this.suffix = suffix; + } + + public interface ScrollingListener { + + void onScrollStart(); + + void onScroll(int currentDegrees); + + void onScrollEnd(); + } +} + diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Line.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Line.java new file mode 100644 index 0000000..1c95d41 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/Line.java @@ -0,0 +1,52 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.graphics.PointF; + +/** + * @author wupanjie + */ +public interface Line { + enum Direction { + HORIZONTAL, VERTICAL + } + + float length(); + + PointF startPoint(); + + PointF endPoint(); + + Line lowerLine(); + + Line upperLine(); + + Line attachStartLine(); + + Line attachEndLine(); + + void setLowerLine(Line lowerLine); + + void setUpperLine(Line upperLine); + + Direction direction(); + + float slope(); + + boolean contains(float x, float y, float extra); + + void prepareMove(); + + boolean move(float offset, float extra); + + void update(float layoutWidth, float layoutHeight); + + float minX(); + + float maxX(); + + float minY(); + + float maxY(); + + void offset(float x, float y); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/MatrixUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/MatrixUtils.java new file mode 100644 index 0000000..cdd8d0f --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/MatrixUtils.java @@ -0,0 +1,167 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.graphics.Matrix; +import android.graphics.RectF; +import android.graphics.drawable.Drawable; + +import java.util.Arrays; + +import static java.lang.Math.round; + +/** + * some useful matrix operation methods + * + * @author wupanjie + */ +public class MatrixUtils { + private MatrixUtils() { + //no instance + } + + private static final float[] sMatrixValues = new float[9]; + private static final Matrix sTempMatrix = new Matrix(); + + /** + * This method calculates scale value for given Matrix object. + */ + public static float getMatrixScale(Matrix matrix) { + return (float) Math.sqrt(Math.pow(getMatrixValue(matrix, Matrix.MSCALE_X), 2) + Math.pow( + getMatrixValue(matrix, Matrix.MSKEW_Y), 2)); + } + + /** + * This method calculates rotation angle for given Matrix object. + */ + public static float getMatrixAngle(Matrix matrix) { + return (float) -(Math.atan2(getMatrixValue(matrix, Matrix.MSKEW_X), + getMatrixValue(matrix, Matrix.MSCALE_X)) * (180 / Math.PI)); + } + + public static float getMatrixValue(Matrix matrix, int valueIndex) { + matrix.getValues(sMatrixValues); + return sMatrixValues[valueIndex]; + } + + public static float getMinMatrixScale(PuzzlePiece piece) { + if (piece != null) { + + sTempMatrix.reset(); + sTempMatrix.setRotate(-piece.getMatrixAngle()); + + float[] unrotatedCropBoundsCorners = getCornersFromRect(piece.getArea().getAreaRect()); + + sTempMatrix.mapPoints(unrotatedCropBoundsCorners); + + RectF unrotatedCropRect = trapToRect(unrotatedCropBoundsCorners); + + return Math.max(unrotatedCropRect.width() / piece.getWidth(), + unrotatedCropRect.height() / piece.getHeight()); + } + + return 1f; + } + + //åˆ¤æ–­å‰ªè£æ¡†æ˜¯å¦åœ¨å›¾ç‰‡å†… + static boolean judgeIsImageContainsBorder(PuzzlePiece piece, float rotateDegrees) { + sTempMatrix.reset(); + sTempMatrix.setRotate(-rotateDegrees); + float[] unrotatedWrapperCorner = new float[8]; + float[] unrotateBorderCorner = new float[8]; + sTempMatrix.mapPoints(unrotatedWrapperCorner, piece.getCurrentDrawablePoints()); + sTempMatrix.mapPoints(unrotateBorderCorner, getCornersFromRect(piece.getArea().getAreaRect())); + + return trapToRect(unrotatedWrapperCorner).contains(trapToRect(unrotateBorderCorner)); + } + + static float[] calculateImageIndents(PuzzlePiece piece) { + if (piece == null) return new float[] { 0, 0, 0, 0, 0, 0, 0, 0 }; + + sTempMatrix.reset(); + sTempMatrix.setRotate(-piece.getMatrixAngle()); + + final float[] currentImageCorners = piece.getCurrentDrawablePoints(); + final float[] unrotatedImageCorners = + Arrays.copyOf(currentImageCorners, currentImageCorners.length); + final float[] unrotatedCropBoundsCorners = getCornersFromRect(piece.getArea().getAreaRect()); + + sTempMatrix.mapPoints(unrotatedImageCorners); + sTempMatrix.mapPoints(unrotatedCropBoundsCorners); + + RectF unrotatedImageRect = trapToRect(unrotatedImageCorners); + RectF unrotatedCropRect = trapToRect(unrotatedCropBoundsCorners); + + float deltaLeft = unrotatedImageRect.left - unrotatedCropRect.left; + float deltaTop = unrotatedImageRect.top - unrotatedCropRect.top; + float deltaRight = unrotatedImageRect.right - unrotatedCropRect.right; + float deltaBottom = unrotatedImageRect.bottom - unrotatedCropRect.bottom; + + float indents[] = new float[4]; + + indents[0] = (deltaLeft > 0) ? deltaLeft : 0; + indents[1] = (deltaTop > 0) ? deltaTop : 0; + indents[2] = (deltaRight < 0) ? deltaRight : 0; + indents[3] = (deltaBottom < 0) ? deltaBottom : 0; + + sTempMatrix.reset(); + sTempMatrix.setRotate(piece.getMatrixAngle()); + sTempMatrix.mapPoints(indents); + + return indents; + } + + //计算包å«ç»™å‡ºç‚¹çš„æœ€å°çŸ©å½¢ + public static RectF trapToRect(float[] array) { + RectF r = new RectF(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, + Float.NEGATIVE_INFINITY); + int length = array.length; + for (int i = 1; i < length; i += 2) { + float x = round(array[i - 1] * 10) / 10.f; + float y = round(array[i] * 10) / 10.f; + r.left = (x < r.left) ? x : r.left; + r.top = (y < r.top) ? y : r.top; + r.right = (x > r.right) ? x : r.right; + r.bottom = (y > r.bottom) ? y : r.bottom; + } + r.sort(); + return r; + } + + public static float[] getCornersFromRect(RectF r) { + return new float[] { + r.left, r.top, r.right, r.top, r.right, r.bottom, r.left, r.bottom + }; + } + + public static Matrix generateMatrix(PuzzlePiece piece, float extra) { + return generateMatrix(piece.getArea(), piece.getDrawable(), extra); + } + + public static Matrix generateMatrix(Area area, Drawable drawable, float extraSize) { + return generateCenterCropMatrix(area, drawable.getIntrinsicWidth(), + drawable.getIntrinsicHeight(), extraSize); + } + + private static Matrix generateCenterCropMatrix(Area area, int width, int height, + float extraSize) { + final RectF rectF = area.getAreaRect(); + + Matrix matrix = new Matrix(); + + float offsetX = rectF.centerX() - width / 2; + float offsetY = rectF.centerY() - height / 2; + + matrix.postTranslate(offsetX, offsetY); + + float scale; + + if (width * rectF.height() > rectF.width() * height) { + scale = (rectF.height() + extraSize) / height; + } else { + scale = (rectF.width() + extraSize) / width; + } + + matrix.postScale(scale, scale, rectF.centerX(), rectF.centerY()); + + return matrix; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleLayout.java new file mode 100644 index 0000000..555153b --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleLayout.java @@ -0,0 +1,88 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.graphics.RectF; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public interface PuzzleLayout { + void setOuterBounds(RectF bounds); + + void layout(); + + int getAreaCount(); + + List getOuterLines(); + + List getLines(); + + Area getOuterArea(); + + void update(); + + void reset(); + + Area getArea(int position); + + float width(); + + float height(); + + void setPadding(float padding); + + float getPadding(); + + float getRadian(); + + void setRadian(float radian); + + Info generateInfo(); + + void setColor(int color); + + int getColor(); + + class Info { + public static final int TYPE_STRAIGHT = 0; + public static final int TYPE_SLANT = 1; + + public int type; + public ArrayList steps; + public ArrayList lineInfos; + public float padding; + public float radian; + public int color; + } + + class Step { + public static final int ADD_LINE = 0; + public static final int ADD_CROSS = 1; + public static final int CUT_EQUAL_PART_ONE = 2; + public static final int CUT_EQUAL_PART_TWO = 3; + public static final int CUT_SPIRAL = 4; + + public int type; + public int direction; + public int position; + public int part; + public int hSize; + public int vSize; + } + + class LineInfo { + public float startX; + public float startY; + public float endX; + public float endY; + + public LineInfo(Line line){ + startX = line.startPoint().x; + startY = line.startPoint().y; + endX = line.endPoint().x; + endY = line.endPoint().y; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzlePiece.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzlePiece.java new file mode 100644 index 0000000..aaa6024 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzlePiece.java @@ -0,0 +1,432 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.animation.ValueAnimator; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PointF; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Xfermode; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.DecelerateInterpolator; + +import static com.huantansheng.easyphotos.models.puzzle.MatrixUtils.calculateImageIndents; +import static com.huantansheng.easyphotos.models.puzzle.MatrixUtils.getMinMatrixScale; +import static com.huantansheng.easyphotos.models.puzzle.MatrixUtils.judgeIsImageContainsBorder; + + +/** + * @author wupanjie + */ +@SuppressWarnings("WeakerAccess") public class PuzzlePiece { + private static Xfermode SRC_IN = new PorterDuffXfermode(PorterDuff.Mode.SRC_IN); + + private Drawable drawable; + private Matrix matrix; + private Matrix previousMatrix; + private Area area; + private Rect drawableBounds; + private float[] drawablePoints; + private float[] mappedDrawablePoints; + + private float previousMoveX; + private float previousMoveY; + + private final RectF mappedBounds; + private final PointF centerPoint; + private final PointF mappedCenterPoint; + + private ValueAnimator animator; + private int duration = 300; + private Matrix tempMatrix; + + PuzzlePiece(Drawable drawable, Area area, Matrix matrix) { + this.drawable = drawable; + this.area = area; + this.matrix = matrix; + this.previousMatrix = new Matrix(); + this.drawableBounds = new Rect(0, 0, getWidth(), getHeight()); + this.drawablePoints = new float[] { + 0f, 0f, getWidth(), 0f, getWidth(), getHeight(), 0f, getHeight() + }; + this.mappedDrawablePoints = new float[8]; + + this.mappedBounds = new RectF(); + this.centerPoint = new PointF(area.centerX(), area.centerY()); + this.mappedCenterPoint = new PointF(); + + this.animator = ValueAnimator.ofFloat(0f, 1f); + this.animator.setInterpolator(new DecelerateInterpolator()); + + this.tempMatrix = new Matrix(); + } + + void draw(Canvas canvas) { + draw(canvas, 255, true); + } + + void draw(Canvas canvas, int alpha) { + draw(canvas, alpha, false); + } + + private void draw(Canvas canvas, int alpha, boolean needClip) { + if (drawable instanceof BitmapDrawable){ + int saved = canvas.saveLayer(null, null, Canvas.ALL_SAVE_FLAG); + + Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); + Paint paint= ((BitmapDrawable) drawable).getPaint(); + + paint.setColor(Color.WHITE); + paint.setAlpha(alpha); + if (needClip) { + canvas.drawPath(area.getAreaPath(), paint); + paint.setXfermode(SRC_IN); + } + canvas.drawBitmap(bitmap,matrix,paint); + paint.setXfermode(null); + + canvas.restoreToCount(saved); + }else { + canvas.save(); + if (needClip) { + canvas.clipPath(area.getAreaPath()); + } + canvas.concat(matrix); + drawable.setBounds(drawableBounds); + drawable.setAlpha(alpha); + drawable.draw(canvas); + + canvas.restore(); + } + } + + public Area getArea() { + return area; + } + + public void setDrawable(Drawable drawable) { + this.drawable = drawable; + this.drawableBounds = new Rect(0, 0, getWidth(), getHeight()); + this.drawablePoints = new float[] { + 0f, 0f, getWidth(), 0f, getWidth(), getHeight(), 0f, getHeight() + }; + } + + public Drawable getDrawable() { + return drawable; + } + + public int getWidth() { + return drawable.getIntrinsicWidth(); + } + + public int getHeight() { + return drawable.getIntrinsicHeight(); + } + + public boolean contains(float x, float y) { + return area.contains(x, y); + } + + public boolean contains(Line line) { + return area.contains(line); + } + + public Rect getDrawableBounds() { + return drawableBounds; + } + + void setPreviousMoveX(float previousMoveX) { + this.previousMoveX = previousMoveX; + } + + void setPreviousMoveY(float previousMoveY) { + this.previousMoveY = previousMoveY; + } + + private RectF getCurrentDrawableBounds() { + matrix.mapRect(mappedBounds, new RectF(drawableBounds)); + return mappedBounds; + } + + private PointF getCurrentDrawableCenterPoint() { + getCurrentDrawableBounds(); + mappedCenterPoint.x = mappedBounds.centerX(); + mappedCenterPoint.y = mappedBounds.centerY(); + return mappedCenterPoint; + } + + public PointF getAreaCenterPoint() { + centerPoint.x = area.centerX(); + centerPoint.y = area.centerY(); + return centerPoint; + } + + private float getMatrixScale() { + return MatrixUtils.getMatrixScale(matrix); + } + + float getMatrixAngle() { + return MatrixUtils.getMatrixAngle(matrix); + } + + float[] getCurrentDrawablePoints() { + matrix.mapPoints(mappedDrawablePoints, drawablePoints); + return mappedDrawablePoints; + } + + boolean isFilledArea() { + RectF bounds = getCurrentDrawableBounds(); + return !(bounds.left > area.left() + || bounds.top > area.top() + || bounds.right < area.right() + || bounds.bottom < area.bottom()); + } + + boolean canFilledArea() { + float scale = MatrixUtils.getMatrixScale(matrix); + float minScale = getMinMatrixScale(this); + return scale >= minScale; + } + + void record() { + previousMatrix.set(matrix); + } + + void translate(float offsetX, float offsetY) { + matrix.set(previousMatrix); + postTranslate(offsetX, offsetY); + } + + private void zoom(float scaleX, float scaleY, PointF midPoint) { + matrix.set(previousMatrix); + postScale(scaleX, scaleY, midPoint); + } + + void zoomAndTranslate(float scaleX, float scaleY, PointF midPoint, float offsetX, float offsetY) { + matrix.set(previousMatrix); + postTranslate(offsetX, offsetY); + postScale(scaleX, scaleY, midPoint); + } + + void set(Matrix matrix) { + this.matrix.set(matrix); + moveToFillArea(null); + } + + void postTranslate(float x, float y) { + this.matrix.postTranslate(x, y); + } + + void postScale(float scaleX, float scaleY, PointF midPoint) { + this.matrix.postScale(scaleX, scaleY, midPoint.x, midPoint.y); + } + + void postFlipVertically() { + this.matrix.postScale(1, -1, area.centerX(), area.centerY()); + } + + void postFlipHorizontally() { + this.matrix.postScale(-1, 1, area.centerX(), area.centerY()); + } + + void postRotate(float degree) { + this.matrix.postRotate(degree, area.centerX(), area.centerY()); + + float minScale = getMinMatrixScale(this); + if (getMatrixScale() < minScale) { + final PointF midPoint = new PointF(); + midPoint.set(getCurrentDrawableCenterPoint()); + + postScale(minScale / getMatrixScale(), minScale / getMatrixScale(), midPoint); + } + + if (!judgeIsImageContainsBorder(this, getMatrixAngle())) { + final float[] imageIndents = calculateImageIndents(this); + float deltaX = -(imageIndents[0] + imageIndents[2]); + float deltaY = -(imageIndents[1] + imageIndents[3]); + + postTranslate(deltaX, deltaY); + } + } + + private void animateTranslate(final View view, final float translateX, final float translateY) { + animator.end(); + animator.removeAllUpdateListeners(); + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + float x = translateX * (float) animation.getAnimatedValue(); + float y = translateY * (float) animation.getAnimatedValue(); + + translate(x, y); + view.invalidate(); + } + }); + animator.setDuration(duration); + animator.start(); + } + + void moveToFillArea(final View view) { + if (isFilledArea()) return; + record(); + + RectF rectF = getCurrentDrawableBounds(); + float offsetX = 0f; + float offsetY = 0f; + + if (rectF.left > area.left()) { + offsetX = area.left() - rectF.left; + } + + if (rectF.top > area.top()) { + offsetY = area.top() - rectF.top; + } + + if (rectF.right < area.right()) { + offsetX = area.right() - rectF.right; + } + + if (rectF.bottom < area.bottom()) { + offsetY = area.bottom() - rectF.bottom; + } + + if (view == null) { + postTranslate(offsetX, offsetY); + } else { + animateTranslate(view, offsetX, offsetY); + } + } + + void fillArea(final View view, boolean quick) { + if (isFilledArea()) return; + record(); + + final float startScale = getMatrixScale(); + final float endScale = getMinMatrixScale(this); + + final PointF midPoint = new PointF(); + midPoint.set(getCurrentDrawableCenterPoint()); + + tempMatrix.set(matrix); + tempMatrix.postScale(endScale / startScale, endScale / startScale, midPoint.x, midPoint.y); + + RectF rectF = new RectF(drawableBounds); + tempMatrix.mapRect(rectF); + + float offsetX = 0f; + float offsetY = 0f; + + if (rectF.left > area.left()) { + offsetX = area.left() - rectF.left; + } + + if (rectF.top > area.top()) { + offsetY = area.top() - rectF.top; + } + + if (rectF.right < area.right()) { + offsetX = area.right() - rectF.right; + } + + if (rectF.bottom < area.bottom()) { + offsetY = area.bottom() - rectF.bottom; + } + + final float translateX = offsetX; + final float translateY = offsetY; + + animator.end(); + animator.removeAllUpdateListeners(); + animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + float value = (float) animation.getAnimatedValue(); + float scale = (startScale + (endScale - startScale) * value) / startScale; + float x = translateX * value; + float y = translateY * value; + + zoom(scale, scale, midPoint); + postTranslate(x, y); + view.invalidate(); + } + }); + + if (quick) { + animator.setDuration(0); + } else { + animator.setDuration(duration); + } + animator.start(); + } + + void updateWith(final MotionEvent event, final Line line) { + float offsetX = (event.getX() - previousMoveX) / 2; + float offsetY = (event.getY() - previousMoveY) / 2; + + if (!canFilledArea()) { + final Area area = getArea(); + float deltaScale = getMinMatrixScale(this) / getMatrixScale(); + postScale(deltaScale, deltaScale, area.getCenterPoint()); + record(); + + previousMoveX = event.getX(); + previousMoveY = event.getY(); + } + + if (line.direction() == Line.Direction.HORIZONTAL) { + translate(0, offsetY); + } else if (line.direction() == Line.Direction.VERTICAL) { + translate(offsetX, 0); + } + + final RectF rectF = getCurrentDrawableBounds(); + final Area area = getArea(); + float moveY = 0f; + + if (rectF.top > area.top()) { + moveY = area.top() - rectF.top; + } + + if (rectF.bottom < area.bottom()) { + moveY = area.bottom() - rectF.bottom; + } + + float moveX = 0f; + + if (rectF.left > area.left()) { + moveX = area.left() - rectF.left; + } + + if (rectF.right < area.right()) { + moveX = area.right() - rectF.right; + } + + if (moveX != 0 || moveY != 0) { + previousMoveX = event.getX(); + previousMoveY = event.getY(); + postTranslate(moveX, moveY); + record(); + } + } + + public void setArea(Area area) { + this.area = area; + } + + boolean isAnimateRunning() { + return animator.isRunning(); + } + + void setAnimateDuration(int duration) { + this.duration = duration; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleUtils.java new file mode 100644 index 0000000..fc436dd --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleUtils.java @@ -0,0 +1,94 @@ +package com.huantansheng.easyphotos.models.puzzle; + + +import com.huantansheng.easyphotos.models.puzzle.template.slant.OneSlantLayout; +import com.huantansheng.easyphotos.models.puzzle.template.slant.SlantLayoutHelper; +import com.huantansheng.easyphotos.models.puzzle.template.slant.ThreeSlantLayout; +import com.huantansheng.easyphotos.models.puzzle.template.slant.TwoSlantLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.EightStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.FiveStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.FourStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.NineStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.OneStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.SevenStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.SixStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.StraightLayoutHelper; +import com.huantansheng.easyphotos.models.puzzle.template.straight.ThreeStraightLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.TwoStraightLayout; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public class PuzzleUtils { + private static final String TAG = "PuzzleUtils"; + + private PuzzleUtils() { + //no instance + } + + public static PuzzleLayout getPuzzleLayout(int type, int borderSize, int themeId) { + if (type == 0) { + switch (borderSize) { + case 1: + return new OneSlantLayout(themeId); + case 2: + return new TwoSlantLayout(themeId); + case 3: + return new ThreeSlantLayout(themeId); + default: + return new OneSlantLayout(themeId); + } + } else { + switch (borderSize) { + case 1: + return new OneStraightLayout(themeId); + case 2: + return new TwoStraightLayout(themeId); + case 3: + return new ThreeStraightLayout(themeId); + case 4: + return new FourStraightLayout(themeId); + case 5: + return new FiveStraightLayout(themeId); + case 6: + return new SixStraightLayout(themeId); + case 7: + return new SevenStraightLayout(themeId); + case 8: + return new EightStraightLayout(themeId); + case 9: + return new NineStraightLayout(themeId); + default: + return new OneStraightLayout(themeId); + } + } + } + + public static List getAllPuzzleLayouts() { + List puzzleLayouts = new ArrayList<>(); + //slant layout + puzzleLayouts.addAll(SlantLayoutHelper.getAllThemeLayout(2)); + puzzleLayouts.addAll(SlantLayoutHelper.getAllThemeLayout(3)); + + // straight layout + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(2)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(3)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(4)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(5)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(6)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(7)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(8)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(9)); + return puzzleLayouts; + } + + public static List getPuzzleLayouts(int pieceCount) { + List puzzleLayouts = new ArrayList<>(); + puzzleLayouts.addAll(SlantLayoutHelper.getAllThemeLayout(pieceCount)); + puzzleLayouts.addAll(StraightLayoutHelper.getAllThemeLayout(pieceCount)); + return puzzleLayouts; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleView.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleView.java new file mode 100644 index 0000000..638fbfa --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/PuzzleView.java @@ -0,0 +1,791 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.PointF; +import android.graphics.RectF; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; + +import androidx.core.content.ContextCompat; + +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + +import com.huantansheng.easyphotos.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public class PuzzleView extends View { + private static final String TAG = "SlantPuzzleView"; + + private enum ActionMode { + NONE, + DRAG, + ZOOM, + MOVE, + SWAP + } + + private ActionMode currentMode = ActionMode.NONE; + + private List puzzlePieces = new ArrayList<>(); + + private List needChangePieces = new ArrayList<>(); + private PuzzleLayout puzzleLayout; + + private RectF bounds; + private int lineSize; + + private int duration; + private Line handlingLine; + + private PuzzlePiece handlingPiece; + private PuzzlePiece replacePiece; + private PuzzlePiece previousHandlingPiece; + + private Paint linePaint; + private Paint selectedAreaPaint; + private Paint handleBarPaint; + + private float downX; + private float downY; + private float previousDistance; + private PointF midPoint; + private boolean needDrawLine; + + private boolean needDrawOuterLine; + private boolean touchEnable = true; + private int lineColor; + + private int selectedLineColor; + private int handleBarColor; + private float piecePadding; + private float pieceRadian; + + private boolean needResetPieceMatrix = true; + + private OnPieceSelectedListener onPieceSelectedListener; + + private Runnable switchToSwapAction = new Runnable() { + @Override + public void run() { + currentMode = ActionMode.SWAP; + invalidate(); + } + }; + + public PuzzleView(Context context) { + this(context, null); + } + + public PuzzleView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public PuzzleView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PuzzleView); + lineSize = ta.getInt(R.styleable.PuzzleView_line_size, 4); + lineColor = ta.getColor(R.styleable.PuzzleView_line_color, + ContextCompat.getColor(getContext(), R.color.easy_photos_fg_primary)); + selectedLineColor = + ta.getColor(R.styleable.PuzzleView_selected_line_color, + ContextCompat.getColor(getContext(), R.color.easy_photos_fg_accent)); + handleBarColor = + ta.getColor(R.styleable.PuzzleView_handle_bar_color, + ContextCompat.getColor(getContext(), R.color.easy_photos_fg_accent)); + piecePadding = ta.getDimensionPixelSize(R.styleable.PuzzleView_piece_padding, 0); + needDrawLine = ta.getBoolean(R.styleable.PuzzleView_need_draw_line, false); + needDrawOuterLine = ta.getBoolean(R.styleable.PuzzleView_need_draw_outer_line, false); + duration = ta.getInt(R.styleable.PuzzleView_animation_duration, 300); + pieceRadian = ta.getFloat(R.styleable.PuzzleView_radian, 0f); + ta.recycle(); + + bounds = new RectF(); + + // init some paint + linePaint = new Paint(); + linePaint.setAntiAlias(true); + linePaint.setColor(lineColor); + linePaint.setStrokeWidth(lineSize); + linePaint.setStyle(Paint.Style.STROKE); + linePaint.setStrokeJoin(Paint.Join.ROUND); + linePaint.setStrokeCap(Paint.Cap.SQUARE); + + selectedAreaPaint = new Paint(); + selectedAreaPaint.setAntiAlias(true); + selectedAreaPaint.setStyle(Paint.Style.STROKE); + selectedAreaPaint.setStrokeJoin(Paint.Join.ROUND); + selectedAreaPaint.setStrokeCap(Paint.Cap.ROUND); + selectedAreaPaint.setColor(selectedLineColor); + selectedAreaPaint.setStrokeWidth(lineSize); + + handleBarPaint = new Paint(); + handleBarPaint.setAntiAlias(true); + handleBarPaint.setStyle(Paint.Style.FILL); + handleBarPaint.setColor(handleBarColor); + handleBarPaint.setStrokeWidth(lineSize * 3); + + midPoint = new PointF(); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + resetPuzzleBounds(); + + if (puzzlePieces.size() != 0) { + int size = puzzlePieces.size(); + for (int i = 0; i < size; i++) { + PuzzlePiece piece = puzzlePieces.get(i); + piece.setArea(puzzleLayout.getArea(i)); + if (needResetPieceMatrix) { + piece.set(MatrixUtils.generateMatrix(piece, 0f)); + } else { + piece.fillArea(this, true); + } + } + } + invalidate(); + } + + private void resetPuzzleBounds() { + bounds.left = getPaddingLeft(); + bounds.top = getPaddingTop(); + bounds.right = getWidth() - getPaddingRight(); + bounds.bottom = getHeight() - getPaddingBottom(); + + if (puzzleLayout != null) { + puzzleLayout.reset(); + puzzleLayout.setOuterBounds(bounds); + puzzleLayout.layout(); + puzzleLayout.setPadding(piecePadding); + puzzleLayout.setRadian(pieceRadian); + } + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + if (puzzleLayout == null) { + return; + } + + linePaint.setStrokeWidth(lineSize); + selectedAreaPaint.setStrokeWidth(lineSize); + handleBarPaint.setStrokeWidth(lineSize * 3); + + // draw pieces + int count = puzzleLayout.getAreaCount(); + for (int i = 0; i < count; i++) { + if (i >= puzzlePieces.size()) { + break; + } + + PuzzlePiece piece = puzzlePieces.get(i); + + if (piece == handlingPiece && currentMode == ActionMode.SWAP) { + continue; + } + + if (puzzlePieces.size() > i) { + piece.draw(canvas); + } + } + + // draw outer bounds + if (needDrawOuterLine) { + for (Line outerLine : puzzleLayout.getOuterLines()) { + drawLine(canvas, outerLine); + } + } + + // draw slant lines + if (needDrawLine) { + for (Line line : puzzleLayout.getLines()) { + drawLine(canvas, line); + } + } + + // draw selected area + if (handlingPiece != null && currentMode != ActionMode.SWAP) { + drawSelectedArea(canvas, handlingPiece); + } + + // draw swap piece + if (handlingPiece != null && currentMode == ActionMode.SWAP) { + handlingPiece.draw(canvas, 128); + if (replacePiece != null) { + drawSelectedArea(canvas, replacePiece); + } + } + } + + private void drawSelectedArea(Canvas canvas, PuzzlePiece piece) { + final Area area = piece.getArea(); + // draw select area + canvas.drawPath(area.getAreaPath(), selectedAreaPaint); + + // draw handle bar + for (Line line : area.getLines()) { + if (puzzleLayout.getLines().contains(line)) { + PointF[] handleBarPoints = area.getHandleBarPoints(line); + canvas.drawLine(handleBarPoints[0].x, handleBarPoints[0].y, handleBarPoints[1].x, + handleBarPoints[1].y, handleBarPaint); + canvas.drawCircle(handleBarPoints[0].x, handleBarPoints[0].y, lineSize * 3 / 2, + handleBarPaint); + canvas.drawCircle(handleBarPoints[1].x, handleBarPoints[1].y, lineSize * 3 / 2, + handleBarPaint); + } + } + } + + private void drawLine(Canvas canvas, Line line) { + canvas.drawLine(line.startPoint().x, line.startPoint().y, line.endPoint().x, + line.endPoint().y, + linePaint); + } + + public void setPuzzleLayout(PuzzleLayout puzzleLayout) { + clearPieces(); + + this.puzzleLayout = puzzleLayout; + + this.puzzleLayout.setOuterBounds(bounds); + this.puzzleLayout.layout(); + + invalidate(); + } + + public PuzzleLayout getPuzzleLayout() { + return this.puzzleLayout; + } + + @SuppressLint("ClickableViewAccessibility") + @Override + public boolean onTouchEvent(MotionEvent event) { + if (!touchEnable) { + return super.onTouchEvent(event); + } + switch (event.getAction() & MotionEvent.ACTION_MASK) { + case MotionEvent.ACTION_DOWN: + downX = event.getX(); + downY = event.getY(); + + decideActionMode(event); + prepareAction(event); + break; + + case MotionEvent.ACTION_POINTER_DOWN: + previousDistance = calculateDistance(event); + calculateMidPoint(event, midPoint); + + decideActionMode(event); + break; + + case MotionEvent.ACTION_MOVE: + performAction(event); + + if ((Math.abs(event.getX() - downX) > 10 || Math.abs(event.getY() - downY) > 10) + && currentMode != ActionMode.SWAP) { + removeCallbacks(switchToSwapAction); + } + + break; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + finishAction(event); + currentMode = ActionMode.NONE; + removeCallbacks(switchToSwapAction); + break; + } + + invalidate(); + return true; + } + + // 决定应该执行什么Action + private void decideActionMode(MotionEvent event) { + for (PuzzlePiece piece : puzzlePieces) { + if (piece.isAnimateRunning()) { + currentMode = ActionMode.NONE; + return; + } + } + + if (event.getPointerCount() == 1) { + handlingLine = findHandlingLine(); + if (handlingLine != null) { + currentMode = ActionMode.MOVE; + } else { + handlingPiece = findHandlingPiece(); + + if (handlingPiece != null) { + currentMode = ActionMode.DRAG; + + postDelayed(switchToSwapAction, 500); + } + } + } else if (event.getPointerCount() > 1) { + if (handlingPiece != null + && handlingPiece.contains(event.getX(1), event.getY(1)) + && currentMode == ActionMode.DRAG) { + currentMode = ActionMode.ZOOM; + } + } + } + + // 执行Actionå‰çš„准备工作 + @SuppressWarnings("unused") + private void prepareAction(MotionEvent event) { + switch (currentMode) { + case NONE: + break; + case DRAG: + handlingPiece.record(); + break; + case ZOOM: + handlingPiece.record(); + break; + case MOVE: + handlingLine.prepareMove(); + needChangePieces.clear(); + needChangePieces.addAll(findNeedChangedPieces()); + for (PuzzlePiece piece : needChangePieces) { + piece.record(); + piece.setPreviousMoveX(downX); + piece.setPreviousMoveY(downY); + } + break; + } + } + + // 执行Action + private void performAction(MotionEvent event) { + switch (currentMode) { + case NONE: + break; + case DRAG: + dragPiece(handlingPiece, event); + break; + case ZOOM: + zoomPiece(handlingPiece, event); + break; + case SWAP: + dragPiece(handlingPiece, event); + replacePiece = findReplacePiece(event); + break; + case MOVE: + moveLine(handlingLine, event); + break; + } + } + + // 结æŸAction + private void finishAction(MotionEvent event) { + switch (currentMode) { + case NONE: + break; + case DRAG: + if (handlingPiece != null && !handlingPiece.isFilledArea()) { + handlingPiece.moveToFillArea(this); + } + + if (previousHandlingPiece == handlingPiece + && Math.abs(downX - event.getX()) < 3 + && Math.abs(downY - event.getY()) < 3) { + + handlingPiece = null; + } + + // trigger listener + if (onPieceSelectedListener != null) { + onPieceSelectedListener.onPieceSelected(handlingPiece, + puzzlePieces.indexOf(handlingPiece)); + } + + previousHandlingPiece = handlingPiece; + break; + case ZOOM: + if (handlingPiece != null && !handlingPiece.isFilledArea()) { + if (handlingPiece.canFilledArea()) { + handlingPiece.moveToFillArea(this); + } else { + handlingPiece.fillArea(this, false); + } + } + previousHandlingPiece = handlingPiece; + break; + case MOVE: + break; + case SWAP: + if (handlingPiece != null && replacePiece != null) { + Drawable temp = handlingPiece.getDrawable(); + + handlingPiece.setDrawable(replacePiece.getDrawable()); + replacePiece.setDrawable(temp); + + handlingPiece.fillArea(this, true); + replacePiece.fillArea(this, true); + + handlingPiece = null; + replacePiece = null; + previousHandlingPiece = null; + // trigger listener + if (onPieceSelectedListener != null) { + onPieceSelectedListener.onPieceSelected(null, + 0); + } + } + break; + } + + handlingLine = null; + needChangePieces.clear(); + } + + private void moveLine(Line line, MotionEvent event) { + if (line == null || event == null) return; + + boolean needUpdate; + if (line.direction() == Line.Direction.HORIZONTAL) { + needUpdate = line.move(event.getY() - downY, 80); + } else { + needUpdate = line.move(event.getX() - downX, 80); + } + + if (needUpdate) { + puzzleLayout.update(); + updatePiecesInArea(line, event); + } + } + + private void updatePiecesInArea(Line line, MotionEvent event) { + int size = needChangePieces.size(); + for (int i = 0; i < size; i++) { + needChangePieces.get(i).updateWith(event, line); + } + } + + private void zoomPiece(PuzzlePiece piece, MotionEvent event) { + if (piece == null || event == null || event.getPointerCount() < 2) return; + float scale = calculateDistance(event) / previousDistance; + piece.zoomAndTranslate(scale, scale, midPoint, event.getX() - downX, event.getY() - downY); + } + + private void dragPiece(PuzzlePiece piece, MotionEvent event) { + if (piece == null || event == null) return; + piece.translate(event.getX() - downX, event.getY() - downY); + } + + public void replace(Bitmap bitmap) { + replace(new BitmapDrawable(getResources(), bitmap)); + } + + public void replace(final Drawable bitmapDrawable) { + post(new Runnable() { + @Override + public void run() { + if (handlingPiece == null) { + return; + } + + handlingPiece.setDrawable(bitmapDrawable); + handlingPiece.set(MatrixUtils.generateMatrix(handlingPiece, 0f)); + + postInvalidate(); + } + }); + } + + public void flipVertically() { + if (handlingPiece == null) { + return; + } + + handlingPiece.postFlipVertically(); + handlingPiece.record(); + + invalidate(); + } + + public void flipHorizontally() { + if (handlingPiece == null) { + return; + } + + handlingPiece.postFlipHorizontally(); + handlingPiece.record(); + + invalidate(); + } + + public void rotate(float degree) { + if (handlingPiece == null) { + return; + } + + handlingPiece.postRotate(degree); + handlingPiece.record(); + + invalidate(); + } + + private PuzzlePiece findHandlingPiece() { + for (PuzzlePiece piece : puzzlePieces) { + if (piece.contains(downX, downY)) { + return piece; + } + } + return null; + } + + private Line findHandlingLine() { + for (Line line : puzzleLayout.getLines()) { + if (line.contains(downX, downY, 40)) { + return line; + } + } + return null; + } + + private PuzzlePiece findReplacePiece(MotionEvent event) { + for (PuzzlePiece piece : puzzlePieces) { + if (piece.contains(event.getX(), event.getY())) { + return piece; + } + } + return null; + } + + private List findNeedChangedPieces() { + if (handlingLine == null) return new ArrayList<>(); + + List needChanged = new ArrayList<>(); + + for (PuzzlePiece piece : puzzlePieces) { + if (piece.contains(handlingLine)) { + needChanged.add(piece); + } + } + + return needChanged; + } + + private float calculateDistance(MotionEvent event) { + float x = event.getX(0) - event.getX(1); + float y = event.getY(0) - event.getY(1); + + return (float) Math.sqrt(x * x + y * y); + } + + private void calculateMidPoint(MotionEvent event, PointF point) { + point.x = (event.getX(0) + event.getX(1)) / 2; + point.y = (event.getY(0) + event.getY(1)) / 2; + } + + public void reset() { + clearPieces(); + if (puzzleLayout != null) { + puzzleLayout.reset(); + } + } + + public void clearPieces() { + handlingLine = null; + handlingPiece = null; + replacePiece = null; + needChangePieces.clear(); + puzzlePieces.clear(); + } + + public void addPieces(List bitmaps) { + for (Bitmap bitmap : bitmaps) { + addPiece(bitmap); + } + + postInvalidate(); + } + + public void addPiece(Bitmap bitmap) { + BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap); + bitmapDrawable.setAntiAlias(true); + bitmapDrawable.setFilterBitmap(true); + + addPiece(bitmapDrawable); + } + + public void addPiece(Drawable drawable) { + int position = puzzlePieces.size(); + + if (position >= puzzleLayout.getAreaCount()) { + Log.e(TAG, "addPiece: can not add more. the current puzzle layout can contains " + + puzzleLayout.getAreaCount() + + " puzzle piece."); + return; + } + + final Area area = puzzleLayout.getArea(position); + area.setPadding(piecePadding); + + PuzzlePiece piece = new PuzzlePiece(drawable, area, new Matrix()); + + final Matrix matrix = MatrixUtils.generateMatrix(area, drawable, 0f); + piece.set(matrix); + + piece.setAnimateDuration(duration); + + puzzlePieces.add(piece); + + setPiecePadding(piecePadding); + setPieceRadian(pieceRadian); + + invalidate(); + } + + public void setAnimateDuration(int duration) { + this.duration = duration; + for (PuzzlePiece piece : puzzlePieces) { + piece.setAnimateDuration(duration); + } + } + + public boolean isNeedDrawLine() { + return needDrawLine; + } + + public void setNeedDrawLine(boolean needDrawLine) { + this.needDrawLine = needDrawLine; + handlingPiece = null; + previousHandlingPiece = null; + invalidate(); + } + + public boolean isNeedDrawOuterLine() { + return needDrawOuterLine; + } + + public void setNeedDrawOuterLine(boolean needDrawOuterLine) { + this.needDrawOuterLine = needDrawOuterLine; + invalidate(); + } + + public int getLineColor() { + return lineColor; + } + + public void setLineColor(int lineColor) { + this.lineColor = lineColor; + this.linePaint.setColor(lineColor); + invalidate(); + } + + public int getLineSize() { + return lineSize; + } + + public void setLineSize(int lineSize) { + this.lineSize = lineSize; + invalidate(); + } + + public int getSelectedLineColor() { + return selectedLineColor; + } + + public void setSelectedLineColor(int selectedLineColor) { + this.selectedLineColor = selectedLineColor; + this.selectedAreaPaint.setColor(selectedLineColor); + invalidate(); + } + + public int getHandleBarColor() { + return handleBarColor; + } + + public void setHandleBarColor(int handleBarColor) { + this.handleBarColor = handleBarColor; + this.handleBarPaint.setColor(handleBarColor); + invalidate(); + } + + public boolean isTouchEnable() { + return touchEnable; + } + + public void setTouchEnable(boolean touchEnable) { + this.touchEnable = touchEnable; + } + + public void clearHandling() { + handlingPiece = null; + handlingLine = null; + replacePiece = null; + previousHandlingPiece = null; + needChangePieces.clear(); + } + + public void setPiecePadding(float padding) { + this.piecePadding = padding; + if (puzzleLayout != null) { + puzzleLayout.setPadding(padding); + } + + invalidate(); + } + + public void setPieceRadian(float radian) { + this.pieceRadian = radian; + if (puzzleLayout != null) { + puzzleLayout.setRadian(radian); + } + + invalidate(); + } + + @Override + public void setBackgroundColor(int color) { + super.setBackgroundColor(color); + if (puzzleLayout != null) { + puzzleLayout.setColor(color); + } + } + + public void setNeedResetPieceMatrix(boolean needResetPieceMatrix) { + this.needResetPieceMatrix = needResetPieceMatrix; + } + + public float getPiecePadding() { + return piecePadding; + } + + public float getPieceRadian() { + return pieceRadian; + } + + public void setOnPieceSelectedListener(OnPieceSelectedListener onPieceSelectedListener) { + this.onPieceSelectedListener = onPieceSelectedListener; + } + + public interface OnPieceSelectedListener { + void onPieceSelected(PuzzlePiece piece, int position); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/SquarePuzzleView.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/SquarePuzzleView.java new file mode 100644 index 0000000..f50ea9e --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/SquarePuzzleView.java @@ -0,0 +1,32 @@ +package com.huantansheng.easyphotos.models.puzzle; + +import android.content.Context; +import android.util.AttributeSet; + +/** + * @author wupanjie + */ +public class SquarePuzzleView extends PuzzleView { + public SquarePuzzleView(Context context) { + super(context); + } + + public SquarePuzzleView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public SquarePuzzleView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + int width = getMeasuredWidth(); + int height = getMeasuredHeight(); + int length = width > height ? height : width; + + setMeasuredDimension(length, length); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/CrossoverPointF.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/CrossoverPointF.java new file mode 100644 index 0000000..3cf1253 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/CrossoverPointF.java @@ -0,0 +1,34 @@ +package com.huantansheng.easyphotos.models.puzzle.slant; + +import android.graphics.PointF; + +/** + * 两æ¡çº¿çš„交点 + * + * @author wupanjie + */ +class CrossoverPointF extends PointF { + SlantLine horizontal; + SlantLine vertical; + + CrossoverPointF() { + + } + + CrossoverPointF(float x, float y) { + this.x = x; + this.y = y; + } + + CrossoverPointF(SlantLine horizontal, SlantLine vertical) { + this.horizontal = horizontal; + this.vertical = vertical; + } + + void update() { + if (horizontal == null || vertical == null){ + return; + } + SlantUtils.intersectionOfLines(this, horizontal, vertical); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantArea.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantArea.java new file mode 100644 index 0000000..0766ff7 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantArea.java @@ -0,0 +1,294 @@ +package com.huantansheng.easyphotos.models.puzzle.slant; + +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; + + +import com.huantansheng.easyphotos.models.puzzle.Area; +import com.huantansheng.easyphotos.models.puzzle.Line; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.distance; +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.getPoint; +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.intersectionOfLines; + + +/** + * @author wupanjie + */ +class SlantArea implements Area { + SlantLine lineLeft; + SlantLine lineTop; + SlantLine lineRight; + SlantLine lineBottom; + + CrossoverPointF leftTop; + CrossoverPointF leftBottom; + CrossoverPointF rightTop; + CrossoverPointF rightBottom; + + private PointF tempPoint; + + private float paddingLeft; + private float paddingTop; + private float paddingRight; + private float paddingBottom; + private float radian; + + private Path areaPath = new Path(); + private RectF areaRect = new RectF(); + private PointF[] handleBarPoints = new PointF[2]; + + SlantArea() { + handleBarPoints[0] = new PointF(); + handleBarPoints[1] = new PointF(); + + leftTop = new CrossoverPointF(); + leftBottom = new CrossoverPointF(); + rightTop = new CrossoverPointF(); + rightBottom = new CrossoverPointF(); + + tempPoint = new PointF(); + } + + SlantArea(SlantArea src) { + this(); + this.lineLeft = src.lineLeft; + this.lineTop = src.lineTop; + this.lineRight = src.lineRight; + this.lineBottom = src.lineBottom; + + this.leftTop = src.leftTop; + this.leftBottom = src.leftBottom; + this.rightTop = src.rightTop; + this.rightBottom = src.rightBottom; + + updateCornerPoints(); + } + + @Override + public float left() { + return Math.min(leftTop.x, leftBottom.x) + paddingLeft; + } + + @Override + public float top() { + return Math.min(leftTop.y, rightTop.y) + paddingTop; + } + + @Override + public float right() { + return Math.max(rightTop.x, rightBottom.x) - paddingRight; + } + + @Override + public float bottom() { + return Math.max(leftBottom.y, rightBottom.y) - paddingBottom; + } + + @Override + public float centerX() { + return (left() + right()) / 2; + } + + @Override + public float centerY() { + return (top() + bottom()) / 2; + } + + @Override + public float width() { + return right() - left(); + } + + @Override + public float height() { + return bottom() - top(); + } + + @Override + public PointF getCenterPoint() { + return new PointF(centerX(), centerY()); + } + + public Path getAreaPath() { + areaPath.reset(); + + if (radian > 0) { + float tempRatio = radian / distance(leftTop, leftBottom); + getPoint(tempPoint, leftTop, leftBottom, Line.Direction.VERTICAL, tempRatio); + tempPoint.offset(paddingLeft, paddingTop); + areaPath.moveTo(tempPoint.x, tempPoint.y); + + tempRatio = radian / distance(leftTop, rightTop); + getPoint(tempPoint, leftTop, rightTop, Line.Direction.HORIZONTAL, tempRatio); + tempPoint.offset(paddingLeft, paddingTop); + areaPath.quadTo(leftTop.x + paddingLeft, leftTop.y + paddingTop, tempPoint.x, tempPoint.y); + + tempRatio = 1 - tempRatio; + getPoint(tempPoint, leftTop, rightTop, Line.Direction.HORIZONTAL, tempRatio); + tempPoint.offset(-paddingRight, paddingTop); + areaPath.lineTo(tempPoint.x, tempPoint.y); + + tempRatio = radian / distance(rightTop, rightBottom); + getPoint(tempPoint, rightTop, rightBottom, Line.Direction.VERTICAL, tempRatio); + tempPoint.offset(-paddingRight, paddingTop); + areaPath.quadTo(rightTop.x - paddingLeft, rightTop.y + paddingTop, tempPoint.x, tempPoint.y); + + tempRatio = 1 - tempRatio; + getPoint(tempPoint, rightTop, rightBottom, Line.Direction.VERTICAL, tempRatio); + tempPoint.offset(-paddingRight, -paddingBottom); + areaPath.lineTo(tempPoint.x, tempPoint.y); + + tempRatio = 1 - radian / distance(leftBottom, rightBottom); + getPoint(tempPoint, leftBottom, rightBottom, Line.Direction.HORIZONTAL, tempRatio); + tempPoint.offset(-paddingRight, -paddingBottom); + areaPath.quadTo(rightBottom.x - paddingRight, rightBottom.y - paddingTop, tempPoint.x, tempPoint.y); + + tempRatio = 1 - tempRatio; + getPoint(tempPoint, leftBottom, rightBottom, Line.Direction.HORIZONTAL, tempRatio); + tempPoint.offset(paddingLeft, -paddingBottom); + areaPath.lineTo(tempPoint.x, tempPoint.y); + + tempRatio = 1 - radian / distance(leftTop, leftBottom); + getPoint(tempPoint, leftTop, leftBottom, Line.Direction.VERTICAL, tempRatio); + tempPoint.offset(paddingLeft, -paddingBottom); + areaPath.quadTo(leftBottom.x + paddingLeft, leftBottom.y - paddingBottom, tempPoint.x, tempPoint.y); + + tempRatio = 1 - tempRatio; + getPoint(tempPoint, leftTop, leftBottom, Line.Direction.VERTICAL, tempRatio); + tempPoint.offset(paddingLeft, paddingTop); + areaPath.lineTo(tempPoint.x, tempPoint.y); + } else { + areaPath.moveTo(leftTop.x + paddingLeft, leftTop.y + paddingTop); + areaPath.lineTo(rightTop.x - paddingRight, rightTop.y + paddingTop); + areaPath.lineTo(rightBottom.x - paddingRight, rightBottom.y - paddingBottom); + areaPath.lineTo(leftBottom.x + paddingLeft, leftBottom.y - paddingBottom); + areaPath.lineTo(leftTop.x + paddingLeft, leftTop.y + paddingTop); + } + return areaPath; + } + + @Override + public RectF getAreaRect() { + areaRect.set(left(), top(), right(), bottom()); + return areaRect; + } + + public boolean contains(float x, float y) { + return SlantUtils.contains(this, x, y); + } + + @Override + public boolean contains(Line line) { + return lineLeft == line || lineTop == line || lineRight == line || lineBottom == line; + } + + @Override + public boolean contains(PointF point) { + return contains(point.x, point.y); + } + + @Override + public List getLines() { + return Arrays.asList((Line) lineLeft, lineTop, lineRight, lineBottom); + } + + @Override + public PointF[] getHandleBarPoints(Line line) { + if (line == lineLeft) { + getPoint(handleBarPoints[0], leftTop, leftBottom, line.direction(), 0.25f); + getPoint(handleBarPoints[1], leftTop, leftBottom, line.direction(), 0.75f); + handleBarPoints[0].offset(paddingLeft, 0); + handleBarPoints[1].offset(paddingLeft, 0); + } else if (line == lineTop) { + getPoint(handleBarPoints[0], leftTop, rightTop, line.direction(), 0.25f); + getPoint(handleBarPoints[1], leftTop, rightTop, line.direction(), 0.75f); + handleBarPoints[0].offset(0, paddingTop); + handleBarPoints[1].offset(0, paddingTop); + } else if (line == lineRight) { + getPoint(handleBarPoints[0], rightTop, rightBottom, line.direction(), 0.25f); + getPoint(handleBarPoints[1], rightTop, rightBottom, line.direction(), 0.75f); + handleBarPoints[0].offset(-paddingRight, 0); + handleBarPoints[1].offset(-paddingRight, 0); + } else if (line == lineBottom) { + getPoint(handleBarPoints[0], leftBottom, rightBottom, line.direction(), 0.25f); + getPoint(handleBarPoints[1], leftBottom, rightBottom, line.direction(), 0.75f); + handleBarPoints[0].offset(0, -paddingBottom); + handleBarPoints[1].offset(0, -paddingBottom); + } + return handleBarPoints; + } + + @Override + public float radian() { + return radian; + } + + @Override + public void setRadian(float radian) { + this.radian = radian; + } + + @Override + public float getPaddingLeft() { + return paddingLeft; + } + + @Override + public float getPaddingTop() { + return paddingTop; + } + + @Override + public float getPaddingRight() { + return paddingRight; + } + + @Override + public float getPaddingBottom() { + return paddingBottom; + } + + @Override + public void setPadding(float padding) { + setPadding(padding, padding, padding, padding); + } + + @Override + public void setPadding(float paddingLeft, float paddingTop, float paddingRight, float paddingBottom) { + this.paddingLeft = paddingLeft; + this.paddingTop = paddingTop; + this.paddingRight = paddingRight; + this.paddingBottom = paddingBottom; + } + + void updateCornerPoints() { + intersectionOfLines(leftTop, lineLeft, lineTop); + intersectionOfLines(leftBottom, lineLeft, lineBottom); + intersectionOfLines(rightTop, lineRight, lineTop); + intersectionOfLines(rightBottom, lineRight, lineBottom); + } + + static class AreaComparator implements Comparator { + + @Override + public int compare(SlantArea one, SlantArea two) { + if (one.leftTop.y < two.leftTop.y) { + return -1; + } else if (one.leftTop.y == two.leftTop.y) { + if (one.leftTop.x < two.leftTop.x) { + return -1; + } else { + return 1; + } + } else { + return 1; + } + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantLine.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantLine.java new file mode 100644 index 0000000..de54dde --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantLine.java @@ -0,0 +1,173 @@ +package com.huantansheng.easyphotos.models.puzzle.slant; + +import android.graphics.PointF; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.intersectionOfLines; +import static java.lang.Math.max; +import static java.lang.Math.min; +import static java.lang.Math.pow; +import static java.lang.Math.sqrt; + +/** + * åˆ†ä¸ºä¸¤ç§æ–œçº¿ï¼Œæ¨ªè°¢çº¿å’Œç«–线线 + * 横斜线-->start为左边的点,end为å³è¾¹çš„点 + * 竖斜线-->start为上é¢çš„点,end为下é¢çš„点 + * + * @author wupanjie + */ +class SlantLine implements Line { + CrossoverPointF start; + CrossoverPointF end; + + // 移动å‰çš„点 + private PointF previousStart = new PointF(); + private PointF previousEnd = new PointF(); + + public final Line.Direction direction; + + SlantLine attachLineStart; + SlantLine attachLineEnd; + + Line upperLine; + Line lowerLine; + + SlantLine(Line.Direction direction) { + this.direction = direction; + } + + SlantLine(CrossoverPointF start, CrossoverPointF end, Line.Direction direction) { + this.start = start; + this.end = end; + this.direction = direction; + } + + public float length() { + return (float) sqrt(pow(end.x - start.x, 2) + pow(end.y - start.y, 2)); + } + + @Override + public PointF startPoint() { + return start; + } + + @Override + public PointF endPoint() { + return end; + } + + @Override + public Line lowerLine() { + return lowerLine; + } + + @Override + public Line upperLine() { + return upperLine; + } + + @Override + public Line attachStartLine() { + return attachLineStart; + } + + @Override + public Line attachEndLine() { + return attachLineEnd; + } + + @Override + public void setLowerLine(Line lowerLine) { + this.lowerLine = lowerLine; + } + + @Override + public void setUpperLine(Line upperLine) { + this.upperLine = upperLine; + } + + @Override + public Direction direction() { + return direction; + } + + @Override + public float slope() { + return SlantUtils.calculateSlope(this); + } + + public boolean contains(float x, float y, float extra) { + return SlantUtils.contains(this, x, y, extra); + } + + @Override + public boolean move(float offset, float extra) { + if (direction == Line.Direction.HORIZONTAL) { + if (previousStart.y + offset < lowerLine.maxY() + extra + || previousStart.y + offset > upperLine.minY() - extra + || previousEnd.y + offset < lowerLine.maxY() + extra + || previousEnd.y + offset > upperLine.minY() - extra) { + return false; + } + + start.y = previousStart.y + offset; + end.y = previousEnd.y + offset; + } else { + if (previousStart.x + offset < lowerLine.maxX() + extra + || previousStart.x + offset > upperLine.minX() - extra + || previousEnd.x + offset < lowerLine.maxX() + extra + || previousEnd.x + offset > upperLine.minX() - extra) { + return false; + } + + start.x = previousStart.x + offset; + end.x = previousEnd.x + offset; + } + + return true; + } + + @Override + public void prepareMove() { + previousStart.set(start); + previousEnd.set(end); + } + + @Override + public void update(float layoutWidth, float layoutHeight) { + intersectionOfLines(start, this, attachLineStart); + intersectionOfLines(end, this, attachLineEnd); + } + + @Override + public float minX() { + return min(start.x, end.x); + } + + @Override + public float maxX() { + return max(start.x, end.x); + } + + @Override + public float minY() { + return min(start.y, end.y); + } + + @Override + public float maxY() { + return max(start.y, end.y); + } + + @Override + public void offset(float x, float y) { + start.offset(x, y); + end.offset(x, y); + } + + @Override + public String toString() { + return "start --> " + start.toString() + ",end --> " + end.toString(); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantPuzzleLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantPuzzleLayout.java new file mode 100644 index 0000000..231d2ac --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantPuzzleLayout.java @@ -0,0 +1,334 @@ +package com.huantansheng.easyphotos.models.puzzle.slant; + +import android.graphics.RectF; +import android.util.Pair; + +import com.huantansheng.easyphotos.models.puzzle.Area; +import com.huantansheng.easyphotos.models.puzzle.Line; +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.createLine; +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.cutAreaCross; +import static com.huantansheng.easyphotos.models.puzzle.slant.SlantUtils.cutAreaWith; + + +/** + * 斜线布局,外围区域为一矩形 + * + * @author wupanjie + */ +public abstract class SlantPuzzleLayout implements PuzzleLayout { + private RectF bounds; + private SlantArea outerArea; + + private List outerLines = new ArrayList<>(4); + private List areas = new ArrayList<>(); + private List lines = new ArrayList<>(); + + private float padding; + private float radian; + private int color; + + private Comparator areaComparator = new SlantArea.AreaComparator(); + + private ArrayList steps = new ArrayList<>(); + + protected SlantPuzzleLayout() { + + } + + @Override + public void setOuterBounds(RectF bounds) { + reset(); + + this.bounds = bounds; + + CrossoverPointF leftTop = new CrossoverPointF(bounds.left, bounds.top); + CrossoverPointF rightTop = new CrossoverPointF(bounds.right, bounds.top); + CrossoverPointF leftBottom = new CrossoverPointF(bounds.left, bounds.bottom); + CrossoverPointF rightBottom = new CrossoverPointF(bounds.right, bounds.bottom); + + SlantLine lineLeft = new SlantLine(leftTop, leftBottom, Line.Direction.VERTICAL); + SlantLine lineTop = new SlantLine(leftTop, rightTop, Line.Direction.HORIZONTAL); + SlantLine lineRight = new SlantLine(rightTop, rightBottom, Line.Direction.VERTICAL); + SlantLine lineBottom = new SlantLine(leftBottom, rightBottom, Line.Direction.HORIZONTAL); + + outerLines.clear(); + + outerLines.add(lineLeft); + outerLines.add(lineTop); + outerLines.add(lineRight); + outerLines.add(lineBottom); + + outerArea = new SlantArea(); + outerArea.lineLeft = lineLeft; + outerArea.lineTop = lineTop; + outerArea.lineRight = lineRight; + outerArea.lineBottom = lineBottom; + + outerArea.updateCornerPoints(); + + areas.clear(); + areas.add(outerArea); + } + + public abstract void layout(); + + private void updateLineLimit() { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line line = lines.get(i); + updateUpperLine(line); + updateLowerLine(line); + } + } + + private void updateLowerLine(final Line line) { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line l = lines.get(i); + if (l.direction() != line.direction()) { + continue; + } + + if (l.attachStartLine() != line.attachStartLine() + || l.attachEndLine() != line.attachEndLine()) { + continue; + } + + if (l.direction() == Line.Direction.HORIZONTAL) { + if (l.minY() > line.lowerLine().maxY() && l.maxY() < line.minY()) { + line.setLowerLine(l); + } + } else { + if (l.minX() > line.lowerLine().maxX() && l.maxX() < line.minX()) { + line.setLowerLine(l); + } + } + } + } + + private void updateUpperLine(final Line line) { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line l = lines.get(i); + if (l.direction() != line.direction()) { + continue; + } + + if (l.attachStartLine() != line.attachStartLine() + || l.attachEndLine() != line.attachEndLine()) { + continue; + } + + if (l.direction() == Line.Direction.HORIZONTAL) { + if (l.maxY() < line.upperLine().minY() && l.minY() > line.maxY()) { + line.setUpperLine(l); + } + } else { + if (l.maxX() < line.upperLine().minX() && l.minX() > line.maxX()) { + line.setUpperLine(l); + } + } + } + } + + @Override + public int getAreaCount() { + return areas.size(); + } + + @Override + public void reset() { + lines.clear(); + areas.clear(); + areas.add(outerArea); + steps.clear(); + } + + @Override + public void update() { + int size = lines.size(); + for (int i = 0; i < size; i++) { + lines.get(i).update(width(), height()); + } + int areasSize = areas.size(); + for (int i = 0; i < areasSize; i++) { + areas.get(i).updateCornerPoints(); + } + } + + @Override + public float width() { + return outerArea == null ? 0 : outerArea.width(); + } + + @Override + public float height() { + return outerArea == null ? 0 : outerArea.height(); + } + + private void sortAreas() { + Collections.sort(areas, areaComparator); + } + + @Override + public List getOuterLines() { + return outerLines; + } + + @Override + public Area getOuterArea() { + return outerArea; + } + + public List getAreas() { + return areas; + } + + @Override + public SlantArea getArea(int position) { + return areas.get(position); + } + + @Override + public List getLines() { + return lines; + } + + @Override + public void setPadding(float padding) { + this.padding = padding; + for (Area area : areas) { + area.setPadding(padding); + } + + outerArea.lineLeft.startPoint().set(bounds.left + padding, bounds.top + padding); + outerArea.lineLeft.endPoint().set(bounds.left + padding, bounds.bottom - padding); + + outerArea.lineRight.startPoint().set(bounds.right - padding, bounds.top + padding); + outerArea.lineRight.endPoint().set(bounds.right - padding, bounds.bottom - padding); + + outerArea.updateCornerPoints(); + update(); + } + + @Override + public float getPadding() { + return padding; + } + + @Override + public float getRadian() { + return radian; + } + + @Override + public void setRadian(float radian) { + this.radian = radian; + for (Area area : areas) { + area.setRadian(radian); + } + } + + @Override + public int getColor() { + return color; + } + + @Override + public void setColor(int color) { + this.color = color; + } + + protected List addLine(int position, Line.Direction direction, float ratio) { + return addLine(position, direction, ratio, ratio); + } + + protected List addLine(int position, Line.Direction direction, float startRatio, + float endRatio) { + SlantArea area = areas.get(position); + areas.remove(area); + SlantLine line = createLine(area, direction, startRatio, endRatio); + lines.add(line); + + List increasedAreas = cutAreaWith(area, line); + + areas.addAll(increasedAreas); + + updateLineLimit(); + sortAreas(); + + Step step = new Step(); + step.type = Step.ADD_LINE; + step.direction = direction == Line.Direction.HORIZONTAL ? 0 : 1; + step.position = position; + steps.add(step); + + return increasedAreas; + } + + protected void addCross(int position, float startRatio1, float endRatio1, + float startRatio2, float endRatio2) { + SlantArea area = areas.get(position); + areas.remove(area); + + SlantLine horizontal = createLine(area, Line.Direction.HORIZONTAL, startRatio1, endRatio1); + SlantLine vertical = createLine(area, Line.Direction.VERTICAL, startRatio2, endRatio2); + lines.add(horizontal); + lines.add(vertical); + + List increasedAreas = cutAreaCross(area, horizontal, vertical); + + areas.addAll(increasedAreas); + sortAreas(); + + Step step = new Step(); + step.type = Step.ADD_CROSS; + step.position = position; + steps.add(step); + } + + protected void cutArea(int position, int hSize, int vSize) { + SlantArea area = areas.get(position); + areas.remove(area); + + Pair, List> spilt = + cutAreaWith(area, hSize, vSize); + + lines.addAll(spilt.first); + areas.addAll(spilt.second); + + updateLineLimit(); + sortAreas(); + + Step step = new Step(); + step.type = Step.CUT_EQUAL_PART_ONE; + step.position = position; + step.hSize = hSize; + step.vSize = vSize; + steps.add(step); + } + + @Override + public Info generateInfo() { + Info info = new Info(); + info.type = Info.TYPE_SLANT; + info.padding = padding; + info.radian = radian; + info.color = color; + info.steps = steps; + ArrayList lineInfos = new ArrayList<>(); + for (Line line : lines) { + LineInfo lineInfo = new LineInfo(line); + lineInfos.add(lineInfo); + } + info.lineInfos = lineInfos; + return info; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantUtils.java new file mode 100644 index 0000000..b6d57bc --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/slant/SlantUtils.java @@ -0,0 +1,482 @@ +package com.huantansheng.easyphotos.models.puzzle.slant; + +import android.graphics.PointF; +import android.util.Pair; + + +import com.huantansheng.easyphotos.models.puzzle.Line; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +class SlantUtils { + private static final PointF A = new PointF(); + private static final PointF B = new PointF(); + private static final PointF C = new PointF(); + private static final PointF D = new PointF(); + private static final PointF AB = new PointF(); + private static final PointF AM = new PointF(); + private static final PointF BC = new PointF(); + private static final PointF BM = new PointF(); + private static final PointF CD = new PointF(); + private static final PointF CM = new PointF(); + private static final PointF DA = new PointF(); + private static final PointF DM = new PointF(); + + private SlantUtils() { + //no instance + } + + static float distance(PointF one, PointF two) { + return (float) Math.sqrt(Math.pow(two.x - one.x, 2) + Math.pow(two.y - one.y, 2)); + } + + static List cutAreaWith(SlantArea area, SlantLine line) { + List areas = new ArrayList<>(); + SlantArea area1 = new SlantArea(area); + SlantArea area2 = new SlantArea(area); + + if (line.direction == Line.Direction.HORIZONTAL) { + area1.lineBottom = line; + area1.leftBottom = line.start; + area1.rightBottom = line.end; + + area2.lineTop = line; + area2.leftTop = line.start; + area2.rightTop = line.end; + } else { + area1.lineRight = line; + area1.rightTop = line.start; + area1.rightBottom = line.end; + + area2.lineLeft = line; + area2.leftTop = line.start; + area2.leftBottom = line.end; + } + + areas.add(area1); + areas.add(area2); + + return areas; + } + + static SlantLine createLine(SlantArea area, Line.Direction direction, float startratio, + float endratio) { + SlantLine line = new SlantLine(direction); + + if (direction == Line.Direction.HORIZONTAL) { + line.start = getPoint(area.leftTop, area.leftBottom, Line.Direction.VERTICAL, startratio); + line.end = getPoint(area.rightTop, area.rightBottom, Line.Direction.VERTICAL, endratio); + + line.attachLineStart = area.lineLeft; + line.attachLineEnd = area.lineRight; + + line.upperLine = area.lineBottom; + line.lowerLine = area.lineTop; + } else { + line.start = getPoint(area.leftTop, area.rightTop, Line.Direction.HORIZONTAL, startratio); + line.end = getPoint(area.leftBottom, area.rightBottom, Line.Direction.HORIZONTAL, endratio); + + line.attachLineStart = area.lineTop; + line.attachLineEnd = area.lineBottom; + + line.upperLine = area.lineRight; + line.lowerLine = area.lineLeft; + } + + return line; + } + + static Pair, List> cutAreaWith(final SlantArea area, + final int horizontalSize, final int verticalSize) { + List areaList = new ArrayList<>(); + List horizontalLines = new ArrayList<>(horizontalSize); + + SlantArea restArea = new SlantArea(area); + for (int i = horizontalSize + 1; i > 1; i--) { + SlantLine horizontalLine = + createLine(restArea, Line.Direction.HORIZONTAL, (float) (i - 1) / i - 0.025f, (float) (i - 1) / i + 0.025f); + horizontalLines.add(horizontalLine); + restArea.lineBottom = horizontalLine; + restArea.leftBottom = horizontalLine.start; + restArea.rightBottom = horizontalLine.end; + } + List verticalLines = new ArrayList<>(); + + restArea = new SlantArea(area); + for (int i = verticalSize + 1; i > 1; i--) { + SlantLine verticalLine = + createLine(restArea, Line.Direction.VERTICAL, (float) (i - 1) / i + 0.025f, (float) (i - 1) / i - 0.025f); + verticalLines.add(verticalLine); + SlantArea spiltArea = new SlantArea(restArea); + spiltArea.lineLeft = verticalLine; + spiltArea.leftTop = verticalLine.start; + spiltArea.leftBottom = verticalLine.end; + + int size = horizontalLines.size(); + for (int j = 0; j <= size; j++) { + SlantArea blockArea = new SlantArea(spiltArea); + if (j == 0) { + blockArea.lineTop = horizontalLines.get(j); + } else if (j == size) { + blockArea.lineBottom = horizontalLines.get(j - 1); + + CrossoverPointF leftBottom = + new CrossoverPointF(blockArea.lineBottom, blockArea.lineLeft); + intersectionOfLines(leftBottom, blockArea.lineBottom, blockArea.lineLeft); + CrossoverPointF rightBottom = + new CrossoverPointF(blockArea.lineBottom, blockArea.lineRight); + intersectionOfLines(rightBottom, blockArea.lineBottom, blockArea.lineRight); + blockArea.leftBottom = leftBottom; + blockArea.rightBottom = rightBottom; + } else { + blockArea.lineTop = horizontalLines.get(j); + blockArea.lineBottom = horizontalLines.get(j - 1); + } + CrossoverPointF leftTop = new CrossoverPointF(blockArea.lineTop, blockArea.lineLeft); + intersectionOfLines(leftTop, blockArea.lineTop, blockArea.lineLeft); + CrossoverPointF rightTop = new CrossoverPointF(blockArea.lineTop, blockArea.lineRight); + intersectionOfLines(rightTop, blockArea.lineTop, blockArea.lineRight); + blockArea.leftTop = leftTop; + blockArea.rightTop = rightTop; + areaList.add(blockArea); + } + restArea.lineRight = verticalLine; + restArea.rightTop = verticalLine.start; + restArea.rightBottom = verticalLine.end; + } + int size = horizontalLines.size(); + for (int j = 0; j <= size; j++) { + SlantArea blockArea = new SlantArea(restArea); + if (j == 0) { + blockArea.lineTop = horizontalLines.get(j); + } else if (j == size) { + blockArea.lineBottom = horizontalLines.get(j - 1); + CrossoverPointF leftBottom = new CrossoverPointF(blockArea.lineBottom, blockArea.lineLeft); + intersectionOfLines(leftBottom, blockArea.lineBottom, blockArea.lineLeft); + CrossoverPointF rightBottom = + new CrossoverPointF(blockArea.lineBottom, blockArea.lineRight); + intersectionOfLines(rightBottom, blockArea.lineBottom, blockArea.lineRight); + blockArea.leftBottom = leftBottom; + blockArea.rightBottom = rightBottom; + } else { + blockArea.lineTop = horizontalLines.get(j); + blockArea.lineBottom = horizontalLines.get(j - 1); + } + CrossoverPointF leftTop = new CrossoverPointF(blockArea.lineTop, blockArea.lineLeft); + intersectionOfLines(leftTop, blockArea.lineTop, blockArea.lineLeft); + CrossoverPointF rightTop = new CrossoverPointF(blockArea.lineTop, blockArea.lineRight); + intersectionOfLines(rightTop, blockArea.lineTop, blockArea.lineRight); + blockArea.leftTop = leftTop; + blockArea.rightTop = rightTop; + areaList.add(blockArea); + } + + List lines = new ArrayList<>(); + lines.addAll(horizontalLines); + lines.addAll(verticalLines); + return new Pair<>(lines, areaList); + } + + static List cutAreaCross(final SlantArea area, final SlantLine horizontal, + final SlantLine vertical) { + List list = new ArrayList<>(); + + CrossoverPointF crossoverPoint = new CrossoverPointF(horizontal, vertical); + intersectionOfLines(crossoverPoint, horizontal, vertical); + + SlantArea one = new SlantArea(area); + one.lineBottom = horizontal; + one.lineRight = vertical; + + one.rightTop = vertical.start; + one.rightBottom = crossoverPoint; + one.leftBottom = horizontal.start; + list.add(one); + + SlantArea two = new SlantArea(area); + two.lineBottom = horizontal; + two.lineLeft = vertical; + + two.leftTop = vertical.start; + two.rightBottom = horizontal.end; + two.leftBottom = crossoverPoint; + list.add(two); + + SlantArea three = new SlantArea(area); + three.lineTop = horizontal; + three.lineRight = vertical; + + three.leftTop = horizontal.start; + three.rightTop = crossoverPoint; + three.rightBottom = vertical.end; + list.add(three); + + SlantArea four = new SlantArea(area); + four.lineTop = horizontal; + four.lineLeft = vertical; + + four.leftTop = crossoverPoint; + four.rightTop = horizontal.end; + four.leftBottom = vertical.end; + list.add(four); + + return list; + } + + private static CrossoverPointF getPoint(final PointF start, final PointF end, + final Line.Direction direction, float ratio) { + CrossoverPointF point = new CrossoverPointF(); + getPoint(point, start, end, direction, ratio); + return point; + } + + static void getPoint(final PointF dst, final PointF start, final PointF end, + final Line.Direction direction, float ratio) { + float deltaY = Math.abs(start.y - end.y); + float deltaX = Math.abs(start.x - end.x); + float maxY = Math.max(start.y, end.y); + float minY = Math.min(start.y, end.y); + float maxX = Math.max(start.x, end.x); + float minX = Math.min(start.x, end.x); + if (direction == Line.Direction.HORIZONTAL) { + dst.x = minX + deltaX * ratio; + if (start.y < end.y) { + dst.y = minY + ratio * deltaY; + } else { + dst.y = maxY - ratio * deltaY; + } + } else { + dst.y = minY + deltaY * ratio; + if (start.x < end.x) { + dst.x = minX + ratio * deltaX; + } else { + dst.x = maxX - ratio * deltaX; + } + } + } + + // å‰ä¹˜ + private static float crossProduct(final PointF a, final PointF b) { + return a.x * b.y - b.x * a.y; + } + + /** + * 判断一个斜线区域是å¦åŒ…å«(x,y)点 + * + * @param area 斜线区域 + * @param x x + * @param y y + * @return 是å¦åŒ…å« + */ + static boolean contains(SlantArea area, float x, float y) { + AB.x = area.rightTop.x - area.leftTop.x; + AB.y = area.rightTop.y - area.leftTop.y; + + AM.x = x - area.leftTop.x; + AM.y = y - area.leftTop.y; + + BC.x = area.rightBottom.x - area.rightTop.x; + BC.y = area.rightBottom.y - area.rightTop.y; + + BM.x = x - area.rightTop.x; + BM.y = y - area.rightTop.y; + + CD.x = area.leftBottom.x - area.rightBottom.x; + CD.y = area.leftBottom.y - area.rightBottom.y; + + CM.x = x - area.rightBottom.x; + CM.y = y - area.rightBottom.y; + + DA.x = area.leftTop.x - area.leftBottom.x; + DA.y = area.leftTop.y - area.leftBottom.y; + + DM.x = x - area.leftBottom.x; + DM.y = y - area.leftBottom.y; + + return crossProduct(AB, AM) > 0 + && crossProduct(BC, BM) > 0 + && crossProduct(CD, CM) > 0 + && crossProduct(DA, DM) > 0; + } + + static boolean contains(SlantLine line, float x, float y, float extra) { + PointF start = line.start; + PointF end = line.end; + if (line.direction == Line.Direction.VERTICAL) { + A.x = start.x - extra; + A.y = start.y; + B.x = start.x + extra; + B.y = start.y; + C.x = end.x + extra; + C.y = end.y; + D.x = end.x - extra; + D.y = end.y; + } else { + A.x = start.x; + A.y = start.y - extra; + B.x = end.x; + B.y = end.y - extra; + C.x = end.x; + C.y = end.y + extra; + D.x = start.x; + D.y = start.y + extra; + } + + AB.x = B.x - A.x; + AB.y = B.y - A.y; + + AM.x = x - A.x; + AM.y = y - A.y; + + BC.x = C.x - B.x; + BC.y = C.y - B.y; + + BM.x = x - B.x; + BM.y = y - B.y; + + CD.x = D.x - C.x; + CD.y = D.y - C.y; + + CM.x = x - C.x; + CM.y = y - C.y; + + DA.x = A.x - D.x; + DA.y = A.y - D.y; + + DM.x = x - D.x; + DM.y = y - D.y; + + return crossProduct(AB, AM) > 0 + && crossProduct(BC, BM) > 0 + && crossProduct(CD, CM) > 0 + && crossProduct(DA, DM) > 0; + } + + /** + * 计算两线的交点 + * + * @param dst 计算出的交点 + * @param lineOne 线一 + * @param lineTwo 线二 + */ + static void intersectionOfLines(final CrossoverPointF dst, final SlantLine lineOne, + final SlantLine lineTwo) { + dst.horizontal = lineOne; + dst.vertical = lineTwo; + if (isParallel(lineOne, lineTwo)) { + dst.set(0, 0); + return; + } + + if (isHorizontalLine(lineOne) && isVerticalLine(lineTwo)) { + dst.set(lineTwo.start.x, lineOne.start.y); + return; + } + + if (isVerticalLine(lineOne) && isHorizontalLine(lineTwo)) { + dst.set(lineOne.start.x, lineTwo.start.y); + return; + } + + if (isHorizontalLine(lineOne) && !isVerticalLine(lineTwo)) { + float k = calculateSlope(lineTwo); + float b = calculateVerticalIntercept(lineTwo); + + dst.y = lineOne.start.y; + dst.x = (dst.y - b) / k; + return; + } + + if (isVerticalLine(lineOne) && !isHorizontalLine(lineTwo)) { + float k = calculateSlope(lineTwo); + float b = calculateVerticalIntercept(lineTwo); + + dst.x = lineOne.start.x; + dst.y = k * dst.x + b; + return; + } + + if (isHorizontalLine(lineTwo) && !isVerticalLine(lineOne)) { + float k = calculateSlope(lineOne); + float b = calculateVerticalIntercept(lineOne); + + dst.y = lineTwo.start.y; + dst.x = (dst.y - b) / k; + return; + } + + if (isVerticalLine(lineTwo) && !isHorizontalLine(lineOne)) { + float k = calculateSlope(lineOne); + float b = calculateVerticalIntercept(lineOne); + + dst.x = lineTwo.start.x; + dst.y = k * dst.x + b; + return; + } + + final float k1 = calculateSlope(lineOne); + final float b1 = calculateVerticalIntercept(lineOne); + + final float k2 = calculateSlope(lineTwo); + final float b2 = calculateVerticalIntercept(lineTwo); + + dst.x = (b2 - b1) / (k1 - k2); + dst.y = dst.x * k1 + b1; + } + + private static boolean isHorizontalLine(SlantLine line) { + return line.start.y == line.end.y; + } + + private static boolean isVerticalLine(SlantLine line) { + return line.start.x == line.end.x; + } + + /** + * 判断两æ¡çº¿æ˜¯å¦å¹³è¡Œ + * + * @param lineOne ç¬¬ä¸€æ¡ + * @param lineTwo ç¬¬äºŒæ¡ + * @return 是å¦å¹³è¡Œ + */ + private static boolean isParallel(final SlantLine lineOne, final SlantLine lineTwo) { + return calculateSlope(lineOne) == calculateSlope(lineTwo); + } + + /** + * 计算线的斜率 + * + * @param line 线 + * @return 线的斜率 + */ + static float calculateSlope(final SlantLine line) { + if (isHorizontalLine(line)) { + return 0f; + } else if (isVerticalLine(line)) { + return Float.POSITIVE_INFINITY; + } else { + return (line.start.y - line.end.y) / (line.start.x - line.end.x); + } + } + + /** + * è®¡ç®—çºµæˆªè· + * + * @param line 线 + * @return çºµæˆªè· + */ + private static float calculateVerticalIntercept(final SlantLine line) { + if (isHorizontalLine(line)) { + return line.start.y; + } else if (isVerticalLine(line)) { + return Float.POSITIVE_INFINITY; + } else { + float k = calculateSlope(line); + return line.start.y - k * line.start.x; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightArea.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightArea.java new file mode 100644 index 0000000..867424b --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightArea.java @@ -0,0 +1,231 @@ +package com.huantansheng.easyphotos.models.puzzle.straight; + +import android.graphics.Path; +import android.graphics.PointF; +import android.graphics.RectF; + +import com.huantansheng.easyphotos.models.puzzle.Area; +import com.huantansheng.easyphotos.models.puzzle.Line; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + + +/** + * @author wupanjie + */ +class StraightArea implements Area { + StraightLine lineLeft; + StraightLine lineTop; + StraightLine lineRight; + StraightLine lineBottom; + + private Path areaPath = new Path(); + private RectF areaRect = new RectF(); + private PointF[] handleBarPoints = new PointF[2]; + + private float paddingLeft; + private float paddingTop; + private float paddingRight; + private float paddingBottom; + private float radian; + + StraightArea(){ + handleBarPoints[0] = new PointF(); + handleBarPoints[1] = new PointF(); + } + + StraightArea(RectF baseRect) { + this(); + setBaseRect(baseRect); + } + + private void setBaseRect(RectF baseRect) { + PointF one = new PointF(baseRect.left, baseRect.top); + PointF two = new PointF(baseRect.right, baseRect.top); + PointF three = new PointF(baseRect.left, baseRect.bottom); + PointF four = new PointF(baseRect.right, baseRect.bottom); + + lineLeft = new StraightLine(one, three); + lineTop = new StraightLine(one, two); + lineRight = new StraightLine(two, four); + lineBottom = new StraightLine(three, four); + } + + StraightArea(StraightArea src) { + this.lineLeft = src.lineLeft; + this.lineTop = src.lineTop; + this.lineRight = src.lineRight; + this.lineBottom = src.lineBottom; + + handleBarPoints[0] = new PointF(); + handleBarPoints[1] = new PointF(); + } + + @Override + public float left() { + return lineLeft.minX() + paddingLeft; + } + + @Override + public float top() { + return lineTop.minY() + paddingTop; + } + + @Override + public float right() { + return lineRight.maxX() - paddingRight; + } + + @Override + public float bottom() { + return lineBottom.maxY() - paddingBottom; + } + + @Override + public float centerX() { + return (left() + right()) / 2; + } + + @Override + public float centerY() { + return (top() + bottom()) / 2; + } + + @Override + public float width() { + return right() - left(); + } + + @Override + public float height() { + return bottom() - top(); + } + + @Override + public PointF getCenterPoint() { + return new PointF(centerX(), centerY()); + } + + @Override + public boolean contains(PointF point) { + return contains(point.x, point.y); + } + + @Override + public boolean contains(float x, float y) { + return getAreaRect().contains(x, y); + } + + @Override + public boolean contains(Line line) { + return lineLeft == line || lineTop == line || lineRight == line || lineBottom == line; + } + + @Override + public Path getAreaPath() { + areaPath.reset(); + areaPath.addRoundRect(getAreaRect(),radian,radian, Path.Direction.CCW); + //areaPath.addRect(getAreaRect(), Path.Direction.CCW); + return areaPath; + } + + @Override + public RectF getAreaRect() { + areaRect.set(left(), top(), right(), bottom()); + return areaRect; + } + + @Override + public List getLines() { + return Arrays.asList((Line) lineLeft, lineTop, lineRight, lineBottom); + } + + @Override + public PointF[] getHandleBarPoints(Line line) { + if (line == lineLeft) { + handleBarPoints[0].x = left(); + handleBarPoints[0].y = top() + height() / 4; + handleBarPoints[1].x = left(); + handleBarPoints[1].y = top() + height() / 4 * 3; + } else if (line == lineTop) { + handleBarPoints[0].x = left() + width() / 4; + handleBarPoints[0].y = top(); + handleBarPoints[1].x = left() + width() / 4 * 3; + handleBarPoints[1].y = top(); + } else if (line == lineRight) { + handleBarPoints[0].x = right(); + handleBarPoints[0].y = top() + height() / 4; + handleBarPoints[1].x = right(); + handleBarPoints[1].y = top() + height() / 4 * 3; + } else if (line == lineBottom) { + handleBarPoints[0].x = left() + width() / 4; + handleBarPoints[0].y = bottom(); + handleBarPoints[1].x = left() + width() / 4 * 3; + handleBarPoints[1].y = bottom(); + } + return handleBarPoints; + } + + @Override + public float radian() { + return radian; + } + + @Override + public void setRadian(float radian) { + this.radian = radian; + } + + @Override + public float getPaddingLeft() { + return paddingLeft; + } + + @Override + public float getPaddingTop() { + return paddingTop; + } + + @Override + public float getPaddingRight() { + return paddingRight; + } + + @Override + public float getPaddingBottom() { + return paddingBottom; + } + + @Override + public void setPadding(float padding) { + setPadding(padding, padding, padding, padding); + } + + @Override + public void setPadding(float paddingLeft, float paddingTop, float paddingRight, + float paddingBottom) { + this.paddingLeft = paddingLeft; + this.paddingTop = paddingTop; + this.paddingRight = paddingRight; + this.paddingBottom = paddingBottom; + } + + static class AreaComparator implements Comparator { + @Override + public int compare(StraightArea lhs, StraightArea rhs) { + if (lhs.top() < rhs.top()) { + return -1; + } else if (lhs.top() == rhs.top()) { + if (lhs.left() < rhs.left()) { + return -1; + } else { + return 1; + } + } else { + return 1; + } + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightLine.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightLine.java new file mode 100644 index 0000000..017446b --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightLine.java @@ -0,0 +1,215 @@ +package com.huantansheng.easyphotos.models.puzzle.straight; + +import android.graphics.PointF; +import android.graphics.RectF; +import android.util.Log; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +import static java.lang.Math.max; +import static java.lang.Math.min; + +/** + * @author wupanjie + */ +class StraightLine implements Line { + private PointF start; + private PointF end; + + private PointF previousStart = new PointF(); + private PointF previousEnd = new PointF(); + + public Line.Direction direction = Direction.HORIZONTAL; + + StraightLine attachLineStart; + StraightLine attachLineEnd; + + private Line upperLine; + private Line lowerLine; + + private RectF bounds = new RectF(); + + StraightLine(PointF start, PointF end) { + this.start = start; + this.end = end; + + if (start.x == end.x) { + direction = Line.Direction.VERTICAL; + } else if (start.y == end.y) { + direction = Line.Direction.HORIZONTAL; + } else { + Log.d("StraightLine", "StraightLine: current only support two direction"); + } + } + + @Override + public float length() { + return (float) Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2)); + } + + @Override + public PointF startPoint() { + return start; + } + + @Override + public PointF endPoint() { + return end; + } + + @Override + public Line lowerLine() { + return lowerLine; + } + + @Override + public Line upperLine() { + return upperLine; + } + + @Override + public Line attachStartLine() { + return attachLineStart; + } + + @Override + public Line attachEndLine() { + return attachLineEnd; + } + + @Override + public void setLowerLine(Line lowerLine) { + this.lowerLine = lowerLine; + } + + @Override + public void setUpperLine(Line upperLine) { + this.upperLine = upperLine; + } + + void setAttachLineStart(StraightLine attachLineStart) { + this.attachLineStart = attachLineStart; + } + + void setAttachLineEnd(StraightLine attachLineEnd) { + this.attachLineEnd = attachLineEnd; + } + + @Override + public Direction direction() { + return direction; + } + + @Override + public float slope() { + return direction == Direction.HORIZONTAL ? 0 : Float.MAX_VALUE; + } + + @Override + public boolean contains(float x, float y, float extra) { + if (direction == Line.Direction.HORIZONTAL) { + bounds.left = start.x; + bounds.right = end.x; + bounds.top = start.y - extra / 2; + bounds.bottom = start.y + extra / 2; + } else if (direction == Line.Direction.VERTICAL) { + bounds.top = start.y; + bounds.bottom = end.y; + bounds.left = start.x - extra / 2; + bounds.right = start.x + extra / 2; + } + + return bounds.contains(x, y); + } + + @Override + public void prepareMove() { + previousStart.set(start); + previousEnd.set(end); + } + + @Override + public boolean move(float offset, float extra) { + if (direction == Line.Direction.HORIZONTAL) { + if (previousStart.y + offset < lowerLine.maxY() + extra + || previousStart.y + offset > upperLine.minY() - extra + || previousEnd.y + offset < lowerLine.maxY() + extra + || previousEnd.y + offset > upperLine.minY() - extra) { + return false; + } + + start.y = previousStart.y + offset; + end.y = previousEnd.y + offset; + } else { + if (previousStart.x + offset < lowerLine.maxX() + extra + || previousStart.x + offset > upperLine.minX() - extra + || previousEnd.x + offset < lowerLine.maxX() + extra + || previousEnd.x + offset > upperLine.minX() - extra) { + return false; + } + + start.x = previousStart.x + offset; + end.x = previousEnd.x + offset; + } + + return true; + } + + @Override + public void update(float layoutWidth, float layoutHeight) { + if (direction == Line.Direction.HORIZONTAL) { + if (attachLineStart != null) { + start.x = attachLineStart.getPosition(); + } + if (attachLineEnd != null) { + end.x = attachLineEnd.getPosition(); + } + } else if (direction == Line.Direction.VERTICAL) { + if (attachLineStart != null) { + start.y = attachLineStart.getPosition(); + } + if (attachLineEnd != null) { + end.y = attachLineEnd.getPosition(); + } + } + } + + public float getPosition() { + if (direction == Line.Direction.HORIZONTAL) { + return start.y; + } else { + return start.x; + } + } + + @Override + public float minX() { + return min(start.x, end.x); + } + + @Override + public float maxX() { + return max(start.x, end.x); + } + + @Override + public float minY() { + return min(start.y, end.y); + } + + @Override + public float maxY() { + return max(start.y, end.y); + } + + @Override + public void offset(float x, float y) { + start.offset(x, y); + end.offset(x, y); + } + + @Override + public String toString() { + return "start --> " + start.toString() + ",end --> " + end.toString(); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightPuzzleLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightPuzzleLayout.java new file mode 100644 index 0000000..9a24d58 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightPuzzleLayout.java @@ -0,0 +1,359 @@ +package com.huantansheng.easyphotos.models.puzzle.straight; + +import android.graphics.PointF; +import android.graphics.RectF; +import android.util.Pair; + +import com.huantansheng.easyphotos.models.puzzle.Area; +import com.huantansheng.easyphotos.models.puzzle.Line; +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import static com.huantansheng.easyphotos.models.puzzle.straight.StraightUtils.createLine; +import static com.huantansheng.easyphotos.models.puzzle.straight.StraightUtils.cutAreaCross; +import static com.huantansheng.easyphotos.models.puzzle.straight.StraightUtils.cutAreaSpiral; + + +/** + * @author wupanjie + */ +public abstract class StraightPuzzleLayout implements PuzzleLayout { + private RectF bounds; + private StraightArea outerArea; + + private List areas = new ArrayList<>(); + private List lines = new ArrayList<>(); + private List outerLines = new ArrayList<>(4); + + private float padding; + private float radian; + private int color; + + private Comparator areaComparator = new StraightArea.AreaComparator(); + + private ArrayList steps = new ArrayList<>(); + + protected StraightPuzzleLayout() { + + } + + @Override + public void setOuterBounds(RectF bounds) { + reset(); + + this.bounds = bounds; + + PointF one = new PointF(bounds.left, bounds.top); + PointF two = new PointF(bounds.right, bounds.top); + PointF three = new PointF(bounds.left, bounds.bottom); + PointF four = new PointF(bounds.right, bounds.bottom); + + StraightLine lineLeft = new StraightLine(one, three); + StraightLine lineTop = new StraightLine(one, two); + StraightLine lineRight = new StraightLine(two, four); + StraightLine lineBottom = new StraightLine(three, four); + + outerLines.clear(); + + outerLines.add(lineLeft); + outerLines.add(lineTop); + outerLines.add(lineRight); + outerLines.add(lineBottom); + + outerArea = new StraightArea(); + outerArea.lineLeft = lineLeft; + outerArea.lineTop = lineTop; + outerArea.lineRight = lineRight; + outerArea.lineBottom = lineBottom; + + areas.clear(); + areas.add(outerArea); + } + + @Override + public abstract void layout(); + + @Override + public int getAreaCount() { + return areas.size(); + } + + @Override + public List getOuterLines() { + return outerLines; + } + + @Override + public List getLines() { + return lines; + } + + @Override + public void update() { + for (Line line : lines) { + line.update(width(), height()); + } + } + + @Override + public float width() { + return outerArea == null ? 0 : outerArea.width(); + } + + @Override + public float height() { + return outerArea == null ? 0 : outerArea.height(); + } + + @Override + public void reset() { + lines.clear(); + areas.clear(); + areas.add(outerArea); + steps.clear(); + } + + @Override + public Area getArea(int position) { + return areas.get(position); + } + + @Override + + public StraightArea getOuterArea() { + return outerArea; + } + + @Override + public void setPadding(float padding) { + this.padding = padding; + + for (Area area : areas) { + area.setPadding(padding); + } + + outerArea.lineLeft.startPoint().set(bounds.left + padding, bounds.top + padding); + outerArea.lineLeft.endPoint().set(bounds.left + padding, bounds.bottom - padding); + + outerArea.lineRight.startPoint().set(bounds.right - padding, bounds.top + padding); + outerArea.lineRight.endPoint().set(bounds.right - padding, bounds.bottom - padding); + + update(); + } + + @Override + public float getPadding() { + return padding; + } + + protected void addLine(int position, Line.Direction direction, float ratio) { + StraightArea area = areas.get(position); + addLine(area, direction, ratio); + + Step step = new Step(); + step.type = Step.ADD_LINE; + step.direction = direction == Line.Direction.HORIZONTAL ? 0 : 1; + step.position = position; + steps.add(step); + } + + private List addLine(StraightArea area, Line.Direction direction, float ratio) { + areas.remove(area); + StraightLine line = createLine(area, direction, ratio); + lines.add(line); + + List increasedArea = StraightUtils.cutArea(area, line); + areas.addAll(increasedArea); + + updateLineLimit(); + sortAreas(); + + return increasedArea; + } + + protected void cutAreaEqualPart(int position, int part, Line.Direction direction) { + StraightArea temp = areas.get(position); + for (int i = part; i > 1; i--) { + temp = addLine(temp, direction, (float) (i - 1) / i).get(0); + } + + Step step = new Step(); + step.type = Step.CUT_EQUAL_PART_TWO; + step.part = part; + step.position = position; + step.direction = direction == Line.Direction.HORIZONTAL ? 0 : 1; + steps.add(step); + } + + protected void addCross(int position, float ratio) { + addCross(position, ratio, ratio); + } + + protected void addCross(int position, float horizontalRatio, float verticalRatio) { + StraightArea area = areas.get(position); + areas.remove(area); + StraightLine horizontal = createLine(area, Line.Direction.HORIZONTAL, horizontalRatio); + StraightLine vertical = createLine(area, Line.Direction.VERTICAL, verticalRatio); + lines.add(horizontal); + lines.add(vertical); + + List newAreas = cutAreaCross(area, horizontal, vertical); + areas.addAll(newAreas); + + updateLineLimit(); + sortAreas(); + + Step step = new Step(); + step.type = Step.ADD_CROSS; + step.position = position; + steps.add(step); + } + + protected void cutAreaEqualPart(int position, int hSize, int vSize) { + StraightArea area = areas.get(position); + areas.remove(area); + Pair, List> increased = + StraightUtils.cutArea(area, hSize, vSize); + List newLines = increased.first; + List newAreas = increased.second; + + lines.addAll(newLines); + areas.addAll(newAreas); + + updateLineLimit(); + sortAreas(); + + Step step = new Step(); + step.type = Step.CUT_EQUAL_PART_ONE; + step.position = position; + step.hSize = hSize; + step.vSize = vSize; + steps.add(step); + } + + protected void cutSpiral(int position) { + StraightArea area = areas.get(position); + areas.remove(area); + Pair, List> spilt = cutAreaSpiral(area); + + lines.addAll(spilt.first); + areas.addAll(spilt.second); + + updateLineLimit(); + sortAreas(); + + Step step = new Step(); + step.type = Step.CUT_SPIRAL; + step.position = position; + steps.add(step); + } + + private void sortAreas() { + Collections.sort(areas, areaComparator); + } + + private void updateLineLimit() { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line line = lines.get(i); + updateUpperLine(line); + updateLowerLine(line); + } + } + + private void updateLowerLine(final Line line) { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line l = lines.get(i); + if (l == line) { + continue; + } + + if (l.direction() != line.direction()) { + continue; + } + + if (l.direction() == Line.Direction.HORIZONTAL) { + if (l.maxX() <= line.minX() || line.maxX() <= l.minX()) continue; + if (l.minY() > line.lowerLine().maxY() && l.maxY() < line.minY()) { + line.setLowerLine(l); + } + } else { + if (l.maxY() <= line.minY() || line.maxY() <= l.minY()) continue; + if (l.minX() > line.lowerLine().maxX() && l.maxX() < line.minX()) { + line.setLowerLine(l); + } + } + } + } + + private void updateUpperLine(final Line line) { + int size = lines.size(); + for (int i = 0; i < size; i++) { + Line l = lines.get(i); + if (l == line) { + continue; + } + + if (l.direction() != line.direction()) { + continue; + } + + if (l.direction() == Line.Direction.HORIZONTAL) { + if (l.maxX() <= line.minX() || line.maxX() <= l.minX()) continue; + if (l.maxY() < line.upperLine().minY() && l.minY() > line.maxY()) { + line.setUpperLine(l); + } + } else { + if (l.maxY() <= line.minY() || line.maxY() <= l.minY()) continue; + if (l.maxX() < line.upperLine().minX() && l.minX() > line.maxX()) { + line.setUpperLine(l); + } + } + } + } + + @Override + public float getRadian() { + return radian; + } + + @Override + public void setRadian(float radian) { + this.radian = radian; + for (Area area : areas) { + area.setRadian(radian); + } + } + + @Override + public int getColor() { + return color; + } + + @Override + public void setColor(int color) { + this.color = color; + } + + @Override + public Info generateInfo() { + Info info = new Info(); + info.type = Info.TYPE_STRAIGHT; + info.padding = padding; + info.radian = radian; + info.color = color; + info.steps = steps; + ArrayList lineInfos = new ArrayList<>(); + for (Line line : lines) { + LineInfo lineInfo = new LineInfo(line); + lineInfos.add(lineInfo); + } + info.lineInfos = lineInfos; + return info; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightUtils.java new file mode 100644 index 0000000..47d1411 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/straight/StraightUtils.java @@ -0,0 +1,236 @@ +package com.huantansheng.easyphotos.models.puzzle.straight; + +import android.graphics.PointF; +import android.util.Pair; + + +import com.huantansheng.easyphotos.models.puzzle.Line; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +class StraightUtils { + static StraightLine createLine(final StraightArea area, final Line.Direction direction, + final float ratio) { + PointF one = new PointF(); + PointF two = new PointF(); + if (direction == Line.Direction.HORIZONTAL) { + one.x = area.left(); + one.y = area.height() * ratio + area.top(); + two.x = area.right(); + two.y = area.height() * ratio + area.top(); + } else if (direction == Line.Direction.VERTICAL) { + one.x = area.width() * ratio + area.left(); + one.y = area.top(); + two.x = area.width() * ratio + area.left(); + two.y = area.bottom(); + } + + StraightLine line = new StraightLine(one, two); + + if (direction == Line.Direction.HORIZONTAL) { + line.attachLineStart = area.lineLeft; + line.attachLineEnd = area.lineRight; + + line.setUpperLine(area.lineBottom); + line.setLowerLine(area.lineTop); + } else if (direction == Line.Direction.VERTICAL) { + line.attachLineStart = area.lineTop; + line.attachLineEnd = area.lineBottom; + + line.setUpperLine(area.lineRight); + line.setLowerLine(area.lineLeft); + } + + return line; + } + + static List cutArea(final StraightArea area, final StraightLine line) { + List list = new ArrayList<>(); + if (line.direction() == Line.Direction.HORIZONTAL) { + StraightArea one = new StraightArea(area); + one.lineBottom = line; + list.add(one); + + StraightArea two = new StraightArea(area); + two.lineTop = line; + list.add(two); + } else if (line.direction() == Line.Direction.VERTICAL) { + StraightArea one = new StraightArea(area); + one.lineRight = line; + list.add(one); + + StraightArea two = new StraightArea(area); + two.lineLeft = line; + list.add(two); + } + + return list; + } + + static Pair, List> cutArea(final StraightArea area, + final int horizontalSize, + final int verticalSize) { + List areaList = new ArrayList<>(); + List horizontalLines = new ArrayList<>(horizontalSize); + + StraightArea restArea = new StraightArea(area); + for (int i = horizontalSize + 1; i > 1; i--) { + StraightLine horizontalLine = + createLine(restArea, Line.Direction.HORIZONTAL, (float) (i - 1) / i); + horizontalLines.add(horizontalLine); + restArea.lineBottom = horizontalLine; + } + List verticalLines = new ArrayList<>(); + + restArea = new StraightArea(area); + for (int i = verticalSize + 1; i > 1; i--) { + StraightLine verticalLine = + createLine(restArea, Line.Direction.VERTICAL, (float) (i - 1) / i); + verticalLines.add(verticalLine); + StraightArea spiltArea = new StraightArea(restArea); + spiltArea.lineLeft = verticalLine; + int size = horizontalLines.size(); + for (int j = 0; j <= size; j++) { + StraightArea blockArea = new StraightArea(spiltArea); + if (j == 0) { + blockArea.lineTop = horizontalLines.get(j); + } else if (j == size) { + blockArea.lineBottom = horizontalLines.get(j - 1); + } else { + blockArea.lineTop = horizontalLines.get(j); + blockArea.lineBottom = horizontalLines.get(j - 1); + } + areaList.add(blockArea); + } + restArea.lineRight = verticalLine; + } + int size = horizontalLines.size(); + for (int j = 0; j <= size; j++) { + StraightArea blockArea = new StraightArea(restArea); + if (j == 0) { + blockArea.lineTop = horizontalLines.get(j); + } else if (j == horizontalLines.size()) { + blockArea.lineBottom = horizontalLines.get(j - 1); + } else { + blockArea.lineTop = horizontalLines.get(j); + blockArea.lineBottom = horizontalLines.get(j - 1); + } + areaList.add(blockArea); + } + + List lines = new ArrayList<>(); + lines.addAll(horizontalLines); + lines.addAll(verticalLines); + return new Pair<>(lines, areaList); + } + + static List cutAreaCross(final StraightArea area, final StraightLine horizontal, + final StraightLine vertical) { + List list = new ArrayList<>(); + + StraightArea one = new StraightArea(area); + one.lineBottom = horizontal; + one.lineRight = vertical; + list.add(one); + + StraightArea two = new StraightArea(area); + two.lineBottom = horizontal; + two.lineLeft = vertical; + list.add(two); + + StraightArea three = new StraightArea(area); + three.lineTop = horizontal; + three.lineRight = vertical; + list.add(three); + + StraightArea four = new StraightArea(area); + four.lineTop = horizontal; + four.lineLeft = vertical; + list.add(four); + + return list; + } + + static Pair, List> cutAreaSpiral(final StraightArea area) { + List lines = new ArrayList<>(); + List areas = new ArrayList<>(); + + float width = area.width(); + float height = area.height(); + + float left = area.left(); + float top = area.top(); + + PointF one = new PointF(left, top + height / 3); + PointF two = new PointF(left + width / 3 * 2, top); + PointF three = new PointF(left + width, top + height / 3 * 2); + PointF four = new PointF(left + width / 3, top + height); + PointF five = new PointF(left + width / 3, top + height / 3); + PointF six = new PointF(left + width / 3 * 2, top + height / 3); + PointF seven = new PointF(left + width / 3 * 2, top + height / 3 * 2); + PointF eight = new PointF(left + width / 3, top + height / 3 * 2); + + StraightLine l1 = new StraightLine(one, six); + StraightLine l2 = new StraightLine(two, seven); + StraightLine l3 = new StraightLine(eight, three); + StraightLine l4 = new StraightLine(five, four); + + l1.setAttachLineStart(area.lineLeft); + l1.setAttachLineEnd(l2); + l1.setLowerLine(area.lineTop); + l1.setUpperLine(l3); + + l2.setAttachLineStart(area.lineTop); + l2.setAttachLineEnd(l3); + l2.setLowerLine(l4); + l2.setUpperLine(area.lineRight); + + l3.setAttachLineStart(l4); + l3.setAttachLineEnd(area.lineRight); + l3.setLowerLine(l1); + l3.setUpperLine(area.lineBottom); + + l4.setAttachLineStart(l1); + l4.setAttachLineEnd(area.lineBottom); + l4.setLowerLine(area.lineLeft); + l4.setUpperLine(l2); + + lines.add(l1); + lines.add(l2); + lines.add(l3); + lines.add(l4); + + StraightArea b1 = new StraightArea(area); + b1.lineRight = l2; + b1.lineBottom = l1; + areas.add(b1); + + StraightArea b2 = new StraightArea(area); + b2.lineLeft = l2; + b2.lineBottom = l3; + areas.add(b2); + + StraightArea b3 = new StraightArea(area); + b3.lineRight = l4; + b3.lineTop = l1; + areas.add(b3); + + StraightArea b4 = new StraightArea(area); + b4.lineTop = l1; + b4.lineRight = l2; + b4.lineLeft = l4; + b4.lineBottom = l3; + areas.add(b4); + + StraightArea b5 = new StraightArea(area); + b5.lineLeft = l4; + b5.lineTop = l3; + areas.add(b5); + + return new Pair<>(lines, areas); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/NumberSlantLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/NumberSlantLayout.java new file mode 100644 index 0000000..2779cd0 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/NumberSlantLayout.java @@ -0,0 +1,33 @@ +package com.huantansheng.easyphotos.models.puzzle.template.slant; + +import android.util.Log; + +import com.huantansheng.easyphotos.models.puzzle.slant.SlantPuzzleLayout; + + +/** + * @author wupanjie + */ + +public abstract class NumberSlantLayout extends SlantPuzzleLayout { + + static final String TAG = "NumberSlantLayout"; + protected int theme; + + public NumberSlantLayout(int theme) { + if (theme >= getThemeCount()) { + Log.e(TAG, "NumberSlantLayout: the most theme count is " + + getThemeCount() + + " ,you should let theme from 0 to " + + (getThemeCount() - 1) + + " ."); + } + this.theme = theme; + } + + public abstract int getThemeCount(); + + public int getTheme() { + return theme; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/OneSlantLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/OneSlantLayout.java new file mode 100644 index 0000000..43bdfd4 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/OneSlantLayout.java @@ -0,0 +1,36 @@ +package com.huantansheng.easyphotos.models.puzzle.template.slant; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ + +public class OneSlantLayout extends NumberSlantLayout { + public OneSlantLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 4; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 0.56f, 0.44f); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, 0.56f, 0.44f); + break; + case 2: + addCross(0, 0.56f, 0.44f, 0.56f, 0.44f); + break; + case 3: + cutArea(0, 1, 2); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/SlantLayoutHelper.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/SlantLayoutHelper.java new file mode 100644 index 0000000..6918b46 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/SlantLayoutHelper.java @@ -0,0 +1,70 @@ +package com.huantansheng.easyphotos.models.puzzle.template.slant; + + + +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public class SlantLayoutHelper { + private SlantLayoutHelper() { + + } + + public static List getAllThemeLayout(int pieceCount) { + List puzzleLayouts = new ArrayList<>(); + switch (pieceCount) { + case 1: + for (int i = 0; i < 4; i++) { + puzzleLayouts.add(new OneSlantLayout(i)); + } + break; + case 2: + for (int i = 0; i < 2; i++) { + puzzleLayouts.add(new TwoSlantLayout(i)); + } + break; + case 3: + for (int i = 0; i < 6; i++) { + puzzleLayouts.add(new ThreeSlantLayout(i)); + } + break; + //case 4: + // for (int i = 0; i < 8; i++) { + // puzzleLayouts.add(new FourStraightLayout(i)); + // } + // break; + //case 5: + // for (int i = 0; i < 17; i++) { + // puzzleLayouts.add(new FiveStraightLayout(i)); + // } + // break; + //case 6: + // for (int i = 0; i < 12; i++) { + // puzzleLayouts.add(new SixStraightLayout(i)); + // } + // break; + //case 7: + // for (int i = 0; i < 9; i++) { + // puzzleLayouts.add(new SevenStraightLayout(i)); + // } + // break; + //case 8: + // for (int i = 0; i < 11; i++) { + // puzzleLayouts.add(new EightStraightLayout(i)); + // } + // break; + //case 9: + // for (int i = 0; i < 8; i++) { + // puzzleLayouts.add(new NineStraightLayout(i)); + // } + // break; + } + + return puzzleLayouts; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/ThreeSlantLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/ThreeSlantLayout.java new file mode 100644 index 0000000..3fca36a --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/ThreeSlantLayout.java @@ -0,0 +1,48 @@ +package com.huantansheng.easyphotos.models.puzzle.template.slant; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ + +public class ThreeSlantLayout extends NumberSlantLayout { + public ThreeSlantLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 6; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 0.5f); + addLine(0, Line.Direction.VERTICAL, 0.56f, 0.44f); + break; + case 1: + addLine(0, Line.Direction.HORIZONTAL, 0.5f); + addLine(1, Line.Direction.VERTICAL, 0.56f, 0.44f); + break; + case 2: + addLine(0, Line.Direction.VERTICAL, 0.5f); + addLine(0, Line.Direction.HORIZONTAL, 0.56f, 0.44f); + break; + case 3: + addLine(0, Line.Direction.VERTICAL, 0.5f); + addLine(1, Line.Direction.HORIZONTAL, 0.56f, 0.44f); + break; + case 4: + addLine(0, Line.Direction.HORIZONTAL, 0.44f, 0.56f); + addLine(0, Line.Direction.VERTICAL, 0.56f, 0.44f); + break; + case 5: + addLine(0, Line.Direction.VERTICAL, 0.56f, 0.44f); + addLine(1, Line.Direction.HORIZONTAL, 0.44f, 0.56f); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/TwoSlantLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/TwoSlantLayout.java new file mode 100644 index 0000000..b56e0b6 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/slant/TwoSlantLayout.java @@ -0,0 +1,30 @@ +package com.huantansheng.easyphotos.models.puzzle.template.slant; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ + +public class TwoSlantLayout extends NumberSlantLayout { + public TwoSlantLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 2; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 0.56f, 0.44f); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, 0.56f, 0.44f); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/EightStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/EightStraightLayout.java new file mode 100644 index 0000000..c97a5e8 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/EightStraightLayout.java @@ -0,0 +1,89 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class EightStraightLayout extends NumberStraightLayout { + public EightStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 11; + } + + @Override + public void layout() { + switch (theme) { + case 0: + cutAreaEqualPart(0, 3, 1); + break; + case 1: + cutAreaEqualPart(0, 1, 3); + break; + case 2: + cutAreaEqualPart(0, 4, Line.Direction.VERTICAL); + addLine(3, Line.Direction.HORIZONTAL, 4f / 5); + addLine(2, Line.Direction.HORIZONTAL, 3f / 5); + addLine(1, Line.Direction.HORIZONTAL, 2f / 5); + addLine(0, Line.Direction.HORIZONTAL, 1f / 5); + break; + case 3: + cutAreaEqualPart(0, 4, Line.Direction.HORIZONTAL); + addLine(3, Line.Direction.VERTICAL, 4f / 5); + addLine(2, Line.Direction.VERTICAL, 3f / 5); + addLine(1, Line.Direction.VERTICAL, 2f / 5); + addLine(0, Line.Direction.VERTICAL, 1f / 5); + break; + case 4: + cutAreaEqualPart(0, 4, Line.Direction.VERTICAL); + addLine(3, Line.Direction.HORIZONTAL, 1f / 5); + addLine(2, Line.Direction.HORIZONTAL, 2f / 5); + addLine(1, Line.Direction.HORIZONTAL, 3f / 5); + addLine(0, Line.Direction.HORIZONTAL, 4f / 5); + break; + case 5: + cutAreaEqualPart(0, 4, Line.Direction.HORIZONTAL); + addLine(3, Line.Direction.VERTICAL, 1f / 5); + addLine(2, Line.Direction.VERTICAL, 2f / 5); + addLine(1, Line.Direction.VERTICAL, 3f / 5); + addLine(0, Line.Direction.VERTICAL, 4f / 5); + break; + case 6: + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + cutAreaEqualPart(2, 3, Line.Direction.VERTICAL); + cutAreaEqualPart(1, 2, Line.Direction.VERTICAL); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 7: + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + cutAreaEqualPart(2, 3, Line.Direction.HORIZONTAL); + cutAreaEqualPart(1, 2, Line.Direction.HORIZONTAL); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 8: + addLine(0, Line.Direction.HORIZONTAL, 4f / 5); + cutAreaEqualPart(1, 5, Line.Direction.VERTICAL); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.VERTICAL, 1f / 2); + break; + case 9: + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + cutAreaEqualPart(2, 2, Line.Direction.VERTICAL); + cutAreaEqualPart(1, 3, Line.Direction.VERTICAL); + addLine(0, Line.Direction.VERTICAL, 3f / 4); + addLine(0, Line.Direction.VERTICAL, 1f / 3); + break; + case 10: + cutAreaEqualPart(0, 2, 1); + addLine(5, Line.Direction.VERTICAL, 1f / 2); + addLine(4, Line.Direction.VERTICAL, 1f / 2); + break; + default: + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FiveStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FiveStraightLayout.java new file mode 100644 index 0000000..e7ebb47 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FiveStraightLayout.java @@ -0,0 +1,94 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class FiveStraightLayout extends NumberStraightLayout { + + public FiveStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 15; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 2f / 5); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + cutAreaEqualPart(2, 3, Line.Direction.VERTICAL); + break; + case 1: + addLine(0, Line.Direction.HORIZONTAL, 3f / 5); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + addLine(3, Line.Direction.VERTICAL, 1f / 2); + break; + case 2: + addLine(0, Line.Direction.VERTICAL, 2f / 5); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + addLine(1, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 3: + addLine(0, Line.Direction.VERTICAL, 2f / 5); + cutAreaEqualPart(1, 3, Line.Direction.HORIZONTAL); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 4: + addLine(0, Line.Direction.HORIZONTAL, 3f / 4); + cutAreaEqualPart(1, 4, Line.Direction.VERTICAL); + break; + case 5: + addLine(0, Line.Direction.HORIZONTAL, 1f / 4); + cutAreaEqualPart(0, 4, Line.Direction.VERTICAL); + break; + case 6: + addLine(0, Line.Direction.VERTICAL, 3f / 4); + cutAreaEqualPart(1, 4, Line.Direction.HORIZONTAL); + break; + case 7: + addLine(0, Line.Direction.VERTICAL, 1f / 4); + cutAreaEqualPart(0, 4, Line.Direction.HORIZONTAL); + break; + case 8: + addLine(0, Line.Direction.HORIZONTAL, 1f / 4); + addLine(1, Line.Direction.HORIZONTAL, 2f / 3); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + addLine(3, Line.Direction.VERTICAL, 1f / 2); + break; + case 9: + addLine(0, Line.Direction.VERTICAL, 1f / 4); + addLine(1, Line.Direction.VERTICAL, 2f / 3); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + addLine(2, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 10: + addCross(0, 1f / 3); + addLine(2, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 11: + addCross(0, 2f / 3); + addLine(1, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 12: + addCross(0, 1f / 3, 2f / 3); + addLine(3, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 13: + addCross(0, 2f / 3, 1f / 3); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 14: + cutSpiral(0); + break; + default: + cutAreaEqualPart(0, 5, Line.Direction.HORIZONTAL); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FourStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FourStraightLayout.java new file mode 100644 index 0000000..bba0630 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/FourStraightLayout.java @@ -0,0 +1,52 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class FourStraightLayout extends NumberStraightLayout { + private static final String TAG = "FourStraightLayout"; + + public FourStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 6; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addCross(0, 1f / 2); + break; + case 1: + addLine(0, Line.Direction.HORIZONTAL, 1f / 3); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 2: + addLine(0, Line.Direction.HORIZONTAL, 2f / 3); + cutAreaEqualPart(1, 3, Line.Direction.VERTICAL); + break; + case 3: + addLine(0, Line.Direction.VERTICAL, 1f / 3); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 4: + addLine(0, Line.Direction.VERTICAL, 2f / 3); + cutAreaEqualPart(1, 3, Line.Direction.HORIZONTAL); + break; + case 5: + addLine(0, Line.Direction.VERTICAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 2f / 3); + addLine(1, Line.Direction.HORIZONTAL, 1f / 3); + break; + default: + cutAreaEqualPart(0, 4, Line.Direction.HORIZONTAL); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NineStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NineStraightLayout.java new file mode 100644 index 0000000..e29b0b4 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NineStraightLayout.java @@ -0,0 +1,76 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class NineStraightLayout extends NumberStraightLayout { + public NineStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 8; + } + + @Override + public void layout() { + switch (theme) { + case 0: + cutAreaEqualPart(0, 2, 2); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, 3f / 4); + addLine(0, Line.Direction.VERTICAL, 1f / 3); + cutAreaEqualPart(2, 4, Line.Direction.HORIZONTAL); + cutAreaEqualPart(0, 4, Line.Direction.HORIZONTAL); + break; + case 2: + addLine(0, Line.Direction.HORIZONTAL, 3f / 4); + addLine(0, Line.Direction.HORIZONTAL, 1f / 3); + cutAreaEqualPart(2, 4, Line.Direction.VERTICAL); + cutAreaEqualPart(0, 4, Line.Direction.VERTICAL); + break; + case 3: + addLine(0, Line.Direction.HORIZONTAL, 3f / 4); + addLine(0, Line.Direction.HORIZONTAL, 1f / 3); + cutAreaEqualPart(2, 3, Line.Direction.VERTICAL); + addLine(1, Line.Direction.VERTICAL, 3f / 4); + addLine(1, Line.Direction.VERTICAL, 1f / 3); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 4: + addLine(0, Line.Direction.VERTICAL, 3f / 4); + addLine(0, Line.Direction.VERTICAL, 1f / 3); + cutAreaEqualPart(2, 3, Line.Direction.HORIZONTAL); + addLine(1, Line.Direction.HORIZONTAL, 3f / 4); + addLine(1, Line.Direction.HORIZONTAL, 1f / 3); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 5: + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + addLine(2, Line.Direction.HORIZONTAL, 3f / 4); + addLine(2, Line.Direction.HORIZONTAL, 1f / 3); + cutAreaEqualPart(1, 3, Line.Direction.HORIZONTAL); + addLine(0, Line.Direction.HORIZONTAL, 3f / 4); + addLine(0, Line.Direction.HORIZONTAL, 1f / 3); + break; + case 6: + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + addLine(2, Line.Direction.VERTICAL, 3f / 4); + addLine(2, Line.Direction.VERTICAL, 1f / 3); + cutAreaEqualPart(1, 3, Line.Direction.VERTICAL); + addLine(0, Line.Direction.VERTICAL, 3f / 4); + addLine(0, Line.Direction.VERTICAL, 1f / 3); + break; + case 7: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + cutAreaEqualPart(1, 1, 3); + break; + default: + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NumberStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NumberStraightLayout.java new file mode 100644 index 0000000..14a8618 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/NumberStraightLayout.java @@ -0,0 +1,31 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import android.util.Log; + +import com.huantansheng.easyphotos.models.puzzle.straight.StraightPuzzleLayout; + + +/** + * @author wupanjie + */ +public abstract class NumberStraightLayout extends StraightPuzzleLayout { + static final String TAG = "NumberStraightLayout"; + protected int theme; + + public NumberStraightLayout(int theme) { + if (theme >= getThemeCount()) { + Log.e(TAG, "NumberStraightLayout: the most theme count is " + + getThemeCount() + + " ,you should let theme from 0 to " + + (getThemeCount() - 1) + + " ."); + } + this.theme = theme; + } + + public abstract int getThemeCount(); + + public int getTheme() { + return theme; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/OneStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/OneStraightLayout.java new file mode 100644 index 0000000..2367174 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/OneStraightLayout.java @@ -0,0 +1,45 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class OneStraightLayout extends NumberStraightLayout { + + public OneStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 6; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, 1f / 2); + break; + case 2: + addCross(0, 1f / 2); + break; + case 3: + cutAreaEqualPart(0, 2, 1); + break; + case 4: + cutAreaEqualPart(0, 1, 2); + break; + case 5: + cutAreaEqualPart(0, 2, 2); + break; + default: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SevenStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SevenStraightLayout.java new file mode 100644 index 0000000..307e975 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SevenStraightLayout.java @@ -0,0 +1,77 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class SevenStraightLayout extends NumberStraightLayout { + public SevenStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 9; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + cutAreaEqualPart(1, 4, Line.Direction.VERTICAL); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, 1f / 2); + cutAreaEqualPart(1, 4, Line.Direction.HORIZONTAL); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 2: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + cutAreaEqualPart(1, 1, 2); + break; + case 3: + addLine(0, Line.Direction.HORIZONTAL, 2f / 3); + cutAreaEqualPart(1, 3, Line.Direction.VERTICAL); + addCross(0, 1f / 2); + break; + case 4: + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + cutAreaEqualPart(2, 3, Line.Direction.HORIZONTAL); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 5: + addLine(0, Line.Direction.HORIZONTAL, 2f / 3); + addLine(1, Line.Direction.VERTICAL, 3f / 4); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.VERTICAL, 2f / 5); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 6: + addLine(0, Line.Direction.VERTICAL, 2f / 3); + addLine(1, Line.Direction.HORIZONTAL, 3f / 4); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 2f / 5); + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 7: + addLine(0, Line.Direction.VERTICAL, 1f / 4); + addLine(1, Line.Direction.VERTICAL, 2f / 3); + addLine(2, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 3f / 4); + addLine(1, Line.Direction.HORIZONTAL, 1f / 3); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 8: + addLine(0, Line.Direction.HORIZONTAL, 1f / 4); + addLine(1, Line.Direction.HORIZONTAL, 2f / 3); + cutAreaEqualPart(2, 3, Line.Direction.VERTICAL); + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + default: + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SixStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SixStraightLayout.java new file mode 100644 index 0000000..86b93d0 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/SixStraightLayout.java @@ -0,0 +1,93 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class SixStraightLayout extends NumberStraightLayout { + + public SixStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 12; + } + + @Override + public void layout() { + switch (theme) { + case 0: + cutAreaEqualPart(0, 2, 1); + break; + + case 1: + cutAreaEqualPart(0, 1, 2); + break; + case 2: + addCross(0, 2f / 3, 1f / 2); + addLine(3, Line.Direction.VERTICAL, 1f / 2); + addLine(2, Line.Direction.VERTICAL, 1f / 2); + break; + case 3: + addCross(0, 1f / 2, 2f / 3); + addLine(3, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 4: + addCross(0, 1f / 2, 1f / 3); + addLine(2, Line.Direction.HORIZONTAL, 1f / 2); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 5: + addCross(0, 1f / 3, 1f / 2); + addLine(1, Line.Direction.VERTICAL, 1f / 2); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + break; + case 6: + addLine(0, Line.Direction.HORIZONTAL, 4f / 5); + cutAreaEqualPart(1, 5, Line.Direction.VERTICAL); + break; + case 7: + addLine(0, Line.Direction.HORIZONTAL, 1f / 4); + addLine(1, Line.Direction.HORIZONTAL, 2f / 3); + addLine(1, Line.Direction.VERTICAL, 1f / 4); + addLine(2, Line.Direction.VERTICAL, 2f / 3); + addLine(4, Line.Direction.VERTICAL, 1f / 2); + break; + case 8: + addCross(0, 1f / 3); + addLine(1, Line.Direction.VERTICAL, 1f / 2); + addLine(4, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 9: + addCross(0, 2f / 3, 1f / 3); + addLine(3, Line.Direction.VERTICAL, 1f / 2); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 10: + addCross(0, 2f / 3); + addLine(2, Line.Direction.VERTICAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 11: + addCross(0, 1f / 3, 2f / 3); + addLine(3, Line.Direction.HORIZONTAL, 1f / 2); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + break; + case 12: + addCross(0, 1f / 3); + addLine(2, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.VERTICAL, 1f / 2); + break; + default: + addCross(0, 2f / 3, 1f / 2); + addLine(3, Line.Direction.VERTICAL, 1f / 2); + addLine(2, Line.Direction.VERTICAL, 1f / 2); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/StraightLayoutHelper.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/StraightLayoutHelper.java new file mode 100644 index 0000000..103be9c --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/StraightLayoutHelper.java @@ -0,0 +1,69 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + + +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public class StraightLayoutHelper { + private StraightLayoutHelper() { + + } + + public static List getAllThemeLayout(int pieceCount) { + List puzzleLayouts = new ArrayList<>(); + switch (pieceCount) { + case 1: + for (int i = 0; i < 6; i++) { + puzzleLayouts.add(new OneStraightLayout(i)); + } + break; + case 2: + for (int i = 0; i < 6; i++) { + puzzleLayouts.add(new TwoStraightLayout(i)); + } + break; + case 3: + for (int i = 0; i < 6; i++) { + puzzleLayouts.add(new ThreeStraightLayout(i)); + } + break; + case 4: + for (int i = 0; i < 8; i++) { + puzzleLayouts.add(new FourStraightLayout(i)); + } + break; + case 5: + for (int i = 0; i < 17; i++) { + puzzleLayouts.add(new FiveStraightLayout(i)); + } + break; + case 6: + for (int i = 0; i < 12; i++) { + puzzleLayouts.add(new SixStraightLayout(i)); + } + break; + case 7: + for (int i = 0; i < 9; i++) { + puzzleLayouts.add(new SevenStraightLayout(i)); + } + break; + case 8: + for (int i = 0; i < 11; i++) { + puzzleLayouts.add(new EightStraightLayout(i)); + } + break; + case 9: + for (int i = 0; i < 8; i++) { + puzzleLayouts.add(new NineStraightLayout(i)); + } + break; + } + + return puzzleLayouts; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/ThreeStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/ThreeStraightLayout.java new file mode 100644 index 0000000..add863d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/ThreeStraightLayout.java @@ -0,0 +1,50 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + + +import com.huantansheng.easyphotos.models.puzzle.Line; + +/** + * @author wupanjie + */ +public class ThreeStraightLayout extends NumberStraightLayout { + + public ThreeStraightLayout(int theme) { + super(theme); + } + + @Override + public int getThemeCount() { + return 6; + } + + @Override + public void layout() { + switch (theme) { + case 0: + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + case 1: + cutAreaEqualPart(0, 3, Line.Direction.VERTICAL); + break; + case 2: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + addLine(0, Line.Direction.VERTICAL, 1f / 2); + break; + case 3: + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + addLine(1, Line.Direction.VERTICAL, 1f / 2); + break; + case 4: + addLine(0, Line.Direction.VERTICAL, 1f / 2); + addLine(0, Line.Direction.HORIZONTAL, 1f / 2); + break; + case 5: + addLine(0, Line.Direction.VERTICAL, 1f / 2); + addLine(1, Line.Direction.HORIZONTAL, 1f / 2); + break; + default: + cutAreaEqualPart(0, 3, Line.Direction.HORIZONTAL); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/TwoStraightLayout.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/TwoStraightLayout.java new file mode 100644 index 0000000..3b2b896 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/puzzle/template/straight/TwoStraightLayout.java @@ -0,0 +1,58 @@ +package com.huantansheng.easyphotos.models.puzzle.template.straight; + +import android.util.Log; + +import com.huantansheng.easyphotos.models.puzzle.Line; + + +/** + * @author wupanjie + */ +public class TwoStraightLayout extends NumberStraightLayout { + private float mRadio = 1f / 2; + + public TwoStraightLayout(int theme) { + super(theme); + } + + public TwoStraightLayout(float radio, int theme) { + super(theme); + if (mRadio > 1) { + Log.e(TAG, "CrossLayout: the radio can not greater than 1f"); + mRadio = 1f; + } + mRadio = radio; + } + + @Override + public int getThemeCount() { + return 6; + } + + @Override + public void layout() { + switch (theme) { + case 0: + addLine(0, Line.Direction.HORIZONTAL, mRadio); + break; + case 1: + addLine(0, Line.Direction.VERTICAL, mRadio); + break; + case 2: + addLine(0, Line.Direction.HORIZONTAL, 1f / 3); + break; + case 3: + addLine(0, Line.Direction.HORIZONTAL, 2f / 3); + break; + case 4: + addLine(0, Line.Direction.VERTICAL, 1f / 3); + break; + case 5: + addLine(0, Line.Direction.VERTICAL, 2f / 3); + break; + default: + addLine(0, Line.Direction.HORIZONTAL, mRadio); + break; + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/StickerModel.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/StickerModel.java new file mode 100644 index 0000000..e749c59 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/StickerModel.java @@ -0,0 +1,220 @@ +package com.huantansheng.easyphotos.models.sticker; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import androidx.fragment.app.FragmentManager; +import android.view.View; +import android.view.ViewGroup; + +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.models.sticker.cache.StickerCache; +import com.huantansheng.easyphotos.models.sticker.entity.TextStickerData; +import com.huantansheng.easyphotos.models.sticker.view.BitmapSticker; +import com.huantansheng.easyphotos.models.sticker.view.TextSticker; +import com.huantansheng.easyphotos.models.sticker.listener.OnStickerClickListener; +import com.huantansheng.easyphotos.models.sticker.view.EditFragment; +import com.huantansheng.easyphotos.utils.bitmap.BitmapUtils; +import com.huantansheng.easyphotos.utils.bitmap.SaveBitmapCallBack; + +import java.util.ArrayList; +import java.util.List; + +/** + * 贴图view的管ç†å™¨ï¼Œç”¨äºŽmodule与外部解耦 + * Created by huan on 2017/7/24. + */ + +public class StickerModel { + public static final ArrayList textDataList = new ArrayList<>(); + + public List bitmapStickers; + public List textStickers; + public BitmapSticker currBitmapSticker; + public TextSticker currTextSticker; + + + public StickerModel() { + super(); + this.bitmapStickers = new ArrayList<>(); + this.textStickers = new ArrayList<>(); + } + + public void addBitmapSticker(Context cxt, String imagePath, int imageResourceId, ViewGroup rootgroup) { + + if (bitmapStickers.size() > 0 && !bitmapStickers.get(bitmapStickers.size() - 1).isChecked) { + bitmapStickers.get(bitmapStickers.size() - 1).delete(); + } + final BitmapSticker sticker = new BitmapSticker(cxt, imagePath, imageResourceId, rootgroup.getWidth() / 2, rootgroup.getHeight() / 2); + sticker.setOnStickerClickListener(new OnStickerClickListener() { + @Override + public void onDelete() { + bitmapStickers.remove(sticker); + } + + @Override + public void onEditor() { + + } + + @Override + public void onTop() { + bitmapStickers.remove(sticker); + bitmapStickers.add(sticker); + } + + @Override + public void onUsing() { + if (currBitmapSticker != null && currBitmapSticker != sticker) { + currBitmapSticker.setUsing(false); + currBitmapSticker = sticker; + } + } + }); + if (currBitmapSticker != null) { + currBitmapSticker.setUsing(false); + } + rootgroup.addView(sticker); + currBitmapSticker = sticker; + bitmapStickers.add(sticker); + } + + + public void addTextSticker(final Context cxt, final FragmentManager fragmentManager, String text, ViewGroup rootgroup) { + + if (textStickers.size() > 0 && !textStickers.get(textStickers.size() - 1).isChecked) { + textStickers.get(textStickers.size() - 1).delete(); + } + final TextSticker sticker = new TextSticker(cxt, text, rootgroup.getWidth() / 2, rootgroup.getHeight() / 2); + sticker.setOnStickerClickListener(new OnStickerClickListener() { + @Override + public void onDelete() { + textStickers.remove(sticker); + } + + @Override + public void onEditor() { + EditFragment.show(fragmentManager, sticker); + } + + @Override + public void onTop() { + textStickers.remove(sticker); + textStickers.add(sticker); + } + + @Override + public void onUsing() { + if (currTextSticker != null && currTextSticker != sticker) { + currTextSticker.setUsing(false); + currTextSticker = sticker; + } + } + }); + if (currBitmapSticker != null) { + currBitmapSticker.setUsing(false); + } + rootgroup.addView(sticker); + currTextSticker = sticker; + textStickers.add(sticker); + } + + public void save(Activity act, ViewGroup stickerGroup, View imageGroup, int imageWidth, int imageHeight, final String dirPath, final String namePrefix, final boolean notifyMedia, final SaveBitmapCallBack callBack) { + + if (null != this.currBitmapSticker && this.currBitmapSticker.isUsing()) { + this.currBitmapSticker.setUsing(false); + } + if (null != this.currTextSticker && this.currTextSticker.isUsing()) { + this.currTextSticker.setUsing(false); + } + + for (BitmapSticker bs : bitmapStickers) { + if (bs.isUsing()) { + bs.setUsing(false); + } + } + + for (TextSticker ts : textStickers) { + if (ts.isUsing()) { + ts.setUsing(false); + } + } + + Bitmap srcBitmap = Bitmap.createBitmap(stickerGroup.getWidth(), stickerGroup.getHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(srcBitmap); + stickerGroup.draw(canvas); + + Bitmap cropBitmap = Bitmap.createBitmap(srcBitmap, imageGroup.getLeft(), imageGroup.getTop(), imageGroup.getWidth(), imageGroup.getHeight()); + BitmapUtils.recycle(srcBitmap); + Bitmap saveBitmap = null; + if (imageGroup.getWidth() > imageWidth || imageGroup.getHeight() > imageHeight) { + saveBitmap = Bitmap.createScaledBitmap(cropBitmap, imageWidth, imageHeight, true); + BitmapUtils.recycle(cropBitmap); + } else { + saveBitmap = cropBitmap; + } + + EasyPhotos.saveBitmapToDir(act, dirPath, namePrefix, saveBitmap, notifyMedia, callBack); + + } + + public void setCanvasSize(final Bitmap b, final ViewGroup imageGroup) { + if (imageGroup.getMeasuredWidth() == 0) { + imageGroup.post(new Runnable() { + @Override + public void run() { + setSize(b, imageGroup); + } + }); + } else { + setSize(b, imageGroup); + } + } + + private void setSize(Bitmap b, ViewGroup v) { + int bW = b.getWidth(); + int bH = b.getHeight(); + + int vW = v.getMeasuredWidth(); + int vH = v.getMeasuredHeight(); + + float scalW = (float) vW / (float) bW; + float scalH = (float) vH / (float) bH; + + ViewGroup.LayoutParams params = v.getLayoutParams(); + //如果图片å°äºŽviewGroup的宽高则把viewgroup设置为图片宽高 +// if (bW < vW && bH < vH) { +// params.width = bW; +// params.height = bH; +// v.setLayoutParams(params); +// return; +// } + if (bW >= bH) { + params.width = vW; + params.height = (int) (scalW * bH); + } else { + params.width = (int) (scalH * bW); + params.height = vH; + } + if (params.width > vW) { + float tempScaleW = (float) vW / (float) params.width; + params.width = vW; + params.height = (int) (params.height * tempScaleW); + } + if (params.height > vH) { + float tempScaleH = (float) vH / (float) params.height; + params.height = vH; + params.width = (int) (params.width * tempScaleH); + } + v.setLayoutParams(params); + } + + /** + * é‡Šæ”¾èµ„æº + */ + public void release() { + StickerCache.get().clear(); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/cache/StickerCache.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/cache/StickerCache.java new file mode 100644 index 0000000..2cd2f15 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/cache/StickerCache.java @@ -0,0 +1,114 @@ +package com.huantansheng.easyphotos.models.sticker.cache; + +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Matrix; +import androidx.annotation.IdRes; + +import com.huantansheng.easyphotos.EasyPhotos; + +import java.util.LinkedHashMap; + +/** + * 贴纸的图片缓存器 + * Created by huan on 2017/12/8. + */ + +public class StickerCache { + private static StickerCache instance = null; + + public static StickerCache get() { + if (null == instance) { + synchronized (StickerCache.class) { + if (null == instance) { + instance = new StickerCache(); + } + } + } + return instance; + } + + private LinkedHashMap srcBitmapCache = null; + private LinkedHashMap mirrorBitmapCache = null; + private LinkedHashMap bitmapUsedCount = null; + + private StickerCache() { + srcBitmapCache = new LinkedHashMap<>(); + mirrorBitmapCache = new LinkedHashMap<>(); + bitmapUsedCount = new LinkedHashMap<>(); + } + + public Bitmap getSrcBitmap(String path) { + Bitmap bitmap = srcBitmapCache.get(path); + if (null == bitmap) { + bitmap = BitmapFactory.decodeFile(path); + srcBitmapCache.put(path, bitmap); + bitmapUsedCount.put(path, 0); + convertMirror(path, bitmap); + } + + int count = bitmapUsedCount.get(path); + bitmapUsedCount.put(path, ++count); + return bitmap; + } + + public Bitmap getSrcBitmap(Resources resources, @IdRes int resId) { + String path = String.valueOf(resId); + Bitmap bitmap = srcBitmapCache.get(path); + if (null == bitmap) { + bitmap = BitmapFactory.decodeResource(resources, resId); + srcBitmapCache.put(path, bitmap); + bitmapUsedCount.put(path, 0); + convertMirror(path, bitmap); + } + + int count = bitmapUsedCount.get(path); + bitmapUsedCount.put(path, ++count); + return bitmap; + } + + public Bitmap getMirrorBitmap(String key) { + return mirrorBitmapCache.get(key); + } + + + public void clear() { + for (String key : srcBitmapCache.keySet()) { + recycle(key); + } + } + + public void recycle(String key) { + if (!srcBitmapCache.containsKey(key)) { + return; + } + + int count = bitmapUsedCount.get(key); + if (count > 1) { + count--; + bitmapUsedCount.put(key, count); + return; + } + + EasyPhotos.recycle(srcBitmapCache.get(key), mirrorBitmapCache.get(key)); + removeKey(key); + } + + private void convertMirror(String key, Bitmap a) { + int w = a.getWidth(); + int h = a.getHeight(); + + Matrix m = new Matrix(); + m.postScale(-1, 1); //é•œåƒæ°´å¹³ç¿»è½¬ + Bitmap mirrorBitmap = Bitmap.createBitmap(a, 0, 0, w, h, m, true); + mirrorBitmapCache.put(key, mirrorBitmap); + } + + + private void removeKey(String key) { + srcBitmapCache.remove(key); + mirrorBitmapCache.remove(key); + bitmapUsedCount.remove(key); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/entity/TextStickerData.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/entity/TextStickerData.java new file mode 100644 index 0000000..13c0b06 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/entity/TextStickerData.java @@ -0,0 +1,48 @@ +package com.huantansheng.easyphotos.models.sticker.entity; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * 文字贴纸数æ®ç±» + * Created by huan on 2017/12/14. + */ + +public class TextStickerData implements Parcelable { + + public String stickerName;//文字贴纸的åå­— + public String stickerValue;//文字贴纸的文字内容 + + public TextStickerData(String stickerName, String stickerValue) { + this.stickerName = stickerName; + this.stickerValue = stickerValue; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.stickerName); + dest.writeString(this.stickerValue); + } + + protected TextStickerData(Parcel in) { + this.stickerName = in.readString(); + this.stickerValue = in.readString(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public TextStickerData createFromParcel(Parcel source) { + return new TextStickerData(source); + } + + @Override + public TextStickerData[] newArray(int size) { + return new TextStickerData[size]; + } + }; +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/listener/OnStickerClickListener.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/listener/OnStickerClickListener.java new file mode 100644 index 0000000..f7be75d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/listener/OnStickerClickListener.java @@ -0,0 +1,16 @@ +package com.huantansheng.easyphotos.models.sticker.listener; + +/** + * è´´çº¸çš„ç‚¹å‡»ç›‘å¬ + * Created by huan on 2017/12/12. + */ + +public interface OnStickerClickListener { + void onDelete(); + + void onEditor(); + + void onTop(); + + void onUsing(); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/BitmapSticker.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/BitmapSticker.java new file mode 100644 index 0000000..b7a5572 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/BitmapSticker.java @@ -0,0 +1,441 @@ +package com.huantansheng.easyphotos.models.sticker.view; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Point; +import android.graphics.RectF; +import android.graphics.Region; +import androidx.core.content.ContextCompat; +import android.text.TextUtils; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.models.sticker.cache.StickerCache; +import com.huantansheng.easyphotos.models.sticker.listener.OnStickerClickListener; + + +/** + * 自定义贴图view + * Created by huan on 2017/7/24. + */ + +public class BitmapSticker extends View { + + public boolean isChecked = false; + private Bitmap image; + private Bitmap mirrorImage; + private Bitmap srcImage; + private boolean mirror = true; + private int imageWidth; + private int imageHeight; + private Bitmap btDelete; + private Bitmap btScale; + private Bitmap btMirror; + // private Bitmap btRotate; + private int btSize; + private Matrix mMatrix; + private float[] srcPs, dstPs; + private Paint mPaint; + private Paint framePaint; + private boolean isUsing = true; + private float downX1; + private float downY1; + private float downX2; + private float downY2; + private ClickType clickType; + private boolean isOut = false; + private GestureDetector gestureDetector; + private float lastDegree; + private float lastDoubleDegress; + private OnStickerClickListener listener; + private int startX, startY; + private Path path; + + private String cacheKey; + + public BitmapSticker(Context context, String bitmapPath, int bitmapResourceId, int ViewGroupCenterX, int ViewGroupCenterY) { + super(context); + + if (TextUtils.isEmpty(bitmapPath)) { + image = StickerCache.get().getSrcBitmap(getResources(), bitmapResourceId); + cacheKey = String.valueOf(bitmapResourceId); + } else { + image = StickerCache.get().getSrcBitmap(bitmapPath); + cacheKey = bitmapPath; + } + path = new Path(); + srcImage = image; + mirrorImage = StickerCache.get().getMirrorBitmap(cacheKey); + + this.imageWidth = image.getWidth(); + this.imageHeight = image.getHeight(); + this.startX = ViewGroupCenterX - imageWidth / 2; + if (this.startX < 100) { + this.startX = ViewGroupCenterX / 2; + } + this.startY = ViewGroupCenterY - imageHeight / 2; + if (this.startY < 100) { + this.startY = ViewGroupCenterY / 2; + } + initButtons(); + initPs(); + initPaints(); + initMatrix(); + initCanvasPosition(); + lastDegree = computeDegree(new Point(imageWidth, imageHeight), new Point(imageWidth / 2, imageHeight / 2)); + lastDoubleDegress = 1000; + gestureDetector = new GestureDetector(context, new StickerGestureListener()); + + } + + public void setOnStickerClickListener(OnStickerClickListener listener) { + this.listener = listener; + } + + private void initCanvasPosition() { + mMatrix.postTranslate(startX, startY); + mMatrix.mapPoints(dstPs, srcPs); + } + + private void initMatrix() { + mMatrix = new Matrix(); + } + + private void initPaints() { + mPaint = new Paint(); + mPaint.setAntiAlias(true); + mPaint.setDither(true); + mPaint.setFilterBitmap(true); + + framePaint = new Paint(); + framePaint.setAntiAlias(true); + framePaint.setStrokeWidth(1); + framePaint.setColor(ContextCompat.getColor(getContext(), android.R.color.white)); + } + + private void initPs() { + srcPs = new float[]{0, 0, imageWidth, 0, imageWidth, imageHeight, 0, imageHeight, imageWidth / 2, imageHeight / 2}; + dstPs = srcPs.clone(); + } + + private void initButtons() { + btDelete = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_delete_easy_photos); + btMirror = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_mirror_easy_photos); + btScale = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_controller_easy_photos); +// btRotate = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_rotate); + btSize = btDelete.getWidth(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawBitmap(image, mMatrix, mPaint); + if (isUsing) + drawOthers(canvas); + } + + private void drawOthers(Canvas canvas) { + path.reset(); + path.moveTo(dstPs[0], dstPs[1]); + path.lineTo(dstPs[2], dstPs[3]); + path.lineTo(dstPs[4], dstPs[5]); + path.lineTo(dstPs[6], dstPs[7]); + path.lineTo(dstPs[0], dstPs[1]); + for (int i = 0; i < 7; i += 2) { + if (i == 6) { + canvas.drawLine(dstPs[i], dstPs[i + 1], dstPs[0], dstPs[1], framePaint); + break; + } + canvas.drawLine(dstPs[i], dstPs[i + 1], dstPs[i + 2], dstPs[i + 3], framePaint); + } + + canvas.drawBitmap(btDelete, dstPs[2] - btSize / 2, dstPs[3] - btSize / 2, mPaint); + canvas.drawBitmap(btMirror, dstPs[0] - btSize / 2, dstPs[1] - btSize / 2, mPaint); + canvas.drawBitmap(btScale, dstPs[4] - btSize / 2, dstPs[5] - btSize / 2, mPaint); +// canvas.drawBitmap(btRotate, dstPs[6] - btSize / 2, dstPs[7] - btSize / 2, mPaint); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + + gestureDetector.onTouchEvent(event); + if (MotionEvent.ACTION_UP == event.getAction() || MotionEvent.ACTION_POINTER_UP == event.getAction() || MotionEvent.ACTION_POINTER_1_UP == event.getAction() || MotionEvent.ACTION_POINTER_2_UP == event.getAction()) { + setDoubleDownPoints(0, 0, 0, 0); + lastDoubleDegress = 1000; + lastDegree = computeDegree(new Point((int) dstPs[4], (int) dstPs[5]), new Point((int) dstPs[8], (int) dstPs[9])); + } + + return !isOut; + } + + private void setDoubleDownPoints(float x1, float y1, float x2, float y2) { + downX1 = x1; + downY1 = y1; + downX2 = x2; + downY2 = y2; + } + + private void calculateClickType(int x, int y) { + RectF rectF = new RectF(x - btSize / 2 - 40, y - btSize / 2 - 40, x + btSize / 2 + 40, y + btSize / 2 + 40); + if (rectF.contains(dstPs[2] - 20, dstPs[3])) { + clickType = ClickType.DELETE; + } else if (rectF.contains(dstPs[0], dstPs[1])) { + clickType = ClickType.MIRROR; + } else if (rectF.contains(dstPs[4] + 20, dstPs[5])) { + clickType = ClickType.SCALE; + } else if (rectF.contains(dstPs[6] - 20, dstPs[7])) { + clickType = ClickType.IMAGE; + } else { + + RectF bounds = new RectF(); + path.computeBounds(bounds, true); + Region region = new Region(); + region.setPath(path, new Region((int)bounds.left, (int)bounds.top,(int)bounds.right, (int)bounds.bottom)); + + if (region.contains(x, y)) { + if (isOut) { + isOut = false; + } + if (!isUsing) { + isUsing = true; + listener.onUsing(); + postInvalidate(); + } + clickType = ClickType.IMAGE; + } else { + if (isUsing) { + isUsing = false; + postInvalidate(); + } + if (!isOut) { + isOut = true; + } + clickType = ClickType.OUT; + } + } + } + + public void delete() { + if (null == listener) { + throw new NullPointerException("OnStickerClickListener listener is null"); + } + setVisibility(GONE); + StickerCache.get().recycle(cacheKey); + listener.onDelete(); + } + + private void mirror() { + if (mirror) { + image = mirrorImage; + } else { + image = srcImage; + } + mirror = !mirror; + matrixMap(); + } + + private void top() { + bringToFront();//置顶 + invalidate(); + listener.onTop(); + } + + private void move(float distansX, float distansY) { + mMatrix.postTranslate(distansX, distansY); + matrixMap(); + } + + private void controller(MotionEvent event) { + scale(event); + rotate(event); + } + + private void scale(MotionEvent event) { + float originalX1; + float originalY1; + float originalX2; + float originalY2; + float moveX1; + float moveY1; + float moveX2; + float moveY2; + if (event.getPointerCount() == 2) { + originalX2 = downX2; + originalY2 = downY2; + originalX1 = downX1; + originalY1 = downY1; + + moveX2 = event.getX(1); + moveY2 = event.getY(1); + moveX1 = event.getX(0); + moveY1 = event.getY(0); + + } else { + originalX2 = dstPs[4]; + originalY2 = dstPs[5]; + originalX1 = dstPs[0]; + originalY1 = dstPs[1]; + + moveX2 = event.getX(); + moveY2 = event.getY(); + moveX1 = originalX1; + moveY1 = originalY1; + } + + float temp1 = getDistanceOfTwoPoints(originalX2, originalY2, originalX1, originalY1); + float temp2 = getDistanceOfTwoPoints(moveX2, moveY2, moveX1, moveY1); + + float scalValue = temp2 / temp1; + + if (getScaleValue() < (float) 0.3 && scalValue < (float) 1) { + return; + } + mMatrix.postScale(scalValue, scalValue, dstPs[8], dstPs[9]); + matrixMap(); + if (event.getPointerCount() == 2) { + setDoubleDownPoints(moveX1, moveY1, moveX2, moveY2); + } + } + + private void rotate(MotionEvent event) { + if (event.getPointerCount() == 2) { + float preDegree = computeDegree(new Point((int) event.getX(0), (int) event.getY(0)), new Point((int) event.getX(1), (int) event.getY(1))); + if (lastDoubleDegress == 1000) { + lastDoubleDegress = preDegree; + } + mMatrix.postRotate(preDegree - lastDoubleDegress, dstPs[8], dstPs[9]); + matrixMap(); + lastDoubleDegress = preDegree; + + } else { + float preDegree = computeDegree(new Point((int) event.getX(), (int) event.getY()), new Point((int) dstPs[8], (int) dstPs[9])); + mMatrix.postRotate(preDegree - lastDegree, dstPs[8], dstPs[9]); + matrixMap(); + lastDegree = preDegree; + } + } + + // 获å–饰å“缩放比例(与原图相比) + public float getScaleValue() { + float preDistance = (srcPs[8] - srcPs[0]) * (srcPs[8] - srcPs[0]) + (srcPs[9] - srcPs[1]) * (srcPs[9] - srcPs[1]); + float lastDistance = (dstPs[8] - dstPs[0]) * (dstPs[8] - dstPs[0]) + (dstPs[9] - dstPs[1]) * (dstPs[9] - dstPs[1]); + float scaleValue = (float) Math.sqrt(lastDistance / preDistance); + return scaleValue; + } + + private void matrixMap() { + mMatrix.mapPoints(dstPs, srcPs); + postInvalidate(); + } + + public void setUsing(boolean isUsing) { + this.isUsing = isUsing; + postInvalidate(); + } + + public boolean isUsing() { + return this.isUsing; + } + + private float getDistanceOfTwoPoints(float x1, float y1, float x2, float y2) { + return (float) (Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))); + } + + public float computeDegree(Point p1, Point p2) { + float tran_x = p1.x - p2.x; + float tran_y = p1.y - p2.y; + float degree = 0.0f; + float angle = (float) (Math.asin(tran_x / Math.sqrt(tran_x * tran_x + tran_y * tran_y)) * 180 / Math.PI); + if (!Float.isNaN(angle)) { + if (tran_x >= 0 && tran_y <= 0) {//ç¬¬ä¸€è±¡é™ + degree = angle; + } else if (tran_x <= 0 && tran_y <= 0) {//ç¬¬äºŒè±¡é™ + degree = angle; + } else if (tran_x <= 0 && tran_y >= 0) {//ç¬¬ä¸‰è±¡é™ + degree = -180 - angle; + } else if (tran_x >= 0 && tran_y >= 0) {//ç¬¬å››è±¡é™ + degree = 180 - angle; + } + } + return degree; + } + + private enum ClickType { + DELETE, MIRROR, SCALE, ROTATE, IMAGE, OUT + } + + private class StickerGestureListener extends GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + + switch (clickType) { + case DELETE: + delete(); + break; + case MIRROR: + mirror(); + break; + case SCALE: + break; + case ROTATE: + break; + case IMAGE: + break; + case OUT: + break; + } + return true; + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { +// Log.d("scroll", "onScroll: " + distanceX); + switch (clickType) { + case DELETE: + break; + case MIRROR: + break; + case SCALE: + if (e2.getPointerCount() > 1) break; + controller(e2); + break; + case ROTATE: +// rotate(e2); + break; + case IMAGE: + if (e2.getPointerCount() == 2) { + if (downX1 + downY1 + downX2 + downY2 == 0) { + setDoubleDownPoints(e2.getX(0), e2.getY(0), e2.getX(1), e2.getY(1)); + } + controller(e2); + } else if (e2.getPointerCount() == 1) { + move(-distanceX, -distanceY); + } + break; + case OUT: + break; + } + return true; + } + + @Override + public boolean onDown(MotionEvent e) { + isChecked = true; + calculateClickType((int) e.getX(), (int) e.getY()); + if (clickType == ClickType.IMAGE) { + top(); + } + return true; + } + + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/EditFragment.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/EditFragment.java new file mode 100644 index 0000000..d132e1a --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/EditFragment.java @@ -0,0 +1,201 @@ +package com.huantansheng.easyphotos.models.sticker.view; + +import android.content.Context; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import androidx.annotation.IdRes; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; +import androidx.core.content.ContextCompat; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.SeekBar; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; + +/** + * æ–‡å­—è´´çº¸ï¼Œç¼–è¾‘ç•Œé¢ + * Created by huan on 2017/12/13. + */ + +public class EditFragment extends DialogFragment implements View.OnClickListener { + + private TextView tvSample; + private EditText et; + private SeekBar seekBar; + + private TextSticker textSticker = null; + + private InputMethodManager inputMethodManager; + + public static EditFragment show(FragmentManager fm, TextSticker sticker) { + EditFragment editFragment = new EditFragment(); + editFragment.textSticker = sticker; + editFragment.show(fm, "edit"); + return editFragment; + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); + + View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_text_sticker_easy_photos, container); + + tvSample = (TextView) rootView.findViewById(R.id.tv_sample); + et = (EditText) rootView.findViewById(R.id.et); + seekBar = (SeekBar) rootView.findViewById(R.id.m_seek_bar); + + l(rootView, R.id.iv_red, R.id.iv_orange, R.id.iv_yellow, R.id.iv_green, R.id.iv_cyan, R.id.iv_blue, R.id.iv_purple, R.id.iv_black, R.id.iv_gray, R.id.iv_white, R.id.tv_done, R.id.iv_clear); + + seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int i, boolean b) { + if (b) { + setTextAlpha(i); + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } + }); + + + et.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void afterTextChanged(Editable editable) { + tvSample.setText(editable.toString()); + if (null != textSticker) { + textSticker.resetText(editable.toString()); + } + } + }); + return rootView; + } + + private void l(View view, @IdRes int... resIds) { + for (int resId : resIds) { + view.findViewById(resId).setOnClickListener(this); + } + } + + @Override + public void onResume() { + super.onResume(); + bindingSticker(); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + Window dialogWindow = getDialog().getWindow(); + if (null != dialogWindow) { + WindowManager.LayoutParams attrs = dialogWindow.getAttributes(); + attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; + dialogWindow.setAttributes(attrs); + dialogWindow.requestFeature(Window.FEATURE_NO_TITLE); + } + + super.onActivityCreated(savedInstanceState); + + if (null != dialogWindow) { + dialogWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); + dialogWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); + dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + } + } + + + public void bindingSticker() { + String text = textSticker.getText(); + tvSample.setText(text); + et.setText(text); + et.setSelection(text.length()); + int alpha = textSticker.getTextAlpha(); + float alphaF = (float) alpha / (float) 255; + seekBar.setProgress(alpha); + tvSample.setTextColor(textSticker.getTextColor()); + tvSample.setAlpha(alphaF); + inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if (null != inputMethodManager) { + inputMethodManager.showSoftInput(et, 0); + } + } + + @Override + public void onClick(View view) { + int id = view.getId(); + if (R.id.iv_red == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_red_easy_photos)); + + } else if (R.id.iv_orange == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_orange_easy_photos)); + + } else if (R.id.iv_yellow == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_yellow_easy_photos)); + + } else if (R.id.iv_green == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_green_easy_photos)); + + } else if (R.id.iv_cyan == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_cyan_easy_photos)); + + } else if (R.id.iv_blue == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_blue_easy_photos)); + + } else if (R.id.iv_purple == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_purple_easy_photos)); + + } else if (R.id.iv_black == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_black_easy_photos)); + + } else if (R.id.iv_gray == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_gray_easy_photos)); + + } else if (R.id.iv_white == id) { + setTextColor(ContextCompat.getColor(getContext(), R.color.text_sticker_white_easy_photos)); + + } else if (R.id.tv_done == id) { + dismiss(); + } else if (R.id.iv_clear == id) { + et.setText(null); + } + + } + + private void setTextColor(int color) { + tvSample.setTextColor(color); + textSticker.setTextColor(color); + } + + private void setTextAlpha(int alpha) { + tvSample.setAlpha((float) alpha / (float) 225); + textSticker.setTextAlpha(alpha); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/TextSticker.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/TextSticker.java new file mode 100644 index 0000000..45ac106 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/models/sticker/view/TextSticker.java @@ -0,0 +1,553 @@ +package com.huantansheng.easyphotos.models.sticker.view; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Point; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Region; +import android.graphics.Typeface; +import androidx.core.content.ContextCompat; +import android.text.Layout; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.text.TextUtils; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.models.sticker.listener.OnStickerClickListener; + + +/** + * 自定义贴图view + * Created by huan on 2017/7/24. + */ + +public class TextSticker extends View { + + public boolean isChecked = false; + private String text; + private float textWidth; + private float textHeight; + private Bitmap bitmap; + private Bitmap btDelete; + private Bitmap btController; + // private Bitmap btEditor; + // private Bitmap btRotate; + private int btSize; + private Matrix mMatrix; + private float[] srcPs, dstPs; + private TextPaint textPaint; + private Paint bitmapPaint; + private Paint framePaint; + private boolean isUsing = true; + private float downX1; + private float downY1; + private float downX2; + private float downY2; + private ClickType clickType; + private boolean isOut = false; + private GestureDetector gestureDetector; + private float lastDegree; + private float lastDoubleDegress; + private OnStickerClickListener listener; + private int startX, startY; + private int minWidth = 300, minHeight = 100; + private float minScale; + private StaticLayout textLayout; + private int textLayoutWidth; + + private Canvas bitmapConvas; + + private Path path; + + public TextSticker(Context context, String text, int viewGroupCenterX, int viewGroupCenterY) { + super(context); + + this.text = text; + if (TextUtils.isEmpty(this.text)) { + this.text = context.getString(R.string.text_sticker_hint_easy_photos); + } + path = new Path(); + textLayoutWidth = getResources().getDisplayMetrics().widthPixels / 2; + initButtons(); + initPaints(); + resetSize(); + initStartPoint(viewGroupCenterX, viewGroupCenterY); + initPs(); + resetBitmap(); + initMatrix(); + initCanvasPosition(); + lastDegree = computeDegree(new Point((int) textWidth, (int) textHeight), new Point((int) textWidth / 2, (int) textHeight / 2)); + lastDoubleDegress = 1000; + gestureDetector = new GestureDetector(context, new StickerGestureListener()); + + } + + private void resetBitmap() { + EasyPhotos.recycle(bitmap); + bitmap = Bitmap.createBitmap((int) textWidth, (int) textHeight, Bitmap.Config.ARGB_4444); + bitmapConvas = new Canvas(bitmap); +// bitmapConvas.drawText(text, 0, Math.abs(textPaint.getFontMetrics().top), textPaint); + textLayout.draw(bitmapConvas); + } + + private void initStartPoint(int viewGroupCenterX, int viewGroupCenterY) { + this.startX = viewGroupCenterX - (int) textWidth / 2; + if (this.startX < 100) { + this.startX = viewGroupCenterX / 2; + } + this.startY = viewGroupCenterY - (int) textHeight / 2; + if (this.startY < 100) { + this.startY = viewGroupCenterY / 2; + } + } + + public void setOnStickerClickListener(OnStickerClickListener listener) { + this.listener = listener; + } + + private void initCanvasPosition() { + mMatrix.postTranslate(startX, startY); + mMatrix.mapPoints(dstPs, srcPs); + } + + private void initMatrix() { + mMatrix = new Matrix(); + } + + private void initPaints() { + textPaint = new TextPaint(); + textPaint.setAntiAlias(true); + textPaint.setDither(true); + textPaint.setFilterBitmap(true); + textPaint.setTypeface(Typeface.DEFAULT_BOLD); + textPaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.sticker_text_size_easy_photos)); + textPaint.setColor(Color.WHITE); + + + bitmapPaint = new Paint(); + bitmapPaint.setAntiAlias(true); + bitmapPaint.setDither(true); + bitmapPaint.setFilterBitmap(true); + + framePaint = new Paint(); + framePaint.setAntiAlias(true); + bitmapPaint.setDither(true); + bitmapPaint.setFilterBitmap(true); + framePaint.setStrokeWidth(1); + framePaint.setColor(ContextCompat.getColor(getContext(), android.R.color.white)); + } + + + private void resetSize() { + textLayout = new StaticLayout(text, textPaint, textLayoutWidth, + Layout.Alignment.ALIGN_CENTER, 1.0F, 0.0F, true); + textWidth = minWidth; + textHeight = minHeight; + if (textWidth < textLayout.getWidth()) { + textWidth = textLayout.getWidth(); + } + if (textHeight < textLayout.getHeight()) { + textHeight = textLayout.getHeight(); + } + minScale = minWidth / textWidth; + + } + + private void initPs() { + srcPs = new float[]{0, 0, textWidth, 0, textWidth, textHeight, 0, textHeight, textWidth / 2, textHeight / 2}; + dstPs = srcPs.clone(); + } + + private void initButtons() { + btDelete = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_delete_easy_photos); +// btEditor = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_editor_easy_photos); + btController = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_controller_easy_photos); +// btRotate = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_rotate); + btSize = btDelete.getWidth(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + canvas.drawBitmap(bitmap, mMatrix, bitmapPaint); + if (isUsing) + drawOthers(canvas); + } + + private void drawOthers(Canvas canvas) { + path.reset(); + path.moveTo(dstPs[0], dstPs[1]); + path.lineTo(dstPs[2], dstPs[3]); + path.lineTo(dstPs[4], dstPs[5]); + path.lineTo(dstPs[6], dstPs[7]); + path.lineTo(dstPs[0], dstPs[1]); + for (int i = 0; i < 7; i += 2) { + if (i == 6) { + canvas.drawLine(dstPs[i], dstPs[i + 1], dstPs[0], dstPs[1], framePaint); + break; + } + canvas.drawLine(dstPs[i], dstPs[i + 1], dstPs[i + 2], dstPs[i + 3], framePaint); + } + + + canvas.drawBitmap(btDelete, dstPs[2] - btSize / 2, dstPs[3] - btSize / 2, bitmapPaint); +// canvas.drawBitmap(btEditor, dstPs[0] - btSize / 2, dstPs[1] - btSize / 2, bitmapPaint); + canvas.drawBitmap(btController, dstPs[4] - btSize / 2, dstPs[5] - btSize / 2, bitmapPaint); +// canvas.drawBitmap(btRotate, dstPs[6] - btSize / 2, dstPs[7] - btSize / 2, bitmapPaint); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + + gestureDetector.onTouchEvent(event); + if (MotionEvent.ACTION_UP == event.getAction() || MotionEvent.ACTION_POINTER_UP == event.getAction() || MotionEvent.ACTION_POINTER_1_UP == event.getAction() || MotionEvent.ACTION_POINTER_2_UP == event.getAction()) { + setDoubleDownPoints(0, 0, 0, 0); + lastDoubleDegress = 1000; + lastDegree = computeDegree(new Point((int) dstPs[4], (int) dstPs[5]), new Point((int) dstPs[8], (int) dstPs[9])); + } + + return !isOut; + } + + private void setDoubleDownPoints(float x1, float y1, float x2, float y2) { + downX1 = x1; + downY1 = y1; + downX2 = x2; + downY2 = y2; + } + + private void calculateClickType(int x, int y) { + RectF rectF = new RectF(x - btSize / 2 - 40, y - btSize / 2 - 40, x + btSize / 2 + 40, y + btSize / 2 + 40); + + Rect rect = new Rect(); + + + if (rectF.contains(dstPs[2] - 20, dstPs[3])) { + clickType = ClickType.DELETE; + } +// else if (rectF.contains(dstPs[0], dstPs[1])) { +// clickType = ClickType.EDITOR; +// } + else if (rectF.contains(dstPs[4] + 20, dstPs[5])) { + clickType = ClickType.SCALE; + } +// else if (rectF.contains(dstPs[6] - 20, dstPs[7])) { +// clickType = ClickType.IMAGE; +// } + else { + RectF bounds = new RectF(); + path.computeBounds(bounds, true); + Region region = new Region(); + region.setPath(path, new Region((int) bounds.left, (int) bounds.top, (int) bounds.right, (int) bounds.bottom)); + + if (region.contains(x, y)) { + if (isOut) { + isOut = false; + } + if (!isUsing) { + isUsing = true; + listener.onUsing(); + postInvalidate(); + } + clickType = ClickType.IMAGE; + } else { + if (isUsing) { + isUsing = false; + postInvalidate(); + } + if (!isOut) { + isOut = true; + } + clickType = ClickType.OUT; + } + } + } + + public void delete() { + if (null == listener) { + throw new NullPointerException("OnStickerClickListener listener is null"); + } + setVisibility(GONE); + EasyPhotos.recycle(bitmap); + listener.onDelete(); + } + + private void editor() { + listener.onEditor(); + } + + private void top() { + bringToFront();//置顶 + invalidate(); + listener.onTop(); + } + + private void move(float distansX, float distansY) { + mMatrix.postTranslate(distansX, distansY); + matrixMap(); + } + + public void moveTo(float x, float y) { + move(x - dstPs[8], y - dstPs[1]); + } + + private void controller(MotionEvent event) { + scale(event); + rotate(event); + } + + private void scale(MotionEvent event) { + float originalX1; + float originalY1; + float originalX2; + float originalY2; + float moveX1; + float moveY1; + float moveX2; + float moveY2; + if (event.getPointerCount() == 2) { + originalX2 = downX2; + originalY2 = downY2; + originalX1 = downX1; + originalY1 = downY1; + + moveX2 = event.getX(1); + moveY2 = event.getY(1); + moveX1 = event.getX(0); + moveY1 = event.getY(0); + + } else { + originalX2 = dstPs[4]; + originalY2 = dstPs[5]; + originalX1 = dstPs[0]; + originalY1 = dstPs[1]; + + moveX2 = event.getX(); + moveY2 = event.getY(); + moveX1 = originalX1; + moveY1 = originalY1; + } + + float temp1 = getDistanceOfTwoPoints(originalX2, originalY2, originalX1, originalY1); + float temp2 = getDistanceOfTwoPoints(moveX2, moveY2, moveX1, moveY1); + + float scalValue = temp2 / temp1; + + if (getScaleValue() < minScale && scalValue < (float) 1) { + return; + } + mMatrix.postScale(scalValue, scalValue, dstPs[8], dstPs[9]); + matrixMap(); + if (event.getPointerCount() == 2) { + setDoubleDownPoints(moveX1, moveY1, moveX2, moveY2); + } + } + + private void rotate(MotionEvent event) { + if (event.getPointerCount() == 2) { + float preDegree = computeDegree(new Point((int) event.getX(0), (int) event.getY(0)), new Point((int) event.getX(1), (int) event.getY(1))); + if (lastDoubleDegress == 1000) { + lastDoubleDegress = preDegree; + } + mMatrix.postRotate(preDegree - lastDoubleDegress, dstPs[8], dstPs[9]); + matrixMap(); + lastDoubleDegress = preDegree; + + } else { + float preDegree = computeDegree(new Point((int) event.getX(), (int) event.getY()), new Point((int) dstPs[8], (int) dstPs[9])); + mMatrix.postRotate(preDegree - lastDegree, dstPs[8], dstPs[9]); + matrixMap(); + lastDegree = preDegree; + } + } + + // 获å–饰å“缩放比例(与原图相比) + public float getScaleValue() { + float preDistance = (srcPs[8] - srcPs[0]) * (srcPs[8] - srcPs[0]) + (srcPs[9] - srcPs[1]) * (srcPs[9] - srcPs[1]); + float lastDistance = (dstPs[8] - dstPs[0]) * (dstPs[8] - dstPs[0]) + (dstPs[9] - dstPs[1]) * (dstPs[9] - dstPs[1]); + float scaleValue = (float) Math.sqrt(lastDistance / preDistance); + return scaleValue; + } + + private void matrixMap() { + mMatrix.mapPoints(dstPs, srcPs); + postInvalidate(); + } + + public void setUsing(boolean isUsing) { + this.isUsing = isUsing; + postInvalidate(); + } + + private float getDistanceOfTwoPoints(float x1, float y1, float x2, float y2) { + return (float) (Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))); + } + + public float computeDegree(Point p1, Point p2) { + float tran_x = p1.x - p2.x; + float tran_y = p1.y - p2.y; + float degree = 0.0f; + float angle = (float) (Math.asin(tran_x / Math.sqrt(tran_x * tran_x + tran_y * tran_y)) * 180 / Math.PI); + if (!Float.isNaN(angle)) { + if (tran_x >= 0 && tran_y <= 0) {//ç¬¬ä¸€è±¡é™ + degree = angle; + } else if (tran_x <= 0 && tran_y <= 0) {//ç¬¬äºŒè±¡é™ + degree = angle; + } else if (tran_x <= 0 && tran_y >= 0) {//ç¬¬ä¸‰è±¡é™ + degree = -180 - angle; + } else if (tran_x >= 0 && tran_y >= 0) {//ç¬¬å››è±¡é™ + degree = 180 - angle; + } + } + return degree; + } + + private enum ClickType { + DELETE, EDITOR, SCALE, ROTATE, IMAGE, OUT + } + + private class StickerGestureListener extends GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onSingleTapConfirmed(MotionEvent e) { + + switch (clickType) { + case DELETE: + delete(); + break; + case EDITOR: +// editor(); + break; + case SCALE: + break; + case ROTATE: + break; + case IMAGE: +// editor(); + break; + case OUT: + break; + } + return true; + } + + @Override + public boolean onDoubleTap(MotionEvent e) { + switch (clickType) { + case DELETE: + break; + case EDITOR: + break; + case SCALE: + break; + case ROTATE: + break; + case IMAGE: + editor(); + break; + case OUT: + break; + } + return super.onDoubleTap(e); + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { + switch (clickType) { + case DELETE: + break; + case EDITOR: + break; + case SCALE: + if (e2.getPointerCount() > 1) break; + controller(e2); + break; + case ROTATE: +// rotate(e2); + break; + case IMAGE: + if (e2.getPointerCount() == 2) { + if (downX1 + downY1 + downX2 + downY2 == 0) { + setDoubleDownPoints(e2.getX(0), e2.getY(0), e2.getX(1), e2.getY(1)); + } + controller(e2); + } else if (e2.getPointerCount() == 1) { + move(-distanceX, -distanceY); + } + break; + case OUT: + break; + } + return true; + } + + @Override + public boolean onDown(MotionEvent e) { + isChecked = true; + calculateClickType((int) e.getX(), (int) e.getY()); + if (clickType == ClickType.IMAGE) { + top(); + } + return true; + } + + } + + public void resetText(String text) { + this.text = text; + resetSize(); + resetPoints(); + resetBitmap(); + matrixMap(); + } + + private void resetPoints() { + srcPs = new float[]{0, 0, textWidth, 0, textWidth, textHeight, 0, textHeight, textWidth / 2, textHeight / 2}; + } + + public String getText() { + return this.text; + } + + public void setTextColor(int color) { + textPaint.setColor(color); + resetSize(); + resetPoints(); + resetBitmap(); + matrixMap(); + } + + public int getTextColor() { + return textPaint.getColor(); + } + + public void setTextAlpha(int alpha) { + textPaint.setAlpha(alpha); + resetSize(); + resetPoints(); + resetBitmap(); + matrixMap(); + } + + public int getTextAlpha() { + return textPaint.getAlpha(); + } + + public boolean isUsing() { + return this.isUsing; + } + + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/result/Result.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/result/Result.java new file mode 100644 index 0000000..b58add9 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/result/Result.java @@ -0,0 +1,144 @@ +package com.huantansheng.easyphotos.result; + +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; + +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.setting.Setting; + +import java.util.ArrayList; + +/** + * 存储的返回图片集 + * Created by huan on 2017/10/24. + */ + +public class Result { + public static ArrayList photos = new ArrayList<>(); + public static final int ADD_SUCCESS = 0; + public static final int PICTURE_OUT = -1; + public static final int VIDEO_OUT = -2; + public static final int SINGLE_TYPE = -3; + + /** + * @return 0:添加æˆåŠŸ -2:超过视频选择数 -1:超过图片选择数 + */ + public static int addPhoto(Photo photo) { + if (photos.isEmpty()) { + photo.selected = true; + photos.add(photo); + return ADD_SUCCESS; + } + if (Setting.complexSelector) { + if (Setting.complexSingleType) { + if (photos.get(0).type.contains(Type.VIDEO)) { + if (!photo.type.contains(Type.VIDEO)) { + return SINGLE_TYPE; + } + } + if (!photos.get(0).type.contains(Type.VIDEO)) { + if (photo.type.contains(Type.VIDEO)) { + return SINGLE_TYPE; + } + } + + } + int number = getVideoNumber(); + if (photo.type.contains(Type.VIDEO) && number >= Setting.complexVideoCount) { + return VIDEO_OUT; + } + number = photos.size() - number; + if ((!photo.type.contains(Type.VIDEO)) && number >= Setting.complexPictureCount) { + return PICTURE_OUT; + } + } + photo.selected = true; + photos.add(photo); + return ADD_SUCCESS; + } + + public static void removePhoto(Photo photo) { + photo.selected = false; + photos.remove(photo); + } + + public static void removePhoto(int photoIndex) { + removePhoto(photos.get(photoIndex)); + } + + public static void removeAll() { + int size = photos.size(); + for (int i = 0; i < size; i++) { + removePhoto(0); + } + } + + private static int getVideoNumber() { + int count = 0; + for (Photo p : photos) { + if (p.type.contains(Type.VIDEO)) { + count += 1; + } + } + return count; + } + + public static void processOriginal() { + boolean isIceApi = Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1; + if (Setting.showOriginalMenu) { + if (Setting.originalMenuUsable) { + for (Photo photo : photos) { + photo.selectedOriginal = Setting.selectedOriginal; + if (isIceApi && photo.width == 0) { + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(photo.path, options); + photo.width = options.outWidth; + photo.height = options.outHeight; + } + } + } + } + } + + public static void clear() { + photos.clear(); + } + + public static boolean isEmpty() { + return photos.isEmpty(); + } + + public static int count() { + return photos.size(); + } + + /** + * 获å–选择器应该显示的数字 + * + * @param photo 当å‰å›¾ç‰‡ + * @return 选择器应该显示的数字 + */ + public static String getSelectorNumber(Photo photo) { + return String.valueOf(photos.indexOf(photo) + 1); + } + + public static String getPhotoPath(int position) { + return photos.get(position).path; + } + + public static Uri getPhotoUri(int position) { + return photos.get(position).uri; + } + + public static String getPhotoType(int position) { + return photos.get(position).type; + } + + public static long getPhotoDuration(int position) { + return photos.get(position).duration; + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/setting/Setting.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/setting/Setting.java new file mode 100644 index 0000000..69b9539 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/setting/Setting.java @@ -0,0 +1,123 @@ +package com.huantansheng.easyphotos.setting; + +import androidx.annotation.IntDef; +import android.view.View; + +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.engine.ImageEngine; +import com.huantansheng.easyphotos.models.album.entity.Photo; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +/** + * EasyPhotos的设置值 + * Created by huan on 2017/10/24. + */ + +public class Setting { + public static int minWidth = 1; + public static int minHeight = 1; + public static long minSize = 1; + public static int count = 1; + + public static WeakReference photosAdView = null; + public static WeakReference albumItemsAdView = null; + public static boolean photoAdIsOk = false; + public static boolean albumItemsAdIsOk = false; + public static boolean useWidth = false; + public static ArrayList selectedPhotos = new ArrayList<>(); + public static boolean showOriginalMenu = false; + public static boolean originalMenuUsable = false; + public static String originalMenuUnusableHint = ""; + public static boolean selectedOriginal = false; + public static String fileProviderAuthority = null; + public static boolean isShowCamera = false; + public static int cameraLocation = 1; + public static boolean onlyStartCamera = false; + public static boolean showPuzzleMenu = true; + public static List filterTypes = new ArrayList<>(); + public static boolean showGif = false; + public static boolean showVideo = false; + public static boolean showCleanMenu = true; + public static long videoMinSecond = 0L; + public static long videoMaxSecond = Long.MAX_VALUE; + public static ImageEngine imageEngine = null; + + public static final int LIST_FIRST = 0; + public static final int BOTTOM_RIGHT = 1; + + public static boolean complexSelector = false; + public static boolean complexSingleType = false; + public static int complexVideoCount = 0; + public static int complexPictureCount = 0; + //å½“ä¼ å…¥å·²é€‰ä¸­å›¾ç‰‡æ—¶ï¼Œæ˜¯å¦æŒ‰ç…§ä¹‹å‰é€‰ä¸­çš„é¡ºåºæŽ’åº + public static boolean isSequentialSelectedPhotos = true; + + @Retention(RetentionPolicy.SOURCE) + @IntDef(value = {LIST_FIRST, BOTTOM_RIGHT}) + public @interface Location { + + } + + public static void clear() { + minWidth = 1; + minHeight = 1; + minSize = 1; + count = 1; + + photosAdView = null; + albumItemsAdView = null; + photoAdIsOk = false; + albumItemsAdIsOk = false; + selectedPhotos.clear(); + showOriginalMenu = false; + originalMenuUsable = false; + originalMenuUnusableHint = ""; + selectedOriginal = false; + cameraLocation = BOTTOM_RIGHT; + isShowCamera = false; + onlyStartCamera = false; + showPuzzleMenu = true; + filterTypes = new ArrayList<>(); + showGif = false; + showVideo = false; + showCleanMenu = true; + videoMinSecond = 0L; + videoMaxSecond = Long.MAX_VALUE; + complexSelector = false; + complexSingleType = false; + complexVideoCount = 0; + complexPictureCount = 0; + isSequentialSelectedPhotos = true; + } + + public static boolean isFilter(String type) { + type = type.toLowerCase(); + for (String filterType : Setting.filterTypes) { + if (type.contains(filterType)) { + return true; + } + } + return false; + } + + public static boolean isOnlyVideo() { + return filterTypes.size() == 1 && filterTypes.get(0).equals(Type.VIDEO); + } + + public static boolean hasPhotosAd() { + return photosAdView != null && photosAdView.get() != null; + } + + public static boolean hasAlbumItemsAd() { + return albumItemsAdView != null && albumItemsAdView.get() != null; + } + + public static boolean isBottomRightCamera() { + return cameraLocation == BOTTOM_RIGHT; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/EasyPhotosActivity.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/EasyPhotosActivity.java new file mode 100644 index 0000000..dafea95 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/EasyPhotosActivity.java @@ -0,0 +1,1187 @@ +package com.huantansheng.easyphotos.ui; + +import android.Manifest; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.app.Fragment; +import android.content.ContentValues; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.database.Cursor; +import android.graphics.BitmapFactory; +import android.graphics.Color; +import android.hardware.Camera; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import android.provider.MediaStore; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.view.animation.AccelerateDecelerateInterpolator; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.ScaleAnimation; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.core.content.PermissionChecker; +import androidx.exifinterface.media.ExifInterface; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; + +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Code; +import com.huantansheng.easyphotos.constant.Key; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.ad.AdListener; +import com.huantansheng.easyphotos.models.album.AlbumModel; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.adapter.AlbumItemsAdapter; +import com.huantansheng.easyphotos.ui.adapter.PhotosAdapter; +import com.huantansheng.easyphotos.ui.dialog.LoadingDialog; +import com.huantansheng.easyphotos.ui.widget.PressedTextView; +import com.huantansheng.easyphotos.utils.Color.ColorUtils; +import com.huantansheng.easyphotos.utils.String.StringUtils; +import com.huantansheng.easyphotos.utils.bitmap.BitmapUtils; +import com.huantansheng.easyphotos.utils.media.DurationUtils; +import com.huantansheng.easyphotos.utils.media.MediaScannerConnectionUtils; +import com.huantansheng.easyphotos.utils.permission.PermissionUtil; +import com.huantansheng.easyphotos.utils.settings.SettingsUtils; +import com.huantansheng.easyphotos.utils.system.SystemUtils; +import com.huantansheng.easyphotos.utils.uri.UriUtils; + +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.Locale; +import java.util.logging.Logger; + +public class EasyPhotosActivity extends AppCompatActivity implements AlbumItemsAdapter.OnClickListener, PhotosAdapter.OnClickListener, AdListener, View.OnClickListener { + + private File mTempImageFile; + + private AlbumModel albumModel; + private ArrayList photoList = new ArrayList<>(); + private ArrayList albumItemList = new ArrayList<>(); + + private ArrayList resultList = new ArrayList<>(); + + private RecyclerView rvPhotos; + private PhotosAdapter photosAdapter; + private GridLayoutManager gridLayoutManager; + + private RecyclerView rvAlbumItems; + private AlbumItemsAdapter albumItemsAdapter; + private RelativeLayout rootViewAlbumItems; + + private PressedTextView tvAlbumItems, tvDone, tvPreview; + private TextView tvOriginal; + private AnimatorSet setHide; + private AnimatorSet setShow; + + private int currAlbumItemIndex = 0; + + private ImageView ivCamera; + private TextView tvTitle; + + private LinearLayout mSecondMenus; + + private RelativeLayout permissionView; + private TextView tvPermission; + private View mBottomBar; + + private boolean isQ = false; + + public static long startTime = 0; + + public static boolean doubleClick() { + long now = System.currentTimeMillis(); + if (now - startTime < 600) { + return true; + } + startTime = now; + return false; + } + + public static void start(Activity activity, int requestCode) { + if (doubleClick()) + return; + Intent intent = new Intent(activity, EasyPhotosActivity.class); + activity.startActivityForResult(intent, requestCode); + } + + public static void start(Fragment fragment, int requestCode) { + if (doubleClick()) + return; + Intent intent = new Intent(fragment.getActivity(), EasyPhotosActivity.class); + fragment.startActivityForResult(intent, requestCode); + } + + public static void start(androidx.fragment.app.Fragment fragment, int requestCode) { + if (doubleClick()) + return; + Intent intent = new Intent(fragment.getContext(), EasyPhotosActivity.class); + fragment.startActivityForResult(intent, requestCode); + } + + LoadingDialog loadingDialog; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_easy_photos); + hideActionBar(); + adaptationStatusBar(); + loadingDialog = LoadingDialog.get(this); + isQ = Build.VERSION.SDK_INT == Build.VERSION_CODES.Q; + if (!Setting.onlyStartCamera && null == Setting.imageEngine) { + finish(); + return; + } + initSomeViews(); + if (PermissionUtil.checkAndRequestPermissionsInActivity(this, getNeedPermissions())) { + hasPermissions(); + } else { + permissionView.setVisibility(View.VISIBLE); + } + } + + private void adaptationStatusBar() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + int statusColor = getWindow().getStatusBarColor(); + if (statusColor == Color.TRANSPARENT) { + statusColor = ContextCompat.getColor(this, R.color.colorPrimaryDark); + } + if (ColorUtils.isWhiteColor(statusColor)) { + SystemUtils.getInstance().setStatusDark(this, true); + } + } + } + + private void initSomeViews() { + mBottomBar = findViewById(R.id.m_bottom_bar); + permissionView = findViewById(R.id.rl_permissions_view); + tvPermission = findViewById(R.id.tv_permission); + rootViewAlbumItems = findViewById(R.id.root_view_album_items); + tvTitle = findViewById(R.id.tv_title); + if (Setting.isOnlyVideo()) { + tvTitle.setText(R.string.video_selection_easy_photos); + } + findViewById(R.id.iv_second_menu).setVisibility(Setting.showPuzzleMenu || Setting.showCleanMenu || Setting.showOriginalMenu ? View.VISIBLE : View.GONE); + setClick(R.id.iv_back); + } + + private void hasPermissions() { + permissionView.setVisibility(View.GONE); + if (Setting.onlyStartCamera) { + launchCamera(Code.REQUEST_CAMERA); + return; + } + AlbumModel.CallBack albumModelCallBack = new AlbumModel.CallBack() { + @Override + public void onAlbumWorkedCallBack() { + runOnUiThread(new Runnable() { + @Override + public void run() { + loadingDialog.dismiss(); + onAlbumWorkedDo(); + } + }); + } + }; + loadingDialog.show(); + albumModel = AlbumModel.getInstance(); + albumModel.query(this, albumModelCallBack); + } + + protected String[] getNeedPermissions() { + /*******************************官方库的æºç start*******************************/ + // if (Setting.isShowCamera) { + // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + // return new String[]{Manifest.permission.CAMERA, + // Manifest.permission.WRITE_EXTERNAL_STORAGE, + // Manifest.permission.READ_EXTERNAL_STORAGE}; + // } + // return new String[]{Manifest.permission.CAMERA, + // Manifest.permission.WRITE_EXTERNAL_STORAGE}; + // } else { + // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + // return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, + // Manifest.permission.READ_EXTERNAL_STORAGE}; + // } + // return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}; + // } + /*******************************官方库的æºç end*******************************/ + + + /*********************************自定义添加适é…Android13相册æƒé™start*************************/ + if (Setting.isShowCamera) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + return new String[]{Manifest.permission.CAMERA, + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.READ_MEDIA_VIDEO}; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + return new String[]{Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE}; + } + return new String[]{Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE}; + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + return new String[]{Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.READ_MEDIA_VIDEO}; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE}; + } + return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}; + } + /*********************************自定义添加适é…Android13相册æƒé™end*************************/ + } + + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull final String[] permissions, + @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + PermissionUtil.onPermissionResult(this, permissions, grantResults, + new PermissionUtil.PermissionCallBack() { + @Override + public void onSuccess() { + hasPermissions(); + } + + @Override + public void onShouldShow() { + tvPermission.setText(R.string.permissions_again_easy_photos); + permissionView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (PermissionUtil.checkAndRequestPermissionsInActivity(EasyPhotosActivity.this, getNeedPermissions())) { + hasPermissions(); + } + } + }); + + } + + @Override + public void onFailed() { + tvPermission.setText(R.string.permissions_die_easy_photos); + permissionView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + SettingsUtils.startMyApplicationDetailsForResult(EasyPhotosActivity.this, + getPackageName()); + } + }); + + } + }); + } + + + /** + * å¯åŠ¨ç›¸æœº + * + * @param requestCode startActivityForResultçš„è¯·æ±‚ç  + */ + private void launchCamera(int requestCode) { + if (TextUtils.isEmpty(Setting.fileProviderAuthority)) + throw new RuntimeException("AlbumBuilder" + " : 请执行 setFileProviderAuthority()方法"); + if (!cameraIsCanUse()) { + permissionView.setVisibility(View.VISIBLE); + tvPermission.setText(R.string.permissions_die_easy_photos); + permissionView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + SettingsUtils.startMyApplicationDetailsForResult(EasyPhotosActivity.this, + getPackageName()); + } + }); + return; + } + toAndroidCamera(requestCode); + } + + /** + * å¯åŠ¨ç³»ç»Ÿç›¸æœº + * + * @param requestCode è¯·æ±‚ç›¸æœºçš„è¯·æ±‚ç  + */ + private Uri photoUri = null; + + private void toAndroidCamera(int requestCode) { + Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + + if (cameraIntent.resolveActivity(getPackageManager()) != null || this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) { + + if (isQ) { + photoUri = createImageUri(); + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); + cameraIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + cameraIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + startActivityForResult(cameraIntent, requestCode); + return; + } + + createCameraTempImageFile(); + if (mTempImageFile != null && mTempImageFile.isFile()) { + + Uri imageUri = UriUtils.getUri(this, mTempImageFile); + + cameraIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //对目标应用临时授æƒè¯¥Uri所代表的文件 + cameraIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); //对目标应用临时授æƒè¯¥Uri所代表的文件 + + cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);//å°†æ‹å–的照片ä¿å­˜åˆ°æŒ‡å®šURI + startActivityForResult(cameraIntent, requestCode); + } else { + Toast.makeText(getApplicationContext(), + R.string.camera_temp_file_error_easy_photos, Toast.LENGTH_SHORT).show(); + } + } else { + Toast.makeText(getApplicationContext(), R.string.msg_no_camera_easy_photos, + Toast.LENGTH_SHORT).show(); + } + } + + + /** + * 创建图片地å€uri,用于ä¿å­˜æ‹ç…§åŽçš„照片 Android 10以åŽä½¿ç”¨è¿™ç§æ–¹æ³• + */ + private Uri createImageUri() { + //设置ä¿å­˜å‚数到ContentValues中 + ContentValues contentValues = new ContentValues(); + //设置文件å + contentValues.put(MediaStore.Images.Media.DISPLAY_NAME, + String.valueOf(System.currentTimeMillis())); + //兼容Android Q和以下版本 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + //android Q中ä¸å†ä½¿ç”¨DATA字段,而用RELATIVE_PATH代替 + //RELATIVE_PATHæ˜¯ç›¸å¯¹è·¯å¾„ä¸æ˜¯ç»å¯¹è·¯å¾„;照片存储的地方为:存储/Pictures + contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, "Pictures"); + } + //设置文件类型 + contentValues.put(MediaStore.Images.Media.MIME_TYPE, "image/JPEG"); + //执行insertæ“作,å‘系统文件夹中添加文件 + //EXTERNAL_CONTENT_URI代表外部存储器,该值ä¸å˜ + return getContentResolver().insert(MediaStore.Images.Media.getContentUri("external"), + contentValues); + } + + + private void createCameraTempImageFile() { + File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); + if (null == dir) { + dir = new File(Environment.getExternalStorageDirectory(), + File.separator + "DCIM" + File.separator + "Camera" + File.separator); + } + if (!dir.isDirectory()) { + if (!dir.mkdirs()) { + dir = getExternalFilesDir(null); + if (null == dir || !dir.exists()) { + dir = getFilesDir(); + if (null == dir || !dir.exists()) { + dir = getFilesDir(); + if (null == dir || !dir.exists()) { + String cacheDirPath = File.separator + "data" + File.separator + + "data" + File.separator + getPackageName() + File.separator + "cache" + File.separator; + dir = new File(cacheDirPath); + if (!dir.exists()) { + dir.mkdirs(); + } + } + } + } + } + } + + try { + mTempImageFile = File.createTempFile("IMG", ".jpg", dir); + } catch (IOException e) { + e.printStackTrace(); + mTempImageFile = null; + } + + } + + + @SuppressLint("MissingSuperCall") + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + // super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == Code.REQUEST_SETTING_APP_DETAILS) { + if (PermissionUtil.checkAndRequestPermissionsInActivity(this, getNeedPermissions())) { + hasPermissions(); + } else { + permissionView.setVisibility(View.VISIBLE); + } + return; + } + switch (resultCode) { + case RESULT_OK: + if (Code.REQUEST_CAMERA == requestCode) { + if (isQ) { + onCameraResultForQ(); + return; + } + + if (mTempImageFile == null || !mTempImageFile.isFile()) { + throw new RuntimeException("EasyPhotosæ‹ç…§ä¿å­˜çš„图片ä¸å­˜åœ¨"); + } + onCameraResult(); + return; + } + + if (Code.REQUEST_PREVIEW_ACTIVITY == requestCode) { + if (data.getBooleanExtra(Key.PREVIEW_CLICK_DONE, false)) { + done(); + return; + } + photosAdapter.change(); + processOriginalMenu(); + shouldShowMenuDone(); + return; + } + + if (Code.REQUEST_PUZZLE_SELECTOR == requestCode) { + Photo puzzlePhoto = data.getParcelableExtra(EasyPhotos.RESULT_PHOTOS); + addNewPhoto(puzzlePhoto); + return; + } + + break; + case RESULT_CANCELED: + if (Code.REQUEST_CAMERA == requestCode) { + // 删除临时文件 + if (mTempImageFile != null && mTempImageFile.exists()) { + mTempImageFile.delete(); + mTempImageFile = null; + } + if (Setting.onlyStartCamera) { + finish(); + } + return; + } + + if (Code.REQUEST_PREVIEW_ACTIVITY == requestCode) { + processOriginalMenu(); + return; + } + break; + default: + break; + } + } + + String folderPath; + String albumName; + + private void addNewPhoto(Photo photo) { + photo.selectedOriginal = Setting.selectedOriginal; + + if (!isQ) { + MediaScannerConnectionUtils.refresh(this, photo.path); + folderPath = new File(photo.path).getParentFile().getAbsolutePath(); + albumName = StringUtils.getLastPathSegment(folderPath); + } + + String albumItem_all_name = albumModel.getAllAlbumName(this); + albumModel.album.getAlbumItem(albumItem_all_name).addImageItem(0, photo); + + albumModel.album.addAlbumItem(albumName, folderPath, photo.path, photo.uri); + albumModel.album.getAlbumItem(albumName).addImageItem(0, photo); + + albumItemList.clear(); + albumItemList.addAll(albumModel.getAlbumItems()); + if (Setting.hasAlbumItemsAd()) { + int albumItemsAdIndex = 2; + if (albumItemList.size() < albumItemsAdIndex + 1) { + albumItemsAdIndex = albumItemList.size() - 1; + } + albumItemList.add(albumItemsAdIndex, Setting.albumItemsAdView); + } + albumItemsAdapter.notifyDataSetChanged(); + + if (Setting.count == 1) { + Result.clear(); + int res = Result.addPhoto(photo); + onSelectorOutOfMax(res); + } else { + if (Result.count() >= Setting.count) { + onSelectorOutOfMax(null); + } else { + int res = Result.addPhoto(photo); + onSelectorOutOfMax(res); + } + } + rvAlbumItems.scrollToPosition(0); + albumItemsAdapter.setSelectedPosition(0); + shouldShowMenuDone(); + } + + private Photo getPhoto(Uri uri) { + Photo p = null; + String path; + String name; + long dateTime; + String type; + long size; + int width = 0; + int height = 0; + int orientation = 0; + String[] projections = AlbumModel.getInstance().getProjections(); + boolean shouldReadWidth = projections.length > 8; + Cursor cursor = getContentResolver().query(uri, projections, null, null, null); + if (cursor == null) { + return null; + } + int albumNameCol = cursor.getColumnIndex(MediaStore.MediaColumns.BUCKET_DISPLAY_NAME); + + if (cursor.moveToFirst()) { + path = cursor.getString(1); + name = cursor.getString(2); + dateTime = cursor.getLong(3); + type = cursor.getString(4); + size = cursor.getLong(5); + if (shouldReadWidth) { + width = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns.WIDTH)); + height = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns.HEIGHT)); + orientation = + cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns.ORIENTATION)); + if (90 == orientation || 270 == orientation) { + int temp = width; + width = height; + height = temp; + } + } + if (albumNameCol > 0) { + albumName = cursor.getString(albumNameCol); + folderPath = albumName; + } + p = new Photo(name, uri, path, dateTime, width, height, orientation, size, 0, type); + } + cursor.close(); + + return p; + } + + private void onCameraResultForQ() { + loadingDialog.show(); + new Thread(new Runnable() { + @Override + public void run() { + final Photo photo = getPhoto(photoUri); + if (photo == null) { + Log.e("easyPhotos", "onCameraResultForQ() -》photo = null"); + return; + } + + runOnUiThread(new Runnable() { + @Override + public void run() { + loadingDialog.dismiss(); + if (Setting.onlyStartCamera || albumModel.getAlbumItems().isEmpty()) { + Intent data = new Intent(); + photo.selectedOriginal = Setting.selectedOriginal; + resultList.add(photo); + + data.putParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS, resultList); + data.putExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, + Setting.selectedOriginal); + setResult(RESULT_OK, data); + finish(); + return; + } + + addNewPhoto(photo); + } + }); + + } + }).start(); + } + + private void onCameraResult() { + LoadingDialog loading = LoadingDialog.get(this); + new Thread(new Runnable() { + @Override + public void run() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HH_mm_ss", + Locale.getDefault()); + String imageName = "IMG_%s.jpg"; + String filename = String.format(imageName, dateFormat.format(new Date())); + File reNameFile = new File(mTempImageFile.getParentFile(), filename); + if (!reNameFile.exists()) { + if (mTempImageFile.renameTo(reNameFile)) { + mTempImageFile = reNameFile; + } + } + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(mTempImageFile.getAbsolutePath(), options); + MediaScannerConnectionUtils.refresh(EasyPhotosActivity.this, mTempImageFile);// + // 更新媒体库 + + Uri uri = UriUtils.getUri(EasyPhotosActivity.this, mTempImageFile); + int width = 0; + int height = 0; + int orientation = 0; + if (Setting.useWidth) { + width = options.outWidth; + height = options.outHeight; + + ExifInterface exif = null; + try { + exif = new ExifInterface(mTempImageFile); + } catch (IOException e) { + e.printStackTrace(); + } + if (null != exif) { + orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); + if (orientation == ExifInterface.ORIENTATION_ROTATE_90 || orientation == ExifInterface.ORIENTATION_ROTATE_270) { + width = options.outHeight; + height = options.outWidth; + } + } + } + + final Photo photo = new Photo(mTempImageFile.getName(), uri, + mTempImageFile.getAbsolutePath(), mTempImageFile.lastModified() / 1000, + width, height, orientation, mTempImageFile.length(), + DurationUtils.getDuration(mTempImageFile.getAbsolutePath()), + options.outMimeType); + + runOnUiThread(new Runnable() { + @Override + public void run() { + if (Setting.onlyStartCamera || albumModel.getAlbumItems().isEmpty()) { + Intent data = new Intent(); + + photo.selectedOriginal = Setting.selectedOriginal; + resultList.add(photo); + + data.putParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS, resultList); + + data.putExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, + Setting.selectedOriginal); + + setResult(RESULT_OK, data); + finish(); + return; + } + + addNewPhoto(photo); + } + }); + } + }).start(); + + } + + + private void onAlbumWorkedDo() { + initView(); + } + + private void initView() { + + if (albumModel.getAlbumItems().isEmpty()) { + if (Setting.isOnlyVideo()) { + Toast.makeText(getApplicationContext(), R.string.no_videos_easy_photos, + Toast.LENGTH_LONG).show(); + finish(); + return; + } + Toast.makeText(getApplicationContext(), R.string.no_photos_easy_photos, + Toast.LENGTH_LONG).show(); + if (Setting.isShowCamera) + launchCamera(Code.REQUEST_CAMERA); + else + finish(); + return; + } + + EasyPhotos.setAdListener(this); + if (Setting.hasPhotosAd()) { + findViewById(R.id.m_tool_bar_bottom_line).setVisibility(View.GONE); + } + ivCamera = findViewById(R.id.fab_camera); + if (Setting.isShowCamera && Setting.isBottomRightCamera()) { + ivCamera.setVisibility(View.VISIBLE); + } + if (!Setting.showPuzzleMenu) { + findViewById(R.id.tv_puzzle).setVisibility(View.GONE); + } + mSecondMenus = findViewById(R.id.m_second_level_menu); + int columns = getResources().getInteger(R.integer.photos_columns_easy_photos); + tvAlbumItems = findViewById(R.id.tv_album_items); + tvAlbumItems.setText(albumModel.getAlbumItems().get(0).name); + tvDone = findViewById(R.id.tv_done); + rvPhotos = findViewById(R.id.rv_photos); + ((SimpleItemAnimator) rvPhotos.getItemAnimator()).setSupportsChangeAnimations(false); + //去除item更新的闪光 + photoList.clear(); + photoList.addAll(albumModel.getCurrAlbumItemPhotos(0)); + int index = 0; + if (Setting.hasPhotosAd()) { + photoList.add(index, Setting.photosAdView); + } + if (Setting.isShowCamera && !Setting.isBottomRightCamera()) { + if (Setting.hasPhotosAd()) + index = 1; + photoList.add(index, null); + } + photosAdapter = new PhotosAdapter(this, photoList, this); + + gridLayoutManager = new GridLayoutManager(this, columns); + if (Setting.hasPhotosAd()) { + gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if (position == 0) { + return gridLayoutManager.getSpanCount();//独å ä¸€è¡Œ + } else { + return 1;//åªå ä¸€è¡Œä¸­çš„一列 + } + } + }); + } + rvPhotos.setLayoutManager(gridLayoutManager); + rvPhotos.setAdapter(photosAdapter); + tvOriginal = findViewById(R.id.tv_original); + if (Setting.showOriginalMenu) { + processOriginalMenu(); + } else { + tvOriginal.setVisibility(View.GONE); + } + tvPreview = findViewById(R.id.tv_preview); + + initAlbumItems(); + shouldShowMenuDone(); + setClick(R.id.iv_album_items, R.id.tv_clear, R.id.iv_second_menu, R.id.tv_puzzle); + setClick(tvAlbumItems, rootViewAlbumItems, tvDone, tvOriginal, tvPreview, ivCamera); + + } + + private void hideActionBar() { + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + } + + private void initAlbumItems() { + + rvAlbumItems = findViewById(R.id.rv_album_items); + albumItemList.clear(); + albumItemList.addAll(albumModel.getAlbumItems()); + + if (Setting.hasAlbumItemsAd()) { + int albumItemsAdIndex = 2; + if (albumItemList.size() < albumItemsAdIndex + 1) { + albumItemsAdIndex = albumItemList.size() - 1; + } + albumItemList.add(albumItemsAdIndex, Setting.albumItemsAdView); + } + albumItemsAdapter = new AlbumItemsAdapter(this, albumItemList, 0, this); + rvAlbumItems.setLayoutManager(new LinearLayoutManager(this)); + rvAlbumItems.setAdapter(albumItemsAdapter); + } + + @Override + public void onClick(View v) { + int id = v.getId(); + if (R.id.tv_album_items == id || R.id.iv_album_items == id) { + showAlbumItems(View.GONE == rootViewAlbumItems.getVisibility()); + } else if (R.id.root_view_album_items == id) { + showAlbumItems(false); + } else if (R.id.iv_back == id) { + onBackPressed(); + } else if (R.id.tv_done == id) { + done(); + } else if (R.id.tv_clear == id) { + if (Result.isEmpty()) { + processSecondMenu(); + return; + } + Result.removeAll(); + photosAdapter.change(); + shouldShowMenuDone(); + processSecondMenu(); + } else if (R.id.tv_original == id) { + if (!Setting.originalMenuUsable) { + Toast.makeText(getApplicationContext(), Setting.originalMenuUnusableHint, + Toast.LENGTH_SHORT).show(); + return; + } + Setting.selectedOriginal = !Setting.selectedOriginal; + processOriginalMenu(); + processSecondMenu(); + } else if (R.id.tv_preview == id) { + PreviewActivity.start(EasyPhotosActivity.this, -1, 0); + } else if (R.id.fab_camera == id) { + launchCamera(Code.REQUEST_CAMERA); + } else if (R.id.iv_second_menu == id) { + processSecondMenu(); + } else if (R.id.tv_puzzle == id) { + processSecondMenu(); + PuzzleSelectorActivity.start(this); + } + } + + public void processSecondMenu() { + if (mSecondMenus == null) { + return; + } + if (View.VISIBLE == mSecondMenus.getVisibility()) { + mSecondMenus.setVisibility(View.INVISIBLE); + if (Setting.isShowCamera && Setting.isBottomRightCamera()) { + ivCamera.setVisibility(View.VISIBLE); + } + } else { + mSecondMenus.setVisibility(View.VISIBLE); + if (Setting.isShowCamera && Setting.isBottomRightCamera()) { + ivCamera.setVisibility(View.INVISIBLE); + } + } + } + + private boolean clickDone = false; + + private void done() { + if (clickDone) + return; + clickDone = true; + // if (Setting.useWidth) { + // resultUseWidth(); + // return; + // } + resultFast(); + } + + private void resultUseWidth() { + loadingDialog.show(); + new Thread(new Runnable() { + @Override + public void run() { + int size = Result.photos.size(); + try { + for (int i = 0; i < size; i++) { + Photo photo = Result.photos.get(i); + if (photo.width == 0 || photo.height == 0) { + BitmapUtils.calculateLocalImageSizeThroughBitmapOptions(photo); + } + if (BitmapUtils.needChangeWidthAndHeight(photo)) { + int h = photo.width; + photo.width = photo.height; + photo.height = h; + } + } + } catch (IOException e) { + e.printStackTrace(); + } + runOnUiThread(() -> { + loadingDialog.dismiss(); + resultFast(); + }); + } + }).start(); + } + + private void resultFast() { + Intent intent = new Intent(); + Result.processOriginal(); + resultList.addAll(Result.photos); + intent.putParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS, resultList); + intent.putExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, Setting.selectedOriginal); + setResult(RESULT_OK, intent); + finish(); + } + + private void processOriginalMenu() { + if (!Setting.showOriginalMenu) + return; + if (Setting.selectedOriginal) { + tvOriginal.setTextColor(ContextCompat.getColor(this, R.color.easy_photos_fg_accent)); + } else { + if (Setting.originalMenuUsable) { + tvOriginal.setTextColor(ContextCompat.getColor(this, + R.color.easy_photos_fg_primary)); + } else { + tvOriginal.setTextColor(ContextCompat.getColor(this, + R.color.easy_photos_fg_primary_dark)); + } + } + } + + private void showAlbumItems(boolean isShow) { + if (null == setShow) { + newAnimators(); + } + if (isShow) { + rootViewAlbumItems.setVisibility(View.VISIBLE); + setShow.start(); + } else { + setHide.start(); + } + + } + + private void newAnimators() { + newHideAnim(); + newShowAnim(); + } + + private void newShowAnim() { + ObjectAnimator translationShow = ObjectAnimator.ofFloat(rvAlbumItems, "translationY", + mBottomBar.getTop(), 0); + ObjectAnimator alphaShow = ObjectAnimator.ofFloat(rootViewAlbumItems, "alpha", 0.0f, 1.0f); + translationShow.setDuration(300); + setShow = new AnimatorSet(); + setShow.setInterpolator(new AccelerateDecelerateInterpolator()); + setShow.play(translationShow).with(alphaShow); + } + + private void newHideAnim() { + ObjectAnimator translationHide = ObjectAnimator.ofFloat(rvAlbumItems, "translationY", 0, + mBottomBar.getTop()); + ObjectAnimator alphaHide = ObjectAnimator.ofFloat(rootViewAlbumItems, "alpha", 1.0f, 0.0f); + translationHide.setDuration(200); + setHide = new AnimatorSet(); + setHide.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + rootViewAlbumItems.setVisibility(View.GONE); + } + }); + setHide.setInterpolator(new AccelerateInterpolator()); + setHide.play(translationHide).with(alphaHide); + } + + @Override + public void onAlbumItemClick(int position, int realPosition) { + updatePhotos(realPosition); + showAlbumItems(false); + tvAlbumItems.setText(albumModel.getAlbumItems().get(realPosition).name); + } + + private void updatePhotos(int currAlbumItemIndex) { + this.currAlbumItemIndex = currAlbumItemIndex; + photoList.clear(); + photoList.addAll(albumModel.getCurrAlbumItemPhotos(currAlbumItemIndex)); + int index = 0; + if (Setting.hasPhotosAd()) { + photoList.add(index, Setting.photosAdView); + } + if (Setting.isShowCamera && !Setting.isBottomRightCamera()) { + if (Setting.hasPhotosAd()) + index = 1; + photoList.add(index, null); + } + photosAdapter.change(); + rvPhotos.scrollToPosition(0); + } + + private void shouldShowMenuDone() { + if (Result.isEmpty()) { + if (View.VISIBLE == tvDone.getVisibility()) { + ScaleAnimation scaleHide = new ScaleAnimation(1f, 0f, 1f, 0f); + scaleHide.setDuration(200); + tvDone.startAnimation(scaleHide); + } + tvDone.setVisibility(View.INVISIBLE); + tvPreview.setVisibility(View.INVISIBLE); + } else { + if (View.INVISIBLE == tvDone.getVisibility()) { + ScaleAnimation scaleShow = new ScaleAnimation(0f, 1f, 0f, 1f); + scaleShow.setDuration(200); + tvDone.startAnimation(scaleShow); + } + tvDone.setVisibility(View.VISIBLE); + tvPreview.setVisibility(View.VISIBLE); + } + + if (Result.isEmpty()) { + return; + } + + if (Setting.complexSelector) { + if (Setting.complexSingleType) { + if (Result.getPhotoType(0).contains(Type.VIDEO)) { + tvDone.setText(getString(R.string.selector_action_done_easy_photos, + Result.count(), Setting.complexVideoCount)); + return; + } + tvDone.setText(getString(R.string.selector_action_done_easy_photos, + Result.count(), Setting.complexPictureCount)); + return; + } + } + + tvDone.setText(getString(R.string.selector_action_done_easy_photos, Result.count(), + Setting.count)); + + } + + @Override + public void onCameraClick() { + launchCamera(Code.REQUEST_CAMERA); + } + + @Override + public void onPhotoClick(int position, int realPosition) { + PreviewActivity.start(EasyPhotosActivity.this, currAlbumItemIndex, realPosition); + } + + @Override + public void onSelectorOutOfMax(@Nullable Integer result) { + if (result == null) { + if (Setting.isOnlyVideo()) { + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_video_hint_easy_photos, + Setting.count), Toast.LENGTH_SHORT).show(); + + } else if (Setting.showVideo) { + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_hint_easy_photos), + Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_image_hint_easy_photos, + Setting.count), Toast.LENGTH_SHORT).show(); + } + return; + } + switch (result) { + case Result.PICTURE_OUT: + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_image_hint_easy_photos, + Setting.complexPictureCount), Toast.LENGTH_SHORT).show(); + break; + case Result.VIDEO_OUT: + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_video_hint_easy_photos, + Setting.complexVideoCount), Toast.LENGTH_SHORT).show(); + break; + case Result.SINGLE_TYPE: + Toast.makeText(getApplicationContext(), + getString(R.string.selector_single_type_hint_easy_photos), + Toast.LENGTH_SHORT).show(); + break; + + } + } + + @Override + public void onSelectorChanged() { + shouldShowMenuDone(); + } + + + @Override + public void onBackPressed() { + + if (null != rootViewAlbumItems && rootViewAlbumItems.getVisibility() == View.VISIBLE) { + showAlbumItems(false); + return; + } + + if (null != mSecondMenus && View.VISIBLE == mSecondMenus.getVisibility()) { + processSecondMenu(); + return; + } + if (albumModel != null) + albumModel.stopQuery(); + if (Setting.hasPhotosAd()) { + photosAdapter.clearAd(); + } + if (Setting.hasAlbumItemsAd()) { + albumItemsAdapter.clearAd(); + } + setResult(RESULT_CANCELED); + finish(); + } + + @Override + protected void onDestroy() { + if (albumModel != null) + albumModel.stopQuery(); + super.onDestroy(); + } + + @Override + public void onPhotosAdLoaded() { + runOnUiThread(() -> photosAdapter.change()); + } + + @Override + public void onAlbumItemsAdLoaded() { + runOnUiThread(() -> albumItemsAdapter.notifyDataSetChanged()); + } + + + private void setClick(@IdRes int... ids) { + for (int id : ids) { + findViewById(id).setOnClickListener(this); + } + } + + private void setClick(View... views) { + for (View v : views) { + v.setOnClickListener(this); + } + } + + /** + * 返回true 表示å¯ä»¥ä½¿ç”¨ 返回false表示ä¸å¯ä»¥ä½¿ç”¨ + */ + public boolean cameraIsCanUse() { + boolean isCanUse = true; + Camera mCamera = null; + try { + mCamera = Camera.open(); + Camera.Parameters mParameters = mCamera.getParameters(); //é’ˆå¯¹é­…æ—æ‰‹æœº + mCamera.setParameters(mParameters); + } catch (Exception e) { + isCanUse = false; + } + + if (mCamera != null) { + try { + mCamera.release(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return isCanUse; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewActivity.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewActivity.java new file mode 100644 index 0000000..ee6ebfa --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewActivity.java @@ -0,0 +1,503 @@ +package com.huantansheng.easyphotos.ui; + +import android.app.Activity; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.text.TextUtils; +import android.view.View; +import android.view.WindowManager; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.ScaleAnimation; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.PagerSnapHelper; +import androidx.recyclerview.widget.RecyclerView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Code; +import com.huantansheng.easyphotos.constant.Key; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.AlbumModel; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.adapter.PreviewPhotosAdapter; +import com.huantansheng.easyphotos.ui.widget.PressedTextView; +import com.huantansheng.easyphotos.utils.Color.ColorUtils; +import com.huantansheng.easyphotos.utils.system.SystemUtils; + +import java.util.ArrayList; + +/** + * 预览页 + */ +public class PreviewActivity extends AppCompatActivity implements PreviewPhotosAdapter.OnClickListener, View.OnClickListener, PreviewFragment.OnPreviewFragmentClickListener { + + public static void start(Activity act, int albumItemIndex, int currIndex) { + Intent intent = new Intent(act, PreviewActivity.class); + intent.putExtra(Key.PREVIEW_ALBUM_ITEM_INDEX, albumItemIndex); + intent.putExtra(Key.PREVIEW_PHOTO_INDEX, currIndex); + act.startActivityForResult(intent, Code.REQUEST_PREVIEW_ACTIVITY); + } + + + /** + * 一些旧设备在UIå°éƒ¨ä»¶æ›´æ–°ä¹‹é—´éœ€è¦ä¸€ä¸ªå°å»¶è¿Ÿ + * and a change of the status and navigation bar. + */ + private static final int UI_ANIMATION_DELAY = 300; + private final Handler mHideHandler = new Handler(); + private final Runnable mHidePart2Runnable = new Runnable() { + @Override + public void run() { + SystemUtils.getInstance().systemUiHide(PreviewActivity.this, decorView); + } + }; + private RelativeLayout mBottomBar; + private FrameLayout mToolBar; + private final Runnable mShowPart2Runnable = new Runnable() { + @Override + public void run() { + // 延迟显示UI元素 + mBottomBar.setVisibility(View.VISIBLE); + mToolBar.setVisibility(View.VISIBLE); + } + }; + private boolean mVisible; + View decorView; + private TextView tvOriginal, tvNumber; + private PressedTextView tvDone; + private ImageView ivSelector; + private RecyclerView rvPhotos; + private PreviewPhotosAdapter adapter; + private PagerSnapHelper snapHelper; + private LinearLayoutManager lm; + private int index; + private ArrayList photos = new ArrayList<>(); + private int resultCode = RESULT_CANCELED; + private int lastPosition = 0;//记录recyclerView最åŽä¸€æ¬¡è§’æ ‡ä½ç½®ï¼Œç”¨äºŽåˆ¤æ–­æ˜¯å¦è½¬æ¢äº†item + private boolean isSingle = Setting.count == 1; + private boolean unable = Result.count() == Setting.count; + + private FrameLayout flFragment; + private PreviewFragment previewFragment; + private int statusColor; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + decorView = getWindow().getDecorView(); + SystemUtils.getInstance().systemUiInit(this, decorView); + + setContentView(R.layout.activity_preview_easy_photos); + + hideActionBar(); + adaptationStatusBar(); + if (null == AlbumModel.instance) { + finish(); + return; + } + initData(); + initView(); + } + + private void adaptationStatusBar() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + statusColor = ContextCompat.getColor(this, R.color.easy_photos_status_bar); + if (ColorUtils.isWhiteColor(statusColor)) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + } + + private void hideActionBar() { + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + } + + + private void initData() { + Intent intent = getIntent(); + int albumItemIndex = intent.getIntExtra(Key.PREVIEW_ALBUM_ITEM_INDEX, 0); + photos.clear(); + + if (albumItemIndex == -1) { + photos.addAll(Result.photos); + } else { + photos.addAll(AlbumModel.instance.getCurrAlbumItemPhotos(albumItemIndex)); + } + index = intent.getIntExtra(Key.PREVIEW_PHOTO_INDEX, 0); + + lastPosition = index; + mVisible = true; + } + + private void toggle() { + if (mVisible) { + hide(); + } else { + show(); + } + } + + private void hide() { + // Hide UI first + AlphaAnimation hideAnimation = new AlphaAnimation(1.0f, 0.0f); + hideAnimation.setAnimationListener(new Animation.AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + + } + + @Override + public void onAnimationEnd(Animation animation) { + mBottomBar.setVisibility(View.GONE); + mToolBar.setVisibility(View.GONE); + } + + @Override + public void onAnimationRepeat(Animation animation) { + + } + }); + hideAnimation.setDuration(UI_ANIMATION_DELAY); + mBottomBar.startAnimation(hideAnimation); + mToolBar.startAnimation(hideAnimation); + mVisible = false; + + // Schedule a runnable to remove the status and navigation bar after a delay + mHideHandler.removeCallbacks(mShowPart2Runnable); + + mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY); + + } + + + private void show() { + // Show the system bar + if (Build.VERSION.SDK_INT >= 16) { + SystemUtils.getInstance().systemUiShow(this, decorView); + } + + mVisible = true; + + // Schedule a runnable to display UI elements after a delay + mHideHandler.removeCallbacks(mHidePart2Runnable); + mHideHandler.post(mShowPart2Runnable); + } + + @Override + public void onPhotoClick() { + toggle(); + } + + @Override + public void onPhotoScaleChanged() { + if (mVisible) hide(); + } + + @Override + public void onBackPressed() { + doBack(); + } + + private void doBack() { + Intent intent = new Intent(); + intent.putExtra(Key.PREVIEW_CLICK_DONE, false); + setResult(resultCode, intent); + finish(); + } + + private void initView() { + setClick(R.id.iv_back, R.id.tv_edit, R.id.tv_selector); + + mToolBar = (FrameLayout) findViewById(R.id.m_top_bar_layout); + if (!SystemUtils.getInstance().hasNavigationBar(this)) { + FrameLayout mRootView = (FrameLayout) findViewById(R.id.m_root_view); + mRootView.setFitsSystemWindows(true); + mToolBar.setPadding(0, SystemUtils.getInstance().getStatusBarHeight(this), 0, 0); + if (ColorUtils.isWhiteColor(statusColor)) { + SystemUtils.getInstance().setStatusDark(this, true); + } + } + mBottomBar = (RelativeLayout) findViewById(R.id.m_bottom_bar); + ivSelector = (ImageView) findViewById(R.id.iv_selector); + tvNumber = (TextView) findViewById(R.id.tv_number); + tvDone = (PressedTextView) findViewById(R.id.tv_done); + tvOriginal = (TextView) findViewById(R.id.tv_original); + flFragment = (FrameLayout) findViewById(R.id.fl_fragment); + previewFragment = + (PreviewFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_preview); + if (Setting.showOriginalMenu) { + processOriginalMenu(); + } else { + tvOriginal.setVisibility(View.GONE); + } + + setClick(tvOriginal, tvDone, ivSelector); + + initRecyclerView(); + shouldShowMenuDone(); + } + + private void initRecyclerView() { + rvPhotos = (RecyclerView) findViewById(R.id.rv_photos); + adapter = new PreviewPhotosAdapter(this, photos, this); + lm = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); + rvPhotos.setLayoutManager(lm); + rvPhotos.setAdapter(adapter); + rvPhotos.scrollToPosition(index); + toggleSelector(); + snapHelper = new PagerSnapHelper(); + snapHelper.attachToRecyclerView(rvPhotos); + rvPhotos.addOnScrollListener(new RecyclerView.OnScrollListener() { + @Override + public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { + super.onScrollStateChanged(recyclerView, newState); + + View view = snapHelper.findSnapView(lm); + if (view == null) { + return; + } + int position = lm.getPosition(view); + if (lastPosition == position) { + return; + } + lastPosition = position; + previewFragment.setSelectedPosition(-1); + tvNumber.setText(getString(R.string.preview_current_number_easy_photos, + lastPosition + 1, photos.size())); + toggleSelector(); + } + }); + tvNumber.setText(getString(R.string.preview_current_number_easy_photos, index + 1, + photos.size())); + } + + private boolean clickDone = false; + + @Override + public void onClick(View v) { + int id = v.getId(); + if (R.id.iv_back == id) { + doBack(); + } else if (R.id.tv_selector == id) { + updateSelector(); + } else if (R.id.iv_selector == id) { + updateSelector(); + } else if (R.id.tv_original == id) { + if (!Setting.originalMenuUsable) { + Toast.makeText(getApplicationContext(), Setting.originalMenuUnusableHint, Toast.LENGTH_SHORT).show(); + return; + } + Setting.selectedOriginal = !Setting.selectedOriginal; + processOriginalMenu(); + } else if (R.id.tv_done == id) { + if (clickDone) return; + clickDone = true; + Intent intent = new Intent(); + intent.putExtra(Key.PREVIEW_CLICK_DONE, true); + setResult(RESULT_OK, intent); + finish(); + } +// else if (R.id.m_bottom_bar == id) { +// +// } else if (R.id.tv_edit == id) { +// +// } + } + + private void processOriginalMenu() { + if (Setting.selectedOriginal) { + tvOriginal.setTextColor(ContextCompat.getColor(this, R.color.easy_photos_fg_accent)); + } else { + if (Setting.originalMenuUsable) { + tvOriginal.setTextColor(ContextCompat.getColor(this, + R.color.easy_photos_fg_primary)); + } else { + tvOriginal.setTextColor(ContextCompat.getColor(this, + R.color.easy_photos_fg_primary_dark)); + } + } + } + + private void toggleSelector() { + if (photos.get(lastPosition).selected) { + ivSelector.setImageResource(R.drawable.ic_selector_true_easy_photos); + if (!Result.isEmpty()) { + int count = Result.count(); + for (int i = 0; i < count; i++) { + if (photos.get(lastPosition).path.equals(Result.getPhotoPath(i))) { + previewFragment.setSelectedPosition(i); + break; + } + } + } + } else { + ivSelector.setImageResource(R.drawable.ic_selector_easy_photos); + } + previewFragment.notifyDataSetChanged(); + shouldShowMenuDone(); + } + + private void updateSelector() { + resultCode = RESULT_OK; + Photo item = photos.get(lastPosition); + if (isSingle) { + singleSelector(item); + return; + } + if (unable) { + if (item.selected) { + Result.removePhoto(item); + if (unable) { + unable = false; + } + toggleSelector(); + return; + } + if (Setting.isOnlyVideo()) { + Toast.makeText(getApplicationContext(), getString(R.string.selector_reach_max_video_hint_easy_photos + , Setting.count), Toast.LENGTH_SHORT).show(); + + } else if (Setting.showVideo) { + Toast.makeText(getApplicationContext(), getString(R.string.selector_reach_max_hint_easy_photos, + Setting.count), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getApplicationContext(), getString(R.string.selector_reach_max_image_hint_easy_photos, + Setting.count), Toast.LENGTH_SHORT).show(); + } + return; + } + item.selected = !item.selected; + if (item.selected) { + int res = Result.addPhoto(item); + if (res != 0) { + item.selected = false; + switch (res) { + case Result.PICTURE_OUT: + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_image_hint_easy_photos, + Setting.complexPictureCount), Toast.LENGTH_SHORT).show(); + break; + case Result.VIDEO_OUT: + Toast.makeText(getApplicationContext(), + getString(R.string.selector_reach_max_video_hint_easy_photos, + Setting.complexVideoCount), Toast.LENGTH_SHORT).show(); + break; + case Result.SINGLE_TYPE: + Toast.makeText(getApplicationContext(), getString(R.string.selector_single_type_hint_easy_photos), Toast.LENGTH_SHORT).show(); + break; + } + return; + } + if (Result.count() == Setting.count) { + unable = true; + } + } else { + Result.removePhoto(item); + previewFragment.setSelectedPosition(-1); + if (unable) { + unable = false; + } + } + toggleSelector(); + } + + private void singleSelector(Photo photo) { + if (!Result.isEmpty()) { + if (Result.getPhotoPath(0).equals(photo.path)) { + Result.removePhoto(photo); + } else { + Result.removePhoto(0); + Result.addPhoto(photo); + } + } else { + Result.addPhoto(photo); + } + toggleSelector(); + } + + private void shouldShowMenuDone() { + if (Result.isEmpty()) { + if (View.VISIBLE == tvDone.getVisibility()) { + ScaleAnimation scaleHide = new ScaleAnimation(1f, 0f, 1f, 0f); + scaleHide.setDuration(200); + tvDone.startAnimation(scaleHide); + } + tvDone.setVisibility(View.GONE); + flFragment.setVisibility(View.GONE); + } else { + if (View.GONE == tvDone.getVisibility()) { + ScaleAnimation scaleShow = new ScaleAnimation(0f, 1f, 0f, 1f); + scaleShow.setDuration(200); + tvDone.startAnimation(scaleShow); + } + flFragment.setVisibility(View.VISIBLE); + tvDone.setVisibility(View.VISIBLE); + + if (Result.isEmpty()) { + return; + } + + if (Setting.complexSelector) { + if (Setting.complexSingleType) { + if (Result.getPhotoType(0).contains(Type.VIDEO)) { + tvDone.setText(getString(R.string.selector_action_done_easy_photos, Result.count(), + Setting.complexVideoCount)); + return; + } + tvDone.setText(getString(R.string.selector_action_done_easy_photos, Result.count(), + Setting.complexPictureCount)); + return; + } + } + tvDone.setText(getString(R.string.selector_action_done_easy_photos, Result.count(), + Setting.count)); + } + } + + @Override + public void onPreviewPhotoClick(int position) { + String path = Result.getPhotoPath(position); + int size = photos.size(); + for (int i = 0; i < size; i++) { + if (TextUtils.equals(path, photos.get(i).path)) { + rvPhotos.scrollToPosition(i); + lastPosition = i; + tvNumber.setText(getString(R.string.preview_current_number_easy_photos, + lastPosition + 1, photos.size())); + previewFragment.setSelectedPosition(position); + toggleSelector(); + return; + } + } + } + + private void setClick(@IdRes int... ids) { + for (int id : ids) { + findViewById(id).setOnClickListener(this); + } + } + + private void setClick(View... views) { + for (View v : views) { + v.setOnClickListener(this); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewFragment.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewFragment.java new file mode 100644 index 0000000..204acef --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PreviewFragment.java @@ -0,0 +1,73 @@ +package com.huantansheng.easyphotos.ui; + +import android.content.Context; +import android.os.Bundle; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.ui.adapter.PreviewPhotosFragmentAdapter; + + +public class PreviewFragment extends Fragment implements PreviewPhotosFragmentAdapter.OnClickListener { + + private OnPreviewFragmentClickListener mListener; + + private RecyclerView rvPhotos; + private PreviewPhotosFragmentAdapter adapter; + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_preview_easy_photos, container, false); + rvPhotos = (RecyclerView) rootView.findViewById(R.id.rv_preview_selected_photos); + adapter = new PreviewPhotosFragmentAdapter(getActivity(), this); + rvPhotos.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false)); + rvPhotos.setAdapter(adapter); + return rootView; + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnPreviewFragmentClickListener) { + mListener = (OnPreviewFragmentClickListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnPreviewFragmentClickListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + @Override + public void onPhotoClick(int position) { + mListener.onPreviewPhotoClick(position); + } + + + public interface OnPreviewFragmentClickListener { + void onPreviewPhotoClick(int position); + } + + public void notifyDataSetChanged() { + adapter.notifyDataSetChanged(); + } + + public void setSelectedPosition(int position) { + adapter.setChecked(position); + if (position != -1) { + rvPhotos.smoothScrollToPosition(position); + } + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleActivity.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleActivity.java new file mode 100644 index 0000000..8ee55e2 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleActivity.java @@ -0,0 +1,668 @@ +package com.huantansheng.easyphotos.ui; + +import android.Manifest; +import android.app.Activity; +import android.app.Fragment; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.view.View; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.IdRes; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.snackbar.Snackbar; +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Code; +import com.huantansheng.easyphotos.constant.Key; +import com.huantansheng.easyphotos.engine.ImageEngine; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.models.puzzle.Area; +import com.huantansheng.easyphotos.models.puzzle.DegreeSeekBar; +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; +import com.huantansheng.easyphotos.models.puzzle.PuzzlePiece; +import com.huantansheng.easyphotos.models.puzzle.PuzzleUtils; +import com.huantansheng.easyphotos.models.puzzle.PuzzleView; +import com.huantansheng.easyphotos.models.sticker.StickerModel; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.adapter.PuzzleAdapter; +import com.huantansheng.easyphotos.ui.adapter.TextStickerAdapter; +import com.huantansheng.easyphotos.utils.bitmap.SaveBitmapCallBack; +import com.huantansheng.easyphotos.utils.media.DurationUtils; +import com.huantansheng.easyphotos.utils.permission.PermissionUtil; +import com.huantansheng.easyphotos.utils.settings.SettingsUtils; +import com.huantansheng.easyphotos.utils.uri.UriUtils; + +import java.io.File; +import java.io.IOException; +import java.lang.ref.WeakReference; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Locale; + +/** + * æ‹¼å›¾ç•Œé¢ + * Created by huan on 2017/12/4. + */ + +public class PuzzleActivity extends AppCompatActivity implements View.OnClickListener, + PuzzleAdapter.OnItemClickListener, TextStickerAdapter.OnItemClickListener { + + private static WeakReference> toClass; + + + public static void startWithPhotos(Activity act, ArrayList photos, + String puzzleSaveDirPath, String puzzleSaveNamePrefix, + int requestCode, boolean replaceCustom, + @NonNull ImageEngine imageEngine) { + if (null != toClass) { + toClass.clear(); + toClass = null; + } + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + Intent intent = new Intent(act, PuzzleActivity.class); + intent.putExtra(Key.PUZZLE_FILE_IS_PHOTO, true); + intent.putParcelableArrayListExtra(Key.PUZZLE_FILES, photos); + intent.putExtra(Key.PUZZLE_SAVE_DIR, puzzleSaveDirPath); + intent.putExtra(Key.PUZZLE_SAVE_NAME_PREFIX, puzzleSaveNamePrefix); + if (replaceCustom) { + toClass = new WeakReference>(act.getClass()); + } + act.startActivityForResult(intent, requestCode); + } + + public static void startWithPhotos(Fragment fragment, ArrayList photos, + String puzzleSaveDirPath, String puzzleSaveNamePrefix, + int requestCode, boolean replaceCustom, + @NonNull ImageEngine imageEngine) { + if (null != toClass) { + toClass.clear(); + toClass = null; + } + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + Intent intent = new Intent(fragment.getActivity(), PuzzleActivity.class); + intent.putExtra(Key.PUZZLE_FILE_IS_PHOTO, true); + intent.putParcelableArrayListExtra(Key.PUZZLE_FILES, photos); + intent.putExtra(Key.PUZZLE_SAVE_DIR, puzzleSaveDirPath); + intent.putExtra(Key.PUZZLE_SAVE_NAME_PREFIX, puzzleSaveNamePrefix); + if (replaceCustom) { + toClass = + new WeakReference>(fragment.getActivity().getClass()); + } + fragment.startActivityForResult(intent, requestCode); + } + + public static void startWithPhotos(androidx.fragment.app.Fragment fragmentV, + ArrayList photos, String puzzleSaveDirPath, + String puzzleSaveNamePrefix, int requestCode, + boolean replaceCustom, @NonNull ImageEngine imageEngine) { + if (null != toClass) { + toClass.clear(); + toClass = null; + } + if (Setting.imageEngine != imageEngine) { + Setting.imageEngine = imageEngine; + } + Intent intent = new Intent(fragmentV.getActivity(), PuzzleActivity.class); + intent.putExtra(Key.PUZZLE_FILE_IS_PHOTO, true); + intent.putParcelableArrayListExtra(Key.PUZZLE_FILES, photos); + intent.putExtra(Key.PUZZLE_SAVE_DIR, puzzleSaveDirPath); + intent.putExtra(Key.PUZZLE_SAVE_NAME_PREFIX, puzzleSaveNamePrefix); + if (replaceCustom) { + if (fragmentV.getActivity() != null) { + toClass = + new WeakReference>(fragmentV.getActivity().getClass()); + } + } + fragmentV.startActivityForResult(intent, requestCode); + } + + ArrayList photos = null; + + ArrayList bitmaps = new ArrayList<>(); + String saveDirPath, saveNamePrefix; + + private PuzzleView puzzleView; + private RecyclerView rvPuzzleTemplet; + private PuzzleAdapter puzzleAdapter; + private ProgressBar progressBar; + private int fileCount = 0; + + private LinearLayout llMenu; + private DegreeSeekBar degreeSeekBar; + private ArrayList ivMenus = new ArrayList<>(); + + private ArrayList degrees = new ArrayList<>(); + private int degreeIndex = -1; + private int controlFlag; + private static final int FLAG_CONTROL_PADDING = 0; + private static final int FLAG_CONTROL_CORNER = 1; + private static final int FLAG_CONTROL_ROTATE = 2; + + private int deviceWidth = 0; + private int deviceHeight = 0; + + private TextView tvTemplate, tvTextSticker; + private RelativeLayout mRootView, mBottomLayout; + private TextStickerAdapter textStickerAdapter; + + private StickerModel stickerModel; + + FloatingActionButton fab; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + WindowManager.LayoutParams attrs = getWindow().getAttributes(); + attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; + getWindow().setAttributes(attrs); + setContentView(R.layout.activity_puzzle_easy_photos); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + if (null == Setting.imageEngine) { + finish(); + return; + } + initData(); + initView(); + } + + private void initView() { + initIvMenu(); + initPuzzleView(); + initRecyclerView(); + progressBar = findViewById(R.id.progress); + setClick(R.id.tv_back, R.id.tv_done); + } + + private void initIvMenu() { + fab = (FloatingActionButton) findViewById(R.id.fab); + + tvTemplate = (TextView) findViewById(R.id.tv_template); + tvTextSticker = (TextView) findViewById(R.id.tv_text_sticker); + mRootView = (RelativeLayout) findViewById(R.id.m_root_view); + mBottomLayout = (RelativeLayout) findViewById(R.id.m_bottom_layout); + + llMenu = (LinearLayout) findViewById(R.id.ll_menu); + ImageView ivRotate = (ImageView) findViewById(R.id.iv_rotate); + ImageView ivCorner = (ImageView) findViewById(R.id.iv_corner); + ImageView ivPadding = (ImageView) findViewById(R.id.iv_padding); + + setClick(R.id.iv_replace, R.id.iv_mirror, R.id.iv_flip); + setClick(ivRotate, ivCorner, ivPadding, fab, tvTextSticker, tvTemplate); + + ivMenus.add(ivRotate); + ivMenus.add(ivCorner); + ivMenus.add(ivPadding); + + degreeSeekBar = (DegreeSeekBar) findViewById(R.id.degree_seek_bar); + degreeSeekBar.setScrollingListener(new DegreeSeekBar.ScrollingListener() { + @Override + public void onScrollStart() { + } + + @Override + public void onScroll(int currentDegrees) { + switch (controlFlag) { + case FLAG_CONTROL_PADDING: + puzzleView.setPiecePadding(currentDegrees); + break; + case FLAG_CONTROL_CORNER: + if (currentDegrees < 0) { + currentDegrees = 0; + } + puzzleView.setPieceRadian(currentDegrees); + break; + case FLAG_CONTROL_ROTATE: + puzzleView.rotate(currentDegrees - degrees.get(degreeIndex)); + degrees.remove(degreeIndex); + degrees.add(degreeIndex, currentDegrees); + break; + } + } + + @Override + public void onScrollEnd() { + } + }); + } + + private void initRecyclerView() { + rvPuzzleTemplet = (RecyclerView) findViewById(R.id.rv_puzzle_template); + puzzleAdapter = new PuzzleAdapter(); + puzzleAdapter.setOnItemClickListener(this); + rvPuzzleTemplet.setLayoutManager(new LinearLayoutManager(this, + LinearLayoutManager.HORIZONTAL, false)); + rvPuzzleTemplet.setAdapter(puzzleAdapter); + puzzleAdapter.refreshData(PuzzleUtils.getPuzzleLayouts(fileCount)); + + textStickerAdapter = new TextStickerAdapter(this, this); + } + + private void initPuzzleView() { + int themeType = fileCount > 3 ? 1 : 0; + puzzleView = (PuzzleView) findViewById(R.id.puzzle_view); + puzzleView.setPuzzleLayout(PuzzleUtils.getPuzzleLayout(themeType, fileCount, 0)); + puzzleView.setOnPieceSelectedListener(new PuzzleView.OnPieceSelectedListener() { + @Override + public void onPieceSelected(PuzzlePiece piece, int position) { + + if (null == piece) { + toggleIvMenu(R.id.iv_replace); + llMenu.setVisibility(View.GONE); + degreeSeekBar.setVisibility(View.GONE); + degreeIndex = -1; + controlFlag = -1; + return; + } + + if (degreeIndex != position) { + controlFlag = -1; + toggleIvMenu(R.id.iv_replace); + degreeSeekBar.setVisibility(View.GONE); + } + llMenu.setVisibility(View.VISIBLE); + degreeIndex = position; + } + }); + } + + private void loadPhoto() { + puzzleView.addPieces(bitmaps); + } + + private void initData() { + stickerModel = new StickerModel(); + deviceWidth = getResources().getDisplayMetrics().widthPixels; + deviceHeight = getResources().getDisplayMetrics().heightPixels; + Intent intent = getIntent(); + saveDirPath = intent.getStringExtra(Key.PUZZLE_SAVE_DIR); + saveNamePrefix = intent.getStringExtra(Key.PUZZLE_SAVE_NAME_PREFIX); + + photos = intent.getParcelableArrayListExtra(Key.PUZZLE_FILES); + fileCount = photos.size() > 9 ? 9 : photos.size(); + + new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < fileCount; i++) { + Bitmap bitmap = getScaleBitmap(photos.get(i).path, photos.get(i).uri); + bitmaps.add(bitmap); + degrees.add(0); + } + + runOnUiThread(new Runnable() { + @Override + public void run() { + puzzleView.post(new Runnable() { + @Override + public void run() { + loadPhoto(); + } + }); + } + }); + + } + }).start(); + + + } + + private Bitmap getScaleBitmap(String path, Uri uri) { + Bitmap bitmap = null; + + try { + bitmap = Setting.imageEngine.getCacheBitmap(this, uri, deviceWidth / 2, + deviceHeight / 2); + } catch (Exception e) { + bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(path), + deviceWidth / 2, deviceHeight / 2, true); + } + + if (bitmap == null) { + bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(path), + deviceWidth / 2, deviceHeight / 2, true); + } + return bitmap; + + } + + @Override + public void onClick(View view) { + + int id = view.getId(); + + if (R.id.tv_back == id) { + finish(); + } else if (R.id.tv_done == id) { + if (PermissionUtil.checkAndRequestPermissionsInActivity(this, getNeedPermissions())) { + savePhoto(); + } + + } else if (R.id.iv_replace == id) { + controlFlag = -1; + degreeSeekBar.setVisibility(View.GONE); + toggleIvMenu(R.id.iv_replace); + if (null == toClass) { + EasyPhotos.createAlbum(this, true, false, Setting.imageEngine).setCount(1).start(91); + } else { + Intent intent = new Intent(this, toClass.get()); + startActivityForResult(intent, 91); + } + } else if (R.id.iv_rotate == id) { + if (controlFlag == FLAG_CONTROL_ROTATE) { + if (degrees.get(degreeIndex) % 90 != 0) { + puzzleView.rotate(-degrees.get(degreeIndex)); + degrees.remove(degreeIndex); + degrees.add(degreeIndex, 0); + degreeSeekBar.setCurrentDegrees(0); + return; + } + puzzleView.rotate(90); + int degree = degrees.get(degreeIndex) + 90; + if (degree == 360 || degree == -360) { + degree = 0; + } + degrees.remove(degreeIndex); + degrees.add(degreeIndex, degree); + degreeSeekBar.setCurrentDegrees(degrees.get(degreeIndex)); + return; + } + handleSeekBar(FLAG_CONTROL_ROTATE, -360, 360, degrees.get(degreeIndex)); + toggleIvMenu(R.id.iv_rotate); + } else if (R.id.iv_mirror == id) { + degreeSeekBar.setVisibility(View.GONE); + controlFlag = -1; + toggleIvMenu(R.id.iv_mirror); + puzzleView.flipHorizontally(); + } else if (R.id.iv_flip == id) { + controlFlag = -1; + degreeSeekBar.setVisibility(View.GONE); + toggleIvMenu(R.id.iv_flip); + puzzleView.flipVertically(); + } else if (R.id.iv_corner == id) { + handleSeekBar(FLAG_CONTROL_CORNER, 0, 1000, puzzleView.getPieceRadian()); + toggleIvMenu(R.id.iv_corner); + } else if (R.id.iv_padding == id) { + handleSeekBar(FLAG_CONTROL_PADDING, 0, 100, puzzleView.getPiecePadding()); + toggleIvMenu(R.id.iv_padding); + } else if (R.id.tv_template == id) { + tvTemplate.setTextColor(ContextCompat.getColor(this, R.color.easy_photos_fg_accent)); + tvTextSticker.setTextColor(ContextCompat.getColor(this, + R.color.easy_photos_fg_primary)); + + rvPuzzleTemplet.setAdapter(puzzleAdapter); + + } else if (R.id.tv_text_sticker == id) { + tvTextSticker.setTextColor(ContextCompat.getColor(this, R.color.easy_photos_fg_accent)); + tvTemplate.setTextColor(ContextCompat.getColor(this, R.color.easy_photos_fg_primary)); + + rvPuzzleTemplet.setAdapter(textStickerAdapter); + } else if (R.id.fab == id) { + processBottomLayout(); + } + } + + private void processBottomLayout() { + if (View.VISIBLE == mBottomLayout.getVisibility()) { + mBottomLayout.setVisibility(View.GONE); + fab.setImageResource(R.drawable.ic_arrow_up_easy_photos); + } else { + mBottomLayout.setVisibility(View.VISIBLE); + fab.setImageResource(R.drawable.ic_arrow_down_easy_photos); + } + } + + private void handleSeekBar(int controlFlag, int rangeStart, int rangeEnd, float degrees) { + this.controlFlag = controlFlag; + degreeSeekBar.setVisibility(View.VISIBLE); + degreeSeekBar.setDegreeRange(rangeStart, rangeEnd); + degreeSeekBar.setCurrentDegrees((int) degrees); + } + + private void savePhoto() { + mBottomLayout.setVisibility(View.GONE); + fab.setVisibility(View.GONE); + progressBar.setVisibility(View.VISIBLE); + findViewById(R.id.tv_done).setVisibility(View.INVISIBLE); + findViewById(R.id.progress_frame).setVisibility(View.VISIBLE); + + puzzleView.clearHandling(); + puzzleView.invalidate(); + + stickerModel.save(this, mRootView, puzzleView, puzzleView.getWidth(), + puzzleView.getHeight(), saveDirPath, saveNamePrefix, true, + new SaveBitmapCallBack() { + @Override + public void onSuccess(File file) { + Intent intent = new Intent(); + + Photo photo = new Photo(file.getName(), UriUtils.getUri(PuzzleActivity.this, + file), file.getAbsolutePath(), file.lastModified() / 1000, + puzzleView.getWidth(), puzzleView.getHeight(), 0, file.length(), + DurationUtils.getDuration(file.getAbsolutePath()), "image/png"); + intent.putExtra(EasyPhotos.RESULT_PHOTOS, photo); + setResult(RESULT_OK, intent); + PuzzleActivity.this.finish(); + } + + @Override + public void onIOFailed(IOException exception) { + exception.printStackTrace(); + setResult(RESULT_OK); + PuzzleActivity.this.finish(); + } + + @Override + public void onCreateDirFailed() { + setResult(RESULT_OK); + PuzzleActivity.this.finish(); + } + + }); + } + + private void toggleIvMenu(@IdRes int resId) { + int size = ivMenus.size(); + for (int i = 0; i < size; i++) { + ImageView ivMenu = ivMenus.get(i); + if (ivMenu.getId() == resId) { + ivMenu.setColorFilter(ContextCompat.getColor(this, R.color.easy_photos_fg_accent)); + } else { + ivMenu.clearColorFilter(); + } + } + + } + + @Override + public void onItemClick(int themeType, int themeId) { + puzzleView.setPuzzleLayout(PuzzleUtils.getPuzzleLayout(themeType, fileCount, themeId)); + loadPhoto(); + resetDegress(); + + } + + private void resetDegress() { + llMenu.setVisibility(View.GONE); + degreeSeekBar.setVisibility(View.GONE); + degreeIndex = -1; + int size = degrees.size(); + for (int i = 0; i < size; i++) { + degrees.remove(i); + degrees.add(i, 0); + } + } + + @Override + protected void onDestroy() { + if (null != toClass) { + toClass.clear(); + toClass = null; + } + super.onDestroy(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == Code.REQUEST_SETTING_APP_DETAILS) { + if (PermissionUtil.checkAndRequestPermissionsInActivity(this, getNeedPermissions())) { + savePhoto(); + } + return; + } + switch (resultCode) { + case RESULT_OK: + if (degreeIndex != -1) { + degrees.remove(degreeIndex); + degrees.add(degreeIndex, 0); + } + + String tempPath = ""; + Uri tempUri = null; + + ArrayList photos = + data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS); + Photo photo = photos.get(0); + tempPath = photo.path; + tempUri = photo.uri; + + + final String path = tempPath; + final Uri uri = tempUri; + new Thread(new Runnable() { + @Override + public void run() { + final Bitmap bitmap = getScaleBitmap(path, uri); + runOnUiThread(new Runnable() { + @Override + public void run() { + puzzleView.replace(bitmap); + } + }); + } + }).start(); + + break; + case RESULT_CANCELED: + break; + default: + break; + } + } + + protected String[] getNeedPermissions() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + return new String[]{Manifest.permission.CAMERA, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE}; + } + return new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}; + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, + @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + PermissionUtil.onPermissionResult(this, permissions, grantResults, + new PermissionUtil.PermissionCallBack() { + @Override + public void onSuccess() { + savePhoto(); + } + + @Override + public void onShouldShow() { + Snackbar.make(rvPuzzleTemplet, R.string.permissions_again_easy_photos, + Snackbar.LENGTH_INDEFINITE).setAction("go", + new View.OnClickListener() { + @Override + public void onClick(View view) { + if (PermissionUtil.checkAndRequestPermissionsInActivity(PuzzleActivity.this, getNeedPermissions())) { + savePhoto(); + } + } + }).show(); + } + + @Override + public void onFailed() { + Snackbar.make(rvPuzzleTemplet, R.string.permissions_die_easy_photos, + Snackbar.LENGTH_INDEFINITE).setAction("go", + new View.OnClickListener() { + @Override + public void onClick(View view) { + SettingsUtils.startMyApplicationDetailsForResult(PuzzleActivity.this, + getPackageName()); + } + }).show(); + } + }); + } + + @Override + public void onItemClick(String stickerValue) { + if (stickerValue.equals("-1")) { + + PuzzleLayout puzzleLayout = puzzleView.getPuzzleLayout(); + int size = puzzleLayout.getAreaCount(); + for (int i = 0; i < size; i++) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + String date = format.format(photos.get(i).time); + stickerModel.addTextSticker(this, getSupportFragmentManager(), date, mRootView); + stickerModel.currTextSticker.isChecked = true; + Area area = puzzleLayout.getArea(i); + stickerModel.currTextSticker.moveTo(area.centerX(), area.centerY()); + } + + return; + } + + stickerModel.addTextSticker(this, getSupportFragmentManager(), stickerValue, mRootView); + } + + @Override + public void onBackPressed() { + if (View.VISIBLE == mBottomLayout.getVisibility()) { + processBottomLayout(); + return; + } + super.onBackPressed(); + } + + private void setClick(@IdRes int... ids) { + for (int id : ids) { + findViewById(id).setOnClickListener(this); + } + } + + private void setClick(View... views) { + for (View v : views) { + v.setOnClickListener(this); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleSelectorActivity.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleSelectorActivity.java new file mode 100644 index 0000000..0f50c2a --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/PuzzleSelectorActivity.java @@ -0,0 +1,264 @@ +package com.huantansheng.easyphotos.ui; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.app.Activity; +import android.content.Intent; +import android.graphics.Color; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import androidx.annotation.IdRes; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; +import android.view.View; +import android.view.animation.AccelerateDecelerateInterpolator; +import android.view.animation.AccelerateInterpolator; +import android.widget.RelativeLayout; +import android.widget.Toast; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Code; +import com.huantansheng.easyphotos.models.album.AlbumModel; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.adapter.AlbumItemsAdapter; +import com.huantansheng.easyphotos.ui.adapter.PuzzleSelectorAdapter; +import com.huantansheng.easyphotos.ui.adapter.PuzzleSelectorPreviewAdapter; +import com.huantansheng.easyphotos.ui.widget.PressedTextView; +import com.huantansheng.easyphotos.utils.Color.ColorUtils; +import com.huantansheng.easyphotos.utils.system.SystemUtils; + +import java.util.ArrayList; + +public class PuzzleSelectorActivity extends AppCompatActivity implements View.OnClickListener, AlbumItemsAdapter.OnClickListener, PuzzleSelectorAdapter.OnClickListener, PuzzleSelectorPreviewAdapter.OnClickListener { + + public static void start(Activity activity) { + Intent intent = new Intent(activity, PuzzleSelectorActivity.class); + activity.startActivityForResult(intent, Code.REQUEST_PUZZLE_SELECTOR); + } + + private AlbumModel albumModel; + + private AnimatorSet setShow; + private AnimatorSet setHide; + + private RelativeLayout rootViewAlbumItems, rootSelectorView; + private RecyclerView rvAlbumItems; + private AlbumItemsAdapter albumItemsAdapter; + private PressedTextView tvAlbumItems; + + private ArrayList photoList = new ArrayList<>(); + private PuzzleSelectorAdapter photosAdapter; + private RecyclerView rvPhotos, rvPreview; + private PuzzleSelectorPreviewAdapter previewAdapter; + private ArrayList selectedPhotos = new ArrayList<>(); + + private PressedTextView tvDone; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_puzzle_selector_easy_photos); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + int statusColor = getWindow().getStatusBarColor(); + if(statusColor == Color.TRANSPARENT){ + statusColor = ContextCompat.getColor(this, R.color.easy_photos_status_bar); + } + if (ColorUtils.isWhiteColor(statusColor)) { + SystemUtils.getInstance().setStatusDark(this, true); + } + } + albumModel = AlbumModel.getInstance(); +// albumModel.query(this, null); + if (null == albumModel||albumModel.getAlbumItems().isEmpty()) { + finish(); + return; + } + initView(); + } + + private void initView() { + setClick(R.id.iv_back); + tvAlbumItems = (PressedTextView) findViewById(R.id.tv_album_items); + tvAlbumItems.setText(albumModel.getAlbumItems().get(0).name); + rootSelectorView = (RelativeLayout) findViewById(R.id.m_selector_root); + tvDone = (PressedTextView) findViewById(R.id.tv_done); + tvDone.setOnClickListener(this); + tvAlbumItems.setOnClickListener(this); + initAlbumItems(); + initPhotos(); + initPreview(); + } + + private void initPreview() { + rvPreview = (RecyclerView) findViewById(R.id.rv_preview_selected_photos); + LinearLayoutManager lm = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); + previewAdapter = new PuzzleSelectorPreviewAdapter(this, selectedPhotos, this); + rvPreview.setLayoutManager(lm); + rvPreview.setAdapter(previewAdapter); + } + + private void initPhotos() { + rvPhotos = (RecyclerView) findViewById(R.id.rv_photos); + ((SimpleItemAnimator) rvPhotos.getItemAnimator()).setSupportsChangeAnimations(false);//去除item更新的闪光 + + photoList.addAll(albumModel.getCurrAlbumItemPhotos(0)); + photosAdapter = new PuzzleSelectorAdapter(this, photoList, this); + + int columns = getResources().getInteger(R.integer.photos_columns_easy_photos); + + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, columns); + rvPhotos.setLayoutManager(gridLayoutManager); + rvPhotos.setAdapter(photosAdapter); + } + + private void initAlbumItems() { + rootViewAlbumItems = (RelativeLayout) findViewById(R.id.root_view_album_items); + rootViewAlbumItems.setOnClickListener(this); + setClick(R.id.iv_album_items); + rvAlbumItems = (RecyclerView) findViewById(R.id.rv_album_items); + LinearLayoutManager lm = new LinearLayoutManager(this); + ArrayList list = new ArrayList(albumModel.getAlbumItems()); + albumItemsAdapter = new AlbumItemsAdapter(this, list, 0, this); + rvAlbumItems.setLayoutManager(lm); + rvAlbumItems.setAdapter(albumItemsAdapter); + } + + private void setClick(@IdRes int... ids) { + for (int id : ids) { + findViewById(id).setOnClickListener(this); + } + } + + @Override + public void onClick(View view) { + int id = view.getId(); + if (R.id.iv_back == id) { + setResult(RESULT_CANCELED); + finish(); + } else if (R.id.tv_album_items == id || R.id.iv_album_items == id) { + showAlbumItems(View.GONE == rootViewAlbumItems.getVisibility()); + } else if (R.id.root_view_album_items == id) { + showAlbumItems(false); + } else if (R.id.tv_done == id) { + PuzzleActivity.startWithPhotos(this, selectedPhotos, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getString(R.string.app_name), "IMG", Code.REQUEST_PUZZLE, false, Setting.imageEngine); + + } + } + + private void showAlbumItems(boolean isShow) { + if (null == setShow) { + newAnimators(); + } + if (isShow) { + rootViewAlbumItems.setVisibility(View.VISIBLE); + setShow.start(); + } else { + setHide.start(); + } + } + + private void newAnimators() { + newHideAnim(); + newShowAnim(); + } + + private void newShowAnim() { + ObjectAnimator translationShow = ObjectAnimator.ofFloat(rvAlbumItems, "translationY", rootSelectorView.getTop(), 0); + ObjectAnimator alphaShow = ObjectAnimator.ofFloat(rootViewAlbumItems, "alpha", 0.0f, 1.0f); + translationShow.setDuration(300); + setShow = new AnimatorSet(); + setShow.setInterpolator(new AccelerateDecelerateInterpolator()); + setShow.play(translationShow).with(alphaShow); + } + + private void newHideAnim() { + ObjectAnimator translationHide = ObjectAnimator.ofFloat(rvAlbumItems, "translationY", 0, rootSelectorView.getTop()); + ObjectAnimator alphaHide = ObjectAnimator.ofFloat(rootViewAlbumItems, "alpha", 1.0f, 0.0f); + translationHide.setDuration(200); + setHide = new AnimatorSet(); + setHide.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + rootViewAlbumItems.setVisibility(View.GONE); + } + }); + setHide.setInterpolator(new AccelerateInterpolator()); + setHide.play(translationHide).with(alphaHide); + } + + @Override + public void onAlbumItemClick(int position, int realPosition) { + updatePhotos(realPosition); + showAlbumItems(false); + tvAlbumItems.setText(albumModel.getAlbumItems().get(realPosition).name); + } + + private void updatePhotos(int currAlbumItemIndex) { + photoList.clear(); + photoList.addAll(albumModel.getCurrAlbumItemPhotos(currAlbumItemIndex)); + + photosAdapter.notifyDataSetChanged(); + rvPhotos.scrollToPosition(0); + } + + + @Override + public void onBackPressed() { + + if (null != rootViewAlbumItems && rootViewAlbumItems.getVisibility() == View.VISIBLE) { + showAlbumItems(false); + return; + } + + super.onBackPressed(); + } + + @Override + public void onPhotoClick(int position) { + if (selectedPhotos.size() > 8) { + Toast.makeText(getApplicationContext(), getString(R.string.selector_reach_max_image_hint_easy_photos, 9), Toast.LENGTH_SHORT).show(); + return; + } + + selectedPhotos.add(photoList.get(position)); + previewAdapter.notifyDataSetChanged(); + rvPreview.smoothScrollToPosition(selectedPhotos.size() - 1); + + tvDone.setText(getString(R.string.selector_action_done_easy_photos, selectedPhotos.size(), 9)); + if (selectedPhotos.size() > 1) { + tvDone.setVisibility(View.VISIBLE); + } + } + + @Override + public void onDeleteClick(int position) { + selectedPhotos.remove(position); + previewAdapter.notifyDataSetChanged(); + tvDone.setText(getString(R.string.selector_action_done_easy_photos, selectedPhotos.size(), 9)); + if (selectedPhotos.size() < 2) { + tvDone.setVisibility(View.INVISIBLE); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (resultCode == RESULT_OK) { + if (requestCode == Code.REQUEST_PUZZLE) { + setResult(RESULT_OK, data); + finish(); + } + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/AlbumItemsAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/AlbumItemsAdapter.java new file mode 100644 index 0000000..17d0727 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/AlbumItemsAdapter.java @@ -0,0 +1,182 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.models.ad.AdViewHolder; +import com.huantansheng.easyphotos.models.album.entity.AlbumItem; +import com.huantansheng.easyphotos.setting.Setting; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; + +/** + * 媒体列表适é…器 + * Created by huan on 2017/10/23. + */ + +public class AlbumItemsAdapter extends RecyclerView.Adapter { + private static final int TYPE_AD = 0; + private static final int TYPE_ALBUM_ITEMS = 1; + + private ArrayList dataList; + private LayoutInflater mInflater; + private int selectedPosition; + private OnClickListener listener; + private int adPosition = 0; + private int padding = 0; + + private boolean clearAd = false; + + public interface OnClickListener { + void onAlbumItemClick(int position, int realPosition); + } + + + public AlbumItemsAdapter(Context cxt, ArrayList list, int selectedPosition, OnClickListener listener) { + this.dataList = list; + this.mInflater = LayoutInflater.from(cxt); + this.listener = listener; + this.selectedPosition = selectedPosition; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + switch (viewType) { + case TYPE_AD: + return new AdViewHolder(mInflater.inflate(R.layout.item_ad_easy_photos, parent, false)); + default: + return new AlbumItemsViewHolder(mInflater.inflate(R.layout.item_dialog_album_items_easy_photos, parent, false)); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + final int p = position; + if (holder instanceof AlbumItemsViewHolder) { + if (padding == 0) { + padding = ((AlbumItemsViewHolder) holder).mRoot.getPaddingLeft(); + } + if (p == getItemCount() - 1) { + ((AlbumItemsViewHolder) holder).mRoot.setPadding(padding, padding, padding, padding); + } else { + ((AlbumItemsViewHolder) holder).mRoot.setPadding(padding, padding, padding, 0); + } + AlbumItem item = (AlbumItem) dataList.get(p); + Setting.imageEngine.loadPhoto(((AlbumItemsViewHolder) holder).ivAlbumCover.getContext(), item.coverImageUri, ((AlbumItemsViewHolder) holder).ivAlbumCover); + ((AlbumItemsViewHolder) holder).tvAlbumName.setText(item.name); + ((AlbumItemsViewHolder) holder).tvAlbumPhotosCount.setText(String.valueOf(item.photos.size())); + if (selectedPosition == p) { + ((AlbumItemsViewHolder) holder).ivSelected.setVisibility(View.VISIBLE); + } else { + ((AlbumItemsViewHolder) holder).ivSelected.setVisibility(View.INVISIBLE); + } + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int realPosition = p; + if (Setting.hasAlbumItemsAd()) { + if (p > adPosition) { + realPosition--; + } + } + int tempSelected = selectedPosition; + selectedPosition = p; + notifyItemChanged(tempSelected); + notifyItemChanged(p); + listener.onAlbumItemClick(p, realPosition); + } + }); + return; + } + + if (holder instanceof AdViewHolder) { + if (clearAd) { + ((AdViewHolder) holder).adFrame.removeAllViews(); + ((AdViewHolder) holder).adFrame.setVisibility(View.GONE); + return; + } + adPosition = p; + if (!Setting.albumItemsAdIsOk) { + ((AdViewHolder) holder).adFrame.setVisibility(View.GONE); + return; + } + + WeakReference weakReference = (WeakReference) dataList.get(p); + + if (null != weakReference) { + View adView = (View) weakReference.get(); + if (null != adView) { + if (null != adView.getParent()) { + if (adView.getParent() instanceof FrameLayout) { + ((FrameLayout) adView.getParent()).removeAllViews(); + } + } + ((AdViewHolder) holder).adFrame.setVisibility(View.VISIBLE); + ((AdViewHolder) holder).adFrame.removeAllViews(); + ((AdViewHolder) holder).adFrame.addView(adView); + } + } + } + } + + public void clearAd() { + clearAd = true; + notifyDataSetChanged(); + } + + public void setSelectedPosition(int position) { + int realPosition = position; + if (Setting.hasAlbumItemsAd()) { + if (position > adPosition) { + realPosition--; + } + } + int tempSelected = selectedPosition; + selectedPosition = position; + notifyItemChanged(tempSelected); + notifyItemChanged(position); + listener.onAlbumItemClick(position, realPosition); + } + + @Override + public int getItemCount() { + return dataList.size(); + } + + @Override + public int getItemViewType(int position) { + Object item = dataList.get(position); + if (null == item || item instanceof WeakReference) { + return TYPE_AD; + } else { + return TYPE_ALBUM_ITEMS; + } + } + + public class AlbumItemsViewHolder extends RecyclerView.ViewHolder { + ImageView ivAlbumCover; + TextView tvAlbumName; + TextView tvAlbumPhotosCount; + ImageView ivSelected; + ConstraintLayout mRoot; + + AlbumItemsViewHolder(View itemView) { + super(itemView); + this.ivAlbumCover = (ImageView) itemView.findViewById(R.id.iv_album_cover); + this.tvAlbumName = (TextView) itemView.findViewById(R.id.tv_album_name); + this.tvAlbumPhotosCount = (TextView) itemView.findViewById(R.id.tv_album_photos_count); + this.ivSelected = (ImageView) itemView.findViewById(R.id.iv_selected); + this.mRoot = (ConstraintLayout) itemView.findViewById(R.id.m_root_view); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PhotosAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PhotosAdapter.java new file mode 100644 index 0000000..554055d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PhotosAdapter.java @@ -0,0 +1,306 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; + +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.ad.AdViewHolder; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.widget.PressedImageView; +import com.huantansheng.easyphotos.utils.media.DurationUtils; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; + +/** + * 专辑相册适é…器 + * Created by huan on 2017/10/23. + */ +public class PhotosAdapter extends RecyclerView.Adapter { + private static final int TYPE_AD = 0; + private static final int TYPE_CAMERA = 1; + private static final int TYPE_ALBUM_ITEMS = 2; + + private ArrayList dataList; + private LayoutInflater mInflater; + private OnClickListener listener; + private boolean unable, isSingle; + private int singlePosition; + + private boolean clearAd = false; + + + public PhotosAdapter(Context cxt, ArrayList dataList, OnClickListener listener) { + this.dataList = dataList; + this.listener = listener; + this.mInflater = LayoutInflater.from(cxt); + this.unable = Result.count() == Setting.count; + this.isSingle = Setting.count == 1; + } + + public void change() { + unable = Result.count() == Setting.count; + notifyDataSetChanged(); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + switch (viewType) { + case TYPE_AD: + return new AdViewHolder(mInflater.inflate(R.layout.item_ad_easy_photos, parent, false)); + case TYPE_CAMERA: + return new CameraViewHolder(mInflater.inflate(R.layout.item_camera_easy_photos, parent, false)); + default: + return new PhotoViewHolder(mInflater.inflate(R.layout.item_rv_photos_easy_photos, parent, false)); + } + } + + @Override + public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) { + final int p = position; + if (holder instanceof PhotoViewHolder) { + final Photo item = (Photo) dataList.get(p); + if (item == null) return; + updateSelector(((PhotoViewHolder) holder).tvSelector, item.selected, item, p); + String path = item.path; + Uri uri = item.uri; + String type = item.type; + long duration = item.duration; + final boolean isGif = path.endsWith(Type.GIF) || type.endsWith(Type.GIF); + if (Setting.showGif && isGif) { + Setting.imageEngine.loadGifAsBitmap(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(R.string.gif_easy_photos); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + ((PhotoViewHolder) holder).ivVideo.setVisibility(View.GONE); + } else if (Setting.showVideo && type.contains(Type.VIDEO)) { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(DurationUtils.format(duration)); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + ((PhotoViewHolder) holder).ivVideo.setVisibility(View.VISIBLE); + + } else { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setVisibility(View.GONE); + ((PhotoViewHolder) holder).ivVideo.setVisibility(View.GONE); + } + + ((PhotoViewHolder) holder).vSelector.setVisibility(View.VISIBLE); + ((PhotoViewHolder) holder).tvSelector.setVisibility(View.VISIBLE); + ((PhotoViewHolder) holder).ivPhoto.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int realPosition = p; + if (Setting.hasPhotosAd()) { + realPosition--; + } + if (Setting.isShowCamera && !Setting.isBottomRightCamera()) { + realPosition--; + } + listener.onPhotoClick(p, realPosition); + } + }); + + + ((PhotoViewHolder) holder).vSelector.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if (isSingle) { + singleSelector(item, p); + return; + } + if (unable) { + if (item.selected) { + Result.removePhoto(item); + if (unable) { + unable = false; + } + listener.onSelectorChanged(); + notifyDataSetChanged(); + return; + } + listener.onSelectorOutOfMax(null); + return; + } + item.selected = !item.selected; + if (item.selected) { + int res = Result.addPhoto(item); + if (res != 0) { + listener.onSelectorOutOfMax(res); + item.selected = false; + return; + } + ((PhotoViewHolder) holder).tvSelector.setBackgroundResource(R.drawable.bg_select_true_easy_photos); + ((PhotoViewHolder) holder).tvSelector.setText(String.valueOf(Result.count())); + if (Result.count() == Setting.count) { + unable = true; + notifyDataSetChanged(); + } + } else { + Result.removePhoto(item); + if (unable) { + unable = false; + } + notifyDataSetChanged(); + } + listener.onSelectorChanged(); + } + }); + return; + } + + if (holder instanceof AdViewHolder) { + if (clearAd) { + ((AdViewHolder) holder).adFrame.removeAllViews(); + ((AdViewHolder) holder).adFrame.setVisibility(View.GONE); + return; + } + if (!Setting.photoAdIsOk) { + ((AdViewHolder) holder).adFrame.setVisibility(View.GONE); + return; + } + + WeakReference weakReference = (WeakReference) dataList.get(p); + + if (null != weakReference) { + View adView = (View) weakReference.get(); + if (null != adView) { + if (null != adView.getParent()) { + if (adView.getParent() instanceof FrameLayout) { + ((FrameLayout) adView.getParent()).removeAllViews(); + } + } + ((AdViewHolder) holder).adFrame.setVisibility(View.VISIBLE); + ((AdViewHolder) holder).adFrame.removeAllViews(); + ((AdViewHolder) holder).adFrame.addView(adView); + } + } + } + + if (holder instanceof CameraViewHolder) { + ((CameraViewHolder) holder).flCamera.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onCameraClick(); + } + }); + } + } + + public void clearAd() { + clearAd = true; + notifyDataSetChanged(); + } + + private void singleSelector(Photo photo, int position) { + if (!Result.isEmpty()) { + if (Result.getPhotoPath(0).equals(photo.path)) { + Result.removePhoto(photo); + } else { + Result.removePhoto(0); + Result.addPhoto(photo); + notifyItemChanged(singlePosition); + } + } else { + Result.addPhoto(photo); + } + notifyItemChanged(position); + listener.onSelectorChanged(); + } + + private void updateSelector(TextView tvSelector, boolean selected, Photo photo, int position) { + if (selected) { + String number = Result.getSelectorNumber(photo); + if (number.equals("0")) { + tvSelector.setBackgroundResource(R.drawable.bg_select_false_easy_photos); + tvSelector.setText(null); + return; + } + tvSelector.setText(number); + tvSelector.setBackgroundResource(R.drawable.bg_select_true_easy_photos); + if (isSingle) { + singlePosition = position; + tvSelector.setText("1"); + } + } else { + if (unable) { + tvSelector.setBackgroundResource(R.drawable.bg_select_false_unable_easy_photos); + } else { + tvSelector.setBackgroundResource(R.drawable.bg_select_false_easy_photos); + } + tvSelector.setText(null); + } + } + + @Override + public int getItemCount() { + return dataList.size(); + } + + @Override + public int getItemViewType(int position) { + if (0 == position) { + if (Setting.hasPhotosAd()) { + return TYPE_AD; + } + if (Setting.isShowCamera && !Setting.isBottomRightCamera()) { + return TYPE_CAMERA; + } + } + if (1 == position && !Setting.isBottomRightCamera()) { + if (Setting.hasPhotosAd() && Setting.isShowCamera) { + return TYPE_CAMERA; + } + } + return TYPE_ALBUM_ITEMS; + } + + public interface OnClickListener { + void onCameraClick(); + + void onPhotoClick(int position, int realPosition); + + void onSelectorOutOfMax(@Nullable Integer result); + + void onSelectorChanged(); + } + + private static class CameraViewHolder extends RecyclerView.ViewHolder { + final FrameLayout flCamera; + + CameraViewHolder(View itemView) { + super(itemView); + this.flCamera = itemView.findViewById(R.id.fl_camera); + } + } + + public static class PhotoViewHolder extends RecyclerView.ViewHolder { + final PressedImageView ivPhoto; + final TextView tvSelector; + final View vSelector; + final TextView tvType; + final ImageView ivVideo; + + PhotoViewHolder(View itemView) { + super(itemView); + this.ivPhoto = itemView.findViewById(R.id.iv_photo); + this.tvSelector = itemView.findViewById(R.id.tv_selector); + this.vSelector = itemView.findViewById(R.id.v_selector); + this.tvType = itemView.findViewById(R.id.tv_type); + this.ivVideo = itemView.findViewById(R.id.iv_play); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosAdapter.java new file mode 100644 index 0000000..d93cd8d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosAdapter.java @@ -0,0 +1,165 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import android.content.Intent; +import android.graphics.PointF; +import android.net.Uri; +import android.os.Build; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.core.content.FileProvider; +import androidx.recyclerview.widget.RecyclerView; + +import com.davemorrissey.labs.subscaleview.ImageSource; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; +import com.github.chrisbanes.photoview.OnScaleChangedListener; +import com.github.chrisbanes.photoview.PhotoView; +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.setting.Setting; + +import java.io.File; +import java.util.ArrayList; + +/** + * 大图预览界é¢å›¾ç‰‡é›†åˆçš„适é…器 + * Created by huan on 2017/10/26. + */ +public class PreviewPhotosAdapter extends RecyclerView.Adapter { + private ArrayList photos; + private OnClickListener listener; + private LayoutInflater inflater; + + public interface OnClickListener { + void onPhotoClick(); + + void onPhotoScaleChanged(); + } + + public PreviewPhotosAdapter(Context cxt, ArrayList photos, OnClickListener listener) { + this.photos = photos; + this.inflater = LayoutInflater.from(cxt); + this.listener = listener; + } + + @NonNull + @Override + public PreviewPhotosViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new PreviewPhotosViewHolder(inflater.inflate(R.layout.item_preview_photo_easy_photos, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull final PreviewPhotosViewHolder holder, int position) { + final Uri uri = photos.get(position).uri; + final String path = photos.get(position).path; + final String type = photos.get(position).type; + final double ratio = + (double) photos.get(position).height / (double) photos.get(position).width; + + holder.ivPlay.setVisibility(View.GONE); + holder.ivPhotoView.setVisibility(View.GONE); + holder.ivLongPhoto.setVisibility(View.GONE); + + if (type.contains(Type.VIDEO)) { + holder.ivPhotoView.setVisibility(View.VISIBLE); + Setting.imageEngine.loadPhoto(holder.ivPhotoView.getContext(), uri, holder.ivPhotoView); + holder.ivPlay.setVisibility(View.VISIBLE); + holder.ivPlay.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + toPlayVideo(v, uri, type); + } + }); + } else if (path.endsWith(Type.GIF) || type.endsWith(Type.GIF)) { + holder.ivPhotoView.setVisibility(View.VISIBLE); + Setting.imageEngine.loadGif(holder.ivPhotoView.getContext(), uri, holder.ivPhotoView); + } else { + if (ratio > 2.3) { + holder.ivLongPhoto.setVisibility(View.VISIBLE); + holder.ivLongPhoto.setImage(ImageSource.uri(path)); + } else { + holder.ivPhotoView.setVisibility(View.VISIBLE); + Setting.imageEngine.loadPhoto(holder.ivPhotoView.getContext(), uri, + holder.ivPhotoView); + } + } + + holder.ivLongPhoto.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onPhotoClick(); + } + }); + holder.ivPhotoView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onPhotoClick(); + } + }); + holder.ivLongPhoto.setOnStateChangedListener(new SubsamplingScaleImageView.OnStateChangedListener() { + @Override + public void onScaleChanged(float newScale, int origin) { + listener.onPhotoScaleChanged(); + } + + @Override + public void onCenterChanged(PointF newCenter, int origin) { + + } + }); + + holder.ivPhotoView.setScale(1f); + + holder.ivPhotoView.setOnScaleChangeListener(new OnScaleChangedListener() { + @Override + public void onScaleChange(float scaleFactor, float focusX, float focusY) { + listener.onPhotoScaleChanged(); + } + }); + } + + private void toPlayVideo(View v, Uri uri, String type) { + Context context = v.getContext(); + Intent intent = new Intent(Intent.ACTION_VIEW); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + } + intent.setDataAndType(uri, type); + context.startActivity(intent); + } + + private Uri getUri(Context context, String path, Intent intent) { + File file = new File(path); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + return FileProvider.getUriForFile(context, Setting.fileProviderAuthority, file); + } else { + return Uri.fromFile(file); + } + } + + @Override + public int getItemCount() { + return photos.size(); + } + + public class PreviewPhotosViewHolder extends RecyclerView.ViewHolder { + public SubsamplingScaleImageView ivLongPhoto; + ImageView ivPlay; + PhotoView ivPhotoView; + + PreviewPhotosViewHolder(View itemView) { + super(itemView); + ivLongPhoto = itemView.findViewById(R.id.iv_long_photo); + ivPhotoView = itemView.findViewById(R.id.iv_photo_view); + ivPlay = itemView.findViewById(R.id.iv_play); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosFragmentAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosFragmentAdapter.java new file mode 100644 index 0000000..8687d30 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PreviewPhotosFragmentAdapter.java @@ -0,0 +1,104 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; + +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.result.Result; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.ui.widget.PressedImageView; +import com.huantansheng.easyphotos.utils.media.DurationUtils; + +/** + * 预览所有选中图片集åˆçš„适é…器 + * Created by huan on 2017/12/1. + */ + +public class PreviewPhotosFragmentAdapter extends RecyclerView.Adapter { + private LayoutInflater inflater; + private OnClickListener listener; + private int checkedPosition = -1; + + public PreviewPhotosFragmentAdapter(Context context, OnClickListener listener) { + this.inflater = LayoutInflater.from(context); + this.listener = listener; + } + + + @Override + public PreviewPhotoVH onCreateViewHolder(ViewGroup parent, int viewType) { + return new PreviewPhotoVH(inflater.inflate(R.layout.item_preview_selected_photos_easy_photos, parent, false)); + } + + @Override + public void onBindViewHolder(PreviewPhotoVH holder, int position) { + final int p = position; + String path = Result.getPhotoPath(position); + String type = Result.getPhotoType(position); + Uri uri = Result.getPhotoUri(position); + long duration = Result.getPhotoDuration(position); + + final boolean isGif = path.endsWith(Type.GIF) || type.endsWith(Type.GIF); + if (Setting.showGif && isGif) { + Setting.imageEngine.loadGifAsBitmap(holder.ivPhoto.getContext(), uri, holder.ivPhoto); + holder.tvType.setText(R.string.gif_easy_photos); + holder.tvType.setVisibility(View.VISIBLE); + } else if (Setting.showVideo && type.contains(Type.VIDEO)) { + Setting.imageEngine.loadPhoto(holder.ivPhoto.getContext(), uri, holder.ivPhoto); + holder.tvType.setText(DurationUtils.format(duration)); + holder.tvType.setVisibility(View.VISIBLE); + } else { + Setting.imageEngine.loadPhoto(holder.ivPhoto.getContext(), uri, holder.ivPhoto); + holder.tvType.setVisibility(View.GONE); + } + + if (checkedPosition == p) { + holder.frame.setVisibility(View.VISIBLE); + } else { + holder.frame.setVisibility(View.GONE); + } + holder.ivPhoto.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + listener.onPhotoClick(p); + } + }); + } + + @Override + public int getItemCount() { + return Result.count(); + } + + public void setChecked(int position) { + if (checkedPosition == position) { + return; + } + checkedPosition = position; + notifyDataSetChanged(); + } + + class PreviewPhotoVH extends RecyclerView.ViewHolder { + PressedImageView ivPhoto; + View frame; + TextView tvType; + + public PreviewPhotoVH(View itemView) { + super(itemView); + ivPhoto = (PressedImageView) itemView.findViewById(R.id.iv_photo); + frame = itemView.findViewById(R.id.v_selector); + tvType = (TextView) itemView.findViewById(R.id.tv_type); + } + } + + public interface OnClickListener { + void onPhotoClick(int position); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleAdapter.java new file mode 100644 index 0000000..4365b08 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleAdapter.java @@ -0,0 +1,103 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.models.puzzle.PuzzleLayout; +import com.huantansheng.easyphotos.models.puzzle.SquarePuzzleView; +import com.huantansheng.easyphotos.models.puzzle.template.slant.NumberSlantLayout; +import com.huantansheng.easyphotos.models.puzzle.template.straight.NumberStraightLayout; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author wupanjie + */ +public class PuzzleAdapter extends RecyclerView.Adapter { + + private List layoutData = new ArrayList<>(); + private OnItemClickListener onItemClickListener; + private int selectedNumber = 0; + + @Override + public PuzzleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = + LayoutInflater.from(parent.getContext()).inflate(R.layout.item_puzzle_easy_photos, parent, false); + return new PuzzleViewHolder(itemView); + } + + @Override + public void onBindViewHolder(PuzzleViewHolder holder, int position) { + final PuzzleLayout puzzleLayout = layoutData.get(position); + final int p = position; + if (selectedNumber == position) { + holder.mFrame.setVisibility(View.VISIBLE); + } else { + holder.mFrame.setVisibility(View.GONE); + } + holder.puzzleView.setNeedDrawLine(true); + holder.puzzleView.setNeedDrawOuterLine(true); + holder.puzzleView.setTouchEnable(false); + + holder.puzzleView.setPuzzleLayout(puzzleLayout); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (selectedNumber == p) { + return; + } + if (onItemClickListener != null) { + int themeType = 0; + int themeId = 0; + if (puzzleLayout instanceof NumberSlantLayout) { + themeType = 0; + themeId = ((NumberSlantLayout) puzzleLayout).getTheme(); + } else if (puzzleLayout instanceof NumberStraightLayout) { + themeType = 1; + themeId = ((NumberStraightLayout) puzzleLayout).getTheme(); + } + selectedNumber = p; + onItemClickListener.onItemClick(themeType, themeId); + notifyDataSetChanged(); + } + } + }); + + } + + @Override + public int getItemCount() { + return layoutData == null ? 0 : layoutData.size(); + } + + public void refreshData(List layoutData) { + this.layoutData = layoutData; + + notifyDataSetChanged(); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.onItemClickListener = onItemClickListener; + } + + public static class PuzzleViewHolder extends RecyclerView.ViewHolder { + + SquarePuzzleView puzzleView; + View mFrame; + + public PuzzleViewHolder(View itemView) { + super(itemView); + puzzleView = (SquarePuzzleView) itemView.findViewById(R.id.puzzle); + mFrame = itemView.findViewById(R.id.m_selector); + } + } + + public interface OnItemClickListener { + void onItemClick(int themeType, int themeId); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorAdapter.java new file mode 100644 index 0000000..edb2bbf --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorAdapter.java @@ -0,0 +1,99 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; + +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.utils.media.DurationUtils; + +import java.util.ArrayList; + +/** + * 拼图相册适é…器 + * Created by huan on 2017/10/23. + */ + +public class PuzzleSelectorAdapter extends RecyclerView.Adapter { + + + private ArrayList dataList; + private LayoutInflater mInflater; + private OnClickListener listener; + + + public PuzzleSelectorAdapter(Context cxt, ArrayList dataList, OnClickListener listener) { + this.dataList = dataList; + this.listener = listener; + this.mInflater = LayoutInflater.from(cxt); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + return new PhotoViewHolder(mInflater.inflate(R.layout.item_puzzle_selector_easy_photos, parent, false)); + + } + + @Override + public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { + + final int p = position; + Photo photo = dataList.get(position); + String path = photo.path; + String type = photo.type; + Uri uri = photo.uri; + long duration = photo.duration; + final boolean isGif = path.endsWith(Type.GIF) || type.endsWith(Type.GIF); + if (Setting.showGif && isGif) { + Setting.imageEngine.loadGifAsBitmap(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(R.string.gif_easy_photos); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + } else if (Setting.showVideo && type.contains(Type.VIDEO)) { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(DurationUtils.format(duration)); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + } else { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setVisibility(View.GONE); + } + + ((PhotoViewHolder) holder).ivPhoto.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onPhotoClick(p); + } + }); + } + + + @Override + public int getItemCount() { + return null == dataList ? 0 : dataList.size(); + } + + + public interface OnClickListener { + void onPhotoClick(int position); + } + + public class PhotoViewHolder extends RecyclerView.ViewHolder { + ImageView ivPhoto; + TextView tvType; + + public PhotoViewHolder(View itemView) { + super(itemView); + this.ivPhoto = (ImageView) itemView.findViewById(R.id.iv_photo); + this.tvType = (TextView) itemView.findViewById(R.id.tv_type); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorPreviewAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorPreviewAdapter.java new file mode 100644 index 0000000..a8c60bf --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/PuzzleSelectorPreviewAdapter.java @@ -0,0 +1,101 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; + +import android.net.Uri; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.constant.Type; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.setting.Setting; +import com.huantansheng.easyphotos.utils.media.DurationUtils; + +import java.util.ArrayList; + +/** + * 拼图相册适é…器 + * Created by huan on 2017/10/23. + */ + +public class PuzzleSelectorPreviewAdapter extends RecyclerView.Adapter { + + + private ArrayList dataList; + private LayoutInflater mInflater; + private OnClickListener listener; + + + public PuzzleSelectorPreviewAdapter(Context cxt, ArrayList dataList, OnClickListener listener) { + this.dataList = dataList; + this.listener = listener; + this.mInflater = LayoutInflater.from(cxt); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + return new PhotoViewHolder(mInflater.inflate(R.layout.item_puzzle_selector_preview_easy_photos, parent, false)); + + } + + @Override + public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { + + final int p = position; + Photo photo = dataList.get(position); + String path = photo.path; + String type = photo.type; + Uri uri = photo.uri; + long duration = photo.duration; + final boolean isGif = path.endsWith(Type.GIF) || type.endsWith(Type.GIF); + if (Setting.showGif && isGif) { + Setting.imageEngine.loadGifAsBitmap(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(R.string.gif_easy_photos); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + } else if (Setting.showVideo && type.contains(Type.VIDEO)) { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setText(DurationUtils.format(duration)); + ((PhotoViewHolder) holder).tvType.setVisibility(View.VISIBLE); + } else { + Setting.imageEngine.loadPhoto(((PhotoViewHolder) holder).ivPhoto.getContext(), uri, ((PhotoViewHolder) holder).ivPhoto); + ((PhotoViewHolder) holder).tvType.setVisibility(View.GONE); + } + + ((PhotoViewHolder) holder).ivDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.onDeleteClick(p); + } + }); + } + + + @Override + public int getItemCount() { + return null == dataList ? 0 : dataList.size(); + } + + + public interface OnClickListener { + void onDeleteClick(int position); + } + + public class PhotoViewHolder extends RecyclerView.ViewHolder { + ImageView ivPhoto; + ImageView ivDelete; + TextView tvType; + + public PhotoViewHolder(View itemView) { + super(itemView); + this.ivPhoto = (ImageView) itemView.findViewById(R.id.iv_photo); + this.ivDelete = (ImageView) itemView.findViewById(R.id.iv_delete); + this.tvType = (TextView) itemView.findViewById(R.id.tv_type); + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/TextStickerAdapter.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/TextStickerAdapter.java new file mode 100644 index 0000000..7171bd7 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/adapter/TextStickerAdapter.java @@ -0,0 +1,80 @@ +package com.huantansheng.easyphotos.ui.adapter; + +import android.content.Context; +import androidx.recyclerview.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.huantansheng.easyphotos.R; +import com.huantansheng.easyphotos.models.sticker.StickerModel; +import com.huantansheng.easyphotos.models.sticker.entity.TextStickerData; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author huan + */ +public class TextStickerAdapter extends RecyclerView.Adapter { + + private List datas; + private OnItemClickListener onItemClickListener; + + public TextStickerAdapter(Context cxt, OnItemClickListener listener) { + super(); + this.onItemClickListener = listener; + this.datas = new ArrayList<>(); + TextStickerData data = new TextStickerData(cxt.getString(R.string.text_sticker_hint_name_easy_photos), cxt.getString(R.string.text_sticker_hint_easy_photos)); + this.datas.add(0, data); + TextStickerData d = new TextStickerData(cxt.getString(R.string.text_sticker_date_easy_photos), "-1"); + datas.add(d); + datas.addAll(StickerModel.textDataList); + } + + @Override + public TextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View itemView = + LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text_sticker_easy_photos, parent, false); + return new TextViewHolder(itemView); + } + + @Override + public void onBindViewHolder(TextViewHolder holder, int position) { + final TextStickerData data = datas.get(position); + + holder.tvSticker.setText(data.stickerName); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onItemClickListener != null) { + onItemClickListener.onItemClick(data.stickerValue); + notifyDataSetChanged(); + } + } + }); + + } + + @Override + public int getItemCount() { + return datas == null ? 0 : datas.size(); + } + + + public static class TextViewHolder extends RecyclerView.ViewHolder { + + TextView tvSticker; + + public TextViewHolder(View itemView) { + super(itemView); + tvSticker = (TextView) itemView.findViewById(R.id.puzzle); + } + } + + public interface OnItemClickListener { + void onItemClick(String stickerValue); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/dialog/LoadingDialog.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/dialog/LoadingDialog.java new file mode 100644 index 0000000..3658498 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/dialog/LoadingDialog.java @@ -0,0 +1,49 @@ +package com.huantansheng.easyphotos.ui.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.NonNull; + +import com.huantansheng.easyphotos.R; + +public class LoadingDialog extends Dialog { + + private LoadingDialog(@NonNull Context context) { + super(context); + Window window = getWindow(); + if (null != window) { + window.requestFeature(Window.FEATURE_NO_TITLE); + } + } + + public static LoadingDialog get(Context context) { + LoadingDialog loading = new LoadingDialog(context); + View view = LayoutInflater.from(context).inflate(R.layout.dialog_loading_easy_photos, null); + loading.setContentView(view); + loading.setCancelable(false); + loading.setCanceledOnTouchOutside(false); + return loading; + } + + @Override + public void show() { + Window window = getWindow(); + if (null != window) { + WindowManager.LayoutParams attributes = window.getAttributes(); + window.setBackgroundDrawableResource(R.color.transparent_easy_photos); + window.setGravity(Gravity.CENTER); + attributes.width = WindowManager.LayoutParams.MATCH_PARENT; + attributes.height = WindowManager.LayoutParams.WRAP_CONTENT; + window.setAttributes(attributes); + } + super.show(); + } + +} + diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedImageView.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedImageView.java new file mode 100644 index 0000000..e613e53 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedImageView.java @@ -0,0 +1,47 @@ +package com.huantansheng.easyphotos.ui.widget; + +import android.content.Context; +import androidx.annotation.Nullable; +import android.util.AttributeSet; + +/** + * 自带点击效果的imageview + * Created by huan on 2017/8/15. + */ + +public class PressedImageView extends androidx.appcompat.widget.AppCompatImageView { + private float scaleSize;//按压颜色 + + public PressedImageView(Context context) { + super(context); + this.scaleSize = 0.97f; + } + + public PressedImageView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + this.scaleSize = 0.97f; + + } + + public PressedImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + this.scaleSize = 0.97f; + + } + + @Override + public void setPressed(boolean pressed) { + super.setPressed(pressed); + if (isPressed()) { + setScaleX(this.scaleSize); + setScaleY(this.scaleSize); + } else { + setScaleX(1.0f); + setScaleY(1.0f); + } + } + + public void setScaleSize(float scaleSize) { + this.scaleSize = scaleSize; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedTextView.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedTextView.java new file mode 100644 index 0000000..613c11c --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PressedTextView.java @@ -0,0 +1,72 @@ +package com.huantansheng.easyphotos.ui.widget; + +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.content.Context; +import androidx.annotation.Nullable; +import android.util.AttributeSet; + +/** + * 带点击状æ€çš„textview + * Created by huan on 2017/9/15. + */ + +public class PressedTextView extends androidx.appcompat.widget.AppCompatTextView { + private float pressedScale; + private AnimatorSet set; + private int pressedFlag; + + public PressedTextView(Context context) { + super(context); + this.pressedScale = 1.1f; + this.pressedFlag = 1; + } + + public PressedTextView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + this.pressedScale = 1.1f; + this.pressedFlag = 1; + } + + public PressedTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + this.pressedScale = 1.1f; + this.pressedFlag = 1; + } + + @Override + public void setPressed(boolean pressed) { + super.setPressed(pressed); + if (isPressed()) { + pressedFlag = 1; + if (null == set) { + set = new AnimatorSet(); + set.setDuration(5); + } + if (set.isRunning()) set.cancel(); + ObjectAnimator pScaleX = ObjectAnimator.ofFloat(this, "scaleX", 1.0f, pressedScale); + ObjectAnimator pScaleY = ObjectAnimator.ofFloat(this, "scaleY", 1.0f, pressedScale); + set.play(pScaleX).with(pScaleY); + set.start(); + } else { + if (pressedFlag != 1) { + return; + } + pressedFlag = 2; + if (null == set) { + set = new AnimatorSet(); + set.setDuration(5); + } + if (set.isRunning()) set.cancel(); + ObjectAnimator nScaleX = ObjectAnimator.ofFloat(this, "scaleX", pressedScale, 1.0f); + ObjectAnimator nScaleY = ObjectAnimator.ofFloat(this, "scaleY", pressedScale, 1.0f); + set.play(nScaleX).with(nScaleY); + set.start(); + } + } + + public void setPressedScale(float pressedScale) { + this.pressedScale = pressedScale; + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PreviewRecyclerView.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PreviewRecyclerView.java new file mode 100644 index 0000000..4aab6cf --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/ui/widget/PreviewRecyclerView.java @@ -0,0 +1,59 @@ +package com.huantansheng.easyphotos.ui.widget; + +import android.content.Context; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.MotionEvent; + +/** + * 图片预览 RecyclerView + * Create By lishilin On 2019/3/25 + */ +public class PreviewRecyclerView extends RecyclerView { + + private boolean isLock;// 是å¦é”ä½ RecyclerView ,é¿å…å’Œ PhotoView åŒæŒ‡æ”¾å¤§ç¼©å°æ“ä½œå†²çª + + public PreviewRecyclerView(@NonNull Context context) { + super(context); + } + + public PreviewRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public PreviewRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + switch (event.getActionMasked()) { + case MotionEvent.ACTION_POINTER_DOWN:// éžç¬¬ä¸€ä¸ªè§¦ç‚¹æŒ‰ä¸‹ + isLock = true; + break; + case MotionEvent.ACTION_UP:// 最åŽä¸€ä¸ªè§¦ç‚¹æŠ¬èµ· + isLock = false; + break; + } + if (isLock) { + return false;// 䏿‹¦æˆªï¼Œäº¤ç»™å­Viewå¤„ç† + } + return super.onInterceptTouchEvent(event); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + switch (event.getActionMasked()) { + case MotionEvent.ACTION_POINTER_DOWN:// éžç¬¬ä¸€ä¸ªè§¦ç‚¹æŒ‰ä¸‹ + isLock = true; + break; + case MotionEvent.ACTION_UP:// 最åŽä¸€ä¸ªè§¦ç‚¹æŠ¬èµ· + isLock = false; + break; + } + return super.dispatchTouchEvent(event); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/Color/ColorUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/Color/ColorUtils.java new file mode 100644 index 0000000..f709089 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/Color/ColorUtils.java @@ -0,0 +1,37 @@ +package com.huantansheng.easyphotos.utils.Color; + +/** + * Created by huan on 2018/1/9. + */ + +public class ColorUtils { + + /** + * 判断颜色是å¦å黑色 + * + * @param color 颜色 + * @return + */ + public static boolean isBlackColor(int color) { + int grey = toGrey(color); + return grey < 50; + } + + /** + * é¢œè‰²è½¬æ¢æˆç°åº¦å€¼ + * + * @param rgb 颜色 + * @return ç°åº¦å€¼ + */ + public static int toGrey(int rgb) { + int blue = rgb & 0x000000FF; + int green = (rgb & 0x0000FF00) >> 8; + int red = (rgb & 0x00FF0000) >> 16; + return (red * 38 + green * 75 + blue * 15) >> 7; + } + + public static boolean isWhiteColor(int color) { + int grey = toGrey(color); + return grey > 200; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/String/StringUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/String/StringUtils.java new file mode 100644 index 0000000..8a7f8cf --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/String/StringUtils.java @@ -0,0 +1,19 @@ +package com.huantansheng.easyphotos.utils.String; + +/** + * 字符串工具类 + * Created by huan on 2017/10/20. + */ +public class StringUtils { + public static String getLastPathSegment(String content) { + if (content == null || content.length() == 0) { + return ""; + } + String[] segments = content.split("/"); + if (segments.length > 0) { + return segments[segments.length - 1]; + } + return ""; + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/BitmapUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/BitmapUtils.java new file mode 100644 index 0000000..8548a3e --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/BitmapUtils.java @@ -0,0 +1,412 @@ +package com.huantansheng.easyphotos.utils.bitmap; + +import android.app.Activity; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Rect; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.provider.MediaStore; +import android.text.TextPaint; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.exifinterface.media.ExifInterface; + +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.utils.uri.UriUtils; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +/** + * bitmap工具类 + * Created by huan on 2017/9/4. + */ + +public class BitmapUtils { + /** + * 回收bitmap + * + * @param bitmap 回收的bitmap + */ + public static void recycle(Bitmap bitmap) { + if (null != bitmap && !bitmap.isRecycled()) { + bitmap.recycle(); + bitmap = null; + } + System.gc(); + } + + public static void recycle(Bitmap... bitmaps) { + for (Bitmap b : bitmaps) { + recycle(b); + } + } + + public static void recycle(List bitmaps) { + for (Bitmap b : bitmaps) { + recycle(b); + } + } + + /** + * 给图片添加水å°ï¼Œæ°´å°ä¼šæ ¹æ®å›¾ç‰‡å®½é«˜è‡ªåŠ¨ç¼©æ”¾å¤„ç† + * + * @param watermark æ°´å° + * @param image 添加水å°çš„图片 + * @param offsetX 添加水å°çš„Xè½´åç§»é‡ + * @param offsetY 添加水å°çš„Yè½´åç§»é‡ + * @param srcWaterMarkImageWidth æ°´å°å¯¹åº”的原图片宽度,å³uiåˆ¶ä½œæ°´å°æ—¶å€™å‚考的图片画布宽度,应该是已知的图片最大宽度 + * @param addInLeft true 在左下角添加水å°ï¼Œfalse 在å³ä¸‹è§’æ·»åŠ æ°´å° + * @param orientation Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap + * 䏿˜¯ç”¨æˆ·æ‰‹æœºå†…图片,填0å³å¯ã€‚ + * @return 添加水å°åŽçš„bitmap + */ + public static Bitmap addWatermark(Bitmap watermark, Bitmap image, int srcWaterMarkImageWidth, + int offsetX, int offsetY, boolean addInLeft, int orientation) { + int imageWidth = image.getWidth(); + int imageHeight = image.getHeight(); + if (0 == imageWidth || 0 == imageHeight) { + throw new RuntimeException("AlbumBuilder: 加水å°çš„原图宽或高ä¸èƒ½ä¸º0ï¼"); + } + switch (orientation) { + case 90: + case 270: + image = adjustBitmapRotation(image, orientation); + int temp = imageHeight; + imageHeight = imageWidth; + imageWidth = temp; + break; + case 180: + image = adjustBitmapRotation(image, orientation); + break; + + } + int watermarkWidth = watermark.getWidth(); + int watermarkHeight = watermark.getHeight(); + float scale = imageWidth / (float) srcWaterMarkImageWidth; + if (scale > 1) scale = 1; + else if (scale < 0.4) scale = 0.4f; + int scaleWatermarkWidth = (int) (watermarkWidth * scale); + int scaleWatermarkHeight = (int) (watermarkHeight * scale); + Bitmap scaleWatermark = Bitmap.createScaledBitmap(watermark, scaleWatermarkWidth, + scaleWatermarkHeight, true); + Canvas canvas = new Canvas(image); + Paint paint = new Paint(); + paint.setAntiAlias(true); + if (addInLeft) { + canvas.drawBitmap(scaleWatermark, offsetX, + imageHeight - scaleWatermarkHeight - offsetY, paint); + } else { + canvas.drawBitmap(scaleWatermark, imageWidth - offsetX - scaleWatermarkWidth, + imageHeight - scaleWatermarkHeight - offsetY, paint); + } + recycle(scaleWatermark); + return image; + } + + /** + * 给图片添加带文字和图片的水å°ï¼Œæ°´å°ä¼šæ ¹æ®å›¾ç‰‡å®½é«˜è‡ªåŠ¨ç¼©æ”¾å¤„ç† + * + * @param watermark æ°´å°å›¾ç‰‡ + * @param image è¦åŠ æ°´å°çš„图片 + * @param srcWaterMarkImageWidth æ°´å°å¯¹åº”的原图片宽度,å³uiåˆ¶ä½œæ°´å°æ—¶å€™å‚考的图片画布宽度,应该是已知的图片最大宽度 + * @param text è¦æ·»åŠ çš„æ–‡å­— + * @param offsetX 添加水å°çš„Xè½´åç§»é‡ + * @param offsetY 添加水å°çš„Yè½´åç§»é‡ + * @param addInLeft true 在左下角添加水å°ï¼Œfalse 在å³ä¸‹è§’æ·»åŠ æ°´å° + * @param orientation Bitmap的旋转角度。当useWidth为true时,Photo实体类中会有orientation,若bitmap + * 䏿˜¯ç”¨æˆ·æ‰‹æœºå†…图片,填0å³å¯ã€‚ + * @return 添加水å°åŽçš„bitmap + */ + public static Bitmap addWatermarkWithText(@NonNull Bitmap watermark, Bitmap image, + int srcWaterMarkImageWidth, @NonNull String text, + int offsetX, int offsetY, boolean addInLeft, + int orientation) { + float imageWidth = image.getWidth(); + float imageHeight = image.getHeight(); + if (0 == imageWidth || 0 == imageHeight) { + throw new RuntimeException("AlbumBuilder: 加水å°çš„原图宽或高ä¸èƒ½ä¸º0ï¼"); + } + switch (orientation) { + case 90: + case 270: + image = adjustBitmapRotation(image, orientation); + float temp = imageHeight; + imageHeight = imageWidth; + imageWidth = temp; + break; + case 180: + image = adjustBitmapRotation(image, orientation); + break; + + } + float watermarkWidth = watermark.getWidth(); + float watermarkHeight = watermark.getHeight(); + float scale = imageWidth / (float) srcWaterMarkImageWidth; + if (scale > 1) scale = 1; + else if (scale < 0.4) scale = 0.4f; + float scaleWatermarkWidth = watermarkWidth * scale; + float scaleWatermarkHeight = watermarkHeight * scale; + Bitmap scaleWatermark = Bitmap.createScaledBitmap(watermark, (int) scaleWatermarkWidth, + (int) scaleWatermarkHeight, true); + Canvas canvas = new Canvas(image); + + Paint textPaint = new TextPaint(); + textPaint.setAntiAlias(true); + textPaint.setColor(Color.WHITE); + float textsize = (float) (scaleWatermark.getHeight() * 2) / (float) 3; + textPaint.setTextSize(textsize); + Rect textRect = new Rect(); + textPaint.getTextBounds(text, 0, text.length(), textRect); + if (addInLeft) { + canvas.drawText(text, scaleWatermarkWidth + offsetX, + imageHeight - textRect.height() - textRect.top - offsetY, textPaint); + } else { + canvas.drawText(text, imageWidth - offsetX - textRect.width() - textRect.left, + imageHeight - textRect.height() - textRect.top - offsetY, textPaint); + } + + Paint sacleWatermarkPaint = new Paint(); + sacleWatermarkPaint.setAntiAlias(true); + if (addInLeft) { + canvas.drawBitmap(scaleWatermark, offsetX, + imageHeight - textRect.height() - offsetY - scaleWatermarkHeight / 6, + sacleWatermarkPaint); + } else { + canvas.drawBitmap(scaleWatermark, + imageWidth - textRect.width() - offsetX - scaleWatermarkWidth / 6, + imageHeight - textRect.height() - offsetY - scaleWatermarkHeight / 6, + sacleWatermarkPaint); + } + recycle(scaleWatermark); + return image; + } + + + /** + * ä¿å­˜Bitmap到指定文件夹 + * + * @param act 上下文 + * @param dirPath 文件夹全路径 + * @param bitmap bitmap + * @param namePrefix ä¿å­˜æ–‡ä»¶çš„å‰ç¼€å,文件最终åç§°æ ¼å¼ä¸ºï¼šå‰ç¼€å+自动生æˆçš„唯一数字字符+.png + * @param notifyMedia æ˜¯å¦æ›´æ–°åˆ°åª’体库 + * @param callBack ä¿å­˜å›¾ç‰‡åŽçš„回调,回调已ç»å¤„于UI线程 + */ + public static void saveBitmapToDir(final Activity act, final String dirPath, + final String namePrefix, final Bitmap bitmap, + final boolean notifyMedia, + final SaveBitmapCallBack callBack) { + new Thread(new Runnable() { + @Override + public void run() { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + //android10+ + saveBitmapToDirQ(act, dirPath, namePrefix, bitmap, notifyMedia, callBack); + return; + } + + File dirF = new File(dirPath); + if (!dirF.exists() || !dirF.isDirectory()) { + if (!dirF.mkdirs()) { + act.runOnUiThread(new Runnable() { + @Override + public void run() { + callBack.onCreateDirFailed(); + } + }); + return; + } + } + + try { + final File writeFile = File.createTempFile(namePrefix, ".png", dirF); + + FileOutputStream fos = null; + fos = new FileOutputStream(writeFile); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); + fos.flush(); + fos.close(); + if (notifyMedia) { + EasyPhotos.notifyMedia(act, writeFile); + } + act.runOnUiThread(new Runnable() { + @Override + public void run() { + callBack.onSuccess(writeFile); + } + }); + + } catch (final IOException e) { + act.runOnUiThread(new Runnable() { + @Override + public void run() { + callBack.onIOFailed(e); + } + }); + + } + } + }).start(); + + } + + private static void saveBitmapToDirQ(final Activity act, final String dirPath, + final String namePrefix, final Bitmap bitmap, + final boolean notifyMedia, + final SaveBitmapCallBack callBack) { + long dataTake = System.currentTimeMillis(); + String jpegName = namePrefix + dataTake + ".png"; + + ContentValues values = new ContentValues(); + values.put(MediaStore.Images.Media.DISPLAY_NAME, jpegName); + values.put(MediaStore.Images.Media.MIME_TYPE, "image/png"); + int dirIndex = dirPath.lastIndexOf("/"); + if (dirIndex == dirPath.length()) { + String dirPath2 = dirPath.substring(0, dirIndex - 1); + dirIndex = dirPath2.lastIndexOf("/"); + } + String dirName = dirPath.substring(dirIndex + 1); + values.put(MediaStore.Images.Media.RELATIVE_PATH, "DCIM/" + dirName); + + Uri external; + ContentResolver resolver = act.getContentResolver(); + String status = Environment.getExternalStorageState(); + // åˆ¤æ–­æ˜¯å¦æœ‰SDå¡,优先使用SDå¡å­˜å‚¨,当没有SD塿—¶ä½¿ç”¨æ‰‹æœºå­˜å‚¨ + if (status.equals(Environment.MEDIA_MOUNTED)) { + external = MediaStore.Images.Media.getContentUri("external"); + } else { + external = MediaStore.Images.Media.INTERNAL_CONTENT_URI; + } + + final Uri insertUri = resolver.insert(external, values); + if (insertUri == null) { + act.runOnUiThread(new Runnable() { + @Override + public void run() { + callBack.onCreateDirFailed(); + } + }); + return; + } + OutputStream os; + try { + os = resolver.openOutputStream(insertUri); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, os); + if (os != null) { + os.flush(); + os.close(); + } + act.runOnUiThread(new Runnable() { + @Override + public void run() { + String uriPath = UriUtils.getPathByUri(act, insertUri); + if (null == uriPath) { + callBack.onCreateDirFailed(); + } else { + callBack.onSuccess(new File(uriPath)); + } + } + }); + } catch (final IOException e) { + e.printStackTrace(); + act.runOnUiThread(new Runnable() { + @Override + public void run() { + callBack.onIOFailed(e); + } + }); + } + } + + + /** + * 把Viewç”»æˆBitmap + * + * @param view è¦å¤„ç†çš„View + * @return Bitmap + */ + public static Bitmap createBitmapFromView(View view) { + Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), + Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + view.draw(canvas); + return bitmap; + } + + /** + * 计算获å–的照片的宽高是å¦éœ€è¦äº¤æ¢ï¼Œå¦‚果图片是旋转了90度或270度的,那么就需è¦äº¤æ¢ + * + * @param photo 需è¦è®¡ç®—的图片 + * @return 宽高是å¦éœ€è¦äº¤æ¢ + */ + public static Boolean needChangeWidthAndHeight(Photo photo) throws IOException { + + ExifInterface exifInterface = new ExifInterface(photo.path); + int exifOrientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, + ExifInterface.ORIENTATION_NORMAL); + + // 如果拿到的照片是旋转了90度或270度的,æ„味ç€é€šè¿‡MediaStore获å–的宽高需è¦äº¤æ¢ + return exifOrientation == ExifInterface.ORIENTATION_ROTATE_90 || exifOrientation == ExifInterface.ORIENTATION_ROTATE_270; + + } + + /** + * 通过BitmapFactory.Optionsé‡è®¾å›¾ç‰‡çš„宽高,在通过MediaStore获å–的图片宽高为0时使用 + * + * @param photo 需è¦è®¡ç®—的图片 + */ + public static void calculateLocalImageSizeThroughBitmapOptions(Photo photo) throws IOException { + + BitmapFactory.Options options = new BitmapFactory.Options(); + options.inJustDecodeBounds = true; + BitmapFactory.decodeFile(photo.path, options); + + photo.width = options.outWidth; + photo.height = options.outHeight; + } + + public static Bitmap adjustBitmapRotation(Bitmap bm, final int orientationDegree) { + + Matrix m = new Matrix(); + m.setRotate(orientationDegree, (float) bm.getWidth() / 2, (float) bm.getHeight() / 2); + float targetX, targetY; + if (orientationDegree == 90) { + targetX = bm.getHeight(); + targetY = 0; + } else { + targetX = bm.getHeight(); + targetY = bm.getWidth(); + } + + final float[] values = new float[9]; + m.getValues(values); + + float x1 = values[Matrix.MTRANS_X]; + float y1 = values[Matrix.MTRANS_Y]; + + m.postTranslate(targetX - x1, targetY - y1); + + Bitmap bm1 = Bitmap.createBitmap(bm.getHeight(), bm.getWidth(), Bitmap.Config.ARGB_8888); + + Paint paint = new Paint(); + Canvas canvas = new Canvas(bm1); + canvas.drawBitmap(bm, m, paint); + + + return bm1; + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/SaveBitmapCallBack.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/SaveBitmapCallBack.java new file mode 100644 index 0000000..9d01f40 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/bitmap/SaveBitmapCallBack.java @@ -0,0 +1,17 @@ +package com.huantansheng.easyphotos.utils.bitmap; + +import java.io.File; +import java.io.IOException; + +/** + * ä¿å­˜å›¾ç‰‡åˆ°æœ¬åœ°çš„回调 + * Created by huan on 2017/12/6. + */ + +public interface SaveBitmapCallBack { + void onSuccess(File file); + + void onIOFailed(IOException exception); + + void onCreateDirFailed(); +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/file/FileUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/file/FileUtils.java new file mode 100644 index 0000000..88c2303 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/file/FileUtils.java @@ -0,0 +1,633 @@ +package com.huantansheng.easyphotos.utils.file; + + +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.database.DatabaseUtils; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.provider.OpenableColumns; +import android.util.Log; +import android.webkit.MimeTypeMap; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.FileProvider; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.DecimalFormat; + + +public class FileUtils { + public static final String DOCUMENTS_DIR = "documents"; + // configured android:authorities in AndroidManifest (https://developer.android + // .com/reference/android/support/v4/content/FileProvider) + public static final String HIDDEN_PREFIX = "."; + /** + * TAG for log messages. + */ + static final String TAG = "FileUtils"; + private static final boolean DEBUG = false; // Set to true to enable logging + /** + * File and folder comparator. TODO Expose sorting option method + */ + + /** + * Folder (directories) filter. + */ + + + private FileUtils() { + } //private constructor to enforce Singleton pattern + + /** + * Gets the extension of a file name, like ".png" or ".jpg". + * + * @param uri + * @return Extension including the dot("."); "" if there is no extension; + * null if uri was null. + */ + public static String getExtension(String uri) { + if (uri == null) { + return null; + } + + int dot = uri.lastIndexOf("."); + if (dot >= 0) { + return uri.substring(dot); + } else { + // No extension. + return ""; + } + } + + /** + * @return Whether the URI is a local one. + */ + public static boolean isLocal(String url) { + return url != null && !url.startsWith("http://") && !url.startsWith("https://"); + } + + /** + * @return True if Uri is a MediaStore Uri. + * @author paulburke + */ + public static boolean isMediaUri(Uri uri) { + return "media".equalsIgnoreCase(uri.getAuthority()); + } + + /** + * Convert File into Uri. + * + * @param file + * @return uri + */ + public static Uri getUri(File file) { + return (file != null) ? Uri.fromFile(file) : null; + } + + /** + * Returns the path only (without file name). + * + * @param file + * @return + */ + public static File getPathWithoutFilename(File file) { + if (file != null) { + if (file.isDirectory()) { + // no file to be split off. Return everything + return file; + } else { + String filename = file.getName(); + String filepath = file.getAbsolutePath(); + + // Construct path without file name. + String pathwithoutname = filepath.substring(0, + filepath.length() - filename.length()); + if (pathwithoutname.endsWith("/")) { + pathwithoutname = pathwithoutname.substring(0, pathwithoutname.length() - 1); + } + return new File(pathwithoutname); + } + } + return null; + } + + /** + * @return The MIME type for the given file. + */ + public static String getMimeType(File file) { + + String extension = getExtension(file.getName()); + + if (extension.length() > 0) + return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.substring(1)); + + return "application/octet-stream"; + } + + /** + * @return The MIME type for the give Uri. + */ + public static String getMimeType(Context context, Uri uri) { + File file = new File(getPath(context, uri)); + return getMimeType(file); + } + + /** + * @return The MIME type for the give String Uri. + */ + public static String getMimeType(Context context, String url) { + String type = context.getContentResolver().getType(Uri.parse(url)); + if (type == null) { + type = "application/octet-stream"; + } + return type; + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is local. + */ + public static boolean isLocalStorageDocument(Context cxt, Uri uri) { + return (cxt.getApplicationContext().getPackageName() + ".fileprovider").equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is ExternalStorageProvider. + */ + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is DownloadsProvider. + */ + public static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is MediaProvider. + */ + public static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is Google Photos. + */ + public static boolean isGooglePhotosUri(Uri uri) { + return "com.google.android.apps.photos.content".equals(uri.getAuthority()); + } + + /** + * Get the value of the data column for this Uri. This is useful for + * MediaStore Uris, and other file-based ContentProviders. + * + * @param context The context. + * @param uri The Uri to query. + * @param selection (Optional) Filter used in the query. + * @param selectionArgs (Optional) Selection arguments used in the query. + * @return The value of the _data column, which is typically a file path. + */ + public static String getDataColumn(Context context, Uri uri, String selection, + String[] selectionArgs) { + + Cursor cursor = null; + final String column = MediaStore.Files.FileColumns.DATA; + final String[] projection = {column}; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs + , null); + if (cursor != null && cursor.moveToFirst()) { + if (DEBUG) DatabaseUtils.dumpCursor(cursor); + + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (cursor != null) cursor.close(); + } + return null; + } + + /** + * Get a file path from a Uri. This will get the the path for Storage Access + * Framework Documents, as well as the _data field for the MediaStore and + * other file-based ContentProviders.
    + *
    + * Callers should check whether the path is local before assuming it + * represents a local file. + * + * @param context The context. + * @param uri The Uri to query. + * @see #getFile(Context, Uri) + */ + public static String getPath(final Context context, final Uri uri) { + String absolutePath = getLocalPath(context, uri); + return absolutePath != null ? absolutePath : uri.toString(); + } + + private static String getLocalPath(final Context context, final Uri uri) { + + if (DEBUG) + Log.d(TAG + " File -", + "Authority: " + uri.getAuthority() + ", Fragment: " + uri.getFragment() + ", " + + "Port: " + uri.getPort() + ", Query: " + uri.getQuery() + ", Scheme" + + ": " + uri.getScheme() + ", Host: " + uri.getHost() + ", Segments: " + + uri.getPathSegments().toString()); + + + // DocumentProvider + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, uri)) { + // LocalStorageProvider + if (isLocalStorageDocument(context, uri)) { + // The path is the id + return DocumentsContract.getDocumentId(uri); + } + // ExternalStorageProvider + else if (isExternalStorageDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + if ("primary".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } else if ("home".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/documents/" + split[1]; + } + } + // DownloadsProvider + else if (isDownloadsDocument(uri)) { + + final String id = DocumentsContract.getDocumentId(uri); + + if (id != null && id.startsWith("raw:")) { + return id.substring(4); + } + + String[] contentUriPrefixesToTry = new String[]{"content://downloads" + + "/public_downloads", "content://downloads/my_downloads"}; + + for (String contentUriPrefix : contentUriPrefixesToTry) { + Uri contentUri = ContentUris.withAppendedId(Uri.parse(contentUriPrefix), + Long.valueOf(id)); + try { + String path = getDataColumn(context, contentUri, null, null); + if (path != null) { + return path; + } + } catch (Exception e) { + } + } + + // path could not be retrieved using ContentResolver, therefore copy file to + // accessible cache using streams + String fileName = getFileName(context, uri); + File cacheDir = getDocumentCacheDir(context); + File file = generateFileName(fileName, cacheDir); + String destinationPath = null; + if (file != null) { + destinationPath = file.getAbsolutePath(); + saveFileFromUri(context, uri, destinationPath); + } + + return destinationPath; + } + // MediaProvider + else if (isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.getContentUri("external"); + } else if ("video".equals(type)) { + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + } else if ("audio".equals(type)) { + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{split[1]}; + + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } + // MediaStore (and general) + else if ("content".equalsIgnoreCase(uri.getScheme())) { + + // Return the remote address + if (isGooglePhotosUri(uri)) { + return uri.getLastPathSegment(); + } + + return getDataColumn(context, uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + + return null; + } + + /** + * Convert Uri into File, if possible. + * + * @return file A local file that the Uri was pointing to, or null if the + * Uri is unsupported or pointed to a remote resource. + * @author paulburke + * @see #getPath(Context, Uri) + */ + public static File getFile(Context context, Uri uri) { + if (uri != null) { + String path = getPath(context, uri); + if (path != null && isLocal(path)) { + return new File(path); + } + } + return null; + } + + /** + * Get the file size in a human-readable string. + * + * @param size + * @return + * @author paulburke + */ + public static String getReadableFileSize(int size) { + final int BYTES_IN_KILOBYTES = 1024; + final DecimalFormat dec = new DecimalFormat("###.#"); + final String KILOBYTES = " KB"; + final String MEGABYTES = " MB"; + final String GIGABYTES = " GB"; + float fileSize = 0; + String suffix = KILOBYTES; + + if (size > BYTES_IN_KILOBYTES) { + fileSize = size / BYTES_IN_KILOBYTES; + if (fileSize > BYTES_IN_KILOBYTES) { + fileSize = fileSize / BYTES_IN_KILOBYTES; + if (fileSize > BYTES_IN_KILOBYTES) { + fileSize = fileSize / BYTES_IN_KILOBYTES; + suffix = GIGABYTES; + } else { + suffix = MEGABYTES; + } + } + } + return String.valueOf(dec.format(fileSize) + suffix); + } + + /** + * Get the Intent for selecting content to be used in an Intent Chooser. + * + * @return The intent for opening a file with Intent.createChooser() + */ + public static Intent createGetContentIntent() { + // Implicitly allow the user to select a particular kind of data + final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + // The MIME data type filter + intent.setType("*/*"); + // Only return URIs that can be opened with ContentResolver + intent.addCategory(Intent.CATEGORY_OPENABLE); + return intent; + } + + + /** + * Creates View intent for given file + * + * @param file + * @return The intent for viewing file + */ + public static Intent getViewIntent(Context context, File file) { + //Uri uri = Uri.fromFile(file); + Uri uri = FileProvider.getUriForFile(context, + (context.getApplicationContext().getPackageName() + ".fileprovider"), file); + Intent intent = new Intent(Intent.ACTION_VIEW); + String url = file.toString(); + if (url.contains(".doc") || url.contains(".docx")) { + // Word document + intent.setDataAndType(uri, "application/msword"); + } else if (url.contains(".pdf")) { + // PDF file + intent.setDataAndType(uri, "application/pdf"); + } else if (url.contains(".ppt") || url.contains(".pptx")) { + // Powerpoint file + intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); + } else if (url.contains(".xls") || url.contains(".xlsx")) { + // Excel file + intent.setDataAndType(uri, "application/vnd.ms-excel"); + } else if (url.contains(".zip") || url.contains(".rar")) { + // WAV audio file + intent.setDataAndType(uri, "application/x-wav"); + } else if (url.contains(".rtf")) { + // RTF file + intent.setDataAndType(uri, "application/rtf"); + } else if (url.contains(".wav") || url.contains(".mp3")) { + // WAV audio file + intent.setDataAndType(uri, "audio/x-wav"); + } else if (url.contains(".gif")) { + // GIF file + intent.setDataAndType(uri, "image/gif"); + } else if (url.contains(".jpg") || url.contains(".jpeg") || url.contains(".png")) { + // JPG file + intent.setDataAndType(uri, "image/jpeg"); + } else if (url.contains(".txt")) { + // Text file + intent.setDataAndType(uri, "text/plain"); + } else if (url.contains(".3gp") || url.contains(".mpg") || url.contains(".mpeg") || url.contains(".mpe") || url.contains(".mp4") || url.contains(".avi")) { + // Video files + intent.setDataAndType(uri, "video/*"); + } else { + intent.setDataAndType(uri, "*/*"); + } + + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + return intent; + } + + public static File getDownloadsDir() { + return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); + } + + public static File getDocumentCacheDir(@NonNull Context context) { + File dir = new File(context.getCacheDir(), DOCUMENTS_DIR); + if (!dir.exists()) { + dir.mkdirs(); + } + logDir(context.getCacheDir()); + logDir(dir); + + return dir; + } + + private static void logDir(File dir) { + if (!DEBUG) return; + Log.d(TAG, "Dir=" + dir); + File[] files = dir.listFiles(); + for (File file : files) { + Log.d(TAG, "File=" + file.getPath()); + } + } + + @Nullable + public static File generateFileName(@Nullable String name, File directory) { + if (name == null) { + return null; + } + + File file = new File(directory, name); + + if (file.exists()) { + String fileName = name; + String extension = ""; + int dotIndex = name.lastIndexOf('.'); + if (dotIndex > 0) { + fileName = name.substring(0, dotIndex); + extension = name.substring(dotIndex); + } + + int index = 0; + + while (file.exists()) { + index++; + name = fileName + '(' + index + ')' + extension; + file = new File(directory, name); + } + } + + try { + if (!file.createNewFile()) { + return null; + } + } catch (IOException e) { + Log.w(TAG, e); + return null; + } + + logDir(directory); + + return file; + } + + + private static void saveFileFromUri(Context context, Uri uri, String destinationPath) { + InputStream is = null; + BufferedOutputStream bos = null; + try { + is = context.getContentResolver().openInputStream(uri); + bos = new BufferedOutputStream(new FileOutputStream(destinationPath, false)); + byte[] buf = new byte[1024]; + is.read(buf); + do { + bos.write(buf); + } while (is.read(buf) != -1); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (is != null) is.close(); + if (bos != null) bos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public static byte[] readBytesFromFile(String filePath) { + + FileInputStream fileInputStream = null; + byte[] bytesArray = null; + + try { + + File file = new File(filePath); + bytesArray = new byte[(int) file.length()]; + + //read file into bytes[] + fileInputStream = new FileInputStream(file); + fileInputStream.read(bytesArray); + + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (fileInputStream != null) { + try { + fileInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } + + return bytesArray; + + } + + public static File createTempImageFile(Context context, String fileName) throws IOException { + // Create an image file name + File storageDir = new File(context.getCacheDir(), DOCUMENTS_DIR); + return File.createTempFile(fileName, ".jpg", storageDir); + } + + public static String getFileName(@NonNull Context context, Uri uri) { + String mimeType = context.getContentResolver().getType(uri); + String filename = null; + + if (mimeType == null && context != null) { + String path = getPath(context, uri); + if (path == null) { + filename = getName(uri.toString()); + } else { + File file = new File(path); + filename = file.getName(); + } + } else { + Cursor returnCursor = context.getContentResolver().query(uri, null, null, null, null); + if (returnCursor != null) { + int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); + returnCursor.moveToFirst(); + filename = returnCursor.getString(nameIndex); + returnCursor.close(); + } + } + + return filename; + } + + public static String getName(String filename) { + if (filename == null) { + return null; + } + int index = filename.lastIndexOf('/'); + return filename.substring(index + 1); + } +} + + diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/DurationUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/DurationUtils.java new file mode 100644 index 0000000..874a669 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/DurationUtils.java @@ -0,0 +1,54 @@ +package com.huantansheng.easyphotos.utils.media; + +import android.media.MediaMetadataRetriever; +import android.text.format.DateUtils; + +import java.io.IOException; + +/** + * DurationUtils + * Create By lishilin On 2019/3/25 + */ +public class DurationUtils { + + /** + * èŽ·å–æ—¶é•¿ + * + * @param path path + * @return duration + */ + public static long getDuration(String path) { + MediaMetadataRetriever mmr = null; + try { + mmr = new MediaMetadataRetriever(); + mmr.setDataSource(path); + return Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); + } catch (Exception e) { +// e.printStackTrace(); + } finally { + if (mmr != null) { + try { + mmr.release(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + return 0; + } + + /** + * æ ¼å¼åŒ–时长(ä¸è¶³ä¸€ç§’则显示为一秒) + * + * @param duration duration + * @return "MM:SS" or "H:MM:SS" + */ + public static String format(long duration) { + long seconds = duration / 1000; + if (seconds == 0) { + seconds++; + } + return DateUtils.formatElapsedTime(seconds); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/MediaScannerConnectionUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/MediaScannerConnectionUtils.java new file mode 100644 index 0000000..6dc0cfe --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/media/MediaScannerConnectionUtils.java @@ -0,0 +1,36 @@ +package com.huantansheng.easyphotos.utils.media; + +import android.content.Context; +import android.media.MediaScannerConnection; + +import java.io.File; +import java.util.List; + +/** + * 更新媒体库 + * Created by huan on 2017/8/1. + */ + +public class MediaScannerConnectionUtils { + + public static void refresh(Context cxt, String... filePaths) { + MediaScannerConnection.scanFile(cxt.getApplicationContext(), + filePaths, null, + null); + } + + + public static void refresh(Context cxt, File... files) { + for (File file : files) { + String filePath = file.getAbsolutePath(); + refresh(cxt, filePath); + } + } + + public static void refresh(Context cxt, List filePathList) { + for (String filePath : filePathList) { + refresh(cxt, filePath); + } + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/permission/PermissionUtil.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/permission/PermissionUtil.java new file mode 100644 index 0000000..144f3e3 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/permission/PermissionUtil.java @@ -0,0 +1,90 @@ +package com.huantansheng.easyphotos.utils.permission; + +import android.app.Activity; +import android.content.pm.PackageManager; + +import androidx.annotation.NonNull; +import androidx.core.app.ActivityCompat; +import androidx.core.content.PermissionChecker; + +import com.huantansheng.easyphotos.constant.Code; + +import java.util.ArrayList; +import java.util.List; + +/** + * è¿è¡Œæ—¶æƒé™å·¥å…·ç±» + * Created by huan on 2017/7/27. + */ + +public class PermissionUtil { + + + public interface PermissionCallBack { + void onSuccess(); + + void onShouldShow(); + + void onFailed(); + } + + public static boolean checkAndRequestPermissionsInActivity(Activity cxt, + String... checkPermissions) { + boolean isHas = true; + List permissions = new ArrayList<>(); + int size = checkPermissions.length; + for (int i = 0; i < size; i++) { + String checkPermission = checkPermissions[i]; + if (PermissionChecker.checkSelfPermission(cxt, checkPermission) != PermissionChecker.PERMISSION_GRANTED) { + isHas = false; + permissions.add(checkPermission); + } + } + if (!isHas) { + String[] p = permissions.toArray(new String[permissions.size()]); + requestPermissionsInActivity(cxt, Code.REQUEST_PERMISSION, p); + } + return isHas; + } + + private static void requestPermissionsInActivity(Activity cxt, int requestCode, + String... permissions) { + ActivityCompat.requestPermissions(cxt, permissions, requestCode); + } + + public static void onPermissionResult(Activity cxt, @NonNull String[] permissions, + @NonNull int[] grantResults, + PermissionCallBack listener) { + int length = grantResults.length; + List positions = new ArrayList<>(); + if (length > 0) { + for (int i = 0; i < length; i++) { + if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { + positions.add(i); + } + } + } + if (positions.size() == 0) { + listener.onSuccess(); + return; + } + progressNoPermission(cxt, listener, permissions, positions, 0); + + } + + private static void progressNoPermission(Activity cxt, PermissionCallBack listener, + String[] permissions, List positions, int i) { + int index = positions.get(i); + if (ActivityCompat.shouldShowRequestPermissionRationale(cxt, permissions[index])) { + listener.onShouldShow(); + return; + } + if (i < positions.size() - 1) { + i++; + progressNoPermission(cxt, listener, permissions, positions, i); + return; + } + listener.onFailed(); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/EasyResult.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/EasyResult.java new file mode 100644 index 0000000..a17de5d --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/EasyResult.java @@ -0,0 +1,45 @@ +package com.huantansheng.easyphotos.utils.result; + +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; + +/** + * EasyResult + * + * @author joker + * @date 2019/4/9. + */ +public class EasyResult { + private static final String TAG = "com.huantansheng.easyphotos"; + + private EasyResult() { + + } + + public static HolderFragment get(FragmentActivity activity) { + return new EasyResult().getHolderFragment(activity.getSupportFragmentManager()); + } + + public static HolderFragment get(Fragment fragment) { + return new EasyResult().getHolderFragment(fragment.getChildFragmentManager()); + } + + private HolderFragment getHolderFragment(FragmentManager fragmentManager) { + HolderFragment holderFragment = findHolderFragment(fragmentManager); + if (holderFragment == null) { + holderFragment = new HolderFragment(); + fragmentManager + .beginTransaction() + .add(holderFragment, TAG) + .commitAllowingStateLoss(); + fragmentManager.executePendingTransactions(); + } + return holderFragment; + } + + private HolderFragment findHolderFragment(FragmentManager fragmentManager) { + return (HolderFragment) fragmentManager.findFragmentByTag(TAG); + } + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/HolderFragment.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/HolderFragment.java new file mode 100644 index 0000000..ebad4df --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/result/HolderFragment.java @@ -0,0 +1,86 @@ +package com.huantansheng.easyphotos.utils.result; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.huantansheng.easyphotos.EasyPhotos; +import com.huantansheng.easyphotos.callback.PuzzleCallback; +import com.huantansheng.easyphotos.callback.SelectCallback; +import com.huantansheng.easyphotos.engine.ImageEngine; +import com.huantansheng.easyphotos.models.album.entity.Photo; +import com.huantansheng.easyphotos.ui.EasyPhotosActivity; +import com.huantansheng.easyphotos.ui.PuzzleActivity; + +import java.util.ArrayList; + +/** + * HolderFragment + * + * @author joker + * @date 2019/4/9. + */ +public class HolderFragment extends Fragment { + + private static final int HOLDER_SELECT_REQUEST_CODE = 0x44; + private static final int HOLDER_PUZZLE_REQUEST_CODE = 0x55; + private SelectCallback mSelectCallback; + private PuzzleCallback mPuzzleCallback; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setRetainInstance(true); + } + + public void startEasyPhoto(SelectCallback callback) { + mSelectCallback = callback; + EasyPhotosActivity.start(this, HOLDER_SELECT_REQUEST_CODE); + } + + public void startPuzzleWithPhotos(ArrayList photos, String puzzleSaveDirPath, String puzzleSaveNamePrefix, boolean replaceCustom, @NonNull ImageEngine imageEngine, PuzzleCallback callback) { + mPuzzleCallback = callback; + PuzzleActivity.startWithPhotos(this, photos, puzzleSaveDirPath, puzzleSaveNamePrefix, HOLDER_PUZZLE_REQUEST_CODE, replaceCustom, imageEngine); + } + + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (Activity.RESULT_OK == resultCode) { + switch (requestCode) { + case HOLDER_SELECT_REQUEST_CODE: + if (mSelectCallback != null) { + ArrayList resultPhotos = data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS); + boolean selectedOriginal = data.getBooleanExtra(EasyPhotos.RESULT_SELECTED_ORIGINAL, false); + mSelectCallback.onResult(resultPhotos, selectedOriginal); + } + break; + case HOLDER_PUZZLE_REQUEST_CODE: + if (mPuzzleCallback != null) { + Photo puzzlePhoto = data.getParcelableExtra(EasyPhotos.RESULT_PHOTOS); + mPuzzleCallback.onResult(puzzlePhoto); + } + break; + } + return; + } + if (Activity.RESULT_CANCELED == resultCode) { + switch (requestCode) { + case HOLDER_SELECT_REQUEST_CODE: + if (mSelectCallback != null) { + mSelectCallback.onCancel(); + } + break; + case HOLDER_PUZZLE_REQUEST_CODE: + if (mPuzzleCallback != null) { + mPuzzleCallback.onCancel(); + } + break; + } + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/settings/SettingsUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/settings/SettingsUtils.java new file mode 100644 index 0000000..5508491 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/settings/SettingsUtils.java @@ -0,0 +1,27 @@ +package com.huantansheng.easyphotos.utils.settings; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.provider.Settings; + +import com.huantansheng.easyphotos.constant.Code; + +/** + * 系统设置界é¢å¯åЍ噍 + * Created by huan on 2017/8/7. + */ + +public class SettingsUtils { + + /** + * å¯åŠ¨åº”ç”¨è¯¦æƒ…ç•Œé¢ + * @param cxt 上下文 + * @param packageName 应用包å + */ + public static void startMyApplicationDetailsForResult(Activity cxt, String packageName) { + Uri packageUri = Uri.parse("package:" + packageName); + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageUri); + cxt.startActivityForResult(intent, Code.REQUEST_SETTING_APP_DETAILS); + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/MeiZuStatusUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/MeiZuStatusUtils.java new file mode 100644 index 0000000..d6c9271 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/MeiZuStatusUtils.java @@ -0,0 +1,229 @@ +package com.huantansheng.easyphotos.utils.system; + +import android.app.Activity; +import android.os.Build; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * Created by wangchende on 15-9-7. + */ +public class MeiZuStatusUtils { + private static Method mSetStatusBarColorIcon; + private static Method mSetStatusBarDarkIcon; + private static Field mStatusBarColorFiled; + private static int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = 0; + + static { + try { + mSetStatusBarColorIcon = Activity.class.getMethod("setStatusBarDarkIcon", int.class); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + try { + mSetStatusBarDarkIcon = Activity.class.getMethod("setStatusBarDarkIcon", boolean.class); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + try { + mStatusBarColorFiled = WindowManager.LayoutParams.class.getField("statusBarColor"); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } + try { + Field field = View.class.getField("SYSTEM_UI_FLAG_LIGHT_STATUS_BAR"); + SYSTEM_UI_FLAG_LIGHT_STATUS_BAR = field.getInt(null); + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + /** + * 判断颜色是å¦å黑色 + * + * @param color 颜色 + * @param level 级别 + * @return + */ + public static boolean isBlackColor(int color, int level) { + int grey = toGrey(color); + return grey < level; + } + + /** + * é¢œè‰²è½¬æ¢æˆç°åº¦å€¼ + * + * @param rgb 颜色 + * @return ç°åº¦å€¼ + */ + public static int toGrey(int rgb) { + int blue = rgb & 0x000000FF; + int green = (rgb & 0x0000FF00) >> 8; + int red = (rgb & 0x00FF0000) >> 16; + return (red * 38 + green * 75 + blue * 15) >> 7; + } + + /** + * è®¾ç½®çŠ¶æ€æ å­—体图标颜色 + * + * @param activity 当å‰activity + * @param color 颜色 + */ + public static void setStatusBarDarkIcon(Activity activity, int color) { + if (mSetStatusBarColorIcon != null) { + try { + mSetStatusBarColorIcon.invoke(activity, color); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } else { + boolean whiteColor = isBlackColor(color, 50); + if (mStatusBarColorFiled != null) { + setStatusBarDarkIcon(activity, whiteColor, whiteColor); + setStatusBarDarkIcon(activity.getWindow(), color); + } else { + setStatusBarDarkIcon(activity, whiteColor); + } + } + } + + /** + * è®¾ç½®çŠ¶æ€æ å­—体图标颜色(åªé™å…¨å±éžactivity情况) + * + * @param window 当å‰çª—å£ + * @param color 颜色 + */ + public static void setStatusBarDarkIcon(Window window, int color) { + try { + setStatusBarColor(window, color); + if (Build.VERSION.SDK_INT > 22) { + setStatusBarDarkIcon(window.getDecorView(), true); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * è®¾ç½®çŠ¶æ€æ å­—体图标颜色 + * + * @param activity 当å‰activity + * @param dark æ˜¯å¦æ·±è‰² true为深色 false 为白色 + */ + public static void setStatusBarDarkIcon(Activity activity, boolean dark) { + setStatusBarDarkIcon(activity, dark, true); + } + + private static boolean changeMeizuFlag(WindowManager.LayoutParams winParams, String flagName, boolean on) { + try { + Field f = winParams.getClass().getDeclaredField(flagName); + f.setAccessible(true); + int bits = f.getInt(winParams); + Field f2 = winParams.getClass().getDeclaredField("meizuFlags"); + f2.setAccessible(true); + int meizuFlags = f2.getInt(winParams); + int oldFlags = meizuFlags; + if (on) { + meizuFlags |= bits; + } else { + meizuFlags &= ~bits; + } + if (oldFlags != meizuFlags) { + f2.setInt(winParams, meizuFlags); + return true; + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (Throwable e) { + e.printStackTrace(); + } + return false; + } + + /** + * è®¾ç½®çŠ¶æ€æ é¢œè‰² + * + * @param view + * @param dark + */ + private static void setStatusBarDarkIcon(View view, boolean dark) { + int oldVis = view.getSystemUiVisibility(); + int newVis = oldVis; + if (dark) { + newVis |= SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } else { + newVis &= ~SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + } + if (newVis != oldVis) { + view.setSystemUiVisibility(newVis); + } + } + + /** + * è®¾ç½®çŠ¶æ€æ é¢œè‰² + * + * @param window + * @param color + */ + private static void setStatusBarColor(Window window, int color) { + WindowManager.LayoutParams winParams = window.getAttributes(); + if (mStatusBarColorFiled != null) { + try { + int oldColor = mStatusBarColorFiled.getInt(winParams); + if (oldColor != color) { + mStatusBarColorFiled.set(winParams, color); + window.setAttributes(winParams); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + /** + * è®¾ç½®çŠ¶æ€æ å­—体图标颜色(åªé™å…¨å±éžactivity情况) + * + * @param window 当å‰çª—å£ + * @param dark æ˜¯å¦æ·±è‰² true为深色 false 为白色 + */ + public static void setStatusBarDarkIcon(Window window, boolean dark) { + if (Build.VERSION.SDK_INT < 23) { + changeMeizuFlag(window.getAttributes(), "MEIZU_FLAG_DARK_STATUS_BAR_ICON", dark); + } else { + View decorView = window.getDecorView(); + if (decorView != null) { + setStatusBarDarkIcon(decorView, dark); + setStatusBarColor(window, 0); + } + } + } + + private static void setStatusBarDarkIcon(Activity activity, boolean dark, boolean flag) { + if (mSetStatusBarDarkIcon != null) { + try { + mSetStatusBarDarkIcon.invoke(activity, dark); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } else { + if (flag) { + setStatusBarDarkIcon(activity.getWindow(), dark); + } + } + } +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/SystemUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/SystemUtils.java new file mode 100644 index 0000000..79887a4 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/system/SystemUtils.java @@ -0,0 +1,272 @@ +package com.huantansheng.easyphotos.utils.system; + +import android.app.Activity; +import android.content.Context; +import android.os.Build; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.view.Display; +import android.view.KeyCharacterMap; +import android.view.KeyEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.Window; +import android.view.WindowManager; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * 系统工具类 + * Created by huan on 2017/11/13. + */ + +public class SystemUtils { + private static SystemUtils instance = null; + private Boolean hasNavigation = null;//æ˜¯å¦æœ‰å¯¼èˆªæ  + + /** + * ç§æœ‰æž„造方法 + */ + private SystemUtils() { + } + + /** + * 获å–å•例 + * + * @return å•例 + */ + public static SystemUtils getInstance() { + if (null == instance) { + synchronized (SystemUtils.class) { + if (null == instance) { + instance = new SystemUtils(); + } + } + } + return instance; + } + + /** + * æ˜¯å¦æœ‰å¯¼èˆªæ  + * + * @return 有或没有 + */ + public boolean hasNavigationBar(Activity activity) { + if (null == hasNavigation) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + int windowHeight = activity.getResources().getDisplayMetrics().heightPixels; + DisplayMetrics dm = new DisplayMetrics(); + activity.getWindowManager().getDefaultDisplay().getRealMetrics(dm); + int screenHeight = dm.heightPixels; + hasNavigation = screenHeight - windowHeight > 0; + } else { + hasNavigation = true; + } + } + + return hasNavigation; + } + + /** + * 免屿˜¾ç¤ºçš„åˆå§‹åŒ–,在setContentView()方法å‰è°ƒç”¨ + * + * @param decorView getWindow().getDecorView(),ä¸åŒview也å¯ä»¥ + */ + public void systemUiInit(Activity activity, View decorView) { + if (!hasNavigationBar(activity)) { + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); + activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); + } + } + + private void hideStatusBar(Activity activity) { + WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); + attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; + activity.getWindow().setAttributes(attrs); + } + + private void showStatusBar(Activity activity) { + WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); + attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; + activity.getWindow().setAttributes(attrs); + } + + + /** + * éšè—导航æ å’ŒçŠ¶æ€æ  + * + * @param activity 上下文 + * @param decorView getWindow().getDecorView(),ä¸åŒview也å¯ä»¥ + */ + public void systemUiHide(Activity activity, View decorView) { + + if (!hasNavigationBar(activity)) { + hideStatusBar(activity); + return; + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); + } + + } + + /** + * 显示导航æ å’ŒçŠ¶æ€æ  + * + * @param activity 上下文 + * @param decorView getWindow().getDecorView(),ä¸åŒview也å¯ä»¥ + */ + public void systemUiShow(Activity activity, View decorView) { + if (!hasNavigationBar(activity)) { + showStatusBar(activity); + return; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); + } + } + + /** + * 获å–çŠ¶æ€æ é«˜åº¦ + * + * @param cxt 上下文 + * @return çŠ¶æ€æ é«˜åº¦ï¼Œå•ä½PX + */ + public int getStatusBarHeight(Context cxt) { + int statusBarHeight = 0; + int resourceId = cxt.getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + statusBarHeight = cxt.getResources().getDimensionPixelSize(resourceId); + } else { + statusBarHeight = (int) (23 * (cxt.getResources().getDisplayMetrics().density) + 0.5f); + } + return statusBarHeight; + } + + public void setStatusDark(Activity activity, boolean darkmode) { + if (isFlymeV4OrAbove()) { + MeiZuStatusUtils.setStatusBarDarkIcon(activity, darkmode); + return; + } + if (isMIUIV6OrAbove()) { + setStatusTextBlackMi(activity, darkmode); + return; + } + setStatusTextBlackAndroid(activity, darkmode); + } + + private void setStatusTextBlackMi(Activity activity, boolean darkmode) { + Class clazz = activity.getWindow().getClass(); + try { + int darkModeFlag = 0; + Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); + Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); + darkModeFlag = field.getInt(layoutParams); + Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); + extraFlagField.invoke(activity.getWindow(), darkmode ? darkModeFlag : 0, darkModeFlag); + } catch (Exception e) { + e.printStackTrace(); + } + setStatusTextBlackAndroid(activity, darkmode); + } + + + private void setStatusTextBlackAndroid(Activity activity, boolean darkmode) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + Window window = activity.getWindow(); + if (darkmode) { + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + int flag = window.getDecorView().getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; + window.getDecorView().setSystemUiVisibility(flag); + } + } + } + + + private boolean isFlymeV4OrAbove() { + String displayId = Build.DISPLAY; + if (!TextUtils.isEmpty(displayId) && displayId.contains("Flyme")) { + String[] displayIdArray = displayId.split(" "); + for (String temp : displayIdArray) { + //版本å·4以上,形如4.x. + if (temp.matches("^[4-9]\\.(\\d+\\.)+\\S*")) { + return true; + } + } + } + return false; + } + + //MIUI V6对应的versionCode是4 + //MIUI V7对应的versionCode是5 + private boolean isMIUIV6OrAbove() { + String miuiVersionCodeStr = getSystemProperty("ro.miui.ui.version.code"); + if (!TextUtils.isEmpty(miuiVersionCodeStr)) { + try { + int miuiVersionCode = Integer.parseInt(miuiVersionCodeStr); + if (miuiVersionCode >= 4) { + return true; + } + } catch (Exception e) { + } + } + return false; + } + + //Android Api 23以上 + private boolean isAndroidMOrAbove() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + return true; + } + return false; + } + + private String getSystemProperty(String propName) { + String line; + BufferedReader input = null; + try { + Process p = Runtime.getRuntime().exec("getprop " + propName); + input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024); + line = input.readLine(); + input.close(); + } catch (IOException ex) { + return null; + } finally { + if (input != null) { + try { + input.close(); + } catch (IOException e) { + } + } + } + return line; + } + + +} diff --git a/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/uri/UriUtils.java b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/uri/UriUtils.java new file mode 100644 index 0000000..7398bb7 --- /dev/null +++ b/easyPhotos/src/main/java/com/huantansheng/easyphotos/utils/uri/UriUtils.java @@ -0,0 +1,178 @@ +package com.huantansheng.easyphotos.utils.uri; + +import android.annotation.SuppressLint; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.util.Log; + +import androidx.core.content.FileProvider; + +import com.huantansheng.easyphotos.setting.Setting; + +import java.io.File; +import java.util.Locale; + +public class UriUtils { + public static Uri getUri(Context cxt, File file) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (null==Setting.fileProviderAuthority){ + throw new NullPointerException("Setting.fileProviderAuthority must not be null."); + } + return FileProvider.getUriForFile(cxt, Setting.fileProviderAuthority, file); + } else { + return Uri.fromFile(file); + } + } + + private static final String TAG = "UriUtils"; + + @SuppressLint("NewApi") + public static String getPathByUri(Context context, Uri uri) { + final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + // DocumentProvider + if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { + if (isExternalStorageDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + if ("primary".equalsIgnoreCase(type)) { + if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } else { + return context.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/" + split[1]; + } + } + } + // DownloadsProvider + else if (isDownloadsDocument(uri)) { + final String id = DocumentsContract.getDocumentId(uri); + final Uri contentUri = ContentUris.withAppendedId( + Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); + return getDataColumn(context, contentUri, null, null); + } + // MediaProvider + else if (isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.getContentUri("external"); + } else if ("video".equals(type)) { + contentUri = MediaStore.Video.Media.getContentUri("external"); + } else if ("audio".equals(type)) { + contentUri = MediaStore.Audio.Media.getContentUri("external"); + } + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{split[1]}; + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } + // MediaStore (and general) + else if ("content".equalsIgnoreCase(uri.getScheme())) { + // Return the remote address + if (isGooglePhotosUri(uri)) { + return uri.getLastPathSegment(); + } + return getDataColumn(context, uri, null, null); + } + // File + else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + return null; + } + + private static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + Cursor cursor = null; + final String column = "_data"; + final String[] projection = {column}; + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, + null); + if (cursor != null && cursor.moveToFirst()) { + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } catch (IllegalArgumentException ex) { + Log.i(TAG, String.format(Locale.getDefault(), "getDataColumn: _data - [%s]", ex.getMessage())); + } finally { + if (cursor != null) { + cursor.close(); + } + } + return null; + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is ExternalStorageProvider. + */ + private static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is DownloadsProvider. + */ + private static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is MediaProvider. + */ + private static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + /** + * åˆ¤æ–­æ˜¯å¦æ˜¯Google相册的图片,类似于content://com.google.android.apps.photos.content/... + **/ + public static boolean isGooglePhotosUri(Uri uri) { + return "com.google.android.apps.photos.content".equals(uri.getAuthority()); + } + + /** + * åˆ¤æ–­æ˜¯å¦æ˜¯Google相册的图片,类似于content://com.google.android.apps.photos.contentprovider/0/1/mediakey:/local%3A821abd2f-9f8c-4931-bbe9-a975d1f5fabc/ORIGINAL/NONE/1075342619 + **/ + public static boolean isGooglePlayPhotosUri(Uri uri) { + return "com.google.android.apps.photos.contentprovider".equals(uri.getAuthority()); + } + + /** + * 图片路径转uri + */ + public static Uri getUriByPath(Context context, String path) { + ContentResolver contentResolver = context.getContentResolver(); + Uri contentUri = MediaStore.Files.getContentUri("external"); + Cursor cursor = contentResolver.query(contentUri, new String[]{MediaStore.Files.FileColumns._ID}, + MediaStore.Files.FileColumns.DATA + "=? ", new String[]{path}, + null); + if (cursor != null && cursor.moveToFirst()) { + int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID)); + cursor.close(); + return Uri.withAppendedPath(contentUri, "" + id); + } else { + if (new File(path).exists()) { + ContentValues values = new ContentValues(); + values.put(MediaStore.Images.Media.DATA, path); + return contentResolver.insert(contentUri, values); + } else { + return null; + } + } + } +} diff --git a/easyPhotos/src/main/res/drawable/bg_dialog_album_items_background_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_dialog_album_items_background_easy_photos.xml new file mode 100644 index 0000000..83360c5 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_dialog_album_items_background_easy_photos.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_dialog_loading_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_dialog_loading_easy_photos.xml new file mode 100644 index 0000000..f898eb6 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_dialog_loading_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_menu_done_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_menu_done_easy_photos.xml new file mode 100644 index 0000000..4957cdc --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_menu_done_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_second_level_menu_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_second_level_menu_easy_photos.xml new file mode 100644 index 0000000..29b5211 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_second_level_menu_easy_photos.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_seek_bar_alpha_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_seek_bar_alpha_easy_photos.xml new file mode 100644 index 0000000..3ca35f3 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_seek_bar_alpha_easy_photos.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_select_false_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_select_false_easy_photos.xml new file mode 100644 index 0000000..6793f8c --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_select_false_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_select_false_unable_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_select_false_unable_easy_photos.xml new file mode 100644 index 0000000..a7f3d10 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_select_false_unable_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_select_true_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_select_true_easy_photos.xml new file mode 100644 index 0000000..3c115bc --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_select_true_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_selected_frame_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_selected_frame_easy_photos.xml new file mode 100644 index 0000000..0e1a5a1 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_selected_frame_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_selected_frame_puzzle_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_selected_frame_puzzle_easy_photos.xml new file mode 100644 index 0000000..0e1a5a1 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_selected_frame_puzzle_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/bg_text_sticker_editor_easy_photos.xml b/easyPhotos/src/main/res/drawable/bg_text_sticker_editor_easy_photos.xml new file mode 100644 index 0000000..6e0c8d7 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/bg_text_sticker_editor_easy_photos.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_album_item_choose_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_album_item_choose_easy_photos.xml new file mode 100644 index 0000000..2fe707f --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_album_item_choose_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_album_items_name_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_album_items_name_easy_photos.xml new file mode 100644 index 0000000..6169789 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_album_items_name_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_arrow_back_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_arrow_back_easy_photos.xml new file mode 100644 index 0000000..416d754 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_arrow_back_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_arrow_down_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_arrow_down_easy_photos.xml new file mode 100644 index 0000000..217e544 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_arrow_down_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_arrow_up_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_arrow_up_easy_photos.xml new file mode 100644 index 0000000..dd0f1a3 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_arrow_up_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_black_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_black_easy_photos.xml new file mode 100644 index 0000000..496e40a --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_black_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_blue_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_blue_easy_photos.xml new file mode 100644 index 0000000..6a03151 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_blue_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_camera_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_camera_easy_photos.xml new file mode 100644 index 0000000..dcf2c47 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_camera_easy_photos.xml @@ -0,0 +1,12 @@ + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_clear_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_clear_easy_photos.xml new file mode 100644 index 0000000..5ffd816 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_clear_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_cyan_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_cyan_easy_photos.xml new file mode 100644 index 0000000..2c9f2d8 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_cyan_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_delete_easyy_photos.xml b/easyPhotos/src/main/res/drawable/ic_delete_easyy_photos.xml new file mode 100644 index 0000000..adfa9cb --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_delete_easyy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_edit_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_edit_easy_photos.xml new file mode 100644 index 0000000..be1eed3 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_edit_easy_photos.xml @@ -0,0 +1,12 @@ + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_gray_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_gray_easy_photos.xml new file mode 100644 index 0000000..f9c38a2 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_gray_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_green_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_green_easy_photos.xml new file mode 100644 index 0000000..a1394e2 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_green_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_notifications_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_notifications_easy_photos.xml new file mode 100644 index 0000000..d05014a --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_notifications_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_orange_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_orange_easy_photos.xml new file mode 100644 index 0000000..a91b3f0 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_orange_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_play_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_play_easy_photos.xml new file mode 100644 index 0000000..ffc0a53 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_play_easy_photos.xml @@ -0,0 +1,12 @@ + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_purple_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_purple_easy_photos.xml new file mode 100644 index 0000000..29c24ad --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_purple_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_corner_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_corner_easy_photos.xml new file mode 100644 index 0000000..db47dcc --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_corner_easy_photos.xml @@ -0,0 +1,14 @@ + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_flip_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_flip_easy_photos.xml new file mode 100644 index 0000000..b50a433 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_flip_easy_photos.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_mirror_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_mirror_easy_photos.xml new file mode 100644 index 0000000..94faa3b --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_mirror_easy_photos.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_padding_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_padding_easy_photos.xml new file mode 100644 index 0000000..0e552ba --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_padding_easy_photos.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_replace_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_replace_easy_photos.xml new file mode 100644 index 0000000..ac21d46 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_replace_easy_photos.xml @@ -0,0 +1,22 @@ + + + + + + diff --git a/easyPhotos/src/main/res/drawable/ic_puzzle_rotate_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_puzzle_rotate_easy_photos.xml new file mode 100644 index 0000000..3c42147 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_puzzle_rotate_easy_photos.xml @@ -0,0 +1,12 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_red_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_red_easy_photos.xml new file mode 100644 index 0000000..98e95cd --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_red_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_selector_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_selector_easy_photos.xml new file mode 100644 index 0000000..7875efd --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_selector_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_selector_true_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_selector_true_easy_photos.xml new file mode 100644 index 0000000..cfece1e --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_selector_true_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_settings_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_settings_easy_photos.xml new file mode 100644 index 0000000..68ebe94 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_settings_easy_photos.xml @@ -0,0 +1,9 @@ + + + diff --git a/easyPhotos/src/main/res/drawable/ic_white_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_white_easy_photos.xml new file mode 100644 index 0000000..56412d6 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_white_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/ic_yelow_easy_photos.xml b/easyPhotos/src/main/res/drawable/ic_yelow_easy_photos.xml new file mode 100644 index 0000000..1a5f8e8 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/ic_yelow_easy_photos.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/progress_bar_easy_photos.xml b/easyPhotos/src/main/res/drawable/progress_bar_easy_photos.xml new file mode 100644 index 0000000..abb1c54 --- /dev/null +++ b/easyPhotos/src/main/res/drawable/progress_bar_easy_photos.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/drawable/thumb_seek_bar_alpha_easy_photos.xml b/easyPhotos/src/main/res/drawable/thumb_seek_bar_alpha_easy_photos.xml new file mode 100644 index 0000000..c4624ba --- /dev/null +++ b/easyPhotos/src/main/res/drawable/thumb_seek_bar_alpha_easy_photos.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/activity_easy_photos.xml b/easyPhotos/src/main/res/layout/activity_easy_photos.xml new file mode 100644 index 0000000..67e902b --- /dev/null +++ b/easyPhotos/src/main/res/layout/activity_easy_photos.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/activity_preview_easy_photos.xml b/easyPhotos/src/main/res/layout/activity_preview_easy_photos.xml new file mode 100644 index 0000000..58359df --- /dev/null +++ b/easyPhotos/src/main/res/layout/activity_preview_easy_photos.xml @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/easyPhotos/src/main/res/layout/activity_puzzle_easy_photos.xml b/easyPhotos/src/main/res/layout/activity_puzzle_easy_photos.xml new file mode 100644 index 0000000..d3eaf19 --- /dev/null +++ b/easyPhotos/src/main/res/layout/activity_puzzle_easy_photos.xml @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/easyPhotos/src/main/res/layout/activity_puzzle_selector_easy_photos.xml b/easyPhotos/src/main/res/layout/activity_puzzle_selector_easy_photos.xml new file mode 100644 index 0000000..32942e1 --- /dev/null +++ b/easyPhotos/src/main/res/layout/activity_puzzle_selector_easy_photos.xml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/easyPhotos/src/main/res/layout/dialog_loading_easy_photos.xml b/easyPhotos/src/main/res/layout/dialog_loading_easy_photos.xml new file mode 100644 index 0000000..b095026 --- /dev/null +++ b/easyPhotos/src/main/res/layout/dialog_loading_easy_photos.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/fragment_preview_easy_photos.xml b/easyPhotos/src/main/res/layout/fragment_preview_easy_photos.xml new file mode 100644 index 0000000..3288f22 --- /dev/null +++ b/easyPhotos/src/main/res/layout/fragment_preview_easy_photos.xml @@ -0,0 +1,17 @@ + + + + diff --git a/easyPhotos/src/main/res/layout/fragment_text_sticker_easy_photos.xml b/easyPhotos/src/main/res/layout/fragment_text_sticker_easy_photos.xml new file mode 100644 index 0000000..809e957 --- /dev/null +++ b/easyPhotos/src/main/res/layout/fragment_text_sticker_easy_photos.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_ad_easy_photos.xml b/easyPhotos/src/main/res/layout/item_ad_easy_photos.xml new file mode 100644 index 0000000..2cedb12 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_ad_easy_photos.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_camera_easy_photos.xml b/easyPhotos/src/main/res/layout/item_camera_easy_photos.xml new file mode 100644 index 0000000..5678a13 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_camera_easy_photos.xml @@ -0,0 +1,27 @@ + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_dialog_album_items_easy_photos.xml b/easyPhotos/src/main/res/layout/item_dialog_album_items_easy_photos.xml new file mode 100644 index 0000000..ef80903 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_dialog_album_items_easy_photos.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_preview_photo_easy_photos.xml b/easyPhotos/src/main/res/layout/item_preview_photo_easy_photos.xml new file mode 100644 index 0000000..619c65f --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_preview_photo_easy_photos.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_preview_selected_photos_easy_photos.xml b/easyPhotos/src/main/res/layout/item_preview_selected_photos_easy_photos.xml new file mode 100644 index 0000000..676541d --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_preview_selected_photos_easy_photos.xml @@ -0,0 +1,43 @@ + + + + + + + + + + diff --git a/easyPhotos/src/main/res/layout/item_puzzle_easy_photos.xml b/easyPhotos/src/main/res/layout/item_puzzle_easy_photos.xml new file mode 100644 index 0000000..efdfa50 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_puzzle_easy_photos.xml @@ -0,0 +1,19 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_puzzle_selector_easy_photos.xml b/easyPhotos/src/main/res/layout/item_puzzle_selector_easy_photos.xml new file mode 100644 index 0000000..3123350 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_puzzle_selector_easy_photos.xml @@ -0,0 +1,44 @@ + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_puzzle_selector_preview_easy_photos.xml b/easyPhotos/src/main/res/layout/item_puzzle_selector_preview_easy_photos.xml new file mode 100644 index 0000000..ad46c94 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_puzzle_selector_preview_easy_photos.xml @@ -0,0 +1,52 @@ + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_rv_photos_easy_photos.xml b/easyPhotos/src/main/res/layout/item_rv_photos_easy_photos.xml new file mode 100644 index 0000000..c208ab3 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_rv_photos_easy_photos.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/layout/item_text_sticker_easy_photos.xml b/easyPhotos/src/main/res/layout/item_text_sticker_easy_photos.xml new file mode 100644 index 0000000..5333954 --- /dev/null +++ b/easyPhotos/src/main/res/layout/item_text_sticker_easy_photos.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/mipmap-xhdpi/ic_controller_easy_photos.png b/easyPhotos/src/main/res/mipmap-xhdpi/ic_controller_easy_photos.png new file mode 100644 index 0000000000000000000000000000000000000000..3a78517a4fe0b52da8bcfb111303a9d80cc618d2 GIT binary patch literal 896 zcmeAS@N?(olHy`uVBq!ia0vp^ZXnFT3?e@WZ39v)>5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1aeved_r8^3w-_)2cBEmeqFWt^PG7fTG~F(o%ie3tv}D6|NZ>=g`3BR=GIq1 zp+C=^|9Vea5$~+g>=jyopcxx^nfu&tKkV z=lyy9{Nsd)pC(Syb*r=jx`($U$S;^-!UYF~h6f)63>E|&*#C@SJ_7?&qo<2wNW|f_ zGj307QV?m|x?ziu>E$gaH$A%`bMOD(w&q!f*byu2Now z$JngIz4#VC5j6{%s%_Czq_uJ3Dd7{2Q$F?Se(|$xn(r*NSa_Sz)^x*O>$B7MY&ksT ziv2&8^2{EsoRwY2vZtI^T-#v0?b^(1M~fpF&+dBo@VKqy>tzow*zg<+)SB0~)8G2c z;)^?$OSon`$H`p{R4Q5JA6q-|`RsGXM`kdGB}J{R_Sn1r@IhmD$;) zy*4Kg^GuH1!u=|lp}6`;?q@4D^Z8+CS0DfLX!;Y0$x(IR?^+x%u`jHtmi_F$&qJkW zPThumuV$%Vjytm9%j9mxu)FF@TM~~dOkXB-*g~jn>asf;3B0w=M?SbU`qbVjcHzm7 zE)t&mutVaW%hPFghclPY*tgXE+04mbqy3fg4K9_XAMkwg*6&u$L9QQ5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1ai^>d_r8^3w-_)0lK@pfvP4=n)K?`tD{GczI^#|+qP{VK79D`R5=ZE8!8dUChKptD!R?-Ft}J8Vd2FM3X3AQzc(2$4VNXLj zp1ZzWD|Kb5PEuBZ;62MdNfj$DtXMJ0)#rwqxvT3`m*1{iPMGn#YVHhw$@ZbRMucJN zr^7)~vmY<_DCE1Cws7y+opF0bUbuemGHBK9o4?59TY^qs_b0*Rf;m&fpB=yJKX229 z)w|^dlRKJz#dkIf`GwTEv^T!U5HjUjw9WO3%f@Nc`{{Y(*^ zAMP1*3Gk|gBnw@<;AZM1#JeTrvFX(f{v}@*?BWQFJ-tG&GbB806}QRN(s{268{e#K me)X{Rjbz80K&?NWZ^Y$vFQ#T19BBt8AqG!ZKbLh*2~7Z-dw;zE literal 0 HcmV?d00001 diff --git a/easyPhotos/src/main/res/mipmap-xhdpi/ic_editor_easy_photos.png b/easyPhotos/src/main/res/mipmap-xhdpi/ic_editor_easy_photos.png new file mode 100644 index 0000000000000000000000000000000000000000..f8fa4d416b0678f5ea0b91e9b0a493e43afaf4fd GIT binary patch literal 3538 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 X7%qlpzj@&WOw5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1aeved_r8^3w-_)2cBEmeqFWt^PG7fTG~F(o%ie3tv}D6|NZ>=g`3BR=GIq1 zp+C=^|9Vea5$~+g>=jyopcxx^nfu&tKkV z=lyy9{Nsd)pC(Syb*r=jx`($U$S;^-!UYF~h6f)63>E|&*#C@SJ_7?&qo<2wNW|f_ zGj307QV?m|x?ziu>E$gaH$A%`bMOD(w&q!f*byu2Now z$JngIz4#VC5j6{%s%_Czq_uJ3Dd7{2Q$F?Se(|$xn(r*NSa_Sz)^x*O>$B7MY&ksT ziv2&8^2{EsoRwY2vZtI^T-#v0?b^(1M~fpF&+dBo@VKqy>tzow*zg<+)SB0~)8G2c z;)^?$OSon`$H`p{R4Q5JA6q-|`RsGXM`kdGB}J{R_Sn1r@IhmD$;) zy*4Kg^GuH1!u=|lp}6`;?q@4D^Z8+CS0DfLX!;Y0$x(IR?^+x%u`jHtmi_F$&qJkW zPThumuV$%Vjytm9%j9mxu)FF@TM~~dOkXB-*g~jn>asf;3B0w=M?SbU`qbVjcHzm7 zE)t&mutVaW%hPFghclPY*tgXE+04mbqy3fg4K9_XAMkwg*6&u$L9QQ5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1ai^>d_r8^3w-_)0lK@pfvP4=n)K?`tD{GczI^#|+qP{VK79D`R5=ZE8!8dUChKptD!R?-Ft}J8Vd2FM3X3AQzc(2$4VNXLj zp1ZzWD|Kb5PEuBZ;62MdNfj$DtXMJ0)#rwqxvT3`m*1{iPMGn#YVHhw$@ZbRMucJN zr^7)~vmY<_DCE1Cws7y+opF0bUbuemGHBK9o4?59TY^qs_b0*Rf;m&fpB=yJKX229 z)w|^dlRKJz#dkIf`GwTEv^T!U5HjUjw9WO3%f@Nc`{{Y(*^ zAMP1*3Gk|gBnw@<;AZM1#JeTrvFX(f{v}@*?BWQFJ-tG&GbB806}QRN(s{268{e#K me)X{Rjbz80K&?NWZ^Y$vFQ#T19BBt8AqG!ZKbLh*2~7Z-dw;zE literal 0 HcmV?d00001 diff --git a/easyPhotos/src/main/res/mipmap-xxhdpi/ic_editor_easy_photos.png b/easyPhotos/src/main/res/mipmap-xxhdpi/ic_editor_easy_photos.png new file mode 100644 index 0000000000000000000000000000000000000000..f8fa4d416b0678f5ea0b91e9b0a493e43afaf4fd GIT binary patch literal 3538 zcmX|E2|QF^8y-88N+MerqwHppiJ3x%MD{VszRV!|GPVgZ)|7n-*(&=|2q8;`vSk~L zq{vXnlBp2!$2Y$3|NGAGch5cN+;gAjecp54`=0y2#OTIJpfC^s0G!m*)y6RHI>#3$ zJEQi4EW`i+O!{tEivSBl0~FrJ3*zYHgL8%uy?hzZ0f4I-L|;d|hjRc3=X}S_TMbNa z>jZ<`oYcU#5r!~BUoB@>H{B3|vss7{79Zk)M>>Hu)PYxtCcQ4W_@QtYeQBvq?cD z4UpUm2aE7;!I!6pU3Rupn(wyn)aTvvX~=s=H*g`09{7!@h0fhuE(je#@F}+{TRwX-K>FSWvqTS}rzFp8-~#)EjRW|nzQYBI zmR9q*i`(q%m8+1}_QDP_#Gzr-)+7z>#}6wB>1k;flY{|f*n0t4nMy5DJawWLC)T%K zp8yYV^ZN9Z7{DR5ecT2dSs-;OKZzK0%xHn6O?aWMmm*qA5{-|RNgYn^@_w6BkW?8A zHMqCuP>aNa7iyl-?xk7xxBPYC4hn7mP#(#U6J?8XO40Ml#@W~zi_`cW2-WX>b7=EW z*O@obPlGkkupDJ^B)7S|`HrtAUI*V1$eDxp&Y&|H@6WI;^Co2z81f1^NP*W>khZSw zMSg3S|Dm^Q?Y2WJU%u+54#whFv7WJbxRX;wb#>&ldT>{$S5lhNu}|ddc!_9J2~K72 z&qlMK0=4DF|J28G;qAmm7A!yZCNo8A+8(giQI;X`ubs?_1hc37`F~2#vL^C64|8)L z)$*Xi(VG@4BxlMs!Z`>zY&LMU>VVApq>WbJ3NFMYT0Pd;$+*}52+X-V_oaXFaZf=F zABpnotWBY1;?a*Jkjy%Hp8V$fd1cKEToFr1YDXMf=aZ@){R-<2oqdrqNy?1D>?#7Q zXctA>8T8m=5qt4ouj1GWL>(HCq6`$#*9A6&Zy;R(pf$y@W6cN3CU40 z_Ggbib|lZZrTwa#;}zj~dT06XfpSj!_6yRdwHiAYz#G=G?&Z3dNhb7ioVV=oTv#5n z-xaYXk6H=(@GZgm^Mv0QXa^QQ@HGr8Hzgf9w0T&ovJVb9s`*GuK5t6*f(NNS)!WzR zEPi}dyIISORAf7fOR~ikBZBD3_*K61*C*iHlm9F|;+cs69K{(DFsJHJ=AX?|(g)XG z3w)f$oGO46s#1*~C z)XuH_Xj)BwHWa!c<@3WnAW1p~y^s$E?hF&i7o;o1OF7bn z{7zao@uC8)1ioV5It-K5{laEK21!icuI?w+z_rSaCh8U?k(C+?GZ%FqKG<{0Zpw_k zM%vqsnCO9t##5<;mBRsdYi%a$c~u3Kf3Q<6+iO#jtjvUQ-fMfzk7{#F`@^1}6!(6zM!v%(^;ZMIwu2HRF>60_~y0uY{$%a1aoco1e*=0hykT=c!Z z{t<0`T*5qZ*Ekj7ABP>WgNgU?^%Tlj(Jr~j{>dj78oPe1N5~c?T?u-h@HoCTmCsBD z{%1d9JUlcF5o#`fkyN3u&$?(Wi?KJp?#GpuD~y&l#vJ6$NewqMNMk}`LyLIGAkHYR z76WRq$W};Yh>PBMVtQmliQtW~w_Z(^cioUl;$CKyMC7!#yZh(i&d&*h{q1YZyz-z? zPHycbiZ?3c`E24A*>uYnT?+W7V3~L?>{(P6uoR#yimY;A<5mV2UexClJ5ahf)JV2O z3Ea_px%6i`L0~@Lns;!17NT6BS}AoB4sNiGF^ONgbO-ZZS*+e=gbe>7F?*oo-40)T z=%((^F2R?c!7j`+P%5S#YII;{d?MdpzdyuNXCY3GHRwlKkyFjymGT45`&<#h=0*c5 z;LRH`qvdm#mUAxi_ieeg?z08a#||#O;Bb7hkWpMKWa+9?QibwL)C>ztx0Gf053{)- zJ`Nh=uUHCybtX0JURrK$BRuFTCUfR%!_GvbJe$?9+ThS5U8(pIWs4PH_H;x4-lXIM zkt)hA-Il5l3O~u)Ln6!(+|?f#oJ)2)eX%r?e5Wwk>?XJ1nXj{ePYmyOLa*idDNR+Vkm>{T6@`*?!V~L)(*;Cd^-MhL={x*q7oh=iWADMlhNdA?T-i7O$ zskN^Tw@SNpRX_L%?b%z=jU|(}Gj!?Ie#%*$ckv!vAG%be5iMQrJ?ehwg*YWvjk&4U z@)sW_MzTznNb1m7i~Mywm3OmB*qgUfga(8K4DHW9Tb(X_AQA+?`qwZS2{KX*tnRjZ zz=WX{bF#IB|CY?KS2V{d3^F3pTWp2IFaZ@%k>4o5*=+G9U3!}4o9g!&w$+W=GB^AY z#c>+*%4BZ95tRn_tUxI{$=m4F6U8mAZVUFvgIAy;!Zc4wBelP zLzbXAIMMJcoXqnH0+se{MpX@r&(`k-5ltS~L;BHApN}$=$TEZ8{3oZ`SqyI^SE(K5 zI*44dvg77S%7(M-&afdMwRbMT*g*a z<&L&{&jcV)`?kYWU%I{$@q3+1IG}fC<0IWHN1%^srNs1%>bKt^Wz3j<)3;eKs1W;S z3G=7f7=c=uf-hsDH}X*rb0WY?hX4oY`TNc^QX}xAP#w1*$yP|z54fA1|J1}lS>N-G zHcYVJt_399R#x53NCq9Qk$apj@TaO`Zi`);uTKPlPvBpDTh2g~U$7+vsn#!DO}=P< zCZbvN)<2@}Qa*(Vr;ccdo;K5I=iCintp?u&ky-(Uq=sueSXj}6ty|J7w@nJtVs zwfSnQ#AGNr_U|W;?|=UBU%gSm_gLd*a?6M>BlUYZX;R`8IA(9xP@Lw25IHuG)>@lq zmk*{GrxlTfZM}e-CP3XTr82SG8T)(HIU&t+6H}(J?G45EGg@iB1WrG1zp*l0(F!3p zUTBlIxP8*6N~I3Mr5~<-w|WkHl*+VBwVKT9eH}&Z3wqJq{4Rt zO)c)v8EsTe!Il=^58NT8jUiug8FF}!4euH`^*-sEf4cuWTe~lKoo{X=ayqf0BxhsL zzME#UE?Z8z@~Y%~baK8fLxTd08U9P@)93hNSJd6L4*^^!rj>jFj8^;^E1e$dDS%{= zKP84*CJ@n>)Y@4?kJ(zV$!{oL>FG7^4BVSYxW!_m)9wonLhtn&x~1@6-d=xz-)kgt ztsvsLR_IL#oz@!I_ku!fFnXv-l(1=j+U%=>?6r)yXM~lF( z@q`@u&n$gt)Q#lvfOUEJh_Q!m-arg8WF7{caFInGaNG~XJVVGb3S!nrKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z3pYtbK~#9!+?;K66y+7ie>=0g$-afW5Li;^A!zgivE@yuEXIn0fJQ_Jm7=Y@N)p6C zu^y^lYCj;ADxy-b#B&r7EqE-Vz|neaR~AKHTkr!!<(z_KAtnKmY+g3I+Yd9D%uKS$ zCYebB&pCTe_Ia{1&-0&q|IfX5?tLuf6Yr!qnm6FL03(5Mz%9V7Kn{=rc;pX2jr^$u z%78P#S>Pz}P0*JYGk9L@_FGK`BOQ1Mm;y`&1|{&b7Lc-l+jL`>y#fE{z$d_-pf9h| zthrl^mKblqF96ekrN9ipX42flz&_v&;6Tuq7d2913Y|j8M0NaDUyykubj5pw)3cM8|w)E3eTh;3@jhza*h;jrlHP1WMh2dxi*ejP11uK(@N2;8pf9h{G+?{||3Kg$ zfKT1u{Oz|~UH=l{Q>W?6X1gty0jpPGz4>PS&>>)E(3kgPqQD4UZpEZ4K$q zpUG?LJ}};Z-wy0m+b5BW7pYuUM7XSs{@%i6WmFax6DcoOci#f+mDkp7iTMjKK>_7* z1yw6bh+MqL_0l3g{6N){PZ7CXq3)g_+h1J=Mz&LwEjdEbO|ebvKmS>~e;Wo) zd64SWPZO)va89wj#>9c~2K+w(O4Ym1mFNFN^LO7HK56TSY#a~fE8iUt=3~8Sgz=pG z-S=Gi}P@=DJx65wWTA9#v6W@F41r>pzfO4Vy3i6%xpl}0_ykeH{}UAAD)GEgyf4x zDk{2U1Ues{Wy+lD_aD#*sEmaIOujmt(Dc<|=(+cjX_Zrn>3n_|~A z9yy}!x*HG$AQx3YyXn|*!*6cO$-yc6L$UgLYBv3~d#afK0JfYQm*1q+2m-t01HiC4mwgK;+0dx8reb+caZM($6VVcjKGu9uP za*q;9h?JKTdT&>cLlntV?lIQ$K6g$}AGrdcgw!MFFX;F6o(YS?fv2cY`ChZ}HDXOo zJvR`G3b8mG2JYJtBL6$D?#U6<@rX#dv5`6V!Uc$#Qh2rT>mxMyzc9ue%FM*QXrZw- zO;8j5944Sj&4^ZCF)jc#d^oPTb6P#xmtHp32`!k7b@*`OTmZh_WJCWso7tduUT9g4da4%ZeO1Ou=rs3ay%xq$2 zChmm`dj3GQYp)T2y4Jy-ZGqP8Y+MDiTM75&4fIBH70kw(ooysAwE}Qi5uX%K&j@!_ ziMfQ^5fQH{>5)aOTYH57D3*;lB&+*`JGFNRw?iWCfkiBOH6hgV0`RReIBaOQ0zww2 zQ)}UF*k~%@c1Xl7S2s`*5r3+A?^Y%Nr<4WSY~9jTjfMNwVZ$ukZV~Z<$GgFe!}Xb= zrv;>pYo#TP9o@x?>IiqkEA(Y^70gzmgbAx*Zmz!Tr~sS>6tmAhc1)K-3TncwduM0w z5pG9Bys~RVtXuO{;IuX9%Ztcq=nnzdM~%W_vn3S8OP+F%CW0?|y`=npb>};P$79M{ zMm-TXeDcrEpRLVC()jV}uFru;OOou~7GNwc7xrIFpz(`?9beGp(hx3yZMjX?pbxybo9#;srKQ>|Dz=Vj{F=M*=YlDnM zYdWhp;C~nRRZHNeqTrDZ-!0ikkCM10941zu_|_bYM2Lk#+P?aFqSew{Pa!R>O%Tdr zw_!<2T=gu;Nnp1_bA+Z7@k6!Z;K5|>dRJ|tyazl2+OnLt6ktRVXTcn5UVA<6MVn5X zH04Q0tE-{9x>uyiSujU$x4o@)B3s%4wN2xkH4`B{jT^NI>1jA;Y0_d&0sGqkBUg^C zZ5794+)EbUu)w&NEY|OgYk^pM64Rn%XB4T)e*jzV$Quq6+sKhP^B+)modN!?kH?^r znkZ1BG2m9ON~DnLx@i`hjg+TX=?%bVfJj_mWN;23)%!^3=H%cmTz2EAP~j8$x0(BZ zJ#9EB&hJ+O*A)L_?i`ZtoOIoTl62=JTyr%wXV-vspL)B%$dzHs)hdj#vqENRYzH15k`d2MtH7`a?7AE{zqxlzXEO{Sz{7``p% zlm0=L0r~Mt0TY!Ng1)>8q$+zQ4MNCBC;jz}Bu%`d{}S!QJ4kHy89e3 zSzZ%80!Br~cd3m(i_1mYy0v(gJrS?Ox6cAqo@Gl(Tensp|2+fTl}O2P!obMjoChW$ z6<*4}7H~Z_pNy?r`h|sT%NSP_p0wZ5^ z7*Yw{oHm2a&C(GD`wy6Ngu(P_B#pm49>2YhbcDhA1lC|YFsh5+hji#gyL))cp%;xu zkI{7eq?G5EXiA$XVwDfQNE$b`vqLY+fEBX8m+0Kh14h1q6?jbcR69Q=<@^OA-(bpYa!EW}|6ACvND;O%~OOp5MC0#eo3VtVIbovpyWetWP^ zoSS9p@RFB-e*vEY9~f~IQ=b5%n}GW8u3M1`!*hUvNZHs5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1ahJRd_r8^3w-_)0iIjg0#$vUGw;`}TYsKC|Ipm}Dk${t=g%+PJbs=#_clBC z+tzL04<33~UioFks@HLeA16#?kbRvDw1u}M$S;^-!UYF~h6f)63>E|&*#C@SJ_7^O z22U5qkch)aBW`b7t-y07Z+)&H%bu|R|IPbdazveu?u~r?WNpUrlu4Y88bwi`Jmzor zy8U*h-J}lfV^thk{u*P`JN%SWSwG8PR+CPyyMVm#_8;^nUwvA%$39{1G6jWI?~&%d2f9;&}) zC);I>x<}4$SIKY|U2HjZece3nr40Q(v*o3x>e(eOUG=KQBeg9mRCd{Kos-2$YD>+U z<#wLFR$F=Q{9Hy(iT58Za_#yzF*DewPS~|n)?>Eh`RPaZR2V-lXfs~jUAE0y z+j{2dnO}dmZQW)q*^yc4Ha8|D{oRGsl~-7GWNsZkBQWp6(m6NxqH z5|<(n+H`!0vec1xi>r<+l!bVH*>L!3YTb)dpRLt4`|VEs$oO(wXQRNAFOiw19EX&a z{OJsIerR94QA?sTKaSh-{EM{dOd`#SVHb^GO}P81HM+%+=ZwdFy=5`(iE&q_9(&W0 zC^~DO@C?a^a-R1?B{a6q`eV9+FZfe^^G{y$h@S@;9`DU{{F#`Pp}k*izc91fS;=e; zKjzG&UZ)W8SNXXj8Mm8OWVwWFsTJIkyU=&b>VnX(Cw^=)3*57mU&F6Iw59j3^_IrR)!DDio%|j<8M;qR?3vKW zb}Qg<>54@A3m28IIBHzksB=Zp@XAEfD~wiG3hk~ub=t7HFF;)X;JU`9Sg+XqO264V X7%qlpzj@&WOw + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values-v21/styles.xml b/easyPhotos/src/main/res/values-v21/styles.xml new file mode 100644 index 0000000..18938e7 --- /dev/null +++ b/easyPhotos/src/main/res/values-v21/styles.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values-w480dp/integers.xml b/easyPhotos/src/main/res/values-w480dp/integers.xml new file mode 100644 index 0000000..b37c5e4 --- /dev/null +++ b/easyPhotos/src/main/res/values-w480dp/integers.xml @@ -0,0 +1,4 @@ + + + 4 + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values-w640dp/integers.xml b/easyPhotos/src/main/res/values-w640dp/integers.xml new file mode 100644 index 0000000..b4a3fa5 --- /dev/null +++ b/easyPhotos/src/main/res/values-w640dp/integers.xml @@ -0,0 +1,4 @@ + + + 5 + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values/attrs.xml b/easyPhotos/src/main/res/values/attrs.xml new file mode 100644 index 0000000..7454cf3 --- /dev/null +++ b/easyPhotos/src/main/res/values/attrs.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/easyPhotos/src/main/res/values/colors.xml b/easyPhotos/src/main/res/values/colors.xml new file mode 100644 index 0000000..69dfc64 --- /dev/null +++ b/easyPhotos/src/main/res/values/colors.xml @@ -0,0 +1,45 @@ + + + #303135 + #00000000 + #FFFFFF + #FFFFFF//按钮上的文字颜色,选择器上的文字颜色,选择器的边框颜色 + + + #FFFFFF//专辑项目列表的背景颜色 + #3e4145//专辑项目列表中专辑å称的字体颜色 + #4f5555//专辑项目列表中包å«å›¾ç‰‡å¼ æ•°çš„字体颜色 + + + #33FFFFFF加载框背景颜色 + + + #d0021b//编辑字体颜色为红色 + #f5a623//编辑字体颜色为橙色 + #f8e71c//编辑字体颜色为黄色 + #7ed321//编辑字体颜色为绿色 + #50e3c2//编辑字体颜色为é’色 + #4a90e2//编辑字体颜色为è“色 + #9013fe//编辑字体颜色为紫色 + #000000//编辑字体颜色为黑色 + #4a4a4a//编辑字体颜色为ç°è‰² + #ffffff//编辑字体颜色为白色 + #2c2e30//编辑界é¢èƒŒæ™¯è‰² + #393a3f//ç¼–è¾‘ç•Œé¢æ“作æ é¢œè‰² + + + #ffffff//3e4145 剿™¯ä¸»è‰²ï¼Œå¦‚字体颜色ã€icon颜色 + #9b9b9b//剿™¯å暗色,如ä¸å¯ç”¨çжæ€çš„字体颜色 + #00AA00//578fff 剿™¯çªå‡ºè‰²ï¼Œå¦‚å‘逿Œ‰é’®çš„背景色,选中状æ€çš„颜色 + + + #000000//f9f9f9 背景色,如æ¯ä¸ªactivity的背景色,相册的图片间隔线颜色 + + + #393a3f//ffffff æ“作æ ä¸»è‰²ï¼Œå¦‚相册页顶部和底部æ“ä½œæ  + #303135//f9f9f9 æ“作æ å暗色,æ“作æ é—´éš”线颜色,如相册页返回按钮å³è¾¹çš„竖线 + #eb212123//b4ffffff æ“作æ å¸¦é€æ˜Žçš„色值,如预览页的底部æ“作æ é¢œè‰²ï¼Œç›¸å†Œé¡µçš„相机按钮背景颜色。 + + + #393a3f + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values/dimens.xml b/easyPhotos/src/main/res/values/dimens.xml new file mode 100644 index 0000000..66687c9 --- /dev/null +++ b/easyPhotos/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + 16sp + 42dp + diff --git a/easyPhotos/src/main/res/values/integers.xml b/easyPhotos/src/main/res/values/integers.xml new file mode 100644 index 0000000..d091295 --- /dev/null +++ b/easyPhotos/src/main/res/values/integers.xml @@ -0,0 +1,4 @@ + + + 3 + \ No newline at end of file diff --git a/easyPhotos/src/main/res/values/strings.xml b/easyPhotos/src/main/res/values/strings.xml new file mode 100644 index 0000000..30a10ce --- /dev/null +++ b/easyPhotos/src/main/res/values/strings.xml @@ -0,0 +1,78 @@ + + EasyPhotos + + 所有图片 + + 图片和视频 + + 所有视频 + + 选择 + + + 完æˆ(%1$d/%2$d) + + 预览 + + 超出最大选择数 + + 最多åªèƒ½é€‰æ‹©%d张图片 + + 最多åªèƒ½é€‰æ‹©%d个视频 + + 需è¦é€‰æ‹©åŒç§ç±»åž‹çš„æ–‡ä»¶ + + 无法å¯åŠ¨ç›¸æœºï¼ + + 图片错误 + + æƒé™é”™è¯¯ï¼Œæ— æ³•æ­£å¸¸å·¥ä½œï¼ + + 图片的宽度必须大于%1$d,高度必须大于%2$d + + 䏿”¯æŒæ­¤å›¾ç‰‡æ ¼å¼ + + 编辑 + + 清空 + + 没有符åˆè¦æ±‚的图片,æ‹ä¸€å¼ å§ + + 没有符åˆè¦æ±‚的视频 + + 请点击并å…许相关æƒé™ + + 请点击并在设置中å…许相关æƒé™ + + 原图 + + %1$d/%2$d + + å®Œæˆ + + å–æ¶ˆ + + æ¨¡æ¿ + + 文字 + + 日期 + + åŒå‡»ç¼–辑 + + 自定义 + + 图片选择 + + 视频选择 + + 拼一张 + + 请选择2 \- 9张照片 + + 动图 + + 视频 + + + diff --git a/easyPhotos/src/main/res/values/styles.xml b/easyPhotos/src/main/res/values/styles.xml new file mode 100644 index 0000000..e77cad3 --- /dev/null +++ b/easyPhotos/src/main/res/values/styles.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/easysocket/.gitignore b/easysocket/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/easysocket/.gitignore @@ -0,0 +1 @@ +/build diff --git a/easysocket/build.gradle b/easysocket/build.gradle new file mode 100644 index 0000000..fde31cd --- /dev/null +++ b/easysocket/build.gradle @@ -0,0 +1,22 @@ +plugins { + id 'com.android.library' +} + +android { + compileSdkVersion 33 + + defaultConfig { + minSdkVersion 15 + targetSdkVersion 33 + vectorDrawables.useSupportLibrary = true + } + namespace 'com.easysocket' +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.google.code.gson:gson:2.13.1' +} + +sourceCompatibility = "7" +targetCompatibility = "7" diff --git a/easysocket/src/main/AndroidManifest.xml b/easysocket/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2b69a98 --- /dev/null +++ b/easysocket/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + diff --git a/easysocket/src/main/java/com/easysocket/ConnectionHolder.java b/easysocket/src/main/java/com/easysocket/ConnectionHolder.java new file mode 100644 index 0000000..c21cb16 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/ConnectionHolder.java @@ -0,0 +1,136 @@ +package com.easysocket; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.connection.connect.SuperConnection; +import com.easysocket.connection.connect.TcpConnection; +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.config.IConnectionSwitchListener; +import com.easysocket.interfaces.conn.IConnectionManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * Author:Alex + * Date:2019/6/4 + * Note:socket连接管ç†å™¨ + */ +public class ConnectionHolder { + + private volatile Map mConnectionManagerMap = new HashMap<>(); + + + private static class InstanceHolder { + private static final ConnectionHolder INSTANCE = new ConnectionHolder(); + } + + public static ConnectionHolder getInstance() { + return InstanceHolder.INSTANCE; + } + + private ConnectionHolder() { + mConnectionManagerMap.clear(); + } + + /** + * 移除æŸä¸ªè¿žæŽ¥ + * + * @param socketAddress + */ + public void removeConnection(SocketAddress socketAddress) { + removeConnection(createKey(socketAddress)); + } + + public void removeConnection(String socketAddress) { + mConnectionManagerMap.remove(socketAddress); + } + + /** + * èŽ·å–æŒ‡å®šSocketAddressçš„è¿žæŽ¥ï¼Œå‚æ•°é…置使用默认的 + * + * @param address + * @return + */ + public IConnectionManager getConnection(SocketAddress address) { + return getConnection(createKey(address)); + } + + public IConnectionManager getConnection(String address) { + IConnectionManager manager = mConnectionManagerMap.get(address); + if (manager == null) { + return getConnection(address, EasySocketOptions.getDefaultOptions()); + } else { + return getConnection(address, manager.getOptions()); + } + } + + /** + * èŽ·å–æŒ‡å®šSocketAddress的连接 + * + * @param address + * @param socketOptions + * @return + */ + public IConnectionManager getConnection(SocketAddress address, EasySocketOptions socketOptions) { + return getConnection(createKey(address),socketOptions); + } + + public IConnectionManager getConnection(String address, EasySocketOptions socketOptions) { + IConnectionManager manager = mConnectionManagerMap.get(address); + if (manager != null) { // 有缓存 + manager.setOptions(socketOptions); + return manager; + } else { + return createNewManagerAndCache(address, socketOptions); + } + } + + /** + * 创建新的连接并缓存 + * + * @param address + * @param socketOptions + * @return + */ + private IConnectionManager createNewManagerAndCache(SocketAddress address, EasySocketOptions socketOptions) { + SuperConnection manager = new TcpConnection(address); // 创建连接管ç†å™¨ + manager.setOptions(socketOptions); // è®¾ç½®å‚æ•° + // 连接主机的切æ¢ç›‘å¬ + manager.setOnConnectionSwitchListener(new IConnectionSwitchListener() { + @Override + public void onSwitchConnectionInfo(IConnectionManager manager, SocketAddress oldAddress, + SocketAddress newAddress) { + // 切æ¢äº†å¦å¤–一个主机的连接,删除旧的连接和添加新的连接 + synchronized (mConnectionManagerMap) { + // 首先断开连接,销æ¯ç›¸å…³çº¿ç¨‹å’Œèµ„æº + mConnectionManagerMap.get(createKey(oldAddress)).disconnect(false); + mConnectionManagerMap.remove(createKey(oldAddress)); + mConnectionManagerMap.put(createKey(newAddress), manager); + } + } + }); + + synchronized (mConnectionManagerMap) { + mConnectionManagerMap.put(createKey(address), manager); + } + return manager; + } + + private IConnectionManager createNewManagerAndCache(String address, EasySocketOptions socketOptions) { + return createNewManagerAndCache(createSocketAddress(address), socketOptions); + } + + /** + * @param socketAddress + * @return + */ + private String createKey(SocketAddress socketAddress) { + return socketAddress.getIp() + ":" + socketAddress.getPort(); + } + + private SocketAddress createSocketAddress(String address) { + String[] s = address.split(":"); + return new SocketAddress(s[0], Integer.parseInt(s[1])); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/EasySocket.java b/easysocket/src/main/java/com/easysocket/EasySocket.java new file mode 100644 index 0000000..85b8ea7 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/EasySocket.java @@ -0,0 +1,335 @@ +package com.easysocket; + +import android.content.Context; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.connection.heartbeat.HeartManager; +import com.easysocket.entity.SocketAddress; +import com.easysocket.entity.basemsg.SuperCallbackSender; +import com.easysocket.exception.InitialExeption; +import com.easysocket.exception.NotNullException; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionListener; + +/** + * Author:Alex + * Date:2019/6/4 + * Note:EasySocket API + */ +public class EasySocket { + + /** + * 连接的缓存 + */ + private static ConnectionHolder connectionHolder = ConnectionHolder.getInstance(); + // å•例 + private volatile static EasySocket singleton = null; + /** + * é»˜è®¤çš„è¿žæŽ¥å‚æ•° + */ + private EasySocketOptions defOptions; + /** + * 默认的连接 + */ + private IConnectionManager defConnection; + /** + * 上下文 + */ + private Context context; + + /** + * å•例 + * + * @return + */ + public static EasySocket getInstance() { + if (singleton == null) { + synchronized (EasySocket.class) { + if (singleton == null) { + singleton = new EasySocket(); + } + } + } + return singleton; + } + + /** + * 获å–上下文 + * + * @return + */ + public Context getContext() { + return context; + } + + /** + * 获å–默认的é…ç½®å‚æ•° + * + * @return + */ + public EasySocketOptions getDefOptions() { + return defOptions == null ? EasySocketOptions.getDefaultOptions() : defOptions; + } + + /** + * 创建socketè¿žæŽ¥ï¼Œæ­¤è¿žæŽ¥ä¸ºé»˜è®¤çš„è¿žæŽ¥ï¼Œå¦‚æžœä½ çš„é¡¹ç›®åªæœ‰ä¸€ä¸ªSocket连接,å¯ä»¥ç”¨è¿™ä¸ªæ–¹æ³•, + * åœ¨æ–¹æ³•ä¸æŒ‡å®šè¿žæŽ¥åœ°å€çš„æƒ…况下,默认使用都是这个连接, + * 比如: upMessage(byte[] message)〠connect()ç­‰ + * + * @return + */ + public EasySocket createConnection(EasySocketOptions options, Context context) { + this.defOptions = options; + this.context = context; + SocketAddress socketAddress = options.getSocketAddress(); + if (options.getSocketAddress() == null) { + throw new InitialExeption("请在åˆå§‹åŒ–的时候设置SocketAddress"); + } + // 如果有备用主机则设置 + if (options.getBackupAddress() != null) { + socketAddress.setBackupAddress(options.getBackupAddress()); + } + if (defConnection == null) { + defConnection = connectionHolder.getConnection(socketAddress, + options == null ? EasySocketOptions.getDefaultOptions() : options); + } + // 执行连接 + defConnection.connect(); + return this; + } + + /** + * 连接socket,作用于默认连接 + * + * @return + */ + public EasySocket connect() { + getDefconnection().connect(); + return this; + } + + /** + * @param address socket地å€ï¼ŒåŒ…括ipå’Œç«¯å£ + * @return + */ + public EasySocket connect(String address) { + getConnection(address).connect(); + return this; + } + + + /** + * 关闭连接,作用于默认连接 + * + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + * @return + */ + public EasySocket disconnect(boolean isNeedReconnect) { + getDefconnection().disconnect(isNeedReconnect); + return this; + } + + + /** + * 关闭连接 + * + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + * @return + */ + public EasySocket disconnect(String address, boolean isNeedReconnect) { + getConnection(address).disconnect(isNeedReconnect); + return this; + } + + /** + * 销æ¯è¿žæŽ¥å¯¹è±¡ï¼Œä½œç”¨äºŽé»˜è®¤è¿žæŽ¥ + * + * @return + */ + public EasySocket destroyConnection() { + // 断开连接 + getDefconnection().disconnect(false); + // 移除连接 + connectionHolder.removeConnection(defOptions.getSocketAddress()); + defConnection = null; + return this; + } + + + /** + * 销æ¯è¿žæŽ¥å¯¹è±¡ + * + * @return + */ + public EasySocket destroyConnection(String address) { + // 断开连接 + getConnection(address).disconnect(false); + // 移除连接 + connectionHolder.removeConnection(address); + return this; + } + + /** + * å‘逿œ‰å›žè°ƒçš„æ¶ˆæ¯ï¼Œä½œç”¨äºŽé»˜è®¤è¿žæŽ¥ + * + * @param sender + * @return + */ + public IConnectionManager upCallbackMessage(SuperCallbackSender sender) { + getDefconnection().upCallbackMessage(sender); + return defConnection; + } + + /** + * å‘逿œ‰å›žè°ƒçš„æ¶ˆæ¯ + * + * @param sender + * @return + */ + public IConnectionManager upCallbackMessage(SuperCallbackSender sender, String address) { + return getConnection(address).upCallbackMessage(sender); + } + + + /** + * å‘é€byte[] + * + * @param message + * @return + */ + public IConnectionManager upMessage(byte[] message, String address) { + return getConnection(address).upBytes(message); + } + + /** + * å‘é€byte[],作用于默认连接 + * + * @param message + * @return + */ + public IConnectionManager upMessage(byte[] message) { + return getDefconnection().upBytes(message); + } + + + /** + * 注册监å¬socket行为,作用于默认连接 + * + * @param socketActionListener + */ + public EasySocket subscribeSocketAction(ISocketActionListener socketActionListener) { + getDefconnection().subscribeSocketAction(socketActionListener); + return this; + } + + + /** + * 注册监å¬socket行为 + * + * @param socketActionListener + */ + public EasySocket subscribeSocketAction(ISocketActionListener socketActionListener, String address) { + getConnection(address).subscribeSocketAction(socketActionListener); + return this; + } + + /** + * å¼€å¯å¿ƒè·³æ£€æµ‹ï¼Œä½œç”¨äºŽé»˜è®¤è¿žæŽ¥ + * + * @param clientHeart + * @return + */ + public EasySocket startHeartBeat(byte[] clientHeart, HeartManager.HeartbeatListener listener) { + getDefconnection().getHeartManager().startHeartbeat(clientHeart, listener); + return this; + } + + /** + * å¼€å¯å¿ƒè·³æ£€æµ‹ + * + * @param clientHeart + * @return + */ + public EasySocket startHeartBeat(byte[] clientHeart, String address, HeartManager.HeartbeatListener listener) { + getConnection(address).getHeartManager().startHeartbeat(clientHeart, listener); + return this; + } + + + /** + * 获å–连接 + * + * @return + */ + public IConnectionManager getDefconnection() { + if (defConnection == null) { + throw new NotNullException("你还没有创建:" + defOptions.getSocketAddress().getIp() + ":" + defOptions.getSocketAddress().getPort() + + "çš„Socket的连接,请使用com.easysocket.EasySocket.connect()方法创建一个默认的连接"); + } + return defConnection; + } + + /** + * 获å–连接 + * + * @return + */ + public IConnectionManager getConnection(String address) { + IConnectionManager connectionManager = connectionHolder.getConnection(address); + if (connectionManager == null) { + throw new NotNullException("请先创建:" + address + "çš„Socket连接"); + } + return connectionManager; + } + + /** + * 创建指定的socket连接,如果你的项目有多个socket连接,å¯ä»¥ç”¨è¿™ä¸ªæ–¹æ³•创建更多的连接, + * 当你使用带有socket地å€ä¸ºå‚数的方法的时候,作用的就是对应的连接 + * 比如:connect(String address)〠upMessage(byte[] message, String address)ç­‰ + * + * @param socketOptions + * @return + */ + public IConnectionManager createSpecifyConnection(EasySocketOptions socketOptions, Context context) { + this.context = context; + IConnectionManager connectionManager = connectionHolder.getConnection(socketOptions.getSocketAddress(), socketOptions == null + ? EasySocketOptions.getDefaultOptions() : socketOptions); + + connectionManager.connect(); + return connectionManager; + } + + /** + * èŽ·å–æŒ‡å®šçš„连接 + * + * @param socketAddress + * @return + */ + public IConnectionManager getSpecifyConnection(String socketAddress) { + return connectionHolder.getConnection(socketAddress); + } + + /** + * å‘逿¶ˆæ¯è‡³æŒ‡å®šçš„连接 + * + * @param sender + * @param socketAddress + */ + public IConnectionManager upToSpecifyConnection(byte[] sender, String socketAddress) { + IConnectionManager connect = getSpecifyConnection(socketAddress); + if (connect != null) { + connect.upBytes(sender); + } + return connect; + } + + /** + * 是å¦ä¸ºdebug + * + * @param debug + */ + public void setDebug(boolean debug) { + EasySocketOptions.setIsDebug(debug); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/callback/ProgressDialogCallBack.java b/easysocket/src/main/java/com/easysocket/callback/ProgressDialogCallBack.java new file mode 100644 index 0000000..0da1ee9 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/callback/ProgressDialogCallBack.java @@ -0,0 +1,116 @@ + +package com.easysocket.callback; + +import android.app.Dialog; +import android.content.DialogInterface; + +import com.easysocket.entity.OriginReadData; +import com.easysocket.exception.RequestCancelException; +import com.easysocket.interfaces.callback.IProgressDialog; +import com.easysocket.interfaces.callback.ProgressCancelListener; + + +/** + * 自定义带有加载进度框的回调 + */ +public abstract class ProgressDialogCallBack extends SuperCallBack implements ProgressCancelListener { + + private IProgressDialog progressDialog; + private Dialog mDialog; + private boolean isShowProgress = true; + + /** + * @param + */ + public ProgressDialogCallBack(IProgressDialog progressDialog, String callbackId) { + super(callbackId); + this.progressDialog = progressDialog; + init(false); + onStart(); + } + + /** + * 自定义加载进度框,å¯ä»¥è®¾ç½®æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºæ¡†ï¼Œæ˜¯å¦å¯ä»¥å–消 + * + * @param progressDialog dialog + * @param isShowProgress æ˜¯å¦æ˜¾ç¤ºè¿›åº¦ + * @param isCancel å¯¹è¯æ¡†æ˜¯å¦å¯ä»¥å–消 + * @param + */ + public ProgressDialogCallBack(IProgressDialog progressDialog, boolean isShowProgress, + boolean isCancel, String callbackId) { + super(callbackId); + this.progressDialog = progressDialog; + this.isShowProgress = isShowProgress; + init(isCancel); + onStart(); + } + + /** + * åˆå§‹åŒ– + * + * @param isCancel + */ + private void init(boolean isCancel) { + if (progressDialog == null) return; + mDialog = progressDialog.getDialog(); + if (mDialog == null) return; + mDialog.setCancelable(isCancel); + if (isCancel) { + mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialogInterface) { + ProgressDialogCallBack.this.onCancelProgress(); + } + }); + } + } + + /** + * 展示进度框 + */ + private void showProgress() { + if (!isShowProgress) { + return; + } + if (mDialog != null && !mDialog.isShowing()) { + mDialog.show(); + } + } + + /** + * å–æ¶ˆè¿›åº¦æ¡† + */ + private void dismissProgress() { + if (!isShowProgress) { + return; + } + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + } + } + + @Override + public void onStart() { + showProgress(); + } + + @Override + public void onCompleted() { + dismissProgress(); + } + + public abstract void onResponse(OriginReadData data); + + @Override + public void onError(Exception e) { + onCompleted(); + } + + @Override + public void onCancelProgress() { + onCompleted(); + onError(new RequestCancelException("ç½‘ç»œè¯·æ±‚è¢«å–æ¶ˆ")); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/callback/SimpleCallBack.java b/easysocket/src/main/java/com/easysocket/callback/SimpleCallBack.java new file mode 100644 index 0000000..0e0c0c2 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/callback/SimpleCallBack.java @@ -0,0 +1,29 @@ +package com.easysocket.callback; + + +/** + * Created by LXR ON 2018/8/29. + */ +public abstract class SimpleCallBack extends SuperCallBack{ + + + public SimpleCallBack(String callbackId) { + super(callbackId); + } + + @Override + public void onStart() { + } + + @Override + public void onCompleted() { + + } + + @Override + public void onError(Exception e) { + + } + + +} diff --git a/easysocket/src/main/java/com/easysocket/callback/SuperCallBack.java b/easysocket/src/main/java/com/easysocket/callback/SuperCallBack.java new file mode 100644 index 0000000..cfbdde4 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/callback/SuperCallBack.java @@ -0,0 +1,44 @@ +package com.easysocket.callback; + + +import com.easysocket.entity.OriginReadData; + +/** + * Created by LXR ON 2018/8/29. + */ +public abstract class SuperCallBack { + /** + * éšæœºå­—符串,识别æœåŠ¡ç«¯åº”ç­”æ¶ˆæ¯çš„唯一标识 + */ + private String callbackId; + + /** + * @param callbackId 识别æœåŠ¡ç«¯åº”ç­”æ¶ˆæ¯çš„唯一标识 + */ + public SuperCallBack(String callbackId) { + this.callbackId = callbackId; + } + + /** + * 获å–回调ID + * + * @return + */ + public String getCallbackId() { + return callbackId; + } + + public abstract void onStart(); + + public abstract void onCompleted(); + + public abstract void onError(Exception e); + + public void onSuccess(OriginReadData data) { + onCompleted(); + onResponse(data); + } + + public abstract void onResponse(OriginReadData data); + +} diff --git a/easysocket/src/main/java/com/easysocket/config/CallbackIDFactory.java b/easysocket/src/main/java/com/easysocket/config/CallbackIDFactory.java new file mode 100644 index 0000000..623fa5b --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/CallbackIDFactory.java @@ -0,0 +1,18 @@ +package com.easysocket.config; + +import com.easysocket.entity.OriginReadData; + +/** + * Author:Alex + * Date:2019/6/4 + * Noteï¼šè¦æƒ³å®žçްEasySocket的回调功能,必须实现此工厂类,callbackID作为回调消æ¯çš„唯一标识 + */ +public abstract class CallbackIDFactory { + /** + * 返回callbackID + * + * @param + * @return 如果没有callbackID请返回null + */ + public abstract String getCallbackID(OriginReadData data); +} diff --git a/easysocket/src/main/java/com/easysocket/config/DefaultMessageProtocol.java b/easysocket/src/main/java/com/easysocket/config/DefaultMessageProtocol.java new file mode 100644 index 0000000..7d737f9 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/DefaultMessageProtocol.java @@ -0,0 +1,28 @@ +package com.easysocket.config; + +import com.easysocket.interfaces.config.IMessageProtocol; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +/** + * Author:Alex + * Date:2019/5/31 + * Note:默认的消æ¯å议,header为4个字节,ä¿å­˜æ¶ˆæ¯ä½“ body的长度 + */ +public class DefaultMessageProtocol implements IMessageProtocol { + @Override + public int getHeaderLength() { + return 4; // 包头长度,用æ¥ä¿å­˜body的长度值 + } + + @Override + public int getBodyLength(byte[] header, ByteOrder byteOrder) { + if (header == null || header.length < getHeaderLength()) { + return 0; + } + ByteBuffer bb = ByteBuffer.wrap(header); + bb.order(byteOrder); + return bb.getInt(); // body的长度以int的形å¼ä¿å­˜åœ¨ header + } +} diff --git a/easysocket/src/main/java/com/easysocket/config/DefaultX509ProtocolTrustManager.java b/easysocket/src/main/java/com/easysocket/config/DefaultX509ProtocolTrustManager.java new file mode 100644 index 0000000..ca7c96e --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/DefaultX509ProtocolTrustManager.java @@ -0,0 +1,28 @@ +package com.easysocket.config; + +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.X509TrustManager; + +/** + * Author:Alex + * Date:2019/6/3 + * Note: + */ +public class DefaultX509ProtocolTrustManager implements X509TrustManager { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } +} diff --git a/easysocket/src/main/java/com/easysocket/config/EasySocketOptions.java b/easysocket/src/main/java/com/easysocket/config/EasySocketOptions.java new file mode 100644 index 0000000..0cf70b4 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/EasySocketOptions.java @@ -0,0 +1,478 @@ +package com.easysocket.config; + +import com.easysocket.connection.reconnect.AbsReconnection; +import com.easysocket.connection.reconnect.DefaultReConnection; +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.config.IMessageProtocol; + +import java.nio.ByteOrder; + +/** + * Author:Alex。 + * Date:2019/5/31。 + * Note:socket相关é…置。 + */ +public class EasySocketOptions { + + /** + * 是å¦è°ƒè¯•æ¨¡å¼ + */ + private static boolean isDebug = true; + /** + * ä¸»æœºåœ°å€ + */ + private SocketAddress socketAddress; + /** + * å¤‡ç”¨ä¸»æœºåœ°å€ + */ + private SocketAddress backupAddress; + /** + * 写入Socket管é“çš„å­—èŠ‚åº + */ + private ByteOrder writeOrder; + /** + * 从Socket读å–å­—èŠ‚æ—¶çš„å­—èŠ‚åº + */ + private ByteOrder readOrder; + /** + * 从socketè¯»å–æ•°æ®æ—¶éµä»Žçš„æ•°æ®åŒ…结构å议,在业务层进行定义 + */ + private IMessageProtocol messageProtocol; + /** + * å†™æ•°æ®æ—¶å•个数æ®åŒ…的最大值 + */ + private int maxWriteBytes; + /** + * è¯»æ•°æ®æ—¶å•æ¬¡è¯»å–æœ€å¤§ç¼“存值,数值越大效率越高,但是系统消耗也越大 + */ + private int maxReadBytes; + /** + * 心跳频率/毫秒 + */ + private long heartbeatFreq; + /** + * 心跳最大的丢失次数,大于这个数æ®ï¼Œå°†æ–­å¼€socket连接 + */ + private int maxHeartbeatLoseTimes; + /** + * 连接超时时间(毫秒) + */ + private int connectTimeout; + /** + * æœåŠ¡å™¨è¿”å›žæ•°æ®çš„æœ€å¤§å€¼ï¼ˆå•ä½Mb),防止客户端内存溢出 + */ + private int maxResponseDataMb; + /** + * socketé‡è¿žç®¡ç†å™¨ + */ + private AbsReconnection reconnectionManager; + /** + * 安全套接字相关é…ç½® + */ + private SocketSSLConfig easySSLConfig; + /** + * socket工厂 + */ + private SocketFactory socketFactory; + /** + * 实现回调功能需è¦callbackID,而callbackID是ä¿å­˜åœ¨å‘逿¶ˆæ¯å’Œåº”答消æ¯ä¸­çš„,此工厂用æ¥èŽ·å–socket消æ¯ä¸­ + * ä¿å­˜callbackID值的key,比如jsonæ ¼å¼ä¸­çš„key-value中的key + */ + private CallbackIDFactory callbackIDFactory; + /** + * 请求超时时间,å•使¯«ç§’ + */ + private long requestTimeout; + /** + * 是å¦å¼€å¯è¯·æ±‚超时检测 + */ + private boolean isOpenRequestTimeout; + + /** + * IO字符æµçš„ç¼–ç æ–¹å¼ï¼Œé»˜è®¤utf-8 + */ + private String charsetName; + + public boolean isDebug() { + return isDebug; + } + + + /** + * 陿€å†…部类 + */ + public static class Builder { + EasySocketOptions socketOptions; + + // 首先获得一个默认的é…ç½® + public Builder() { + this(getDefaultOptions()); + } + + public Builder(EasySocketOptions defaultOptions) { + socketOptions = defaultOptions; + } + + /** + * 设置socket ä¸»æœºåœ°å€ + * + * @param socketAddress + * @return + */ + public Builder setSocketAddress(SocketAddress socketAddress) { + socketOptions.socketAddress = socketAddress; + return this; + } + + /** + * è®¾ç½®å¤‡ç”¨çš„ä¸»æœºåœ°å€ + * + * @param backupAddress + * @return + */ + public Builder setBackupAddress(SocketAddress backupAddress) { + socketOptions.backupAddress = backupAddress; + return this; + } + + /** + * 设置是å¦å¼€å¯è¯·æ±‚超时的检测 + * + * @param openRequestTimeout + * @return + */ + public Builder setOpenRequestTimeout(boolean openRequestTimeout) { + socketOptions.isOpenRequestTimeout = openRequestTimeout; + return this; + } + + /** + * 设置请求超时时间 + * + * @param requestTimeout 毫秒 + * @return + */ + public Builder setRequestTimeout(long requestTimeout) { + socketOptions.requestTimeout = requestTimeout; + return this; + } + + /** + * 设置请求ack的工厂 + * + * @param callbackIDFactory + */ + public Builder setCallbackIDFactory(CallbackIDFactory callbackIDFactory) { + socketOptions.callbackIDFactory = callbackIDFactory; + return this; + } + + + /** + * 设置写数æ®çš„å­—èŠ‚é¡ºåº + * + * @param writeOrder + * @return + */ + public Builder setWriteOrder(ByteOrder writeOrder) { + socketOptions.writeOrder = writeOrder; + return this; + } + + /** + * 设置读数æ®çš„å­—èŠ‚é¡ºåº + * + * @param readOrder + * @return + */ + public Builder setReadOrder(ByteOrder readOrder) { + socketOptions.readOrder = readOrder; + return this; + } + + /** + * è®¾ç½®è¯»å–æ•°æ®çš„æ•°æ®ç»“æž„åè®® + * + * @param readerProtocol + * @return + */ + public Builder setReaderProtocol(IMessageProtocol readerProtocol) { + socketOptions.messageProtocol = readerProtocol; + return this; + } + + /** + * è®¾ç½®å†™æ•°æ®æ—¶å•个数æ®åŒ…的最大值 + * + * @param maxWriteBytes + * @return + */ + public Builder setMaxWriteBytes(int maxWriteBytes) { + socketOptions.maxWriteBytes = maxWriteBytes; + return this; + } + + /** + * è®¾ç½®è¯»æ•°æ®æ—¶å•次读å–的最大缓存值 + * + * @param maxReadBytes + * @return + */ + public Builder setMaxReadBytes(int maxReadBytes) { + socketOptions.maxReadBytes = maxReadBytes; + return this; + } + + /** + * 设置心跳å‘é€é¢‘率,å•使¯«ç§’ + * + * @param heartbeatFreq + * @return + */ + public Builder setHeartbeatFreq(long heartbeatFreq) { + socketOptions.heartbeatFreq = heartbeatFreq; + return this; + } + + /** + * 设置心跳丢失的最大å…许数,如果超过这个最大数就断开socket连接 + * + * @param maxHeartbeatLoseTimes + * @return + */ + public Builder setMaxHeartbeatLoseTimes(int maxHeartbeatLoseTimes) { + socketOptions.maxHeartbeatLoseTimes = maxHeartbeatLoseTimes; + return this; + } + + /** + * 设置连接超时时间 + * + * @param connectTimeout + * @return + */ + public Builder setConnectTimeout(int connectTimeout) { + socketOptions.connectTimeout = connectTimeout; + return this; + } + + /** + * 设置æœåŠ¡å™¨è¿”å›žæ•°æ®çš„å…许的最大值,å•ä½å…† + * + * @param maxResponseDataMb + * @return + */ + public Builder setMaxResponseDataMb(int maxResponseDataMb) { + socketOptions.maxResponseDataMb = maxResponseDataMb; + return this; + } + + /** + * 设置é‡è¿žç®¡ç†å™¨ + * + * @param reconnectionManager + * @return + */ + public Builder setReconnectionManager(AbsReconnection reconnectionManager) { + socketOptions.reconnectionManager = reconnectionManager; + return this; + } + + /** + * 安全套接字的é…ç½® + * + * @param easySSLConfig + * @return + */ + public Builder setEasySSLConfig(SocketSSLConfig easySSLConfig) { + socketOptions.easySSLConfig = easySSLConfig; + return this; + } + + /** + * 自定义创建socket工厂 + * + * @param socketFactory + * @return + */ + public Builder setSocketFactory(SocketFactory socketFactory) { + socketOptions.socketFactory = socketFactory; + return this; + } + + public Builder setCharsetName(String charsetName) { + socketOptions.charsetName = charsetName; + return this; + } + + public EasySocketOptions build() { + return socketOptions; + } + } + + + /** + * 获å–默认的é…ç½® + * + * @return + */ + public static EasySocketOptions getDefaultOptions() { + EasySocketOptions options = new EasySocketOptions(); + options.socketAddress = null; + options.backupAddress = null; + options.heartbeatFreq = 5 * 1000; + options.messageProtocol = null; + options.maxResponseDataMb = 5; + options.connectTimeout = 5 * 1000; // 连接超时默认5ç§’ + options.maxWriteBytes = 100; + options.maxReadBytes = 50; + options.readOrder = ByteOrder.BIG_ENDIAN; + options.writeOrder = ByteOrder.BIG_ENDIAN; + options.maxHeartbeatLoseTimes = 5; + options.reconnectionManager = new DefaultReConnection(); + options.easySSLConfig = null; + options.socketFactory = null; + options.callbackIDFactory = null; + options.requestTimeout = 10 * 1000; // 默认åç§’ + options.isOpenRequestTimeout = true; // é»˜è®¤å¼€å¯ + options.charsetName = "UTF-8"; + return options; + } + + public String getCharsetName() { + return charsetName; + } + + public ByteOrder getWriteOrder() { + return writeOrder; + } + + public ByteOrder getReadOrder() { + return readOrder; + } + + public IMessageProtocol getMessageProtocol() { + return messageProtocol; + } + + public int getMaxWriteBytes() { + return maxWriteBytes; + } + + public int getMaxReadBytes() { + return maxReadBytes; + } + + public long getHeartbeatFreq() { + return heartbeatFreq; + } + + public int getMaxHeartbeatLoseTimes() { + return maxHeartbeatLoseTimes; + } + + public int getConnectTimeout() { + return connectTimeout; + } + + public int getMaxResponseDataMb() { + return maxResponseDataMb; + } + + public AbsReconnection getReconnectionManager() { + return reconnectionManager; + } + + public SocketSSLConfig getEasySSLConfig() { + return easySSLConfig; + } + + public SocketFactory getSocketFactory() { + return socketFactory; + } + + public long getRequestTimeout() { + return requestTimeout; + } + + public boolean isOpenRequestTimeout() { + return isOpenRequestTimeout; + } + + public CallbackIDFactory getCallbackIDFactory() { + return callbackIDFactory; + } + + public static void setIsDebug(boolean isDebug) { + EasySocketOptions.isDebug = isDebug; + } + + public void setWriteOrder(ByteOrder writeOrder) { + this.writeOrder = writeOrder; + } + + public void setReadOrder(ByteOrder readOrder) { + this.readOrder = readOrder; + } + + public void setMessageProtocol(IMessageProtocol messageProtocol) { + this.messageProtocol = messageProtocol; + } + + public void setMaxWriteBytes(int maxWriteBytes) { + this.maxWriteBytes = maxWriteBytes; + } + + public void setMaxReadBytes(int maxReadBytes) { + this.maxReadBytes = maxReadBytes; + } + + public void setHeartbeatFreq(long heartbeatFreq) { + this.heartbeatFreq = heartbeatFreq; + } + + public void setMaxHeartbeatLoseTimes(int maxHeartbeatLoseTimes) { + this.maxHeartbeatLoseTimes = maxHeartbeatLoseTimes; + } + + public void setConnectTimeout(int connectTimeout) { + this.connectTimeout = connectTimeout; + } + + public void setMaxResponseDataMb(int maxResponseDataMb) { + this.maxResponseDataMb = maxResponseDataMb; + } + + public void setReconnectionManager(AbsReconnection reconnectionManager) { + this.reconnectionManager = reconnectionManager; + } + + public void setEasySSLConfig(SocketSSLConfig easySSLConfig) { + this.easySSLConfig = easySSLConfig; + } + + public void setSocketFactory(SocketFactory socketFactory) { + this.socketFactory = socketFactory; + } + + public void setCallbackIDFactory(CallbackIDFactory callbackIDFactory) { + this.callbackIDFactory = callbackIDFactory; + } + + public void setRequestTimeout(long requestTimeout) { + this.requestTimeout = requestTimeout; + } + + public void setOpenRequestTimeout(boolean openRequestTimeout) { + isOpenRequestTimeout = openRequestTimeout; + } + + public SocketAddress getSocketAddress() { + return socketAddress; + } + + public SocketAddress getBackupAddress() { + return backupAddress; + } + +} diff --git a/easysocket/src/main/java/com/easysocket/config/SocketFactory.java b/easysocket/src/main/java/com/easysocket/config/SocketFactory.java new file mode 100644 index 0000000..1aebab0 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/SocketFactory.java @@ -0,0 +1,14 @@ +package com.easysocket.config; + +import com.easysocket.entity.SocketAddress; + +import java.net.Socket; + +/** + * Author:Alex + * Date:2019/5/31 + * Note:socket工厂 + */ +public abstract class SocketFactory { + public abstract Socket createSocket(SocketAddress info, EasySocketOptions options) throws Exception; +} diff --git a/easysocket/src/main/java/com/easysocket/config/SocketSSLConfig.java b/easysocket/src/main/java/com/easysocket/config/SocketSSLConfig.java new file mode 100644 index 0000000..1000cce --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/config/SocketSSLConfig.java @@ -0,0 +1,81 @@ +package com.easysocket.config; + +import javax.net.ssl.KeyManager; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; + +/** + * socketçš„sslé…ç½® + */ + +public class SocketSSLConfig { + /** + * 安全åè®®åç§°(缺çœä¸ºSSL) + */ + private String mProtocol; + /** + * ä¿¡ä»»è¯ä¹¦ç®¡ç†å™¨(缺çœä¸ºX509) + */ + private TrustManager[] mTrustManagers; + /** + * è¯ä¹¦ç§˜é’¥ç®¡ç†å™¨(缺çœä¸ºnull) + */ + private KeyManager[] mKeyManagers; + /** + * 自定义SSLFactory(缺çœä¸ºnull) + */ + private SSLSocketFactory mCustomSSLFactory; + + private SocketSSLConfig() { + + } + + public static class Builder { + + private SocketSSLConfig mConfig; + + public Builder() { + mConfig = new SocketSSLConfig(); + } + + public Builder setProtocol(String protocol) { + mConfig.mProtocol = protocol; + return this; + } + + public Builder setTrustManagers(TrustManager[] trustManagers) { + mConfig.mTrustManagers = trustManagers; + return this; + } + + public Builder setKeyManagers(KeyManager[] keyManagers) { + mConfig.mKeyManagers = keyManagers; + return this; + } + + public Builder setCustomSSLFactory(SSLSocketFactory customSSLFactory) { + mConfig.mCustomSSLFactory = customSSLFactory; + return this; + } + + public SocketSSLConfig build() { + return mConfig; + } + } + + public KeyManager[] getKeyManagers() { + return mKeyManagers; + } + + public String getProtocol() { + return mProtocol; + } + + public TrustManager[] getTrustManagers() { + return mTrustManagers; + } + + public SSLSocketFactory getCustomSSLFactory() { + return mCustomSSLFactory; + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/action/IOAction.java b/easysocket/src/main/java/com/easysocket/connection/action/IOAction.java new file mode 100644 index 0000000..4caf13a --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/action/IOAction.java @@ -0,0 +1,11 @@ +package com.easysocket.connection.action; + +/** + * Author:Alex + * Date:2019/6/3 + * Note: + */ +public interface IOAction { + // 收到消æ¯å“应 + String ACTION_READ_COMPLETE = "action_read_complete"; +} diff --git a/easysocket/src/main/java/com/easysocket/connection/action/SocketAction.java b/easysocket/src/main/java/com/easysocket/connection/action/SocketAction.java new file mode 100644 index 0000000..f9619c8 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/action/SocketAction.java @@ -0,0 +1,15 @@ +package com.easysocket.connection.action; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface SocketAction { + // 连接æˆåŠŸ + String ACTION_CONN_SUCCESS="action_conn_success"; + // 连接失败 + String ACTION_CONN_FAIL="action_conn_fail"; + // 断开连接 + String ACTION_DISCONNECTION="action_disconnection"; +} diff --git a/easysocket/src/main/java/com/easysocket/connection/action/SocketStatus.java b/easysocket/src/main/java/com/easysocket/connection/action/SocketStatus.java new file mode 100644 index 0000000..3918289 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/action/SocketStatus.java @@ -0,0 +1,17 @@ +package com.easysocket.connection.action; + +/** + * Author:Alex + * Date:2019/6/1 + * Noteï¼šè¿žæŽ¥çŠ¶æ€ + */ +public interface SocketStatus { + // 已断开连接 + int SOCKET_DISCONNECTED = 0; + // 正在连接 + int SOCKET_CONNECTING = 1; + // 已连接 + int SOCKET_CONNECTED = 2; + // 正在断开连接 + int SOCKET_DISCONNECTING =3; +} diff --git a/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java b/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java new file mode 100644 index 0000000..ca7cc82 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/connect/SuperConnection.java @@ -0,0 +1,340 @@ +package com.easysocket.connection.connect; + +import com.easysocket.EasySocket; +import com.easysocket.callback.SuperCallBack; +import com.easysocket.config.EasySocketOptions; +import com.easysocket.connection.action.SocketAction; +import com.easysocket.connection.action.SocketStatus; +import com.easysocket.connection.dispatcher.CallbackResponseDispatcher; +import com.easysocket.connection.dispatcher.SocketActionDispatcher; +import com.easysocket.connection.heartbeat.HeartManager; +import com.easysocket.connection.iowork.IOManager; +import com.easysocket.connection.reconnect.AbsReconnection; +import com.easysocket.entity.SocketAddress; +import com.easysocket.entity.basemsg.SuperCallbackSender; +import com.easysocket.exception.NotNullException; +import com.easysocket.interfaces.config.IConnectionSwitchListener; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionListener; +import com.easysocket.utils.LogUtil; +import com.easysocket.utils.Utils; + +import java.io.IOException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Author:Alex + * Date:2019/5/29 + * Note:socket连接的超类 + */ +public abstract class SuperConnection implements IConnectionManager { + + /** + * 连接状æ€ï¼Œåˆå§‹å€¼ä¸ºæ–­å¼€è¿žæŽ¥ + */ + protected final AtomicInteger connectionStatus = new AtomicInteger(SocketStatus.SOCKET_DISCONNECTED); + /** + * 连接线程 + */ + private ExecutorService connExecutor; + /** + * socket地å€ä¿¡æ¯ + */ + protected SocketAddress socketAddress; + /** + * socket行为分å‘器 + */ + private SocketActionDispatcher actionDispatcher; + /** + * é‡è¿žç®¡ç†å™¨ + */ + private AbsReconnection reconnection; + /** + * io管ç†å™¨ + */ + private IOManager ioManager; + /** + * 心跳管ç†å™¨ + */ + private HeartManager heartManager; + /** + * é…ç½®ä¿¡æ¯ + */ + protected EasySocketOptions socketOptions; + /** + * socket回调消æ¯çš„分å‘器 + */ + private CallbackResponseDispatcher callbackResponseDispatcher; + /** + * 连接切æ¢çš„ç›‘å¬ + */ + private IConnectionSwitchListener connectionSwitchListener; + + public SuperConnection(SocketAddress socketAddress) { + this.socketAddress = socketAddress; + actionDispatcher = new SocketActionDispatcher(this, socketAddress); + } + + @Override + public void subscribeSocketAction(ISocketActionListener iSocketActionListener) { + actionDispatcher.subscribe(iSocketActionListener); + } + + @Override + public void unSubscribeSocketAction(ISocketActionListener iSocketActionListener) { + actionDispatcher.unsubscribe(iSocketActionListener); + } + + @Override + public synchronized IConnectionManager setOptions(EasySocketOptions socketOptions) { + if (socketOptions == null) return this; + + this.socketOptions = socketOptions; + + if (ioManager != null) + ioManager.setOptions(socketOptions); + + if (heartManager != null) + heartManager.setOptions(socketOptions); + + if (callbackResponseDispatcher != null) + callbackResponseDispatcher.setSocketOptions(socketOptions); + + // 更改了é‡è¿žå™¨ + if (reconnection != null && !reconnection.equals(socketOptions.getReconnectionManager())) { + reconnection.detach(); + reconnection = socketOptions.getReconnectionManager(); + reconnection.attach(this); + } + return this; + } + + @Override + public EasySocketOptions getOptions() { + return socketOptions; + } + + @Override + public synchronized void connect() { + LogUtil.d("---> socket开始连接"); + if (socketAddress.getIp() == null) { + throw new NotNullException("请检查是å¦è®¾ç½®äº†IP地å€"); + } + // 正在连接 + connectionStatus.set(SocketStatus.SOCKET_CONNECTING); + + // 心跳管ç†å™¨ + if (heartManager == null) { + heartManager = new HeartManager(this, actionDispatcher); + } + + // é‡è¿žç®¡ç†å™¨ + if (reconnection != null) { + reconnection.detach(); + } + reconnection = socketOptions.getReconnectionManager(); + if (reconnection != null) { + reconnection.attach(this); + } + + // å¼€å¯åˆ†å‘消æ¯çº¿ç¨‹ + if (actionDispatcher != null) { + actionDispatcher.startDispatchThread(); + } + + // å¼€å¯è¿žæŽ¥çº¿ç¨‹ + if (connExecutor == null || connExecutor.isShutdown()) { + // 核心线程数为0ï¼Œéžæ ¸å¿ƒçº¿ç¨‹æ•°å¯ä»¥æœ‰Integer.MAX_VALUE个,存活时间为60秒,适åˆäºŽåœ¨ä¸æ–­è¿›è¡Œè¿žæŽ¥çš„æƒ…况下,é¿å…é‡å¤åˆ›å»ºå’Œé”€æ¯çº¿ç¨‹ + connExecutor = Executors.newCachedThreadPool(); + } + // 执行连接任务 + connExecutor.execute(connTask); + } + + @Override + public synchronized void disconnect(boolean isNeedReconnect) { + // 判断当å‰socketçš„è¿žæŽ¥çŠ¶æ€ + if (connectionStatus.get() == SocketStatus.SOCKET_DISCONNECTED) { + return; + } + // 正在é‡è¿žä¸­ + if (isNeedReconnect && reconnection.isReconning()) { + return; + } + // 正在断开连接 + connectionStatus.set(SocketStatus.SOCKET_DISCONNECTING); + + // 开坿–­å¼€è¿žæŽ¥çº¿ç¨‹ + String info = socketAddress.getIp() + " : " + socketAddress.getPort(); + Thread disconnThread = new DisconnectThread(isNeedReconnect, "disconn thread:" + info); + disconnThread.setDaemon(true); + disconnThread.start(); + } + + /** + * 断开连接线程 + */ + private class DisconnectThread extends Thread { + boolean isNeedReconnect; // 当å‰è¿žæŽ¥çš„æ–­å¼€æ˜¯å¦éœ€è¦è‡ªåЍé‡è¿ž + + public DisconnectThread(boolean isNeedReconnect, String name) { + super(name); + this.isNeedReconnect = isNeedReconnect; + } + + @Override + public void run() { + try { + // 关闭io线程 + if (ioManager != null) + ioManager.closeIO(); + // 关闭回调分å‘器线程 + if (callbackResponseDispatcher != null) + callbackResponseDispatcher.shutdownThread(); + // 关闭连接线程 + if (connExecutor != null && !connExecutor.isShutdown()) { + connExecutor.shutdown(); + connExecutor = null; + } + // 关闭连接 + closeConnection(); + LogUtil.d("---> 关闭socket连接"); + connectionStatus.set(SocketStatus.SOCKET_DISCONNECTED); + actionDispatcher.dispatchAction(SocketAction.ACTION_DISCONNECTION, new Boolean(isNeedReconnect)); + } catch (IOException e) { + // 断开连接å‘生异常 + e.printStackTrace(); + } + } + } + + // 连接任务 + private Runnable connTask = new Runnable() { + @Override + public void run() { + try { + openConnection(); + } catch (Exception e) { + // 连接异常 + e.printStackTrace(); + LogUtil.d("---> socket连接失败"); + connectionStatus.set(SocketStatus.SOCKET_DISCONNECTED); + // ç¬¬äºŒä¸ªå‚æ•°æŒ‡éœ€è¦é‡è¿ž + actionDispatcher.dispatchAction(SocketAction.ACTION_CONN_FAIL, new Boolean(true)); + + } + } + }; + + /** + * 连接æˆåŠŸ + */ + protected void onConnectionOpened() { + LogUtil.d("---> socket连接æˆåŠŸ"); + actionDispatcher.dispatchAction(SocketAction.ACTION_CONN_SUCCESS); + connectionStatus.set(SocketStatus.SOCKET_CONNECTED); + openSocketManager(); + } + + // å¼€å¯socket相关管ç†å™¨ + private void openSocketManager() { + if (callbackResponseDispatcher == null) + callbackResponseDispatcher = new CallbackResponseDispatcher(this); + if (ioManager == null) { + ioManager = new IOManager(this, actionDispatcher); + } + ioManager.startIO(); + + // å¯åŠ¨ç›¸å…³çº¿ç¨‹ + callbackResponseDispatcher.engineThread(); + ioManager.startIO(); + } + + // 切æ¢äº†ä¸»æœºIPå’Œç«¯å£ + @Override + public synchronized void switchHost(SocketAddress socketAddress) { + if (socketAddress != null) { + SocketAddress oldAddress = this.socketAddress; + this.socketAddress = socketAddress; + + if (actionDispatcher != null) + actionDispatcher.setSocketAddress(socketAddress); + // 切æ¢ä¸»æœº + if (connectionSwitchListener != null) { + connectionSwitchListener.onSwitchConnectionInfo(this, oldAddress, socketAddress); + } + } + + } + + public void setOnConnectionSwitchListener(IConnectionSwitchListener listener) { + connectionSwitchListener = listener; + } + + @Override + public boolean isConnectViable() { + // 当å‰socket是å¦å¤„于å¯è¿žæŽ¥çŠ¶æ€ + return Utils.isNetConnected(EasySocket.getInstance().getContext()) && connectionStatus.get() == SocketStatus.SOCKET_DISCONNECTED; + } + + @Override + public int getConnectionStatus() { + return connectionStatus.get(); + } + + /** + * 打开连接 + * + * @throws IOException + */ + protected abstract void openConnection() throws Exception; + + /** + * 关闭连接 + * + * @throws IOException + */ + protected abstract void closeConnection() throws IOException; + + /** + * å‘é€bytesæ•°æ® + * + * @param bytes + * @return + */ + private IConnectionManager sendBytes(byte[] bytes) { + if (ioManager == null || connectionStatus.get() != SocketStatus.SOCKET_CONNECTED) { + return this; + } + ioManager.sendBytes(bytes); + return this; + } + + @Override + public void onCallBack(SuperCallBack callBack) { + callbackResponseDispatcher.addSocketCallback(callBack); + } + + + @Override + public synchronized IConnectionManager upBytes(byte[] bytes) { + sendBytes(bytes); + return this; + } + + @Override + public synchronized IConnectionManager upCallbackMessage(SuperCallbackSender sender) { + callbackResponseDispatcher.checkCallbackSender(sender); + // å‘é€ + sendBytes(sender.pack()); + return this; + } + + + @Override + public HeartManager getHeartManager() { + return heartManager; + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/connect/TcpConnection.java b/easysocket/src/main/java/com/easysocket/connection/connect/TcpConnection.java new file mode 100644 index 0000000..31d83ae --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/connect/TcpConnection.java @@ -0,0 +1,141 @@ +package com.easysocket.connection.connect; + +import com.easysocket.config.DefaultX509ProtocolTrustManager; +import com.easysocket.config.SocketSSLConfig; +import com.easysocket.connection.action.SocketStatus; +import com.easysocket.entity.SocketAddress; +import com.easysocket.utils.LogUtil; +import com.easysocket.utils.Utils; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.security.SecureRandom; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; + +/** + * Author:Alex + * Date:2019/5/29 + * Note:tcp连接 + */ +public class TcpConnection extends SuperConnection { + /** + * socket对象 + */ + private Socket socket; + + public TcpConnection(SocketAddress socketAddress) { + super(socketAddress); + } + + @Override + protected void openConnection() throws Exception { + try { + socket = getSocket(); + } catch (Exception e) { + e.printStackTrace(); + connectionStatus.set(SocketStatus.SOCKET_DISCONNECTED); // 设置为未连接 + throw new RuntimeException("创建socket失败"); + } + + // 进行socket连接 + socket.connect(new InetSocketAddress(socketAddress.getIp(), socketAddress.getPort()), socketOptions.getConnectTimeout()); + + // 关闭Nagle算法,无论TCPæ•°æ®æŠ¥å¤§å°,ç«‹å³å‘é€ + socket.setTcpNoDelay(true); + // è¿žæŽ¥å·²ç»æ‰“å¼€ + if (socket.isConnected() && !socket.isClosed()) { + onConnectionOpened(); + } + } + + @Override + protected void closeConnection() throws IOException { + if (socket != null) + socket.close(); + } + + /** + * æ ¹æ®é…置信æ¯èŽ·å–对应的socket + * + * @return + */ + private synchronized Socket getSocket() throws Exception { + // 自定义的socket生æˆå·¥åŽ‚ + if (socketOptions.getSocketFactory() != null) { + return socketOptions.getSocketFactory().createSocket(socketAddress, socketOptions); + } + // 默认æ“作 + SocketSSLConfig config = socketOptions.getEasySSLConfig(); + if (config == null) { + return new Socket(); + } + // 获å–SSLé…置工厂 + SSLSocketFactory factory = config.getCustomSSLFactory(); + if (factory == null) { + String protocol = "SSL"; + if (!Utils.isStringEmpty(config.getProtocol())) { + protocol = config.getProtocol(); + } + + TrustManager[] trustManagers = config.getTrustManagers(); + if (trustManagers == null || trustManagers.length == 0) { + // 缺çœä¿¡ä»»æ‰€æœ‰è¯ä¹¦ + trustManagers = new TrustManager[]{new DefaultX509ProtocolTrustManager()}; + } + + try { + SSLContext sslContext = SSLContext.getInstance(protocol); + sslContext.init(config.getKeyManagers(), trustManagers, new SecureRandom()); + return sslContext.getSocketFactory().createSocket(); + } catch (Exception e) { + if (socketOptions.isDebug()) { + e.printStackTrace(); + } + LogUtil.e(e.getMessage()); + return new Socket(); + } + + } else { + try { + return factory.createSocket(); + } catch (IOException e) { + if (socketOptions.isDebug()) { + e.printStackTrace(); + } + LogUtil.e(e.getMessage()); + return new Socket(); + } + } + } + + + @Override + public InputStream getInputStream() { + if (socket != null && socket.isConnected() && !socket.isClosed()) { + try { + return socket.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public OutputStream getOutStream() { + if (socket != null && socket.isConnected() && !socket.isClosed()) { + try { + return socket.getOutputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java b/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java new file mode 100644 index 0000000..c0e8b90 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/dispatcher/CallbackResponseDispatcher.java @@ -0,0 +1,187 @@ +package com.easysocket.connection.dispatcher; + +import com.easysocket.callback.SuperCallBack; +import com.easysocket.config.EasySocketOptions; +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; +import com.easysocket.entity.basemsg.SuperCallbackSender; +import com.easysocket.exception.RequestTimeOutException; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.SocketActionListener; +import com.easysocket.utils.LogUtil; +import com.easysocket.utils.Utils; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.DelayQueue; +import java.util.concurrent.Delayed; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * Author:Alex + * Date:2019/6/4 + * Note:回调消æ¯åˆ†å‘器 + */ +public class CallbackResponseDispatcher { + /** + * ä¿å­˜å‘é€çš„æ¯ä¸ªå›žè°ƒæ¶ˆæ¯çš„监å¬å®žä¾‹ï¼Œkey为回调标识callbackIdï¼Œè¿™æ ·å›žè°ƒæ¶ˆæ¯æœ‰å馈的时候,就å¯ä»¥æ‰¾åˆ°å¹¶è°ƒç”¨ + * 对应的监å¬å¯¹è±¡ + */ + private Map callbacks = new HashMap<>(); + /** + * ä¿å­˜éœ€è¦è¿›è¡Œè¶…时检测的请求,这是一个延时队列,元素超时的时候会被å–å‡ºæ¥ + */ + private DelayQueue timeoutQueue = new DelayQueue<>(); + /** + * 超时检测的线程管ç†å™¨ + */ + private ExecutorService timeoutExecutor; + + /** + * è¿žæŽ¥ç®¡ç† + */ + IConnectionManager connectionManager; + + private EasySocketOptions socketOptions; + + + public CallbackResponseDispatcher(IConnectionManager connectionManager) { + this.connectionManager = connectionManager; + socketOptions = connectionManager.getOptions(); + // æ³¨å†Œç›‘å¬ + connectionManager.subscribeSocketAction(socketActionListener); + // 开始超时检测线程 + engineThread(); + } + + /** + * 设置socketoptions + * + * @param socketOptions + */ + public void setSocketOptions(EasySocketOptions socketOptions) { + this.socketOptions = socketOptions; + } + + /** + * 超时检测线程 + */ + public void engineThread() { + if (timeoutExecutor == null || timeoutExecutor.isShutdown()) { + timeoutExecutor = Executors.newSingleThreadExecutor(); + timeoutExecutor.execute(new Runnable() { + @Override + public void run() { + try { + // åªæœ‰è¶…时的元素æ‰ä¼šè¢«å–出,没有的è¯ä¼šè¢«ç­‰å¾… + timeoutItem item = timeoutQueue.take(); + if (item != null) { + SuperCallBack callBack = callbacks.remove(item.callbackId); + if (callBack != null) + callBack.onError(new RequestTimeOutException("request timeout")); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 继续循环 + if (timeoutExecutor != null && !timeoutExecutor.isShutdown()) { + run(); + } + } + }); + } + } + + /** + * 关闭线程 + */ + public void shutdownThread() { + if (timeoutExecutor != null && !timeoutExecutor.isShutdown()) { + // shutdownå’ŒshutdownNow的主è¦åŒºåˆ«æ˜¯å‰è€…中断未执行的线程,åŽè€…中断所有线程 + timeoutExecutor.shutdownNow(); + timeoutExecutor = null; + } + + } + + /** + * socket行为监å¬ï¼Œé‡å†™å馈消æ¯çš„回调方法 + */ + private SocketActionListener socketActionListener = new SocketActionListener() { + @Override + public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) { + if (callbacks.size() == 0) return; + if (socketOptions.getCallbackIDFactory() == null) return; + // 获å–回调ID + String callbackID = socketOptions.getCallbackIDFactory().getCallbackID(originReadData); + if (callbackID != null) { + // 获å–callbackID对应的callback + SuperCallBack callBack = callbacks.get(callbackID); + if (callBack != null) { + // 回调 + callBack.onSuccess(originReadData); + callbacks.remove(callbackID); // 移除完æˆä»»åŠ¡çš„callback + LogUtil.d("移除的callbackId-->" + callbackID); + } + } + } + }; + + + /** + * æ¯å‘一æ¡å›žè°ƒæ¶ˆæ¯éƒ½è¦åœ¨è¿™é‡Œæ·»åŠ ç›‘å¬å¯¹è±¡ + * + * @param superCallBack + */ + public void addSocketCallback(SuperCallBack superCallBack) { + callbacks.put(superCallBack.getCallbackId(), superCallBack); + // 放入延时队列 + long delayTime = socketOptions == null ? + EasySocketOptions.getDefaultOptions().getRequestTimeout() : socketOptions.getRequestTimeout(); + timeoutQueue.add(new timeoutItem(superCallBack.getCallbackId(), delayTime, TimeUnit.MILLISECONDS)); + } + + /** + * 延时队列的item + */ + class timeoutItem implements Delayed { + + String callbackId; // 当å‰callbackçš„callbackId + long executeTime; // è§¦å‘æ—¶é—´ + + public timeoutItem(String callbackId, long delayTime, TimeUnit timeUnit) { + this.callbackId = callbackId; + this.executeTime = System.currentTimeMillis() + (delayTime > 0 ? timeUnit.toMillis(delayTime) : 0); + } + + @Override + public long getDelay(TimeUnit unit) { + return executeTime - System.currentTimeMillis(); + } + + @Override + public int compareTo(Delayed o) { + return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS)); + } + } + + /** + * åŒä¸€ä¸ªæ¶ˆæ¯å‘é€å¤šæ¬¡ï¼ŒcallbackId是ä¸èƒ½ä¸€æ ·çš„,所以这里è¦å…ˆcheck一下,å¦åˆ™æœåŠ¡ç«¯å馈的时候,客户端接收就会乱套 + * + * @param callbackSender + * @return + */ + public void checkCallbackSender(SuperCallbackSender callbackSender) { + + Utils.checkNotNull(socketOptions.getCallbackIDFactory(), "è¦æƒ³å®žçްEasySocket的回调功能,CallbackIdFactoryä¸èƒ½ä¸ºnull," + + "请实现一个CallbackIdFactory并在åˆå§‹åŒ–的时候通过EasySocketOptionsçš„setCallbackIdFactory进行é…ç½®"); + String callbackId = callbackSender.getCallbackId(); + // åŒä¸€ä¸ªæ¶ˆæ¯å‘é€ä¸¤æ¬¡ä»¥ä¸Šï¼ŒcallbackId是ä¸èƒ½ä¸€æ ·çš„,å¦åˆ™æœåŠ¡ç«¯å馈的时候,客户端接收就会乱套 + if (callbacks.containsKey(callbackId)) { + callbackSender.generateCallbackId(); + } + } + +} diff --git a/easysocket/src/main/java/com/easysocket/connection/dispatcher/MainThreadExecutor.java b/easysocket/src/main/java/com/easysocket/connection/dispatcher/MainThreadExecutor.java new file mode 100644 index 0000000..37e8579 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/dispatcher/MainThreadExecutor.java @@ -0,0 +1,21 @@ +package com.easysocket.connection.dispatcher; + +import android.os.Handler; +import android.os.Looper; + +import java.util.concurrent.Executor; + +/** + * Author:Mapogo + * Date:2020/4/8 + * Note:切到主线程 + */ +public class MainThreadExecutor implements Executor { + + private final Handler handler = new Handler(Looper.getMainLooper()); + + @Override + public void execute(Runnable r) { + handler.post(r); + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/dispatcher/SocketActionDispatcher.java b/easysocket/src/main/java/com/easysocket/connection/dispatcher/SocketActionDispatcher.java new file mode 100644 index 0000000..f0a61cf --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/dispatcher/SocketActionDispatcher.java @@ -0,0 +1,221 @@ +package com.easysocket.connection.dispatcher; + +import com.easysocket.EasySocket; +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionDispatch; +import com.easysocket.interfaces.conn.ISocketActionListener; +import com.easysocket.utils.Utils; + +import java.io.Serializable; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.LinkedBlockingQueue; + +import static com.easysocket.connection.action.IOAction.ACTION_READ_COMPLETE; +import static com.easysocket.connection.action.SocketAction.ACTION_CONN_FAIL; +import static com.easysocket.connection.action.SocketAction.ACTION_CONN_SUCCESS; +import static com.easysocket.connection.action.SocketAction.ACTION_DISCONNECTION; + +/** + * Author:Alex + * Date:2019/6/1 + * Note:socket行为分å‘器 + */ +public class SocketActionDispatcher implements ISocketActionDispatch { + /** + * è¿žæŽ¥åœ°å€ + */ + private SocketAddress socketAddress; + /** + * 连接器 + */ + private IConnectionManager connectionManager; + /** + * 回调监å¬é›†åˆ + */ + private List actionListeners = new ArrayList<>(); + /** + * 处ç†socket行为的线程 + */ + private Thread actionThread; + /** + * 是å¦åœæ­¢åˆ†å‘ + */ + private boolean isStop; + + /** + * 事件消费队列 + */ + private final LinkedBlockingQueue socketActions = new LinkedBlockingQueue(); + /** + * 切æ¢åˆ°UI线程 + */ + private MainThreadExecutor mainThreadExecutor = new MainThreadExecutor(); + + + public SocketActionDispatcher(IConnectionManager connectionManager, SocketAddress socketAddress) { + this.socketAddress = socketAddress; + this.connectionManager = connectionManager; + } + + public void setSocketAddress(SocketAddress info) { + socketAddress = info; + } + + + @Override + public void dispatchAction(String action) { + dispatchAction(action, null); + } + + @Override + public void dispatchAction(String action, Serializable serializable) { + // 将接收到的socket行为å°è£…入列 + ActionBean actionBean = new ActionBean(action, serializable, this); + socketActions.offer(actionBean); + } + + @Override + public void subscribe(ISocketActionListener iSocketActionListener) { + if (iSocketActionListener != null && !actionListeners.contains(iSocketActionListener)) { + actionListeners.add(iSocketActionListener); + } + } + + @Override + public void unsubscribe(ISocketActionListener iSocketActionListener) { + actionListeners.remove(iSocketActionListener); + } + + /** + * 分å‘线程 + */ + private class DispatchThread extends Thread { + + public DispatchThread() { + super("dispatch thread"); + } + + @Override + public void run() { + // 循环处ç†socketçš„è¡Œä¸ºä¿¡æ¯ + while (!isStop) { + try { + ActionBean actionBean = socketActions.take(); + if (actionBean != null && actionBean.mDispatcher != null) { + SocketActionDispatcher actionDispatcher = actionBean.mDispatcher; + List copyListeners = new ArrayList<>(actionDispatcher.actionListeners); + Iterator listeners = copyListeners.iterator(); + // 通知所有监å¬è€… + while (listeners.hasNext()) { + ISocketActionListener listener = listeners.next(); + actionDispatcher.dispatchActionToListener(actionBean.mAction, actionBean.arg, listener); + } + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + /** + * socket行为的å°è£… + */ + protected static class ActionBean { + + public ActionBean(String action, Serializable arg, SocketActionDispatcher dispatcher) { + mAction = action; + this.arg = arg; + mDispatcher = dispatcher; + } + + String mAction = ""; + Serializable arg; + SocketActionDispatcher mDispatcher; + } + + /** + * 分å‘行为给监å¬è€… + * + * @param action + * @param content + * @param actionListener + */ + private void dispatchActionToListener(String action, final Serializable content, final ISocketActionListener actionListener) { + switch (action) { + + case ACTION_CONN_SUCCESS: // 连接æˆåŠŸ + mainThreadExecutor.execute(new Runnable() { + @Override + public void run() { + actionListener.onSocketConnSuccess(socketAddress); + } + }); + + break; + + case ACTION_CONN_FAIL: // 连接失败 + mainThreadExecutor.execute(new Runnable() { + @Override + public void run() { + actionListener.onSocketConnFail(socketAddress, ((Boolean) content).booleanValue()); + } + }); + + break; + + case ACTION_DISCONNECTION: // 连接断开 + mainThreadExecutor.execute(new Runnable() { + @Override + public void run() { + actionListener.onSocketDisconnect(socketAddress, ((Boolean) content).booleanValue()); + // ä¸éœ€è¦é‡è¿žï¼Œåˆ™é‡Šæ”¾èµ„æº + if (!(Boolean) content) { + stopDispatchThread(); + } + } + }); + break; + + case ACTION_READ_COMPLETE: // è¯»å–æ•°æ®å®Œæˆ + mainThreadExecutor.execute(new Runnable() { + @Override + public void run() { + // response有三ç§å½¢å¼ + actionListener.onSocketResponse(socketAddress, (OriginReadData) content); + byte[] data = Utils.concatBytes(((OriginReadData) content).getHeaderData(), ((OriginReadData) content).getBodyBytes()); + actionListener.onSocketResponse(socketAddress, new String(data, Charset.forName(EasySocket.getInstance().getDefOptions().getCharsetName()))); + actionListener.onSocketResponse(socketAddress, data); + } + }); + break; + } + } + + // 开始分å‘线程 + @Override + public void startDispatchThread() { + isStop = false; + if (actionThread == null) { + actionThread = new DispatchThread(); + actionThread.start(); + } + } + + @Override + public void stopDispatchThread() { + if (actionThread != null && actionThread.isAlive() && !actionThread.isInterrupted()) { + socketActions.clear(); + //actionListeners.clear(); + isStop = true; + actionThread.interrupt(); + actionThread = null; + } + } + +} diff --git a/easysocket/src/main/java/com/easysocket/connection/heartbeat/HeartManager.java b/easysocket/src/main/java/com/easysocket/connection/heartbeat/HeartManager.java new file mode 100644 index 0000000..9ae8042 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/heartbeat/HeartManager.java @@ -0,0 +1,181 @@ +package com.easysocket.connection.heartbeat; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.config.IOptions; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.IHeartManager; +import com.easysocket.interfaces.conn.ISocketActionDispatch; +import com.easysocket.interfaces.conn.SocketActionListener; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Author:Alex + * Date:2019/12/8 + * Note:心跳包检测管ç†å™¨ + */ +public class HeartManager extends SocketActionListener implements IOptions, IHeartManager { + + /** + * 连接器 + */ + private IConnectionManager connectionManager; + /** + * è¿žæŽ¥å‚æ•° + */ + private EasySocketOptions socketOptions; + /** + * 客户端心跳包 + */ + private byte[] clientHeart; + /** + * 心跳包å‘é€çº¿ç¨‹ + */ + private ScheduledExecutorService heartExecutor; + /** + * è®°å½•å¿ƒè·³çš„å¤±è”æ¬¡æ•° + */ + private AtomicInteger loseTimes = new AtomicInteger(-1); + /** + * 心跳频率 + */ + private long freq; + /** + * æ˜¯å¦æ¿€æ´»äº†å¿ƒè·³ + */ + private boolean isActivate; + + + /** + * å¿ƒè·³åŒ…æŽ¥æ”¶ç›‘å¬ + */ + private HeartbeatListener heartbeatListener; + + + public HeartManager(IConnectionManager iConnectionManager, ISocketActionDispatch actionDispatch) { + this.connectionManager = iConnectionManager; + socketOptions = iConnectionManager.getOptions(); + actionDispatch.subscribe(this); // æ³¨å†Œç›‘å¬ + } + + /** + * 心跳å‘é€ä»»åŠ¡ + */ + private final Runnable beatTask = new Runnable() { + @Override + public void run() { + // 心跳丢失次数判断,心跳包丢失了一定的次数则会进行socket的断开é‡è¿ž + if (socketOptions.getMaxHeartbeatLoseTimes() != -1 + && loseTimes.incrementAndGet() >= socketOptions.getMaxHeartbeatLoseTimes()) { + // æ–­å¼€é‡è¿ž + connectionManager.disconnect(true); + resetLoseTimes(); + } else { // å‘é€å¿ƒè·³åŒ… + connectionManager.upBytes(clientHeart); + } + } + }; + + + @Override + public void startHeartbeat(byte[] clientHeart, HeartbeatListener listener) { + this.clientHeart = clientHeart; + this.heartbeatListener = listener; + isActivate = true; + openThread(); + } + + + // å¯åŠ¨å¿ƒè·³çº¿ç¨‹ + private void openThread() { + freq = socketOptions.getHeartbeatFreq(); // 心跳频率 + // å¯åŠ¨çº¿ç¨‹å‘é€å¿ƒè·³ + if (heartExecutor == null || heartExecutor.isShutdown()) { + heartExecutor = Executors.newSingleThreadScheduledExecutor(); + heartExecutor.scheduleWithFixedDelay(beatTask, 0, freq, TimeUnit.MILLISECONDS); + } + } + + /** + * åœæ­¢å¿ƒè·³å‘é€ + */ + @Override + public void stopHeartbeat() { + isActivate = false; + closeThread(); + } + + // åœæ­¢å¿ƒè·³çº¿ç¨‹ + private void closeThread() { + if (heartExecutor != null && !heartExecutor.isShutdown()) { + heartExecutor.shutdownNow(); + heartExecutor = null; + resetLoseTimes(); // é‡ç½® + } + } + + @Override + public void onReceiveHeartBeat() { + resetLoseTimes(); + } + + + private void resetLoseTimes() { + loseTimes.set(-1); + } + + @Override + public void onSocketConnSuccess(SocketAddress socketAddress) { + if (isActivate) { + openThread(); + } + } + + @Override + public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) { + // 如果ä¸éœ€è¦é‡è¿žï¼Œåˆ™åœæ­¢å¿ƒè·³é¢‘率线程 + if (!isNeedReconnect) { + closeThread(); + } + } + + @Override + public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) { + // 如果ä¸éœ€è¦é‡è¿žï¼Œåˆ™åœæ­¢å¿ƒè·³æ£€æµ‹ + if (!isNeedReconnect) { + closeThread(); + } + } + + @Override + public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) { + if (heartbeatListener != null && heartbeatListener.isServerHeartbeat(originReadData)) { + // 收到æœåŠ¡å™¨å¿ƒè·³ + onReceiveHeartBeat(); + } + } + + @Override + public Object setOptions(EasySocketOptions socketOptions) { + this.socketOptions = socketOptions; + freq = socketOptions.getHeartbeatFreq(); + freq = freq < 1000 ? 1000 : freq; // ä¸èƒ½å°äºŽä¸€ç§’ + return this; + } + + @Override + public EasySocketOptions getOptions() { + return socketOptions; + } + + public interface HeartbeatListener { + // 是å¦ä¸ºæœåŠ¡å™¨å¿ƒè·³ + boolean isServerHeartbeat(OriginReadData orginReadData); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/connection/iowork/EasyReader.java b/easysocket/src/main/java/com/easysocket/connection/iowork/EasyReader.java new file mode 100644 index 0000000..a80772d --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/iowork/EasyReader.java @@ -0,0 +1,327 @@ +package com.easysocket.connection.iowork; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.connection.action.IOAction; +import com.easysocket.entity.OriginReadData; +import com.easysocket.exception.ReadRecoverableExeption; +import com.easysocket.exception.ReadUnrecoverableException; +import com.easysocket.interfaces.config.IMessageProtocol; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionDispatch; +import com.easysocket.interfaces.io.IReader; +import com.easysocket.utils.LogUtil; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public class EasyReader implements IReader { + /** + * è¾“å…¥æµ + */ + private InputStream inputStream; + /** + * 读å–原始数æ®çš„缓存空间 + */ + private ByteBuffer originBuf; + /** + * socket行为分å‘器 + */ + private ISocketActionDispatch actionDispatch; + /** + * 连接器 + */ + private IConnectionManager connectionManager; + /** + * è¿žæŽ¥å‚æ•° + */ + private EasySocketOptions socketOptions; + + /** + * è¯»æ•°æ®æ—¶ï¼Œä½™ç•™æ•°æ®çš„缓存 + */ + private ByteBuffer remainingBuf; + /** + * 读数æ®çº¿ç¨‹ + */ + private Thread readerThread; + /** + * 是å¦åœæ­¢çº¿ç¨‹ + */ + private boolean stopThread; + + public EasyReader(IConnectionManager connectionManager, ISocketActionDispatch actionDispatch) { + this.actionDispatch = actionDispatch; + this.connectionManager = connectionManager; + socketOptions = connectionManager.getOptions(); + } + + @Override + public void read() throws IOException, ReadRecoverableExeption, ReadUnrecoverableException { + OriginReadData originalData = new OriginReadData(); + IMessageProtocol messageProtocol = socketOptions.getMessageProtocol(); + // 消æ¯å议为null,则直接读原始消æ¯ï¼Œä¸å»ºè®®è¿™æ ·ä½¿ç”¨ï¼Œå› ä¸ºä¼šå‘生é»åŒ…ã€åˆ†åŒ…的问题 + if (messageProtocol == null) { + readOriginDataFromSteam(originalData); + return; + } + + // 定义了消æ¯åè®® + int headerLength = messageProtocol.getHeaderLength(); // 包头长度 + ByteBuffer headBuf = ByteBuffer.allocate(headerLength); // 包头数æ®çš„buffer + headBuf.order(socketOptions.getReadOrder()); + + /*1ã€è¯» header=====>>>*/ + if (remainingBuf != null) { // 有余留 + // flip方法:一般从Buffer读数æ®å‰è°ƒç”¨ï¼Œå°†limit设置为当å‰position,将position设置为0ï¼Œåœ¨è¯»æ•°æ®æ—¶ï¼Œlimit代表å¯è¯»æ•°æ®çš„æœ‰æ•ˆé•¿åº¦ + remainingBuf.flip(); + // 读余留数æ®çš„长度 + int length = Math.min(remainingBuf.remaining(), headerLength); + // è¯»å…¥ä½™ç•™æ•°æ® + headBuf.put(remainingBuf.array(), 0, length); + + if (length < headerLength) { // 余留数æ®å°äºŽä¸€ä¸ªheader + // there are no data left + remainingBuf = null; + // 从stream中读剩下的headeræ•°æ® + readHeaderFromSteam(headBuf, headerLength - length); + } else { + // 移动开始读数æ®çš„æŒ‡é’ˆ + remainingBuf.position(headerLength); + } + } else { // 无余留 + // 从stream读å–一个完整的 header + readHeaderFromSteam(headBuf, headBuf.capacity()); + } + + // ä¿å­˜header + originalData.setHeaderData(headBuf.array()); + + /*2ã€è¯» body=====>>>*/ + int bodyLength = messageProtocol.getBodyLength(originalData.getHeaderData(), socketOptions.getReadOrder()); + if (bodyLength > 0) { + if (bodyLength > socketOptions.getMaxResponseDataMb() * 1024 * 1024) { + throw new ReadUnrecoverableException("æœåŠ¡å™¨è¿”å›žçš„å•æ¬¡æ•°æ®è¶…过了规定的最大值,å¯èƒ½ä½ çš„Socket消æ¯åè®®ä¸å¯¹ï¼Œä¸€èˆ¬æ¶ˆæ¯æ ¼å¼" + + "为:Header+Body,其中Headerä¿å­˜æ¶ˆæ¯é•¿åº¦å’Œç±»åž‹ç­‰ï¼ŒBodyä¿å­˜æ¶ˆæ¯å†…容,请规范好你的åè®®"); + } + // 分é…空间 + ByteBuffer bodyBuf = ByteBuffer.allocate(bodyLength); + bodyBuf.order(socketOptions.getReadOrder()); + + // 有余留 + if (remainingBuf != null) { + int bodyStartPosition = remainingBuf.position(); + + int length = Math.min(remainingBuf.remaining(), bodyLength); + // 读length大å°çš„ä½™ç•™æ•°æ® + bodyBuf.put(remainingBuf.array(), bodyStartPosition, length); + // 移动positionä½ç½® + remainingBuf.position(bodyStartPosition + length); + + // 读的余留数æ®åˆšå¥½ç­‰äºŽä¸€ä¸ªbody + if (length == bodyLength) { + if (remainingBuf.remaining() > 0) { // ä½™ç•™æ•°æ®æœªè¯»å®Œ + ByteBuffer temp = ByteBuffer.allocate(remainingBuf.remaining()); + temp.order(socketOptions.getReadOrder()); + temp.put(remainingBuf.array(), remainingBuf.position(), remainingBuf.remaining()); + remainingBuf = temp; + } else { // there are no data left + remainingBuf = null; + } + + // ä¿å­˜body + originalData.setBodyData(bodyBuf.array()); + + LogUtil.d("Socket收到数æ®-->" + originalData.getBodyString()); + // åˆ†å‘æ•°æ® + actionDispatch.dispatchAction(IOAction.ACTION_READ_COMPLETE, originalData); + + /*return读å–结æŸ*/ + return; + + } else { // there are no data left in buffer and some data pieces in channel + remainingBuf = null; + } + } + // 无余留,则从stream中读 + readBodyFromStream(bodyBuf); + // ä¿å­˜body到originalData + originalData.setBodyData(bodyBuf.array()); + + } else if (bodyLength == 0) { // 没有bodyæ•°æ® + originalData.setBodyData(new byte[0]); + if (remainingBuf != null) { + // the body is empty so header remaining buf need set null + if (remainingBuf.hasRemaining()) { + ByteBuffer temp = ByteBuffer.allocate(remainingBuf.remaining()); + temp.order(socketOptions.getReadOrder()); + temp.put(remainingBuf.array(), remainingBuf.position(), remainingBuf.remaining()); + remainingBuf = temp; + } else { + remainingBuf = null; + } + } + } else if (bodyLength < 0) { + throw new ReadUnrecoverableException("æ•°æ®body的长度ä¸èƒ½å°äºŽ0"); + } + + LogUtil.d("Socket收到数æ®-->" + originalData.getBodyString()); + // åˆ†å‘ + actionDispatch.dispatchAction(IOAction.ACTION_READ_COMPLETE, originalData); + + } + + + /** + * 读数æ®ä»»åŠ¡ + */ + private Runnable readerTask = new Runnable() { + @Override + public void run() { + try { + while (!stopThread) { + read(); + } + } catch (ReadUnrecoverableException unrecoverableException) { + // 读异常 + unrecoverableException.printStackTrace(); + // åœæ­¢çº¿ç¨‹ + stopThread = true; + release(); + } catch (ReadRecoverableExeption readRecoverableExeption) { + readRecoverableExeption.printStackTrace(); + // é‡è¿ž + connectionManager.disconnect(true); + + } catch (IOException e) { + e.printStackTrace(); + // é‡è¿ž + connectionManager.disconnect(true); + } + } + }; + + + private void readHeaderFromSteam(ByteBuffer headBuf, int readLength) throws ReadRecoverableExeption, IOException { + for (int i = 0; i < readLength; i++) { + byte[] bytes = new byte[1]; + // 从输入æµä¸­è¯»æ•°æ®ï¼Œæ— æ•°æ®æ—¶ä¼šé˜»å¡ž + int value = inputStream.read(bytes); + // -1代表读到了文件的末尾,一般是因为æœåŠ¡å™¨æ–­å¼€äº†è¿žæŽ¥ + if (value == -1) { + throw new ReadRecoverableExeption("读数æ®å¤±è´¥ï¼Œå¯èƒ½æ˜¯å› ä¸ºsocketè·ŸæœåŠ¡å™¨æ–­å¼€äº†è¿žæŽ¥"); + } + headBuf.put(bytes); + } + } + + private void readOriginDataFromSteam(OriginReadData readData) throws ReadRecoverableExeption, IOException { + // 用 全局originBufé¿å…é‡å¤åˆ›å»ºå­—节数组 + int len = inputStream.read(originBuf.array()); + // no more data + if (len == -1) { + throw new ReadRecoverableExeption("读数æ®å¤±è´¥ï¼Œå¯èƒ½å› ä¸ºsocketè·ŸæœåŠ¡å™¨æ–­å¼€äº†è¿žæŽ¥"); + } + // byteså¤åˆ¶ + byte[] data = new byte[len]; + originBuf.get(data, 0, len); + readData.setBodyData(data); + LogUtil.d("Socket收到数æ®-->" + readData.getBodyString()); + // åˆ†å‘æ•°æ® + actionDispatch.dispatchAction(IOAction.ACTION_READ_COMPLETE, readData); + // ç›¸å½“äºŽæŠŠæŒ‡é’ˆé‡æ–°æŒ‡å‘positon=0 + originBuf.clear(); + } + + private void readBodyFromStream(ByteBuffer byteBuffer) throws ReadRecoverableExeption, IOException { + // while循环直到byteBufferè£…æ»¡æ•°æ® + while (byteBuffer.hasRemaining()) { + byte[] bufArray = new byte[socketOptions.getMaxReadBytes()]; // 从æœåС噍啿¬¡è¯»å–的最大值 + int len = inputStream.read(bufArray); + if (len == -1) { // no more data + throw new ReadRecoverableExeption("读数æ®å¤±è´¥ï¼Œå¯èƒ½æ˜¯å› ä¸ºsocketè·ŸæœåŠ¡å™¨æ–­å¼€äº†è¿žæŽ¥"); + } + int remaining = byteBuffer.remaining(); + if (len > remaining) { // 从stream读的数æ®è¶…过byteBuffer的剩余空间 + byteBuffer.put(bufArray, 0, remaining); + // 将多余的数æ®ä¿å­˜åˆ°remainingBufä¸­ç¼“å­˜ï¼Œç­‰ä¸‹ä¸€æ¬¡è¯»å– + remainingBuf = ByteBuffer.allocate(len - remaining); + remainingBuf.order(socketOptions.getReadOrder()); + remainingBuf.put(bufArray, remaining, len - remaining); + } else { // 从stream读的数æ®å°äºŽæˆ–等于byteBuffer的剩余空间 + byteBuffer.put(bufArray, 0, len); + } + } + } + + @Override + public void openReader() { + init(); + if (readerThread == null || !readerThread.isAlive()) { + readerThread = new Thread(readerTask, "reader thread"); + stopThread = false; + readerThread.start(); + } + } + + @Override + public void closeReader() { + try { + // å…³é—­çº¿ç¨‹é‡Šæ”¾èµ„æº + shutDownThread(); + release(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + // é‡Šæ”¾èµ„æº + private void release() { + if (originBuf != null) { + originBuf = null; + } + if (remainingBuf != null) { + remainingBuf = null; + } + if (readerThread != null && !readerThread.isAlive()) { + readerThread = null; + } + + try { + if (inputStream != null) + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + inputStream = null; + } + } + + // åˆå§‹åŒ– + private void init() { + inputStream = connectionManager.getInputStream(); + // 没有定义消æ¯åè®® + if (socketOptions.getMessageProtocol() == null) { + originBuf = ByteBuffer.allocate(1024 * 4); + } + } + + @Override + public void setOption(EasySocketOptions socketOptions) { + this.socketOptions = socketOptions; + } + + // 关闭读数æ®çº¿ç¨‹ + private void shutDownThread() throws InterruptedException { + if (readerThread != null && readerThread.isAlive() && !readerThread.isInterrupted()) { + stopThread = true; + readerThread.interrupt(); + readerThread.join(); + } + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/iowork/EasyWriter.java b/easysocket/src/main/java/com/easysocket/connection/iowork/EasyWriter.java new file mode 100644 index 0000000..c7caf75 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/iowork/EasyWriter.java @@ -0,0 +1,146 @@ +package com.easysocket.connection.iowork; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionDispatch; +import com.easysocket.interfaces.io.IWriter; +import com.easysocket.utils.LogUtil; + +import java.io.IOException; +import java.io.OutputStream; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.concurrent.LinkedBlockingDeque; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public class EasyWriter implements IWriter { + + /** + * è¾“å‡ºæµ + */ + private OutputStream outputStream; + + /** + * 连接管ç†å™¨ + */ + private IConnectionManager connectionManager; + /** + * socket傿•° + */ + private EasySocketOptions socketOptions; + /** + * è¡Œä¸ºåˆ†å‘ + */ + private ISocketActionDispatch actionDispatch; + /** + * 写数æ®çº¿ç¨‹ + */ + private Thread writerThread; + /** + * 是å¦åœæ­¢å†™æ•°æ® + */ + private boolean isStop; + /** + * å¾…å†™å…¥æ•°æ® + */ + private LinkedBlockingDeque packetsToSend = new LinkedBlockingDeque<>(); + + public EasyWriter(IConnectionManager connectionManager, ISocketActionDispatch actionDispatch) { + this.connectionManager = connectionManager; + socketOptions = connectionManager.getOptions(); + this.actionDispatch = actionDispatch; + } + + @Override + public void openWriter() { + outputStream = connectionManager.getOutStream(); + if (writerThread == null) { + isStop = false; + writerThread = new Thread(writerTask, "writer thread"); + writerThread.start(); + } + } + + @Override + public void setOption(EasySocketOptions socketOptions) { + this.socketOptions = socketOptions; + } + + /** + * 写任务 + */ + private Runnable writerTask = new Runnable() { + @Override + public void run() { + // å¾ªçŽ¯å†™æ•°æ® + while (!isStop) { + try { + byte[] sender = packetsToSend.take(); + write(sender); + } catch (InterruptedException | IOException e) { + e.printStackTrace(); + } + } + } + }; + + @Override + public void write(byte[] sendBytes) throws IOException { + if (sendBytes != null) { + LogUtil.d("Socketå‘逿•°æ®String-->" + new String(sendBytes, Charset.forName("utf-8"))); + LogUtil.d("Socketå‘逿•°æ®byte[]-->" + Arrays.toString(sendBytes)); + int packageSize = socketOptions.getMaxWriteBytes(); // æ¯æ¬¡å¯ä»¥å‘é€çš„æœ€å¤§æ•°æ® + int remainingCount = sendBytes.length; + ByteBuffer writeBuf = ByteBuffer.allocate(packageSize); + writeBuf.order(socketOptions.getReadOrder()); + int index = 0; + // 如果å‘é€çš„æ•°æ®å¤§äºŽå•次å¯å‘é€çš„æœ€å¤§æ•°æ®ï¼Œåˆ™åˆ†å¤šæ¬¡å‘é€ + while (remainingCount > 0) { + int realWriteLength = Math.min(packageSize, remainingCount); + writeBuf.clear(); // 清空缓存 + writeBuf.rewind(); // å°†positionä½ç½®ç§»åˆ°0 + writeBuf.put(sendBytes, index, realWriteLength); + writeBuf.flip(); + byte[] writeArr = new byte[realWriteLength]; + writeBuf.get(writeArr); + outputStream.write(writeArr); + outputStream.flush(); // å¼ºåˆ¶å†™å…¥ç¼“å­˜ä¸­æ®‹ç•™æ•°æ® + index += realWriteLength; + remainingCount -= realWriteLength; + } + } + } + + @Override + public void offer(byte[] sender) { + if (!isStop) + packetsToSend.offer(sender); + } + + @Override + public void closeWriter() { + try { + if (outputStream != null) + outputStream.close(); + shutDownThread(); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } finally { + outputStream = null; + } + } + + private void shutDownThread() throws InterruptedException { + if (writerThread != null && writerThread.isAlive() && !writerThread.isInterrupted()) { + isStop = true; + writerThread.interrupt(); + writerThread.join(); + writerThread = null; + } + } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/iowork/IOManager.java b/easysocket/src/main/java/com/easysocket/connection/iowork/IOManager.java new file mode 100644 index 0000000..b1bd280 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/iowork/IOManager.java @@ -0,0 +1,98 @@ +package com.easysocket.connection.iowork; + +import com.easysocket.config.EasySocketOptions; +import com.easysocket.interfaces.config.IOptions; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.ISocketActionDispatch; +import com.easysocket.interfaces.io.IIOManager; +import com.easysocket.interfaces.io.IReader; +import com.easysocket.interfaces.io.IWriter; + +/** + * Author:Alex + * Date:2019/5/28 + * Note: + */ +public class IOManager implements IIOManager, IOptions { + /** + * socket行为回调 + */ + private ISocketActionDispatch actionDispatch; + /** + * è¿žæŽ¥ç®¡ç† + */ + private IConnectionManager connectionManager; + /** + * 写 + */ + private IWriter writer; + /** + * 读 + */ + private IReader reader; + + public IOManager(IConnectionManager connectionManager, + ISocketActionDispatch connActionDispatch) { + this.connectionManager = connectionManager; + this.actionDispatch = connActionDispatch; + initIO(); + } + + // åˆå§‹åŒ–io + private void initIO() { + //makesureHeaderProtocolNotEmpty(); + reader = new EasyReader(connectionManager, actionDispatch); // 读 + writer = new EasyWriter(connectionManager, actionDispatch); // 写 + } + + @Override + public void sendBytes(byte[] bytes) { + if (writer != null) + writer.offer(bytes); + } + + @Override + public void startIO() { + if (writer != null) + writer.openWriter(); + if (reader != null) + reader.openReader(); + } + + @Override + public void closeIO() { + if (writer != null) + writer.closeWriter(); + if (reader != null) + reader.closeReader(); + } + + @Override + public Object setOptions(EasySocketOptions socketOptions) { + //makesureHeaderProtocolNotEmpty(); + if (writer != null) + writer.setOption(socketOptions); + if (reader != null) + reader.setOption(socketOptions); + return this; + } + + @Override + public EasySocketOptions getOptions() { + return connectionManager.getOptions(); + } + + /** + * ç¡®ä¿åŒ…结构åè®®ä¸ä¸ºç©º + */ +// private void makesureHeaderProtocolNotEmpty() { +// IMessageProtocol protocol = connectionManager.getOptions().getMessageProtocol(); +// if (protocol == null) { +// throw new NoNullException("The reader protocol can not be Null."); +// } +// +// if (protocol.getHeaderLength() == 0) { +// throw new NoNullException("The header length can not be zero."); +// } +// } +} diff --git a/easysocket/src/main/java/com/easysocket/connection/reconnect/AbsReconnection.java b/easysocket/src/main/java/com/easysocket/connection/reconnect/AbsReconnection.java new file mode 100644 index 0000000..81e77ff --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/reconnect/AbsReconnection.java @@ -0,0 +1,52 @@ +package com.easysocket.connection.reconnect; + +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.interfaces.conn.IReconnListener; +import com.easysocket.interfaces.conn.SocketActionListener; + +/** + * Author:Alex + * Date:2019/5/31 + * Note:抽象é‡è¿žå™¨ + */ +public abstract class AbsReconnection extends SocketActionListener implements IReconnListener { + /** + * 连接管ç†å™¨ + */ + protected IConnectionManager connectionManager; + /** + * socket连接管ç†å™¨æ˜¯å¦å·²é”€æ¯ + */ + protected boolean isDetach; + + + @Override + public synchronized void attach(IConnectionManager iConnectionManager) { + if (!isDetach) { + detach(); + } + isDetach = false; + connectionManager = iConnectionManager; + connectionManager.subscribeSocketAction(this); // 监å¬socket行为 + } + + @Override + public synchronized void detach() { + isDetach = true; + if (connectionManager != null) + connectionManager.unSubscribeSocketAction(this); + } + + @Override + public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) { + // donothing + } + + /** + * æ˜¯å¦æ­£åœ¨é‡è¿ž + * @return + */ + public abstract boolean isReconning(); +} diff --git a/easysocket/src/main/java/com/easysocket/connection/reconnect/DefaultReConnection.java b/easysocket/src/main/java/com/easysocket/connection/reconnect/DefaultReConnection.java new file mode 100644 index 0000000..2ecb355 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/connection/reconnect/DefaultReConnection.java @@ -0,0 +1,148 @@ +package com.easysocket.connection.reconnect; + +import android.os.Handler; +import android.os.HandlerThread; + +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.conn.IConnectionManager; +import com.easysocket.utils.LogUtil; + +/** + * Author:Alex + * Date:2019/5/28 + * Note:默认é‡è¿žå™¨ + */ +public class DefaultReConnection extends AbsReconnection { + /** + * 最大连接失败次数,超过å¯ä»¥åˆ‡æ¢åˆ°å¤‡ç”¨çš„æœåŠ¡å™¨åœ°å€ + */ + private static final int MAX_CONNECTION_FAILED_TIMES = 10; + /** + * 连接失败的次数 + */ + private int connectionFailedTimes = 0; + /** + * é‡è¿žé—´éš”ä¸èƒ½å°äºŽ10秒,为了é¿å…全部客户端socket在åŒä¸€æ—¶é—´è¿žæŽ¥æœåŠ¡ç«¯ï¼Œé—´éš”æ—¶é—´éœ€è¦ä¸Šä¸‹æµ®åЍ50% + */ + private long reconnectTimeDelay = 30 * 1000; + /** + * é‡è¿žçº¿ç¨‹ + */ + private HandlerThread handlerThread; + /** + * 实现延时任务的 handler + */ + private Handler handler; + + public DefaultReConnection() { + } + + @Override + public synchronized void attach(IConnectionManager iConnectionManager) { + super.attach(iConnectionManager); + if (reconnectTimeDelay < connectionManager.getOptions().getConnectTimeout()) { + reconnectTimeDelay = connectionManager.getOptions().getConnectTimeout(); + } + } + + /** + * é‡è¿žä»»åŠ¡ + */ + private final Runnable RcConnTask = new Runnable() { + @Override + public void run() { + LogUtil.d("---> 执行é‡è¿ž"); + if (isDetach) { + shutDown(); + return; + } + // 是å¦å¯è¿žæŽ¥çš„ + if (!connectionManager.isConnectViable()) { + LogUtil.d("当剿¡ä»¶ä¸å…许连接"); + // å°è¯•冿¬¡é‡è¿ž + handler.postDelayed(RcConnTask, (long) (reconnectTimeDelay * (Math.random() + 0.5))); + return; + } + // é‡è¿ž + connectionManager.connect(); + } + }; + + /** + * 进行é‡è¿ž + */ + private void reconnect() { + if (handlerThread == null) { + handlerThread = new HandlerThread("re_conn"); + handlerThread.start(); + handler = new Handler(handlerThread.getLooper()); + } + LogUtil.d("é‡è¿žé—´é𔿗¶é—´-->" + reconnectTimeDelay * (Math.random() + 0.5)); + handler.postDelayed(RcConnTask, (long) (reconnectTimeDelay * (Math.random() + 0.5))); + } + + + // 关闭é‡è¿žçº¿ç¨‹ + private void shutDown() { + if (handlerThread != null && handlerThread.isAlive()) { + handlerThread.quit(); + handlerThread = null; + handler = null; + } + } + + @Override + public boolean equals(Object o) { + // getClass返回Class类型的对象,比较它们的类型对象是å¦==,其实是比较它们是å¦ä¸ºåŒä¸€ä¸ªClass创建的对象 + if (o == null || getClass() != o.getClass()) return false; + return true; + } + + @Override + public void onSocketConnSuccess(SocketAddress socketAddress) { + // 连接æˆåŠŸå…³é—­é‡è¿žçº¿ç¨‹ + shutDown(); + } + + @Override + public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) { + // ä¸éœ€è¦é‡è¿žï¼Œåˆ™å…³é—­é‡è¿žçº¿ç¨‹ + if (!isNeedReconnect) { + shutDown(); + return; + } + connectionFailedTimes++; + + // 如果大于最大连接次数并且有备用host,则轮æµåˆ‡æ¢ä¸¤ä¸ªhost + if (connectionFailedTimes > MAX_CONNECTION_FAILED_TIMES && socketAddress.getBackupAddress() != null) { + connectionFailedTimes = 0; // å½’é›¶ + SocketAddress backupAddress = socketAddress.getBackupAddress(); + SocketAddress nowAddress = new SocketAddress(socketAddress.getIp(), socketAddress.getPort()); + backupAddress.setBackupAddress(nowAddress); + if (connectionManager.isConnectViable()) { + connectionManager.switchHost(backupAddress); + // 切æ¢ä¸»æœºåœ°å€ï¼Œé‡æ–°è¿žæŽ¥ + reconnect(); + } + } else { + reconnect(); + } + + } + + @Override + public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) { + // 是å¦éœ€è¦é‡è¿ž + if (!isNeedReconnect) { + shutDown(); + return; + } + reconnect(); + } + + @Override + public boolean isReconning() { + return handlerThread != null && handlerThread.isAlive(); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/entity/OriginReadData.java b/easysocket/src/main/java/com/easysocket/entity/OriginReadData.java new file mode 100644 index 0000000..da184c6 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/OriginReadData.java @@ -0,0 +1,58 @@ +package com.easysocket.entity; + +import com.easysocket.EasySocket; +import com.easysocket.utils.Utils; + +import java.io.Serializable; +import java.nio.charset.Charset; + +/** + * Author:Alex + * Date:2019/6/1 + * Noteï¼šè¯»åˆ°çš„æ•°æ® + */ +public class OriginReadData implements Serializable { + + /** + * åŒ…å¤´æ•°æ® + */ + private byte[] headerData; + /** + * åŒ…ä½“æ•°æ® + */ + private byte[] bodyData; + + public byte[] getHeaderData() { + return headerData; + } + + public void setHeaderData(byte[] headerData) { + this.headerData = headerData; + } + + public byte[] getBodyBytes() { + return bodyData; + } + + public void setBodyData(byte[] bodyData) { + this.bodyData = bodyData; + } + + /** + * èŽ·å–æ•°æ®bodyçš„string + * + * @return + */ + public String getBodyString() { + return new String(getBodyBytes(), Charset.forName(EasySocket.getInstance().getDefOptions().getCharsetName())); + } + + /** + * 获å–完整的数æ®ï¼ŒåŒ…括包头和包体 + * + * @return + */ + public byte[] getOriginDataBytes() { + return Utils.concatBytes(getHeaderData(), getBodyBytes()); + } +} diff --git a/easysocket/src/main/java/com/easysocket/entity/SocketAddress.java b/easysocket/src/main/java/com/easysocket/entity/SocketAddress.java new file mode 100644 index 0000000..a4187eb --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/SocketAddress.java @@ -0,0 +1,54 @@ +package com.easysocket.entity; + +/** + * Author:Alex + * Date:2019/5/31 + * Note:socketä¸»æœºåœ°å€ + */ +public class SocketAddress { + + /** + * IPV4åœ°å€ + */ + private String ip; + /** + * 连接æœåŠ¡å™¨ç«¯å£å· + */ + private int port; + /** + * 当此IP地å€Pingä¸é€šæ—¶çš„备用IP + */ + private SocketAddress backupAddress; + + /** + * 获å–备用的Ip和端å£å· + * + * @return 备用的端å£å·å’ŒIPåœ°å€ + */ + public SocketAddress getBackupAddress() { + return backupAddress; + } + + /** + * 设置备用的IP和端å£å·,å¯ä»¥ä¸è®¾ç½® + * + * @param backupAddress 备用的IP和端å£å·ä¿¡æ¯ + */ + public void setBackupAddress(SocketAddress backupAddress) { + this.backupAddress = backupAddress; + } + + public SocketAddress(String ip, int port){ + this.ip =ip; + this.port =port; + } + + public String getIp() { + return ip; + } + + public int getPort() { + return port; + } + +} diff --git a/easysocket/src/main/java/com/easysocket/entity/basemsg/IResponse.java b/easysocket/src/main/java/com/easysocket/entity/basemsg/IResponse.java new file mode 100644 index 0000000..9e08c7c --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/basemsg/IResponse.java @@ -0,0 +1,9 @@ +package com.easysocket.entity.basemsg; + +/** + * Author:Alex + * Date:2019/12/8 + * Note: + */ +public interface IResponse { +} diff --git a/easysocket/src/main/java/com/easysocket/entity/basemsg/ISender.java b/easysocket/src/main/java/com/easysocket/entity/basemsg/ISender.java new file mode 100644 index 0000000..4f34083 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/basemsg/ISender.java @@ -0,0 +1,11 @@ +package com.easysocket.entity.basemsg; + +import java.io.Serializable; + +/** + * Author:Alex + * Date:2019/6/1 + * Note:å‘逿•°æ®çš„æŽ¥å£ + */ +public interface ISender extends Serializable { +} diff --git a/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackResponse.java b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackResponse.java new file mode 100644 index 0000000..7bdb330 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackResponse.java @@ -0,0 +1,13 @@ +package com.easysocket.entity.basemsg; + +/** + * Author:Alex + * Date:2019/12/7 + */ +public abstract class SuperCallbackResponse implements IResponse { + + public abstract String getCallbackId(); + + public abstract void setCallbackId(String callbackId); + +} diff --git a/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackSender.java b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackSender.java new file mode 100644 index 0000000..2f1480d --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperCallbackSender.java @@ -0,0 +1,36 @@ +package com.easysocket.entity.basemsg; + +import com.easysocket.utils.Utils; + +/** + * Author:Alex + * Date:2019/10/19 + */ +public abstract class SuperCallbackSender extends SuperSender { + + private String callbackId; + + public SuperCallbackSender() { + generateCallbackId(); + } + + public String getCallbackId() { + return callbackId; + } + + /** + * æ ¹æ®è‡ªå·±çš„åè®®æ‰“åŒ…æ¶ˆæ¯ + * + * @return + */ + public abstract byte[] pack(); + + /** + * éšæœºç”Ÿæˆä¸€ä¸ªå›žè°ƒæ ‡è¯† CallbackId,在消æ¯å‘é€å‰æ‰§è¡Œï¼ŒCallbackId作为消æ¯çš„唯一标识一起传给æœåŠ¡å™¨ï¼ŒæœåС噍å馈 + * 当剿¶ˆæ¯çš„æ—¶å€™ä¹Ÿæ˜¯æºå¸¦åŒæ ·çš„CallbackId给客户端,用以识别 + */ + public void generateCallbackId() { + callbackId= Utils.getRandomChar(20); + } +} + diff --git a/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperSender.java b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperSender.java new file mode 100644 index 0000000..e700263 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/entity/basemsg/SuperSender.java @@ -0,0 +1,9 @@ +package com.easysocket.entity.basemsg; + +/** + * Author:Alex + * Date:2019/10/19 + * Noteï¼šåŸºç¡€æ¶ˆæ¯ + */ +public class SuperSender implements ISender { +} diff --git a/easysocket/src/main/java/com/easysocket/exception/InitialExeption.java b/easysocket/src/main/java/com/easysocket/exception/InitialExeption.java new file mode 100644 index 0000000..772306d --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/InitialExeption.java @@ -0,0 +1,12 @@ +package com.easysocket.exception; + +/** + * Author:Alex + * Date:2019/6/5 + * Note:åˆå§‹åŒ–异常 + */ +public class InitialExeption extends RuntimeException{ + public InitialExeption(String s){ + super(s); + } +} diff --git a/easysocket/src/main/java/com/easysocket/exception/NotNullException.java b/easysocket/src/main/java/com/easysocket/exception/NotNullException.java new file mode 100644 index 0000000..dc5092e --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/NotNullException.java @@ -0,0 +1,12 @@ +package com.easysocket.exception; + +/** + * Author:Alex + * Date:2019/6/5 + * Note:éžç©ºå¼‚常 + */ +public class NotNullException extends RuntimeException { + public NotNullException(String e) { + super(e); + } +} diff --git a/easysocket/src/main/java/com/easysocket/exception/ReadRecoverableExeption.java b/easysocket/src/main/java/com/easysocket/exception/ReadRecoverableExeption.java new file mode 100644 index 0000000..ad70ee2 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/ReadRecoverableExeption.java @@ -0,0 +1,13 @@ +package com.easysocket.exception; + +/** + * Author:Alex + * Date:2019/6/5 + * Noteï¼šå¯æ¢å¤socket读数æ®å¼‚常 + */ +public class ReadRecoverableExeption extends Exception { + + public ReadRecoverableExeption(String s){ + super(s); + } +} diff --git a/easysocket/src/main/java/com/easysocket/exception/ReadUnrecoverableException.java b/easysocket/src/main/java/com/easysocket/exception/ReadUnrecoverableException.java new file mode 100644 index 0000000..26c1956 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/ReadUnrecoverableException.java @@ -0,0 +1,12 @@ +package com.easysocket.exception; + +/** + * Author:Mapogo + * Date:2020/12/29 + * Note:ä¸å¯ä¿®å¤çš„读å–错误 + */ +public class ReadUnrecoverableException extends Exception { + public ReadUnrecoverableException(String s) { + super(s); + } +} diff --git a/easysocket/src/main/java/com/easysocket/exception/RequestCancelException.java b/easysocket/src/main/java/com/easysocket/exception/RequestCancelException.java new file mode 100644 index 0000000..f899342 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/RequestCancelException.java @@ -0,0 +1,13 @@ +package com.easysocket.exception; + +/** + * Author:Alex + * Date:2019/6/4 + * Noteï¼šè¯·æ±‚å–æ¶ˆå¼‚常 + */ +public class RequestCancelException extends Exception{ + + public RequestCancelException(String s){ + super(s); + } +} diff --git a/easysocket/src/main/java/com/easysocket/exception/RequestTimeOutException.java b/easysocket/src/main/java/com/easysocket/exception/RequestTimeOutException.java new file mode 100644 index 0000000..51768ae --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/exception/RequestTimeOutException.java @@ -0,0 +1,13 @@ +package com.easysocket.exception; + +/** + * Author:Alex + * Date:2019/6/4 + * Note:请求超时异常 + */ +public class RequestTimeOutException extends Exception{ + + public RequestTimeOutException(String s){ + super(s); + } +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/callback/ICallBack.java b/easysocket/src/main/java/com/easysocket/interfaces/callback/ICallBack.java new file mode 100644 index 0000000..5c48e23 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/callback/ICallBack.java @@ -0,0 +1,18 @@ +package com.easysocket.interfaces.callback; + +import com.easysocket.callback.SuperCallBack; + +/** + * Author:Alex + * Date:2019/6/5 + * Note: + */ +public interface ICallBack { + /** + * socket请求回调 + * @param callBack + */ + void onCallBack(SuperCallBack callBack); + + +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/callback/IProgressDialog.java b/easysocket/src/main/java/com/easysocket/interfaces/callback/IProgressDialog.java new file mode 100644 index 0000000..3e66dae --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/callback/IProgressDialog.java @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2017 zhouyou(478319399@qq.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.easysocket.interfaces.callback; + +import android.app.Dialog; + +/** + *

    æè¿°ï¼šè‡ªå®šä¹‰å¯¹è¯æ¡†çš„dialog

    + */ +public interface IProgressDialog { + Dialog getDialog(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/callback/IType.java b/easysocket/src/main/java/com/easysocket/interfaces/callback/IType.java new file mode 100644 index 0000000..4193247 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/callback/IType.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2017 zhouyou(478319399@qq.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.easysocket.interfaces.callback; + +import java.lang.reflect.Type; + +/** + *

    æè¿°ï¼šèŽ·å–类型接å£

    + */ +public interface IType { + + Type getType(); + + Class getGenericityClazz(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/callback/ProgressCancelListener.java b/easysocket/src/main/java/com/easysocket/interfaces/callback/ProgressCancelListener.java new file mode 100644 index 0000000..c64e9f5 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/callback/ProgressCancelListener.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2017 zhouyou(478319399@qq.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.easysocket.interfaces.callback; + +/** + *

    æè¿°ï¼šè¿›åº¦æ¡†å–消监å¬

    + */ +public interface ProgressCancelListener { + void onCancelProgress(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/config/IConnectionSwitchListener.java b/easysocket/src/main/java/com/easysocket/interfaces/config/IConnectionSwitchListener.java new file mode 100644 index 0000000..1260c5d --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/config/IConnectionSwitchListener.java @@ -0,0 +1,13 @@ +package com.easysocket.interfaces.config; + +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.conn.IConnectionManager; + +/** + * Author:Alex + * Date:2019/6/4 + * Note: + */ +public interface IConnectionSwitchListener { + void onSwitchConnectionInfo(IConnectionManager manager, SocketAddress oldAddress, SocketAddress newAddress); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/config/IMessageProtocol.java b/easysocket/src/main/java/com/easysocket/interfaces/config/IMessageProtocol.java new file mode 100644 index 0000000..0808511 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/config/IMessageProtocol.java @@ -0,0 +1,20 @@ +package com.easysocket.interfaces.config; + +import java.nio.ByteOrder; + +/** + * æ¶ˆæ¯æ•°æ®æ ¼å¼ + */ +public interface IMessageProtocol { + + /** + * 获å–包头的长度 + */ + int getHeaderLength(); + + /** + * èŽ·å–æ•°æ®åŒ…体的长度,根æ®åè®®è¿™ä¸ªé•¿åº¦åº”è¯¥å†™åœ¨åŒ…å¤´ä¸­ï¼Œåœ¨è¯»å–æ•°æ®æ—¶ç”¨åˆ° + */ + int getBodyLength(byte[] header, ByteOrder byteOrder); + +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/config/IOptions.java b/easysocket/src/main/java/com/easysocket/interfaces/config/IOptions.java new file mode 100644 index 0000000..f732839 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/config/IOptions.java @@ -0,0 +1,22 @@ +package com.easysocket.interfaces.config; + +import com.easysocket.config.EasySocketOptions; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface IOptions { + /** + * 设置é…ç½®ä¿¡æ¯ + * @param socketOptions + */ + T setOptions(EasySocketOptions socketOptions); + + /** + * 获å–é…ç½®ä¿¡æ¯ + * @return + */ + EasySocketOptions getOptions(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/IConnectionManager.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/IConnectionManager.java new file mode 100644 index 0000000..94d88ed --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/IConnectionManager.java @@ -0,0 +1,65 @@ +package com.easysocket.interfaces.conn; + +import com.easysocket.entity.SocketAddress; +import com.easysocket.interfaces.callback.ICallBack; +import com.easysocket.interfaces.config.IOptions; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Author:Alex + * Date:2019/5/29 + * Note:连接管ç†çš„æŽ¥å£è§„范 + */ +public interface IConnectionManager extends ISubscribeSocketAction, IOptions,ISend, ICallBack { + /** + * 开始连接 + */ + void connect(); + + /** + * 关闭连接 + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + */ + void disconnect(boolean isNeedReconnect); + + + /** + * 获å–socketè¿žæŽ¥çŠ¶æ€ + * @return + */ + int getConnectionStatus(); + + /** + * 是å¦å¯è¿žæŽ¥çš„ + * @return + */ + boolean isConnectViable(); + + /** + * 切æ¢host + * @param socketAddress + */ + void switchHost(SocketAddress socketAddress); + + /** + * 获å–è¾“å…¥æµ + * @return + */ + InputStream getInputStream(); + + /** + * 获å–è¾“å‡ºæµ + * @return + */ + OutputStream getOutStream(); + + /** + * 获å–心跳管ç†å™¨ + * @return + */ + IHeartManager getHeartManager(); + + +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/IHeartManager.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/IHeartManager.java new file mode 100644 index 0000000..5bbad47 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/IHeartManager.java @@ -0,0 +1,28 @@ +package com.easysocket.interfaces.conn; + +import com.easysocket.connection.heartbeat.HeartManager; + +/** + * Author:Alex + * Date:2019/12/8 + * Note: + */ +public interface IHeartManager { + + /** + * 开始心跳 + * @param clientHeart + */ + void startHeartbeat(byte[] clientHeart, HeartManager.HeartbeatListener listener); + + /** + * åœæ­¢å¿ƒè·³ + */ + void stopHeartbeat(); + + + /** + * 接收到心跳 + */ + void onReceiveHeartBeat(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/IReconnListener.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/IReconnListener.java new file mode 100644 index 0000000..ed48ac1 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/IReconnListener.java @@ -0,0 +1,20 @@ +package com.easysocket.interfaces.conn; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface IReconnListener { + + /** + * å…³è”连接器 + * @param iConnectionManager + */ + void attach(IConnectionManager iConnectionManager); + + /** + * 分离连接器 + */ + void detach(); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/ISend.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISend.java new file mode 100644 index 0000000..c9cd772 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISend.java @@ -0,0 +1,25 @@ +package com.easysocket.interfaces.conn; + +import com.easysocket.entity.basemsg.SuperCallbackSender; + +/** + * Author:Alex + * Date:2019/6/5 + * Note:å‘é€æŽ¥å£ + */ +public interface ISend { + + /** + * å‘é€ä¸€ä¸ªæœ‰å›žè°ƒçš„æ¶ˆæ¯ + * @param sender + * @return + */ + IConnectionManager upCallbackMessage(SuperCallbackSender sender); + + /** + * å‘é€bytes + * @param bytes + * @return + */ + IConnectionManager upBytes(byte[] bytes); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionDispatch.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionDispatch.java new file mode 100644 index 0000000..c028978 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionDispatch.java @@ -0,0 +1,38 @@ +package com.easysocket.interfaces.conn; + +import java.io.Serializable; + +/** + * Author:Alex + * Date:2019/6/1 + * Note:socketè¡Œä¸ºåˆ†å‘æŽ¥å£ + */ +public interface ISocketActionDispatch { + /** + * åœæ­¢åˆ†å‘线程 + */ + void stopDispatchThread(); + + void startDispatchThread(); + + void dispatchAction(String action); + + /** + * socketè¡Œä¸ºçš„åˆ†å‘ + * @param action + * @param serializable + */ + void dispatchAction(String action, Serializable serializable); + + /** + * 订阅socket行为 + * @param iSocketActionListener + */ + void subscribe(ISocketActionListener iSocketActionListener); + + /** + * 解除socket行为的订阅 + * @param iSocketActionListener + */ + void unsubscribe(ISocketActionListener iSocketActionListener); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionListener.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionListener.java new file mode 100644 index 0000000..82ecb60 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISocketActionListener.java @@ -0,0 +1,52 @@ +package com.easysocket.interfaces.conn; + +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; + +/** + * Author:Alex + * Date:2019/6/1 + * Note:socketè¡Œä¸ºç›‘å¬æŽ¥å£ + */ +public interface ISocketActionListener { + /** + * socket连接æˆåŠŸ + * @param socketAddress + */ + void onSocketConnSuccess(SocketAddress socketAddress); + + /** + * socket连接失败 + * @param socketAddress + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + */ + void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect); + + /** + * æ–­å¼€socket连接 + * @param socketAddress + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + */ + void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect); + + /** + * socketæ•°æ®å“应 + * @param socketAddress + * @param originReadData + */ + void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData); + + /** + * socketæ•°æ®å“应 + * @param socketAddress + * @param readData + */ + void onSocketResponse(SocketAddress socketAddress, String readData); + + /** + * socketæ•°æ®å“应 + * @param socketAddress + * @param readData + */ + void onSocketResponse(SocketAddress socketAddress, byte[] readData); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/ISubscribeSocketAction.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISubscribeSocketAction.java new file mode 100644 index 0000000..27fc89e --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/ISubscribeSocketAction.java @@ -0,0 +1,20 @@ +package com.easysocket.interfaces.conn; + +/** + * Author:Alex + * Date:2019/6/1 + * Note:订阅监å¬socket + */ +public interface ISubscribeSocketAction { + /** + * 注册监å¬socket的行为 + * @param iSocketActionListener + */ + void subscribeSocketAction(ISocketActionListener iSocketActionListener); + + /** + * 注销监å¬socket的行为 + * @param iSocketActionListener + */ + void unSubscribeSocketAction(ISocketActionListener iSocketActionListener); +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/conn/SocketActionListener.java b/easysocket/src/main/java/com/easysocket/interfaces/conn/SocketActionListener.java new file mode 100644 index 0000000..a63a874 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/conn/SocketActionListener.java @@ -0,0 +1,57 @@ +package com.easysocket.interfaces.conn; + +import com.easysocket.entity.OriginReadData; +import com.easysocket.entity.SocketAddress; + +/** + * Author:Alex + * Date:2019/6/4 + * Note:socket行为监å¬çš„æŠ½è±¡ç±»ï¼Œç»§æ‰¿æ­¤ç±»å¯ä»¥é€‰æ‹©æ€§åœ°é‡å†™æ–¹æ³• + */ +public abstract class SocketActionListener implements ISocketActionListener{ + /** + * socket连接æˆåŠŸ + * @param socketAddress + */ + @Override + public void onSocketConnSuccess(SocketAddress socketAddress) { + + } + /** + * socket连接失败 + * @param socketAddress + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + */ + @Override + public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) { + + } + /** + * æ–­å¼€socket连接 + * @param socketAddress + * @param isNeedReconnect 是å¦éœ€è¦é‡è¿ž + */ + @Override + public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) { + + } + /** + * socket读数æ®å馈 + * @param socketAddress + * @param originReadData + */ + @Override + public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) { + + } + + @Override + public void onSocketResponse(SocketAddress socketAddress, byte[] readData) { + + } + + @Override + public void onSocketResponse(SocketAddress socketAddress, String readData) { + + } +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/io/IIOManager.java b/easysocket/src/main/java/com/easysocket/interfaces/io/IIOManager.java new file mode 100644 index 0000000..3cdf538 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/io/IIOManager.java @@ -0,0 +1,27 @@ +package com.easysocket.interfaces.io; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface IIOManager { + + /** + * å‘é€å­—èŠ‚æµ + * + * @param bytes + */ + void sendBytes(byte[] bytes); + + /** + * 关闭io管ç†å™¨ + */ + void closeIO(); + + /** + * å¼€å¯ioæ“作 + */ + void startIO(); + +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/io/IReader.java b/easysocket/src/main/java/com/easysocket/interfaces/io/IReader.java new file mode 100644 index 0000000..3104c06 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/io/IReader.java @@ -0,0 +1,32 @@ +package com.easysocket.interfaces.io; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface IReader { + + /** + * è¯»æ•°æ® + */ + void read() throws Exception; + + /** + * 打开数æ®çš„è¯»å– + */ + void openReader(); + + /** + * 关闭数æ®çš„è¯»å– + */ + void closeReader(); + + /** + * è®¾ç½®å‚æ•° + * @param t + */ + void setOption(T t); + + +} diff --git a/easysocket/src/main/java/com/easysocket/interfaces/io/IWriter.java b/easysocket/src/main/java/com/easysocket/interfaces/io/IWriter.java new file mode 100644 index 0000000..644e7f5 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/interfaces/io/IWriter.java @@ -0,0 +1,38 @@ +package com.easysocket.interfaces.io; + +import java.io.IOException; + +/** + * Author:Alex + * Date:2019/6/1 + * Note: + */ +public interface IWriter { + /** + * ä¿å­˜è¦å†™çš„æ•°æ® + */ + void offer(byte[] sender); + + /** + * å†™æ•°æ® + * @param sender + */ + void write(byte[] sender) throws IOException; + + /** + * 关闭stream + */ + void closeWriter(); + + /** + * å¼€å¯å†™æ•°æ® + */ + void openWriter(); + + /** + * è®¾ç½®å‚æ•° + * @param t + */ + void setOption(T t); + +} diff --git a/easysocket/src/main/java/com/easysocket/utils/LogUtil.java b/easysocket/src/main/java/com/easysocket/utils/LogUtil.java new file mode 100644 index 0000000..df549bf --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/utils/LogUtil.java @@ -0,0 +1,87 @@ +package com.easysocket.utils; +import android.util.Log; + +import com.easysocket.EasySocket; + + +public class LogUtil { + public static final String LOGTAG = "easysocket"; + public static boolean debugEnabled = EasySocket.getInstance().getDefOptions().isDebug(); + + public LogUtil() { + } + + private static String getDebugInfo() { + Throwable stack = new Throwable().fillInStackTrace(); + StackTraceElement[] trace = stack.getStackTrace(); + int n = 2; + return trace[n].getClassName() + " " + trace[n].getMethodName() + "()" + ":" + trace[n].getLineNumber() + + " "; + } + + private static String getLogInfoByArray(String[] infos) { + StringBuilder sb = new StringBuilder(); + for (String info : infos) { + sb.append(info); + sb.append(" "); + } + return sb.toString(); + } + + public static void i(String... s) { + if (debugEnabled) { + i(LOGTAG, getDebugInfo() + getLogInfoByArray(s)); + } + } + + public static void e(Throwable tr) { + if (debugEnabled) { + Log.e(LOGTAG, getDebugInfo() ,tr); + } + } + + public static void e(String... s) { + if (debugEnabled) { + e(LOGTAG, getDebugInfo() + getLogInfoByArray(s)); + } + } + + public static void d(String... s) { + if (debugEnabled) { + d(LOGTAG, getDebugInfo() + getLogInfoByArray(s)); + } + } + + public static void v(String... s) { + if (debugEnabled) { + v(LOGTAG, getDebugInfo() + getLogInfoByArray(s)); + } + } + + public static void w(String... s) { + if (debugEnabled) { + w(LOGTAG, getDebugInfo() + getLogInfoByArray(s)); + } + } + + private static void i(String name, String log) { + System.out.println(name + ":" + log); + } + + private static void d(String name, String log) { + System.out.println(name + ":" + log); + } + + private static void v(String name, String log) { + System.out.println(name + ":" + log); + } + + private static void e(String name, String log) { + System.err.println(name + ":" + log); + } + + private static void w(String name, String log) { + System.err.println(name + ":" + log); + } + +} diff --git a/easysocket/src/main/java/com/easysocket/utils/Utils.java b/easysocket/src/main/java/com/easysocket/utils/Utils.java new file mode 100644 index 0000000..10d97c5 --- /dev/null +++ b/easysocket/src/main/java/com/easysocket/utils/Utils.java @@ -0,0 +1,149 @@ +package com.easysocket.utils; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.Handler; +import android.os.Looper; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.lang.reflect.TypeVariable; +import java.util.Random; + +/** + * Created by LXR ON 2018/8/30. + */ +public class Utils { + + /** + * èŽ·å–æ³›åž‹å‚数的类型 + * + * @param + * @return + */ + public static Type findGenericityType(Class cls) { + Type genType = cls.getGenericSuperclass(); //è¿”å›žç›´æŽ¥ç»§æ‰¿çš„çˆ¶ç±»ï¼ˆåŒ…å«æ³›åž‹å‚数)类型,如果有泛型T,也è¦åŒ…括进去 + //getActualTypeArguments èŽ·å–æ³›åž‹ä¸­çš„实际类型,比如Map中的String类型 + Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); + Type type = params[0]; //泛型的实际类型 + Type finalNeedType; + if (type instanceof ParameterizedType) { //äºŒçº§æ³›åž‹ï¼Œè¿™é‡Œå°±å¤„ç†æœ€å¤šäºŒçº§å§ï¼Œå½¢å¦‚ A>,两个<> + finalNeedType = ((ParameterizedType) type).getActualTypeArguments()[0]; + } else { // 一级泛型,形如A + finalNeedType = type; + } + //如果泛型类型还是å˜é‡ç±»åž‹ï¼Œæ¯”如Tã€Vä¹‹ç±»çš„ï¼Œä»£è¡¨æ²¡æœ‰å¡«å†™æ³›åž‹å‚æ•° + if (finalNeedType instanceof TypeVariable) throw new IllegalStateException("æ²¡æœ‰å¡«å†™æ³›åž‹å‚æ•°"); + return finalNeedType; + } + + /** + * 字符串是å¦ä¸ºç©º + * + * @param str + * @return + */ + public static boolean isStringEmpty(String str) { + return str == null || str.trim().length() == 0; + } + + /** + * 生æˆéšæœºå­—ç¬¦ä¸² + * + * @param length + * @return + */ + public static String getRandomChar(int length) { + char[] chr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + Random random = new Random(); + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < length; i++) { + buffer.append(chr[random.nextInt(36)]); + } + return buffer.toString(); + } + + + /** + * 获å–handler对象 + * + * @param isMainHandler 是å¦ä¸ºä¸»çº¿ç¨‹çš„handler,为false时返回的是当å‰çº¿ç¨‹handler + * @return + */ + public static Handler getHandler(boolean isMainHandler) { + Handler handler; + if (isMainHandler) { + handler = new Handler(Looper.getMainLooper()); + } else { + Looper.prepare(); + handler = new Handler(); + } + return handler; + } + + /** + * ç¡çœ å¤šå°‘毫秒 + * + * @param milliSecond 毫秒 + */ + public static void sleep(long milliSecond) { + try { + Thread.sleep(milliSecond); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + /** + * éžç©ºæ£€æŸ¥ + * + * @param object + * @param emsg + * @throws + */ + public static void checkNotNull(Object object, String emsg) { + try { + if (object == null) { + throw new Exception(emsg); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void throwNotNull(Object object, String emsg) throws Exception { + if (object == null) { + throw new Exception(emsg); + } + } + + // 判断是å¦è¿žæŽ¥ç½‘络 + public static boolean isNetConnected(Context context) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo info = cm.getActiveNetworkInfo(); + return info != null && info.isConnected(); + } + + /** + * 拼接两个byte[] + * + * @param + * @param + * @return + */ + public static byte[] concatBytes(byte[] bt1, byte[] bt2) { + if (bt1 == null) { + return bt2; + } + if (bt2 == null) { + return bt1; + } + byte[] bt3 = new byte[bt1.length + bt2.length]; + System.arraycopy(bt1, 0, bt3, 0, bt1.length); + System.arraycopy(bt2, 0, bt3, bt1.length, bt2.length); + return bt3; + } + +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..9814e49 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,40 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +# 表示使用 AndroidX +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official + +# 表示将第三方库è¿ç§»åˆ° AndroidX +android.enableJetifier = true +android.nonTransitiveRClass=false +android.nonFinalResIds=false + +#mapbox key +MAPBOX_DOWNLOADS_TOKEN=sk.eyJ1Ijoic2hhbnJlbnRlY2giLCJhIjoiY2t5bndlZnNuMDdjajJvcjBzOTcxcnVvbiJ9.VR_gh0uqZNVyUN92aACCiQ +MAPBOX_ACCESS_TOKEN=pk.eyJ1Ijoic2hhbnJlbnRlY2giLCJhIjoiY2t5bzNnNm41MWQyZzJubjd4NzN6MXJnMyJ9.NPjPb__sEUug9PK4L0hlSA +GOOGLE_MAP_KEY=AIzaSyCFEqlOoo2274NsX7tzoQjs_DA7B9N7-gY +BAIDU_MAP_KEY=YT2CmlqAkpMyzmw1AKNIBlYlBtHESEaW +BUGLY_KEY=06fc0a9cd1 +#http请求头部加密key +HTTP_REQUEST_KEY=8989JUIMSKHKehmasdfWEkjhf!*jfsadf8453 + +#stripe支付 +STRIPE_TEST_KEY=pk_test_51N0gBGCUI9XSagUNC3i1ZTiavE2pncKF3cBPWCu4p0OWowHNh22P1xeEpowp6TUNEeFNfv4OEHmLyj7sihmNuSQl00x2pvl4xH +STRIPE_RELEASE_KEY=pk_live_51N0gBGCUI9XSagUNNDNWc77OdwDWXVSGIdf8WHjvGfe5plUOfs7eq7uyTEQ3ma1xXHlavwInuw9WZOJQ6Z9FVjLq00VsFpc1Rv + +android.suppressUnsupportedCompileSdk=34 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

    <5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1777881 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Jul 21 17:24:42 CST 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..68f8054 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = "Tracker" +include ':app' +include ':baselibrary' +include ':easyPhotos' +include ':FastBleLib' +include ':easysocket' +//include ':ebiketracker'

    mcrpRRU4*%^p^l{BzlZPuDYWnn>@_ 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%0AjqWzM{giMI>kYZD8WZV9m0l5I(+43_ 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/gif_shake_on.gif b/app/src/main/res/drawable/gif_shake_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..47049024bc35c0cf737317febcaf97f2cf8d8f2c GIT binary patch literal 282215 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 IM6N<$f{$G$ssI20 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_map_battery_low.png b/app/src/main/res/drawable-xxhdpi/ico_map_battery_low.png new file mode 100644 index 0000000000000000000000000000000000000000..fe46c48d6bd0a98f64b6a2c2f845611ac6b4fa23 GIT binary patch literal 1196 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_map_google.png b/app/src/main/res/drawable-xxhdpi/ico_map_google.png new file mode 100644 index 0000000000000000000000000000000000000000..f6f3a1dbea5b3164bbfbec70e1c8ac523c9a42d6 GIT binary patch literal 14297 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 Hu0mjfqGiKk literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_map_gps.png b/app/src/main/res/drawable-xxhdpi/ico_map_gps.png new file mode 100644 index 0000000000000000000000000000000000000000..7d220d31b6934196524331ff49d6faebbe4ec7f5 GIT binary patch literal 2218 zcmV;b2vzrqP)GuR!@CDt2TNN+4+*4P+fsL$d}Rleb_sho1) zp%wX@?~Ofr4e0s1W`*qZ5Q z@3Qe+@5&qI{cmf@z8qr~uoSotuu}7cbHJmaJZd`1*$#o0Rx%i2Cqk}!ASO*XsKVpd z{>%sAFiv+sCdY)sShq}Mgsp5-$n(rq5e})%+@b<5rCYOOpjA8pyx{eu2(=Bj@=$mz z*Sw2`EAaR8Gf36-{P4uPvm%^txJF%gdYkbl@%Oz-1FVW$Z9 zw*-re;&9*c0zPUBHmyfXs#quRv}f>Vz>>zJ?DB@Yq=rYu;aOlv8_#(6G3jwZgw>${ zzw@R+&N${-7QgTuyC%mrgo3Q<5@=Zk12vnYz*kaVDjdGeN5P_8n#?noR~;6L!%MC5 zxATNGdAO*-$Bv}*+q|0`djORvlRQ)Zl_QLQBEYBK<=T0)B*Ih?UI7MpLh^7Z$lm1d zl4>T2vdhZ`rdl0!k4aZ8sWRHK7--nTljnwG=Y|S6oP1VxkXdT8#{=q9wU}R=N2F7r zWmP<-uo1{iY*?2a;9Ch#i4%%o=pPB+KMTlHb_a)0FfBA#_Jza{HMEE*FL`Vs0 zTa_ur`EDJ!R$9#(l%IL#+X`0&nt@M5*d(P9E+Pz0w@JdKi;DvMCi%W3!aNav?-~EL zMwwMSjSFdk{*fV)<>vReRFoVRh6>n`@@Ry`D*UP=46c?aiEya{(U6RNE1+c&=BWp$ zz;P$a%o_oUFs~@!7Gu(*kD>g!LuX+^U(EtlmH~GGM*Q~msC1L0Yl{M`^LTWE2yc1D zT-FSN#ku?~-A0=Za*rLO%Hxcf1(TKsIiB)p6;CTId&FfchPw?1pAm=6VmL9UnZcP3 z{-}=}pRgKjDIO7C4FxDnF1r3tjPPYpBQPozO4!?Ql-cQu$v=_TESTY;srMvGFf@&` z9-zAv=A=GUsIV;7*fFjtG>*K=#dbVeR?U;Dly*cK$Rp^&{-;fhaMJ$pwYg#rduXcg-9I{_)Ha;YHvUPxQ)*gKlxRvb5^S zT+dj-se~$uhhI5CjQPb=c|W;=In_>AGtQ?hM0fxg={X2&gfr?;YbmcZWO2-U54FCU zQ9fmdz&AaJE|bOmMN{~oTR_dA(ze3cP=#=)u|Lz(3TKN!YB5wZxl2GS;lpT@^BER( z$#XsB&6D{3S9nt(7jqgW%z@$+LAQ|GS*NXt_}Ha!6`mR=P@`FVzp<9HJ!wV!lNc$= zHq?!PC*mBA3Uk`#W~Vut2(@gA5O6GBmbT5EZ~|rPpiEv*YSeUI@IL!x1^)Uz%u@J~ zz*w&*fpg-pXn8)>H{9I032*K^o0(3WuG(JNn3LnLIBahGjLL8!(R5(LwPg2=G6T!) z!Nz#id_4JyS}^;+ne6ZEF11@15Ty}js_=7(^Je=w!Ua|L=Hp$23j#jdb_?=ugvr2d zX+FZR?Ky-cMR`MJ?X2 zgcm}2ErO)GU)pVtrdx3H0S3e@w}S5$2ml41aq){>;e^=yGb@LaODAKrK#%MT0rl=! zUc>Fmc(;*4 s-?{1jzHvJRn>m&d-KLS~RNR5Fw@WQYcp=E2ZhQb|RHR6>!GnJ7`o5Hd7SswJ5cl0+I% zNu;o?Pwi)2r+a_z-Sh6d_rCXgd#&I455GH{bH4ZNv(Mh&y^m>%#NBTzX(dT}NP32( zdq}bty6`ti=StdF(y3GrjI+RP0%N!r!S-rLOMCjXQ< z!1cy>4sgBks&}=!?;`1)l5SVH^IwvFB28HzE-rxG{f?6EDd|cx^Ckzl>{)Yw>yL2u8tm=> z`+-nnM_}DfdVjc>0Cx8mOJbS$rKHo$>_7G4&2$pD`@JQ7Nz#gim-6qe&Fu1=hKzF0 zVgT6P?=EQ{NjnzCekSu@z(pB?}|Ffn$%AZdq5fjsK~$HaNNq|GJW zDH+?{%T`K_d5_f;Jqz_Aa zZpllT$*Aic&FqhL8&!4vECTHA50G@Aq;(`QaZ))|((BCZ7dhjYHG>B)a`(qb`dDIY z4So&Cr}I^s*|j;1OYfOAfZhErl8%$KYK8k1aJMkCU+0eBSOCXNUQW^{B|WjC5vaq%r{lb6Y=8sg6(Y*B>;md~Z0ouw0PksL z?;2;&1Kfio;Vr9D%S5fl0+%*60&sx*WJ#ZpR0ZcSl3Wn06Udy%Xq+=y5Es5vign^ic6XAZ6_?Q5D-~t3pfc*=hPDunvE|$c8^MZ)rtX&chroH=^ z+1qM0{1(R$hSmCo`}oi>JXx-Y7)?Yb3UGjo!G*^Qx-0T$NgJ9O`{Pt@j z2rBIo2`ONd_b{WO$Np6kF2QTU0g?KJa{(qmb4+}A18|AH!PK0XOdQ|<8DHzh5uEs} zq_cD4n-$xni49K0gIP!4n%RCd+Fp{r#a7A8&>$0)Rse3I2kwqT-~dV6H@Sb$Xxs6z zm1)HNn(_Wxw@eej5a1YG)Nq#qH=4-KSGsJ(sPFDQ!0yhrVwLccVK5C7)@0UEelC@S zb^04g?7MM_&}WEr_m%YUFv_6Dz@&hNR1CCNy^C1)8;F>h8S8d$rPlzvJ0R>7gGnAz zm9TxmSoxl$A4vLH0DILiGN8LN23XmTmGl%z7(-Bzu*i$-⋙>h`s*)W_DR$5$-L( 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 m5CS7Vm{d;66jP#MrscnNdW_wd=xmDs0000d^k literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_map_light_on.png b/app/src/main/res/drawable-xxhdpi/ico_map_light_on.png new file mode 100644 index 0000000000000000000000000000000000000000..361198cc60e2087faaf5dbff80b9a4f8d7416a4e GIT binary patch literal 5197 zcmV-T6te4yP)Gse;ni+G>4RXpIS=tRb|l0c2Hi5HTzwXaps! z$|jqNORMFz8bzB554E+=SEW_kTKB4;B#^oH_dX|qnoK4#bLZYWljZ!GoO6E5cYeQn z?m6e4BQ&A1QS(A)5bZ8l(|`*F+ABx^CVUR;bZ}<=iE#O~vdIoWrY9nTaE>R6noeHP zKId3iTNO_Atka}A(zgWp@wu|)_enKNW923W_?iI%i-9B3y|U-q?2^QH*g288NJ*sEw!XW9Iqmr{4>H3fo{0Y}y8w;HtN z0DeQS%&DS7hjUo}fe7lQgX8sO022dPz*oQ;16W!L;Fq*_2gq5ZIOl`4WH-)YzuymQ z0ZY9IR&=lU6v2v=2~sbD6`AyH+2H#iYlmL@BMa?hp|5Y{oM$5vaohxut3lQans-b# z@~FTib%Z`@qr)$hP4Br;B#|~dYf^MWz$Qg^^*BZEIGCbi0pl~^H?)7dJyb`4aff^& zutTu>Um#oFNW@Qd>$n2EOAERQkfN@#!P7z34$UtBEsF(g-h;dPkfMK~SLSr2-D*LvRwO4T3im7A&{a0vb2uNx z{@+yu|55X@_hCH(Tp3@W{8F)pcpb?vYJP)JbnP?PAHa$>cn13cc$emNj3P?}=@ZYN z3KbSkeizyF*FXRpA^)R!r`cFbfu6BK6_c)Ii$&JBF0$s`WR+^Hz5yINiZ*~1DeC5N z1XpN&fy4pqz@%;-M(~T8cRa{EL9SKEZfLudTgcD4$ol_t<40E!d`M7*_B$Qym4ehA zY#sc!MiuM1Fws6;WYcGEl#6X+0Bg)3tM(a;Pk?EVq80TF@J{X3Hp&s31->6|`c{Og?;2t1+2T-7BgS2cRP0d^l!xLFNcxA7s@)bc;ZR%EP@Ydvt9dl z6Lhi0P1k1NC7auzqr1rZkCL@udktWTT@T(X;0s`_c?Q>yU`220;Ua=7w0}Dry;Wg& z%p^vQ8%*Sa?MYhpErJhqT(14k4WTO)z8wc*wZOdYvhGGVfHe+aGm5^{;|PAXCW0FR z#wFnG+P@g|c7--^>@E*sd6t%a2W$j9tJih5&{YcOHZ({+?ICN9P8RU9+P_#DF8J?N ztfEV0b-fh*v<}Mc0J)#?MXtq>Sq_yU2MuKt(kPB&ft`aKs3d1UQ1x9|RaIA?XZ895 z!HJDv#|*N%%UZK0om6>F`~L>`Zfqlk9l)SVW$pha)nS5_Jx|f~opfDiMHd0xV)S|K zGFf|8f;#@IngMLK>}dThJ9`DIs0ZKN_zZvg4+}XYyY)CzeDY$Mh&(J(a}9* z!|TcRmuP)o0UITr*1l&5Av5FE{h)I{4r5=}L)M$Q?4*hT>@-Z#Rf;}kAsv8I6m1W3 zWXz_3MC90@W_#=&LClokr&>D!5j!s&xlGn14S2g2bcqt$0AhZ4s<17G@bK@*s<#qR z&TSpv0oSJM!5wX?2MT(U!uoPff6>kQX1QKJL2F)<>TTI^YrETaw?D&aH@nf_Jhp6f zx)AzxHd$*gmgWC+t3;yh0s)+;GGA5CEO2~4?i^rjK%3p;sw2q5N0B?YiuD*&3YsxKH~wupm}Zfk#m`1-7mERrnDD@ zeF7swRBrjMY%Ypp;q+GoXWSL?z|$_;`qm_)0B_U6Gov_9fS%mM z;2s2|??&OrSIa6h{g@FYGXN{{IE80~upiP!ml`v|Ux_I37e#;iBUZf<#Md5&Qz#<< z|3U|Mbihn!_5!TKDV@pxubpF-Z6U&gu8=a%HXOROIU@i+u0!tx9Tl^P;MS(Jw-Y3) z=(=9AVqm(JNh@GgmB$&{Taky-?Fc{Qn=dY|=IhJF<#$D1=#*B#k89zXHaw(gBU^mD zFfpBd$lDf@ceN}{+n_6LfPbN*a}H2BQ^Cws)&1T#okYBrZN3OxwwL|m2gvF#yzV@a z{?Z0`vkp7kLVpFEn24fHwT^;Wb-LoGvaBKu*1-&6?W78>5VGDec z@AoMPu{H({c%2p=7bf&fGnlbT>h~h>_bAR4{bcDMlWLe^<-h@N&=I|~_7j(+x6P(# zYr30Pf{ZDUdzS^NNT7htQsB3E?`B|nQ=gJ_3F+P{s>TnF*@Nw}uY{Tf3V4YYwQomg zse|Svq+PSCB-@4RYx>Eu_k%JmP{3=nu#=GWgu;128JJmex5yHL9{ptT_MnUp81Sf`4o*hxcnHeTU&@i817*>QpyUP$_mY zw}?OiFV!*21U1L>wdAt3P)d6TP?>9vF-oW`)zSBZ3`nSQ^R2XXnB1K(;N?2$D2M&0D4bk-mX@{! z>)`siW4?KI6zhO-mth0WJ_jlV=MAO$OwmpKW2X;-FW z?^D#AQPF~nY#1(g6(r(-B|5o1RF#05yR)M>)6K>`7d`J=$new zYm_WVXbEhw78h#m{^u53ETr$xWkEt`dM(zm=Yc$`@C}y^drTJTxYI!ADe@!Yo^~3q zYjebeyeim}I`ZzeL>I9a>9`*#Jmpf^=FrRm?K(;p?n=ZMbCutRbh=#8IUwdkyhJ|= zFj@Hta|O`9UX#pd`cpd8J!QO69okTNV2qTSDO`x*EyJ6@) zLKgfbS#|H$(K(g0iF4d=!=5_u&8p!t++5=2-C321D7;X|d|e3r3glaf)Nh7$wk!5E z#d25kTrOO!Q;x2tdbPq;%@AH9CarA4QKN=S#PjP88WSGqOjblA;r8sg&D>lPboNNZ z`+n9@hzdG&9Cyw)GZKEvs@r#6G&kSOpVg?yrMXB5=SZ zI_2anY_le8rrugm(bwA&?lwYZe-fn8fde+i&C`iyS7l3^lfGl3%$pb_+`vcChm4z} zle!4{f+8+w(1LbTYVrj3TZB5_ASJ$>DEn2~r6q#R_Ssx2&Gcs6dxBDPXGXT(IGNc6 zA`;l(>W~-G0@w(@U8i0oIA)Q;?L2Enl8mF&7m9WHG%5LQIuuSD;D|dsx9`fS8%yxnGUxdUZx)5w?CTUYH(fVH$jifo$44ZxClTidQ75AS8-qjdI4;kwg?xG%fF&dHa|>BuQ(amjB_Af! zFo?Pt3D_8J&as@r^z%YUsn%Yqm5I8(Jns%ZC zFq_Ih1u^3G9q?$4bjpHRAbEo3D7-A_*!eOe<%3A3>g^r(Q`J)l^-%OX0_P~Cu&G{D z;C)43v7kbc=R@RH%$3Orerb=GtoA_0xr_o z?T_TZ!-|^At-^R%U<~ZSt4s~Xp=OE90PIjL%nUc`ww{8^i2e2X| zxUEwT&ixwa)@y;P1v1^=lV(+ABqhgW<9t(zo~X#N7LubiSNDcKx6qHHSbxnX`^`IK zqVI=w7wfHNvwIwyleE~c|Z#yXq=Pp5df&MFU>-++jEtKiQ-25V& zYMZe-qfC$nHY;K-rhZCrMlO_y=a)r$4%npST%r#P+C$@Cb)i)7lzUh3c-U`2|Fd?QL|r9jX4O3LqTWZ+`C@ntWKXexb; z)LES^oK@5ev>FzL--faKEhO@`SLxa_z@v1gIVj{FkRQgoWJ794r6U)~jR}1l+f<+> ztEYi1=puz~@gmuz>nv=~(zPdmN9ygzD*6~;M#k}OP^kcC$YQzqwPYRA9P5wJnP-A! zjx%foGB29(ix=rSHNc9DV&=&Xp$+EC^+wY29|RrL(jzz4Hztx5Sp^z5U7Odo5YfJ+ z68U>7Kk}3S7wPP;htS1}UI7|6avd01*22?rV}OcuR_74JP1gsn$J=U=HEOX;de1Fn z*MLXs=$vX!*sAdT_-R=yY@8v>TGR4ZvMJP=XNCx`0F9TfqoBXc=Dj?(%aN`C=jp~! z2X-$JXzW@MT?w4uNZXa4aN4jv``>bz4dqQ5zK zyk0$-0_7IYsQcu`SCdtyCD$LOv(J{A#~qi(d4YOcu)kL(Hz$2kyeq)Nw4|#dTY(em zE2HHKh0A5??o5K!QzPNi$-P{m<_JLt9{dYc+n(`ouGtHFhib`bf|&EPV(r1}W zPWpO0SAfmn%7#aP3l17)E@6BL>_N*jFmi|LY~!%UzdSZV_ki?TE>oWM0*se^m`HYN zN7tPXea<7u%V7OvnM`~$Sy`?C8zIAV_Qeh|5%esO$1Ut7OJ&;Y$tn;;{UJJM84Zpx zmgOsCa$pB@Cu66HWDv8nv^U6ZMQ5#$DXx}RT>~}>57Gr4vf1A*hqmvR%9x}NMoY%% zRO$}VIp)z3oA#btDU;(o?^2QEUE4g3WFJA!i4MB=ffVMaQv&RrIsW!EQ0MFr=u%gT z!p{3;awC&7{^}EC?=1xI+(rOTY6TqRugx!619YyrV!d7j13Mp(R=|GwJkWjz=)6V% zPi&3gKuP!{?7Bt(uaQ>3KDj*DZfgNcOp4Z>t$>5&;F~l9SYrSSt$=-Vc+eg9Yb1i# zwWjExQTQXTug;G<$XYKGS_fJFxIEZi3v_7A z&K(*v(IK$&K^fngq622(i@1EfGj0TLXa($xzXR_yPw$NT4BpfVIB*ue2+Y$3F96@E z-?>z5lH!=Z`6528owkV8q&!{laP8uG-69Wfl45hZUb8MO1n|P4ir!b}8|7-y;hSZ= z*~!?fON#(}m6jZxOYSX#n9DKEy^Ccw&df(-oH?SQS(pC@D`Y|%>J9Rn00000NkvXX Hu0mjfdYl8U literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_map_navigation_go.png b/app/src/main/res/drawable-xxhdpi/ico_map_navigation_go.png new file mode 100644 index 0000000000000000000000000000000000000000..ffabba4a10001ed2359fa67044cd6eb4704b8b7d GIT binary patch literal 1547 zcmV+m2K4!fP)0ex!;YC{+Xz ze9#B=L9L3QJ}Fob5g&Z;LBR)K6#8f&&1c)Bs7=$IoqJ@qiDtLEnVHPJlTGj2E_cqH z-#zF4@4e>^;reUT*4-VWqSy@P#|StC#yJq)#g*vCbUpDVlgSn<(!7rtLjdjtux^o$ zfuaVye!T$eiEMr!GhPC)2|x>g8f-khmVqf&D71x(VyhssLHhxOmdjWI=GP=}Jl+#S zQ*l3-hBU$+2AW(>&F|M5aM(x}4ifPT47wTM^|e#C20oDq=KX5{m|AnWc%;NzEz(XB zu+u4Z>qPqpldMM?8n`u=Gr~;wGxH!Z^?OL&YUVkH7@nONJJp!Ly}i-+C3BF-dJasz z0PNKD)6VFYzI%H5WNE~l<8=vDwH!MGiO=7)0OS!RgivlC+<*uNVBxFwrShM^q* zYllF54;T>%pk)&b{MJm?&hhc_xzz{m?rt*Xt%pE30bm1w8)Si&?GTw{@z8~-(bJ1| zS0ln&OEzohLfcM6uL7`BSVrpB8mqE0|2;l_epP@|sT(^??aBdw20^qN%wee!tu%HC z;Adtg&VB+w1PYwZX4hS2dX%6&4WJ-Bb!(5>A0}D5mqu6h9M;yS(}^gD?+_a74Z|$~ zilhMJ=*;Bkr`2PjWDa+9Y)F}*(gVai1fpFl+!^`F_FreBpex9`)nBr)P;w7UJOSNdOeNO8ZK%DhtGP)Emxq|nWN!Su>P zDMhjWp3K)(X3xMzHk$|Q1ArI;$llcZnhKsU+;^_4%&vjUsXK2TBgW$lbi#cp#l4#{ zdO9ex6R@64cD1w4dzkoT05{3-NwJM<_RRI(SCN`+>F#a~)*yf(5Vk9JQkHo~WxgiD zu|grPn|z#sqX04uo4OwM%ylE&-k$5Vbh1wr_Bz^#VzgW)xKied2pgHgR{#&l%CCU! zxKidy;B>wSg35ELnlbR8%oV`#O#VCp2{m3Rwdz`#tAXDj@bduaO5Kxd+>X}P+yFKn zFaRT+KLWygGD@}8H-HTZoJi$%utwhiNc(XRfJFiWOK$-E*i)0z0IpUx&7XaX7xRxr zlpg$Na`K!X(8Xt!0oyM~Wb$7y@URa@=NNc)c4G9yr8j^+>?vC>%RaTG^M^IUH5XbQ z9RBay3=hvN+f`|Vjn2*-gf_Cm?Wi&cpOax3Tzm? xt%%GI12oKpk_NnEMMLjj92vRj=&7U*{{l?nILf+p0fhhn002ovPDHLkV1jZn83Dx&7X-$E5m0nw@He6? zieLo<*#va}0V#Wdu4zM?q<=x-s1}SN2X_A-a74!bdAG!D3bI<+0`_4V*+;b5A zJP!i&6suH)(t4RpDytVsLB@u%92di|Oe{fA0FY1)nK1f`2r?i%U=~-KPzZ;5+a{$2VYks^r z-i-hzNrYA#Dz;)A0DCh*rV9`f?oFY2gf?O&67F{Z@gY`1N-Fa6tJ^xb+ANq93Pm_0 z3r)8nmw_ClA!58gb{@XKvhQ4k6cYw=M1(oRnXAtkjmAp8bp6r4&4DQ@s$B#lwe}-O zy8WT|1o=a7UK+E`u5S@M%2_14O{NPKUK+U0I(AJg>_gtkB! zrdBJZgy{_g1`q_P>r=Y1dmsS|plFu`t$V9gZy_AH9S{=!+&fWg zF9Z@mqC;Q~aCPE?LQ&KO0j9|Klq80*J{An3$MQRwU~U430!XME({=TOFSu+JGaQ#WwT4($Z3D{PfG?H!#J-B&M+<7|Jl% zkpzImd+`y`#&P7N*allmOAD#1#^;Yez{Dt3N&Se(HVg<-54}Hl@VTIUGoW3UszRIS zdxJi2Hvn+H8TXIRt}h2uDAK|~VjhMf=o8S5yeE0PE@gv#Xq9CdjX6GZ&G>9rh>VX< z5}|km5a`?%eQ4fWdhbxCK0iRn=D@buq|@blXOzZNeF7$Bd{PI3wg-SfoG&I77{fsV z2qg&OFATce)83Ygx530H;-elgj@fL`=hKs( z&C`?d2AD)q@tR%?!hM90fN#yyE5?%^B3d{CUzv&v=nmykKzSNWVx>yk7er)C07yJn z-HY8RpumRT81(sjJ^9J=B$$}UxWwKJ!q~v4&5KCz9O*iaz}Mv^h5J0ElzR$H7^Tv5 zLI$1)DBGS}ZSPaU8p6S+CVjyPPlU2~1WaLSb*7YK9w(RYq6MBdBmrtRurS7jhLj&6S1$=GpieEVWXb218xLwAQq7CjUV0LN}gfZ$oM z)O_r0Ru*T$gbKCxE(E&+H*l}bt(9qeo$RMOz^@Iu{GHCYTbu$@Xk1*36vWQ}g1YUA zB)~B*2_Wb!9Q$E)Nl9sIbesZ{B0g~(01gVA-dYpqjrczjAh^R=lE1#S*|iELdo~h| znH5MP(V8f4-2Z8^436Ozwx*1?1}3pmt(hF~z1_G#adu{ikZsTvuDD(>-F3mFh|_ig zBs4}T)Y(CW(k?PeEV*l3bV9q#U`160TmSu+Wx2U$YiotVU)$q@#y*jMoAiapTjITC zFr}r*l+~8|36frIO;@^YKxFja=4o$_)5?@GIV0t4#P-Y1^3!imzwm2SIqR3qYr!ER z(Ovf_6Oz(`!&xiGS68Elri8mo=- z=_T(Lp+b=0&rzY$wK*-ML~IdE(a{<;Cxz*4A`S8%^H(LvrXgU`lyZQmtCBNE{?>3PcZmhxE- zp3ORcs>UxVXR=P;{BTIPD435l>uS0Bxqm(T-JyLIG-I599>UO*-8!eiM6eP|V%xs1?6)N^=N>cH`{$#vyXY^I5V5rbPpi`Y zWMSd%|12pw+iF8EHL%x>F-zw)m#wbZ$wjL)qd11#?InIZMphmq65T&JuH8e=sqc^l zG1uJDBOGv*6}H;%zPNPcv-bn=#?^#-j%+O?+wb>5m*{ z8T194n$oxiOqYFd!PA9q?N&rfB@<^Sb{;Zb*>h=##iN8}U zVHzpggd?QzqWRLonHTpQ^Yd=xD2L3hq2VjP@AQB>vZ4Ckk)JDbUYneAKnO3!l{pZE zJtkctRm2;>-3UyP$;pu-vuz3iqH$;9-tNON01rKvkoM^F33p0mc#V#9{9x6Em2Vat zI)1Rqub;K1a_HGRGHUUc8RK1*kGYPs?Ac<-{>R+BBQ;evkLCq%m6vPvBP_7VM9a!^ za~ovc2uxvWb%qo~(}WsDdDmEF{M0v-`$t5Hud&Gg`eXUY_g=hku&l%?xEdq921UiZ zy}CWUHt+Pqvc$H1z2V5RS8{)^skZsW(0V;)X*8w79cc?V21%$k78;Id4umzu$1lBFHL}1I9$hz4~G5C|ATq2*9zQ zE6>e;`uu)VnK0+Y0r{!CxM)ptV3H`*+P8pkg1m7ucUkJqca4eeh72^SW|@;+Tlnsb z3wzHV_m45s8GsDAH#*_vf2O)@YOz{4cHKw%pI0u(Kjq9gK5v6eg;AG3=ZfCcuroy` zB(&!^oZ)kZoEUJ}ebEUs7N!hodU7+BvK7zYcWQI)8DTqcM?4s-nfZRoFej#ZO_TaM z&OGg&(_f!HR^_v-xvucZFl13#(PblQ1DF(X+WP>xfvynpMca6dO#YAcnZx5W@@U8L zYO1;Vg)dy(wrfk7-WPoE8Drd&amiEPNE&=S8gxE6Cu$2j_6SLlNE*9?&ir1RH~qd- zJE`-R4QsjK4IC0MUA7KsSj}Gr;7RH66!35qqoSu0)m79UBct zKbVtyw6;cAr<~@ddf(IWDbK#5ZPCwJR%|hSwz%k*{o9NsuPjf$qg$`AbVt{Vxt_DE zdarQL`j3h)`o|g6@&Y1YzM(kwJ%Gbj`_2@t(Wr@)Och#698EiU@Vjd=1|_7(RgTlS zq%#{|7=Jda;G(cUZ&!GJWLiS{#FrBLH@75JCTq=-Ie9zWw#S5K^?vBN#MDW%69ziE zN2$MU*{gXw)_+ps_bNutZn%$5PiX(-%*1|;+7m)dWo*@3&z=9_;NHej0CSe6-7U8mmf> zHOe1O-_R+ePX0jOVs8nH8b@Q|WpZu0JS0jfk%=Y9SS_5*c!@RV<wtH*d z?$EVYKL@hOSX{Ubp=VEtQm4P40Q7c;n78_jpA?_+?0oGY$6d){Cf3)VIrrVZ?@gDy zF>ZL2STg*97;V3i%2ZW?EJ`W`F^U)w1s5TN*sO%JScp}ZS8v?)wJ~SwhSCCOEYp$E zQpwT{nM1YdLGjdYxPP1J^y`E1T>FEzOncF{Q<3?2O)CF9bLt=B%G!gjO3RvT)M?A>P}AI!pi7ei6!7 zmZuF3jSx3fHn3WWZR0BaFDu^4JK-roN+b;SAEk&N|5RMp^v)rPh>bl0&hSe=S!a&b z%f-O*5MxMZz({@&A@^K%4r_&_MOiJ1>DHa11Y zimWdKfZQ43`J&C_x!Ml*Jr&nWEWT=QsWP!OuRL`w>$m-$3k)0cxGHJl%)~oGBgG*+ zV<1U|k*!|-M#0|izr0lBDH-)2p-|0S)NXJ{n5d!3gSnnFuXwX?_r_0)^E@>UUph4U zQo>2z!kEOwbej!chknnw+@Kt;7Ier>AIpxgR-+c@#fPVY2?Ey?UdKG zcZo#cv2w0fE5|OHmACDO^<_Fw@JVm9tlECl$b^(epE|OAgW>4AFI+gpI`O&m)Vj1r zhg!lhO0B&E3HNAgjeYgMCPg0f_L_{rns$wCOKU$Y{%QG}`Lrq#uZQYL)K~WG{G@(i zkyk&Xyofq*g`*w$2Pt$gvpGh1>_2*zX)-0sZ8e9>ma zL$R8f3mZE{jhCzyW4rzKr6wmB;i>U`yaXgWi&QCJ`BuTswabfL&I{Sx9KX%( zIUzzJ4!iOnHQdgA^vpNE{8(P*37L3;2ECw(%DBWS#Gap07|+c2+jSrDV9YI!+#KFl zarTA#Pt&qiyq;*4RQkz|o5n>duPzKPg4gM+FEShdI^g)%&e)+^3qSi(a(Yn62OB$#j8ry%>(?7XH(auoKQ;9DCcd8jp1mU!i`Hh|gLpN{)L3e* z7~9n|dZcIOjx`vi)+|FJob0(f^Z)Xsqp`BK##T3D{OL_6k5==FH0(1>89RGP%3!|t z{aq1!RXJPp>Qg!2H|NZCg-++2!y^8%E_19zcJ>?%-#x(D7zlLeN4Z23C4= z5LapM(cSu#W1k8WTQy_CsV(Pz=a;>No)V|b*A55@5&0~C0(}t{&APZ_$JYj4pXkhP zq2Y_a${ZCEdNuI{b^7+#{JP3j`FgXx;KAgnR5)WFkJJ8bo~D0O`;|9^TU*1`FP)dS zGixnB7fW+sqI~yN|N4AG^BX-fB;i&!Jt(@08JXwbGd-4YhLWL@Sx66w_h z9rU*E;8fx0Of>(1;7)Vjp6EFtBI>G9(PHK-)5o9wI{Q#ng{zC;*j}A15Bl)ij-#WZ zeR!HHwU$3U?8GL%ZWa0>EcmSbSVyaUd6~6xbeG@O@{x&0`yy5e&d&7tzOJJ+saKu6 z)c801u`?Tg*}>0sz#!m??>i02=o0F)8#vhqt1dh@mcO0p{=dbyduE>YF2}{cc&5JS z@&3oY^C%#A5VPBvgk}L>vaUnF9(RN{s?W0Oox&g2{Ie*B$6W1QADW_0ed=Y6PwocV zE#UL=wr}{9zXg2ulGGlewwbe9>1O zMhAy74WX(uq~n3xkFC)cnCtm2jw(?mdt+7m{uy2D*;IHZEWL&wLP+-E+KaC~b!H!5 zHwvYFTmMMqyZ@Il&T*Vd6I=b_gj1W(@HFJ|m8D~UdpwiSA}!Tgx%}<_WZae9Uf!sJ z)au1Wdp>=?upt)^A3+QprHr4pAh~~p;@Uhwt40{*6hWpJ%&Bd zSYM)q{9i7<^S#oaAhQOAmiX zqYI{9IOxokDR<}MYCn4nxDaorJT^Tc{gG)2cS@vJs|--5>HNt#-yibe1;kJbFRXSjtv>Fei7dL^^ziXy%hmtM&i;aDG9yCvJY&cPJ5qy@y4{j-MRgrDONd zq^60)oDn`vV48if`r_KB zW9T)eb{#@OpPsAj(c{jr43P*?muD`0X5`85oXHDGb(Ddl73zVbqtmo$@))U{k%;N8 zzyJaVgk=e5uD4n8&efOh*jRRM*Cu0$+2RQ;?%LVVPw>q5lZQIifuUh1b0_9}yMLR( zE4db&+J%}2)8$+PLd}9gd2Y^Fmw&!q|Mc+eEzJe$-`qPwG37Pw?aA$f)W}@*Wc};a z{2#vhxY#9|4^3jBX%`f%h!)EvQkn&YaK(r5|3aY3M9IH@IeJ!bVphDpXNF-|1tX&j90z$zGE=4nUYWE$L)wKFEo)68qAM zmRBZEYl-aJYC7@m3+E3G8W)}L=(L1eujg-D`bysR^{e(K}a7l~)Sm(sKE z-HMwS(bW?ijraa!Vd36&D~m69M?-UeX4mAjq@;wJZ8t1ZEME3?$6?7CL5))W(BQBG zJIYVpIv_G5*uihroLCmly!ic=|GQM+zQ}yjbLjYJ^$YK$3~Cx$OtbJlKmOEqf0cy2 z?(DD4whJIMOSt0%29A!7o3pIl-OW|FbY_{~dhYy|?HkIPEd}aKe_ymo?-CrgWNqfC zut-TmPAWQXeH~|+aX8*vK2GjW~((mkab7(up!JI*r?&Alm&(EKHZl91+=QzsY zdbLwP$W@(aW$^hQrS<99J=EpA2vbI%`s(;W|5n3n4vevCne6ZXXxFQ$rJuH?zP`7g zKfm*T0(}Wuuj(YwdUMo7Fl|9{&t8KfGbNJ7CFY&kF(wW^{)N9v&^OB;1JL!B@W`j< zYHsP+Gc=`XoBBGNdDYv6d)KYvA6(~*eB5e7u#l6BmbO@L4gdsK2~(w($>y(2>yz0% zG>K_a(aBjMJl6O3|I0mBSL1AZZ@25#D?DoE!ghTVlB6+?mU=oat>m+q>Tpp59dGt_W!CO-KH1H2A-^Ep^ch85f-}@$Z_x z@+O(_>_D<|?6!4=BTMJy{a#-u=$bI~4B(ow;(|uSrv+O*oJJ13@kv^*+XhB5(B6m@P{)Xr89 zrxcVb&1k~-H_v6C;mX+8R;G<|j2dtUNVJbX@8rwm4Dc@L9%?ri@K`Nt5~TG<6?m zCU?CyRx4reO8VcYeCfE;Umhe9&3Grd`@nmYU0X7^R+h8X>sILxeX&$`PDo+6EzOrk zRf1VM&t$rA%?;}ogTNGV+Is=H7Hg!rBV1Sd(0odBm!%Ao1@TLPLn|kZ>2mlBSH|{K z+l(&3VekL9!^rSvE-ujPQ0Gt87Oh>bJGS#1gHC8Zw-#kU$PQyk5iLP~&C?>7qN6ox zP72e3kOuFyr-bYb9h&&P*O18Aq2puHBbAcipb(K%CPT3-n32e2j8q~+F)c@bz58#p zXb$~+tnyPLQEJ&<^ks)JO?`*-#J2Mr zrO8aymIp4UbtbKbvHEMWR8bF)6jP9iWO5YAL&PGP1Q}Too7RX2{=WevKtN{!_QUFulG4^@;}n?ajTWU^I}m`3C4@BOn{17E;QzKQ0Yqd8 z;5SBH{tkfFZz?+rCQv98;UEo}1W4S9c5K^X{gZM}@GLP)RyAksc1r_nAu;6$?! zg;UYsPrA%rpEga!42t0>{O+`qibSrPZ#;#$_;3;<2%s zR8~x$1_FNZ+qp8qKwB3jfKVxBamA%e1uo}*atln9J*6sX0EoD8fzzFfizVRZ^z;Tc zW`jYW_oF*(x(y}(V4_r-`xplL5+Du9sN7*9(8vE0ukw1Jixc84QAU;>3A zEga?MM*_Y(cSJ9&K1lEwvUO|9%F3$T<%}1Y=%CbGfWSNn1mfIfBGAvz5H>Tj z4D|P!1nM{fUze8@(qcYtDcnst^CXxkZHZE)?E@k*h7b~nfASg*_z^}#3)t`*gFb)n z^@8189mUgNqT`FA;x)Y(g!=-3a&F1N4moDCL7%_d(?Ft}c?(STPhMnPVlM`9bU-QR4FV4kz#5K_P30wpbVss! zfS}h-b1m^kt>hgUBo7D72Hsdc=V;R7KS%I$lfK}jr`5 z3O)l9Wrh0kh{Qac5kc=jv_b2O<8BM;{pW1353RB+qcNw_T{^Dz^C_7AV2)9$lKK&m zZ5R*?3k2A?x@6aDj|7lZp^e#U(C6>+rheo%ovFEjV`381tqjnrMI8bm!2AJ4Lr82k za!SI%*3!~Kzm)dy$IjFsxyvEIvfjYpNDRc3yNxJ@5ViUO-SC z(4|_@jR?^p!yMr1#0Qj9 z7a-Rg0OUdysHga%S#1%>K1RaqFO$g(&_e1zPmSjZI&A|?4l}hY>QZYzf}|TDC~h!d z)dK+|5^DAPo`Y+oI3UUVWR8V!}XH)Ee zAmjjt$BiYSIRGauJl0NdU2i}zIm)=BG+I*?&Dv}#hA=7wh^D~{1VIS|BE6(<)dNB~ z5}-C9BLOHAp-4|eoW86etn5YukfXG3a4RaAvWSEQM611i2w*isxGMUK1dN=RyCi0qQZS3F y>!ns}kkx9|Cnj3p@L_tC=Y1zlaNAHb4E;Z5ORz!cQe@8n0000& zeQZ_b8UH=+xxM|Ot-x^3eNfz%EMdV-jd4yzAyFAPB5{{xVfUVMZ>3^31ojy=x0+=n zE*nNNb!EN1=UnL@T&GNQ3MMjvO_xO=>P(h6M>P&aSFqK#wD+9%S)S`T-SPI8w$M^; zd6L^ddd_*@_xFB0pTCzd!NSb6b?esps;a66BKm~qd6z4t<}>pb0el9)EC4eAlhjcwVorLw-h{t9NkmWVC~AOJrH zATrKATmb(9@G3LENJRU4dU{@5yLRosINK@t`WXXmZEdZnsHpgwVHoR~`3poeo0-Q8 zvh?7HTxRYfqJMgxcV9lAf2z5;Ie#X=PaAM9mzyy#Fz{v9bz6vNApqkP1Cc?V^nbE~ zp8u|VBa>6*|0+(=hJ3TnFpQs9R#qO0#bO_v4)AdU&gF7OZ*T8qM6?FLZ2;;@bj-~B zj+{%`ngBYP`6z(54a4|gaBxt-BN~lXd7dZd`64;*02%=l&N~rZ2%yyX1n48K>;5j4 zO39Yj;{iTyz>ec2wbnl)qE7=*MV)CPI>^kwHwbh=y ze}DgM!!Q;S(e2E9S*d;iyhTL!Boc}Cv9uk$GgiQq&1UClt?vPFN4NvgqRjjrGrvqk zn>sr?_q4RM$hJLWX=!PRG&VLaV&;uRv;e@&;zpUdm6`8OCX@dKFseo$6X1@Hj!W|S z{I3Bl0}wuEgUq}~DYdn$t83SW4IBE;7-fkDHgDcsJ$v@-o3+-fl~OVR(a>w6AD+}& ze?OT_{(H3kM+LlX+qO@+uKPHEOT&tZndKaQPbsxM9*-ZNXnR>=C1sb*(ps+s@Eal$ zMHh%Dw3i~0$nsUIR=ss9(5C`SwryVmU^@V@s|8_ZIj7Y14gz@ojg+3b9+ z^(Fwf6s`15t#xxUnS8fY-y;IHZTmq0P2n@k%-aVC2fx$Y+$;)W%B8in^<&X!^tVJL z+dL3C(`}|{-Z>_~VrTpN`xDHZ4t*fD?isChe59G1D)jzN%mTPEY`%yn6_3a5Vmm!- zh1=TNt~3lIM?`Z&AjIT+JCR7dJXOF>)vx0?3z+#~0AjiVdDC^>Z!|SE{XP8cM*xev z*w@#$1wbO0Ez!ne3KEIL-=^@)jyBKaIL=jC>pdaut(iHiwO*S_rQQ!3_y}OzwyzVL z7IGKG&aSsCOV0B-FPTi{P9nNbyjFj(;)X6YO>^Hcz!LRTRaNa`=0)<*_n>wY(W*ou z(RI$F6;0LFHY*Z|I7GBm;&Ok?e;ybZxG9LThE_O}$=pIjI|36#L?^V?O{Qt?m~5wF zq9#*7+P1x%h{V4R+)$61Z?!DziNZq49|_*;>gr@QCCn=b5$)~j>RK{c?&3s&EN(~K z(3vx5K3$BZySw`)Ng@;g+qV5x0FMIrxZi-7p(UniJ~LSZo6L4?+ZGe`bjVB{^E~gi zR4Vls33X%}{75PFi%_QGh0e~->n1AdnM`n{+LkD5-n@BxnfYpex4K&EyG_%)mvXsW zLw|pNJ2S8FKNfc}WtwK@Y!7rI`)hA+x0F)iJOz4cM@>zQMI9X-bMyK9vj9HpcX*VU z7h0C}+C&cEY`2xkWIiu?2!Lc#L|%7Ycd;1kuQ2oeP=K(joJ`S36X`gPBons*xY>Wl zBcf|5lgWISh{U@p2s7VbTU-0Xv8H9t_R5X5KS>w$_V)gYi0%q~bC)PAv00Y?&pb2# z*s`q6V{Q0ce$Te;^#JY-MSL0A()*eD8h_xD>0g~lBqZoBdvP3RB{OdYQ165Js{oc1 zY7iN{tCad?JRaXu_Gke(j&p;=@Brrc=IIUD((eIi@BzNXZz=FKce>~4yno6Z!Dtoj5(&_Z2hGF~(z$bk?T2@%HkCpyErWIg6G4NC|;CF&O zE~SuZzoi|=d5xK+tSK`6mDc%WmWb&2^Uv{^uC8TEOG~t|u~EFNbs@KT-T4*?vaaVSkI4@xECC7BnG$NyL^iFiraWipvziFg1jOw-(12oZx> zkWx!!W#w)FH~6umkX0nVB~`<6Dz!+7blIq-76IuO(+3V6`WV{AWk-1seo9SEjU9`{0$%5b6EV`+ zEC*7HB-^#t50oIaq)pS5^E^yWhqm;DQfgy79v9N+l+u=%`IpQrw5mX4HFqkd?uf_Z zlF1o6U|D@3rZKY+T!i3R5Fw^1rCtHBCXq#DmSuI0w&O-6mj(?80gQ-#QdFD@9-k0$Co^xV zt*zZttQkie#7NKmsAmxoZ4`1V5nT}Spn@ZIzntZ<66VGXI2cqmoBfvOd7DNeh%@s6 zB5E5P9DHuZj2XvIhajHM=VvkV^~~JlUlpt`SP_@+f z-e=}Vg-u&sU43A@yJ_5j161jBx-J@xe#!GZVaW@jZL~`s{meW-L~`cDk&(XT8~KUv zTV13diWjbM$pb)(=Xr<1?7B%^;o`>6n`=D9z>6+w$%QSsnIgQA@!nw)6Z1L|z2fVG zbL*m3G4S9jo|Ist(dflWDY4(BuHwn3!i7983MjbpqqRP$lsa& zX^>Ra75>hB-8~Bo1Q4TU5ll2j6HHt{5m{Y822o1KR0_IZcO!_UxFpfUCAOtfrDd>0 zqZyo;?jGTXL)>5xP#9T^=pb5ZOpHqyEyZ;}2AN^H``wc|&3lu!>6w1rGZc!qYWP8) zckcb(yZ0>LIhWAKgPCdZ;>80>OG^h5(UF#AouZUFk(qx1;Ku+41LzMRNkqGtc^80> ziRhnN>o*O<*qTbEwkMOxwmEa=v=I^a4mxB9RdA@cDeDmSxF#K0?krfMEdA=beZS2as!h0(4m_mHJya9F{Gw z3jtm*;CMV9(pvwSh<*e>Wlg4u=oMyu*f5L@hGDdNJf60ys;Y#WMKv@u_)@9VfR2ui zA%o$;_`4(Snwi zmZnG~BHOmtBNB;th7B7wk(qBKq7eWFWh-UoYG%GA6bgL-Ag@Jt1$gPwrN<IW;utyQ%XJR_xpGBwZF{qC1sZl)>>Z*;4efZhRzvc z&|dR+Jkw{+ocUo-pnC#Lu~_UF0FMF?znUJ*Eay~$gn6M*=!JZ5^g#SxS64S$DfN(T z+%oORRsffprYT=K=l1Rva9v&9P^DBgfD5u*PNSTuU@#~aIPaM`5P-#c*VosdsI^`I zU|QCfUaqyC8w!O!&oy_qfMc=Pg8*h{o>^voG?7SLId|?{F%SoRR99CY=JWX;AR^i3 z&X6-*W18j_t^kXl?da$TFmr9j1LEtR(OUbvdvga1y}c9b0i2uZzKAI7_xoenetN$z zTvJms(lCq$B04$)gt(kpfk5E(g9WUodE@c;2xfi+fVeJae2_||E}1=hc5~*lUjr=R zVtaf0A^-vBZHYA&R}csUUOb3rHs5=ucszc(*19RfdTVB`*ILgHhr_!a1z!Uki^ax@ zPs<1w#m`@WpmX@w&=85v79YL)jqM3m} zptUfx5jAScnB&=?Dgfs*FoJ-Ro^&wKNz8A6XeC+P@Y1U1-vS~9#mO}_HG@4KPn?LR zN?vZy_grUZ=Xp++)%As=(daZHdctu*M6^?DJ=-+RCkhQJMon8cOTs;Xh8LL+Zv*rl z&5h@XF>*ZwWGoh&PDB!4J7K8B%ohcN!4>HbDgQ|FUQtmYUsKY&^dO=Qt*xz73JDj_ zIB)e}%j1oJaFy#-_WarJ_rZ7T^DEEV=~kbFp@RkuT9u7u*REaX35k#f9E-)y1n?Mu z@7s!HD@`#?^BK1jrNMf=cLA7%Jlof;PJj~K`jwC0*s=9gQ#QAQYl`L!c@ZlSn zd9=M-Q(Eg=Ow+uJ8X6h~c64;qG4l*tp@fTJ(=?;*CWxq!m1oWbRNS3>ky1*T&C54D z;?|JW)zt-+QW88lcIt`p^70@pUApw>WHPx9z)$R@e9X+_g2CWBZk9G``o2h-Ft{+ELizpl%4f%0P^oxY1LfOlNcBq)Y;@+sA8bYfmx^VRQ-E!Q9|t9S^kx}qgTm8O-;?w9*?K^^l-}B6WAar zwmF8cK)32z{2em97ryk=*nhcsB3F9o^?E0z34r$Yc1iXxvK6t`Ivfgx+!Fv($IJpz z%*{fIm0?0~%Zg3)#S#ES^mtiWStuvPBi3x&wr%4IqIfFT-4E~_fHG^h#p3IFE=}J8 z4>vbXa!m}{Z5bPhXn%@FG}qSFjxh}5@4Y7RJf6EjBqUxRf!;^r8D+^EHZPmJ!|mI% zNj!+jNyPIuDBRh+ z{Om%BL1A$ABjN$fFims0;OweANU5cyq+|_%bgpTaT7=({s$s#UmeZz<{W&pTf_-I= zU*-!=(r1l z{c;Eh$+v4j^6(PvJ&wWWYUnf4#Wdo>M4XwvkYbvG+DxElI#u%Rfoxso; z(mN)_G$&=1s$pf$Vw!EdDwI--h{%5^luH5BTb9**xl};MT+&Yf!t=@uwt2RO~8%zPPuNm;SFG@?Dl%zp?5gDv^==4~!@6i5RY5#5wk zoN|7amW0=sc|pH^{hG2ZW4=Xn_q(0-Oe7+yPM$j}$ z|E*l!kFf)&5=Gpdzk^LIc0ek@9X45p67V<(1 z2F%Q=wzl?E!!YI%kz4_A!qCil#d?2gxBsWF0BEhZ6VazcB;np(A~J}mjG4;;9L~%~ zN%x<9-RDF*Rn4`&-OT)$bkmlVm2E9_Hx&%nK~-B@TjBHheq~vfbjeFYTfR#k9n35V zf}A-CWMpo6M*bxBEz7bG*&i-_$pb*dvaDA#yXy|<7tU7xow>%74Ls|jmR#79n<>&a zQYf1#F6KQ+6>WR)&AO)&v%qkO8j@Ot9bIL^g;@o@qu&YM{E6xQfm9& gy?b{Zh^u)21BVwms#j{~;s5{u07*qoM6N<$f+LXq=l}o! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_pay_hot.png b/app/src/main/res/drawable-xxhdpi/ico_pay_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4088cbbbc2b063e7c27e37af931310044e55df GIT binary patch literal 4003 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 JPDHLkV1lu?dZPdU literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_pet_link.png b/app/src/main/res/drawable-xxhdpi/ico_pet_link.png new file mode 100644 index 0000000000000000000000000000000000000000..e0089d7070459cfd2af07bc31a08873855069a9c GIT binary patch literal 1393 zcmV-%1&;cOP)f0|c)aY>Qs1nv z;WBaEZ7O;rhzzc{bbs*aBH1GaxZ z$W6eo>vHwP=-|=$_ca4LrHs8_1Y@YABE2nsYfn0zo;fpQt*blNSz>)(&MD!BLT2z# zO@Ugvx`I|o-vqjh5~h8XB6e)=tU}`076c z)+-!UwXYi=NvCTCWVc1)&nr9&WNgd3B{w|$>vAxTFR)#Z&42~GScrD?a`^CUO@I=K zMEzvZ-2*%Vq*2)_qL(22eylO@b!BxCi!}sYb_ntWunOT5tHh>!elSz%z}Zz(iIpC?ar80^CmqMXXvY9|}7jP#KoJ&aKP0>5$ zRV9p>pd~@GAoW0d`Fr7G$I{2EDYN3FZjQx5K2P34xySSkAO{r76MSKq%%0N%R)t#T z`!V1E#lY4=p?~tcMG;|Vy*+XMdP=rvKKfXA*V{nZvwIHagraYb+4RoCls8Q#1L5h?^`5J173&WX?+xH0U|(~- zeBt@!!HIzZ({s*hEdUBdGb#?P(Zm7Q&FpH}! zmGXziCU=263F?Z<*J|54>zwJ|9Py{rVhf77-ZZG{LC5ko)JmCohnDC=Yn!~flLyQZ zvx?V_!k3P?57!!Iu|jhM;qclf*LUIt5xJ|}jpwhyin%F#=!vs;Je&QiR$;2#r}}VB zrTpQEiG-?^Qq^`(7xNazVA2t3@i-aqhueAaqC%*>ZFd#`n7pFK0@#VspSPBvjS006*gZf11n zY;E~(urQy^%VUvO0Duc~=0*nAq0Z|$HojN{G`RJUB7Sm=g)D9@DI6n8 z*ziSMBUm6?uE~#0M@EX_)9v;<0US+6O-v6F={GRE(iYrauUNRUOYLhQWEwCkhEs5t zI!Rt9jrF{nov;rnDaDmc(^Nf|euX@-Ic_74MAAm>M*ElLIy*Zdigs1{rw7}A-s-Ki z`XGrG>27s_8~4@8+2p8WXSUZx?MCTfah;WrtcmCh@F5(9+U$o!?1?%w_|7b9jjke( zmIwsGR~mT?@c;?)>qn3ERq-uKXTejI4P#l=r?B8|SRX|-TMIR-rlFxRO8Hi6h$tW3 z2=0ftAr3fjeWv(8%dDGU6;p? z*FLqjwm!G3xaY6!*!?9i$o|cvtST6>~Ngo^>BxX&Z zfwQ?b)_0rOz~%vcI{VMh7;=AmS>$^RH9zQl#);euZMsPqF1|j-doWmXGy9}(Q8T{P zw!G56{}|uLjQb6?Q3CbYxM-NCM=+l|XL>&!3~_aJ<&rkvVK?^dv2lWLegtOpHzk+b zR?_Q4#KjR;b#xAkvMSdfXIMA!${}KXAP~qCoI_0-g5LF~6 zkSnM~=Wz`0R$;q|maeX@H}VO+3|?mzTcubNpB9xH=<7L_UBGO{0Ar(g6u}gtXHzFX zO0$4uVxX)A@{i+qw~Au&_Q791vYIj&h^HuzT!gc+gu@NX-}~`$Q|HGGmAC&d;Qv1l zh!|xVS=sg70a(L7&(BZ%5|8#qL>(6AX!{q$$Y$%Tcz?ryLVnwOOn?OLyLjZH>uEGv z@o9BBoWUR$-jMMGz0)nbHyg1zVJePxYe$6W98-ta7ZO#iqL&A95h1~uk*#@~?G@rt z2l?yMO~bA9wes`Wp_9t?{(sw$c;V!O^U6&KF(WDb`Va4YRXC_rt z=iyYnPc7KIWCovr3s|zy+x)uA7B9B%85uc!UL2}lSa+~jZda}HrByWj!<_~ey6AF8 zs>jZI9Xut8&iiA+0Z`?Z7{MG2^P-rtg&X}=xUzYJS>)yi%=tB|I?Ku%~kR9jwKxsgHQ zSk|TDx6YHx!;`oVT+_7!P_JL9;<+JzlpCfWdSJtl5nPD}j}3?=+x9^~x@zme!eY+B z&RaxOn6REIPXF}p?(kX()P!!F$e-yH?2c6>1-{!kqc^v6CWE5I#+EzSRr|KT?D>Wr zF1;;1q#617wjLszw0yecNK@S9QS#;0)h&CI-6YOJ3T+Ir>3%hAYtG>Eecfx1{$FA~EI*XGQN>xPKc}`pmphG)xad7hDiri?TBkn>)G_j z)bexRy)zS-oJH@?2r+)|h-Y6v)27Br#ho%Gs`r+Qq^x5X{98iOjsillJ)sRnYz;ce z;QUiCY-8u-zLFaqRlN97i8=t;pHA|LjI==nbW3Mmb-A4*`8rWAlu8=RNCm&v(bj(V zOs(8nf&F+G4uiM?d*u+L2}Y&2G<(ICvfNTXtCd(3eWJmvqik;Kt&Q*J8+vr)Kh5Ph`XP|9-;0eW>$Q6l}jTiOSqX_gaJN59Jn$+he+ zQBwTRSor8kS6IUl*01luYtv>0s7VU|D?{Pvbn>uO4`U4@R2(3a1`RQ0rC)qNrICCM z2GS&q47xhJr{_m}iDVtMxO+Mqg?-cq2E?jh;MZ9#D!^(SwZAdrle|`G@ykDI5&s96 zIe*Gdw^hEd6%5V)g%-MW>1N=xqj{Li?Fwj^w2E`?NWZjf8AH-R(qH3LIwnem29G5k zVOpbxgm^|!J5xes+XIKStrz7$k~|^28>7Kw~jvNduT+F zD;tK=nmz%f3w3W{1N(KF+7}NOxfr5DGQT(rT!yZ;Eneii&4j+75OOHw{!g3NSQT%V z$=i~RsG1<6XA0NAvSVEG9RB>vAHP3NZ~v_Da{Vh1mqKOUx$`cZG~P|V45bAG z_?KqA!nAUfheaXn2|S4_fU%#fC8@g}f~z`|vcY00_xE25tX}4A8ns;CP-YC5QuMZz zY>{x>s;tIs=&G8MlarH+9VJA*t<=b;unagdp`Dk2&D9(ve`P^WkzsbT7HQC!>9@9( zpgI$+bNkDaUe$QWTW%_}!Y<&F`}Ki0x&@jO9ZWkZdK;ursfmxGNn1&K-r)l&dy!K$ z2nkfc`#jVrkO5)GOrRA zaFfyhEN#+Do%O~JKQ|HgDJJKwx|eRZoNysNc2?{X z-jmw-NP{FuWmrG}6I!eXh%0?W%2qbJpa6b6oV*W7>#*dNb<_<5y~^X_nA69f@ucub zHYquFl}mEwiIm2y&)~*FDC26C5SoC(ihT|rHB643f-T5DoqNhP)a_b7*UO03N@<*J zi;iwK%vS!ss#7Whk6=Q(09HJ$1_>EA%_H?4yOL!!XOq*gZd$g_YK&zzCo}pb9+eyZz}euX|7`qKgU!*nC2Lz|Dqg0x z@uJc#zE2TleA44a{Y-C2H|t*ob{@Iy8u^B%8GHP{LXm9tH5r3=ioq zPC~FFN^Q`Xt!s%au5Mfjdv+my?EwWLgb0kxrEfo7d5!mTQ%m@l)p38vQpzzi`8Ku= z^Ak@pw)_`_F1KYlXug_PiYvNYgQ(l~7Pb;|y=dtd zagguSJoR*O$s>$IGHf+dG_cW~q8KMf;}0P+B*te=qa~TF5FZzH)|22rU5W6vM}q}H z|D02S%f@?T-0YSk-s2jOzTd;toPav3)EC9TrUq|PY@Bk$Uk$zR>L@VFYU_8xRMs3& z`+`*DLFaQWEt}We(o>9y@Bd+;UvFP8Ix_+I6pP40$g97j6#(5rhzeKX)#zLw>#AI2 z$YNJo(C0oa^V-3j@B^9o7}=e}L4!<8c0xivqagAnM+3v1*u zn>%IXBGvsKepelB2puy z6CHm+-@5xuak$S21LgM9^E6Q>p>XThbwa8W*6g7t{a9IhRB? zbMD;Ih5UkS`L6hi z%@0*NHdx)LBvD7cOef19{_OGPh@OuZKz^X~vbuatv~e#1TDF>(cOg?R${4E>rzCsp z;qLh>65x*K6CL2RO0*K?-^fb9yv-hK&F@!EF0O|7CTN9>U70n1_?sP_(h@ZXjO2v- zcjr4$rkTBB9Oy3E`P<_wHCot2bDW^4Ah^dtgk(!Rdp(4ydG9^acfk2C?q8B#eUqO( zsyCM1WBx>LEi*@whWkvoe06GVd~2{VR|Cu#H_87uwEnuS|E+&DsDO9`+^V@9wf-j_ z_v`$XfXHV5`wzS-DU^>r|D@_SY8Ra@tPIpkO=cyHHb%^M#IGt`LFuY0z+p!21u!{X8AZgL{IqOka!* zrB`50s@hFV=)uT6_#rK=klS=$HXYp5o1B`en)TsBomP95W9qugk!hG2vr>qC; z{7MIzfg7?myoTtPrmc<}%4)ZA*=uy+u-0LhWD?5kxE-ujBj=2+ywR%4x zrXCUG;xf05JkH_^muVo6RkscGwQhbm!e%)Yf-2Y~ZqKO9;ZX4OMRDZb7(QF84PR8J zOd<>L{6c(o>jv$v3?R-LB>w#~zR17F`iIA((j;Ee#3!&hG^l^wB7HGT{b>IMk8H># lZNIs>=3uhmx`*;9W22D3Z+c`5-&xBCU~X(>RAuOb`5#(@6@vf( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_recharge.png b/app/src/main/res/drawable-xxhdpi/ico_recharge.png new file mode 100644 index 0000000000000000000000000000000000000000..c30853581db818fd1fc3a1f232b5c9a5652cd1a2 GIT binary patch literal 5825 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_sw_dowm_br.png b/app/src/main/res/drawable-xxhdpi/ico_sw_dowm_br.png new file mode 100644 index 0000000000000000000000000000000000000000..af0cf3ba9eef21fb74fa3246da87d23c9a30d0ba GIT binary patch literal 1258 zcmV3{P%x*RF^4iSflLp&X%5*dk%L`EXxiGV~#BIC(0a>__# zBr*~iPXr_~5*bg1kyAz@BaxBFcp^}P$dDNdKMqm@V9scpPfbrIuT&z+V=Xm@B7H=3 zkil1S0pDTVxUt}Ij+NmRZ>qsi^g$+!0NDA@tYdmfKd})|OtY(z>hdo#aeqNapJ!9? z1DglLitg8p5ds3MBIs8Q?wwA@zb#i-33Y~PbqoM}5{#zh@dV6IrQ=&ms9$qP#SSsU z;XTmGaY%=2g`XAZP$nJwv0QQM)iqlkr@=f}{37mDT*{{7`^sIjVjuu~W+-|BgdqU# zH}kz=@KckC#PxCoy6Y^<+Pc8TQ2=kaezU>2ylCj|+sWiqx$9K}2(Wv1otgXN888ij z&{!mf@dIlj96 z?-KhB$bLGTO2tcQ!ffC17_jsyK-*n=#tbX!&ZT0b0PIrcDrHP5%Bc?GDG5xlBlfgZ1 zrx5U=UhtpJ<$jxSfVH%D-e*I9MegqmU|MN9n3;%u;iW;ZV>bkdBg(X_C}6w}M$yHK zfjj~4@`8WR2;}eAq}~H~m#dKk6Z&$gxN}9Q>9b)#miH9DR&N7voU-~b7D4YKViHt-v9sr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_switch_off.png b/app/src/main/res/drawable-xxhdpi/ico_switch_off.png new file mode 100644 index 0000000000000000000000000000000000000000..02d64b981223b89f02c47e2c3dcf5fdf4e3eae7b GIT binary patch literal 3586 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 Hu0mjf%eAF6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_unlinked.png b/app/src/main/res/drawable-xxhdpi/ico_unlinked.png new file mode 100644 index 0000000000000000000000000000000000000000..99a194a7d957f0e857d16c8a6baa9a5ec9d8748c GIT binary patch literal 4060 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ico_wman.png b/app/src/main/res/drawable-xxhdpi/ico_wman.png new file mode 100644 index 0000000000000000000000000000000000000000..4944f72f839cc9eb6bf19e7579c00c1347faa5a5 GIT binary patch literal 7317 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/map_live_start.png b/app/src/main/res/drawable-xxhdpi/map_live_start.png new file mode 100644 index 0000000000000000000000000000000000000000..890895c666570765a29b40de5a4cc1c451c95f78 GIT binary patch literal 989 zcmV<310wv1P)B5q4y^u>)~J0w#9id(cVa%eCVNiPW6kJu`RyGw00w z{|L=iJnr$AN*ziW+YO8d6=uIE=>cv5{!yZmf^o?dbwMa!nelpajE@%^g_K4He@CQG zoU#kWAkf?NP|HSj6_HO=S&hx)GC$VyuLtJvhq|8-)IlH!I9mf*9%W$CfWv=Grq2NS z+gep%ot>SxE;?MpC=!5Y4Is6y3&7|mv-D;zm;1Y7w1YVVq3CPCKEP}L+c1Q1+)eLR zFL#7oxZDPXzslr)Uu68J0@qSSOjFeY78IPEnM@x7mbB3VYY#@BQ^II%M!t3@k0&DZ z@3@^dzZ18|z;FoVB}J)dGCy19>x;8|a4f^@^m0u5S`fw1bT<8t1?KDO+Gd!>d7!J} zsRQ=)Z)W&J58;@*<&9?3MUD+6`Sz=M%yLzh8D**gT{J>G?g#-2|hpGpbElXZZBM z&ox)7t|~Df5MMa@h@tq{x;{hL^G1w^cXzbBx<(G?KAPg>fr+Z3F@;AZ5b8b+>dDHF zkvlycKYJI!h-=+o*-VL-cK$-=2yMh{euA#H|@OepH-28ljY|lp@-D~0Y~M+-#XkP4&!3OlK$Ft`bizFaA*Ukig#6N)6$-hu(X< zbadTNYAu{o*Gv3bQR-?9)3FP{iTq^x^;Jr(t$GG28Lk7skigpYWrZ&k6a_|_%^($O zakK|x&nhv8fsnmuT9V?8StBdTI69r3c(0O?#rur{_#=@%G1ojdeyR*Lri-Co+~#z< zWsBQiD0Hq&!~+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/pic_alipay.png b/app/src/main/res/drawable-xxhdpi/pic_alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..57c7241eea4a4677f0cef86c2e26c5a398a8db7d GIT binary patch literal 20488 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/pic_history_location.png b/app/src/main/res/drawable-xhdpi/pic_history_location.png new file mode 100644 index 0000000000000000000000000000000000000000..9f26e92ce1b033491e89d5c92290ec6c7ad5700d GIT binary patch literal 3381 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 LNkvXXu0mjfk=Ieg literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/pic_map_gps_avatar.png b/app/src/main/res/drawable-xhdpi/pic_map_gps_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd3129f0374354673071145c6c1265ff37c0385 GIT binary patch literal 3165 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 bJp%B5^sL7one8|r00000NkvXXu0mjf<$s1i literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/bg_color.png b/app/src/main/res/drawable-xxhdpi/bg_color.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4f27f19039552e1d92ca43c1c3a3d8104b2ce7 GIT binary patch literal 200434 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%0A_$?Z1a3uuW5_81 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�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

+ * 当SDå¡å­˜åœ¨æˆ–者SDå¡ä¸å¯è¢«ç§»é™¤çš„æ—¶å€™ï¼Œå°±è°ƒç”¨getExternalCacheDir()方法æ¥èŽ·å–缓存路径,å¦åˆ™å°±è°ƒç”¨getCacheDir() + * 方法æ¥èŽ·å–缓存路径。å‰è€…获å–到的就是 + * /sdcard/Android/data//cache 这个路径,而åŽè€…获å–到的是 /data/data//cache 这个路径 + * 注æ„ï¼šè¿™ä¸¤ç§æ–¹å¼çš„缓存都会在å¸è½½app的时候被系统清ç†åˆ° + * ———————————————— + * 版æƒå£°æ˜Žï¼šæœ¬æ–‡ä¸ºCSDNåšä¸»ã€ŒFannaticã€çš„原创文章,éµå¾ªCC 4.0 BY-SA版æƒåè®®ï¼Œè½¬è½½è¯·é™„ä¸ŠåŽŸæ–‡å‡ºå¤„é“¾æŽ¥åŠæœ¬å£°æ˜Žã€‚ + * 原文链接:https://blog.csdn.net/u010001013/article/details/103243859 + * + * @param context + * @return + */ + private fun getDiskCacheDir(context: Context): String { + return if (Environment.MEDIA_MOUNTED == Environment.getExternalStorageState() || !Environment.isExternalStorageRemovable()) { + //存在外部SDå¡ä¸Šçš„,在手机里å¯ä»¥ç›´æŽ¥çœ‹åˆ° + context.externalCacheDir!!.path + } else { + //存在app的内部存储上,è¦root以åŽï¼Œç”¨Root Explorer 文件管ç†å™¨æ‰èƒ½çœ‹åˆ° + context.cacheDir.path + } + } + + /** + * 创建ã€èŽ·å–缓存目录下的文件夹 + */ + fun getDiskCacheDirectory(context: Context, directoryName: String): File { + val file = File(getDiskCacheDir(context) + "/" + directoryName) + if (!file.exists()) { + //åªèƒ½åˆ›å»ºå•层目录 + val mkdir = file.mkdir() + LogUtil.e(directoryName + "目录创建" + mkdir) + } + return file + } + + /** + * 获å–缓存太å°MB + */ + fun getCacheSize(activity: Activity): String { + val finalSize: String + var cacheSize = activity.cacheDir.size() + if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) { + cacheSize += activity.externalCacheDir?.size() ?: 0 + } + finalSize = getFormatSize(cacheSize) + return finalSize + } + + fun getFormatSize(size: Long): String { + if (size <= 0) { + return "0.00\tKb" + } + val kSize = size / 1024f + if (kSize < 1) { + val result = BigDecimal(kSize.toString()) + return result.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "\tKb" + } + + val mSize = kSize / 1024 + val result = BigDecimal(mSize.toString()) + return result.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "\tM" + } + + /** + * 清除缓存 + */ + fun clearCache(activity: Activity) { + activity.cacheDir.clearFile() + if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) { + activity.externalCacheDir?.clearFile() + } + } + + /** + * èŽ·å–æ–‡ä»¶æˆ–è€…æ–‡ä»¶å¤¹çš„å¤§å° + */ + fun File.size(): Long { + var size = 0L + try { + if (isFile) { + size += length() + } + if (isDirectory) { + listFiles()?.forEach { + size += it.size() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + return size + } + + /** + * 删除文件或文件夹 + */ + fun File.clearFile() { + if (isFile) delete() + if (isDirectory) listFiles()?.forEach { it.clearFile() } + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/GoogleLocationUtil.java b/app/src/main/java/com/abbidot/tracker/util/GoogleLocationUtil.java new file mode 100644 index 0000000..2219969 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/GoogleLocationUtil.java @@ -0,0 +1,68 @@ +package com.abbidot.tracker.util; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Context; +import android.os.Looper; + +import androidx.annotation.NonNull; + +import com.abbidot.baselibrary.util.LogUtil; +import com.google.android.gms.location.FusedLocationProviderClient; +import com.google.android.gms.location.LocationCallback; +import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationResult; +import com.google.android.gms.location.LocationServices; + +/** + * Created by .yzq on 2023/10/18/018. + * + * @link + * @description: 谷歌定ä½ï¼Œæš‚未使用 + */ +public class GoogleLocationUtil { + private LocationRequest mLocationRequest; + + @SuppressLint("MissingPermission") + public GoogleLocationUtil(Context context) { + createLocationRequest(); + + FusedLocationProviderClient fusedLocationClient = + LocationServices.getFusedLocationProviderClient(context); + + LogUtil.Companion.e("GoogleLocationUtil"); + + // LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); + // + // builder.addLocationRequest(mLocationRequest); + + fusedLocationClient.requestLocationUpdates(mLocationRequest, new LocationCallback() { + @Override + public void onLocationResult(@NonNull LocationResult locationResult) { + super.onLocationResult(locationResult); + LogUtil.Companion.e("onLocationResult" + locationResult.getLastLocation()); + } + }, Looper.myLooper()); + + fusedLocationClient.getLastLocation().addOnSuccessListener((Activity) context, location -> { + if (location != null) { + // Logic to handle location object + LogUtil.Companion.e("addOnSuccessListener" + location.getLatitude()); + } else { + // Handle null case or Request periodic location update https://developer.android.com/training/location/receive-location-updates + LogUtil.Companion.e("addOnSuccessListener,location == null"); + } + }); + + } + + + private void createLocationRequest() { + mLocationRequest = LocationRequest.create(); + //æ›´æ–°é—´éš” + mLocationRequest.setInterval(2000); + mLocationRequest.setFastestInterval(1000); + mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); + } + +} diff --git a/app/src/main/java/com/abbidot/tracker/util/ImageUtil.kt b/app/src/main/java/com/abbidot/tracker/util/ImageUtil.kt new file mode 100644 index 0000000..7a177ba --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/ImageUtil.kt @@ -0,0 +1,254 @@ +package com.abbidot.tracker.util + +import android.app.Activity +import android.content.Context +import android.content.res.Resources +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.graphics.Matrix +import android.graphics.Rect +import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.VectorDrawable +import android.os.Build +import android.os.Handler +import android.os.Looper +import android.util.DisplayMetrics +import android.view.PixelCopy +import android.view.View +import android.view.Window +import androidx.annotation.DrawableRes +import androidx.core.content.ContextCompat +import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat +import coil.ImageLoader +import coil.request.ImageRequest +import coil.transform.CircleCropTransformation +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.MyApplication +import com.abbidot.tracker.R +import com.qmuiteam.qmui.util.QMUIDisplayHelper + + +/** + *Created by .yzq on 2022/3/1/001. + * @link + * @description: + */ +object ImageUtil { + /** + * Return the bitmap of screen.截图 + * + * @param activity The activity. + * @return the bitmap of screen + */ + fun screenShot(activity: Activity): Bitmap? { + return screenShot(activity, false) + } + + /** + * Return the bitmap of screen. + * + * @param activity The activity. + * @param isDeleteStatusBar True to delete status bar, false otherwise.åˆ é™¤çŠ¶æ€æ  + * @return the bitmap of screen + */ + private fun screenShot(activity: Activity, isDeleteStatusBar: Boolean): Bitmap? { + val decorView: View = activity.window.decorView + val bmp: Bitmap = viewToBitmap(decorView) + val dm = DisplayMetrics() + activity.windowManager.defaultDisplay.getMetrics(dm) + return if (isDeleteStatusBar) { + val statusBarHeight: Int = getStatusBarHeight() + LogUtil.e("$statusBarHeight") + Bitmap.createBitmap( + bmp, 0, statusBarHeight, dm.widthPixels, dm.heightPixels - statusBarHeight + ) + } else { + Bitmap.createBitmap(bmp, 0, 0, dm.widthPixels, dm.heightPixels) + } + } + + /** + * 获å–çŠ¶æ€æ é«˜åº¦ + */ + private fun getStatusBarHeight(): Int { + val resources: Resources = MyApplication.instance.resources + val resourceId: Int = resources.getIdentifier("status_bar_height", "dimen", "android") + return resources.getDimensionPixelSize(resourceId) + } + + /** + * View to bitmap. + *View转æ¢ä¸ºbitmap + * + * @param view The view. + * @return bitmap + */ + fun viewToBitmap(view: View): Bitmap { + val drawingCacheEnabled = view.isDrawingCacheEnabled + val willNotCacheDrawing = view.willNotCacheDrawing() + view.isDrawingCacheEnabled = true + view.setWillNotCacheDrawing(false) + var drawingCache = view.drawingCache + val bitmap: Bitmap + if (null == drawingCache || drawingCache.isRecycled) { + view.measure( + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) + ) + view.layout(0, 0, view.measuredWidth, view.measuredHeight) + view.buildDrawingCache() + drawingCache = view.drawingCache + if (null == drawingCache || drawingCache.isRecycled) { + bitmap = Bitmap.createBitmap( + view.measuredWidth, view.measuredHeight, Bitmap.Config.RGB_565 + ) + val canvas = Canvas(bitmap) + view.draw(canvas) + } else { + bitmap = Bitmap.createBitmap(drawingCache) + } + } else { + bitmap = Bitmap.createBitmap(drawingCache) + } + view.setWillNotCacheDrawing(willNotCacheDrawing) + view.isDrawingCacheEnabled = drawingCacheEnabled + return bitmap + } + + + /** + * View转æ¢ä¸ºbitmap + * è¦æ³¨æ˜Žâ€œandroid:hardwareAccelerated="false"â€ï¼Œä¸ç„¶ä¼šæŠ¥é”™Software rendering doesn't support hardware bitmaps + */ + fun viewToBitmap(view: View, bitmapCallback: (Bitmap) -> Unit) { + val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + view.draw(canvas) + bitmapCallback.invoke(bitmap) + } + + /** + * View转æ¢ä¸ºbitmap + */ + fun viewToBitmap( + context: Context, view: View, window: Window, bitmapCallback: (Bitmap) -> Unit + ) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + //三星手机未渲染显示view部分会有黑边 + LogUtil.d("captureView version O 以上") + // 高于 O 的,使用 PixelCopy + val bitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.ARGB_8888) + bitmap.eraseColor(ContextCompat.getColor(context, R.color.share_color)) + val location = IntArray(2) + view.getLocationInWindow(location) + PixelCopy.request( + window, + Rect(location[0], location[1], location[0] + view.width, location[1] + view.height), + bitmap, + { + if (it == PixelCopy.SUCCESS) { + LogUtil.d("captureView 获å–到 bitmap") + bitmapCallback.invoke(bitmap) + } else { + LogUtil.d("captureView 未获å–到 bitmap, copyResult = $it") + } + }, + Handler(Looper.getMainLooper()) + ) + } else { + LogUtil.d("captureView version O 以下") + val tBitmap = Bitmap.createBitmap(view.width, view.height, Bitmap.Config.RGB_565) + tBitmap.eraseColor(ContextCompat.getColor(context, R.color.share_color)) + val canvas = Canvas(tBitmap) + view.draw(canvas) + canvas.setBitmap(null) + bitmapCallback.invoke(tBitmap) + } + } + + /** + * 等比缩放bitmap + * + * @param bm + * @param newWidth + * @param newHeight + * @return + */ + fun zoomImg(bm: Bitmap, newWidth: Int, newHeight: Int): Bitmap { + // 获得图片的宽高 + val width = bm.width + val height = bm.height + // 计算缩放比例 + val scaleWidth = newWidth.toFloat() / width + val scaleHeight = newHeight.toFloat() / height + // å–得想è¦ç¼©æ”¾çš„matrix傿•° + val matrix = Matrix() + matrix.postScale(scaleWidth, scaleHeight) + // 得到新的图片 + return Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true) + } + + /** + * åˆå¹¶ä¸¤å¼ bitmap为一张 + * + * @param background + * @param foreground + * @return Bitmap + */ + fun combineBitmap(background: Bitmap, foreground: Bitmap): Bitmap { + val bgWidth = background.width + val bgHeight = background.height + val fgWidth = foreground.width + val fgHeight = foreground.height + val newBitmap = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888) + val canvas = Canvas(newBitmap) + canvas.drawBitmap(background, 0f, 0f, null) + canvas.drawBitmap(foreground, (bgWidth - fgWidth) / 2f, (bgHeight - fgHeight) / 2f, null) + canvas.save() + canvas.restore() + return newBitmap + } + + /** + * 使用coilå’Œå程获å–网络图片Bitmap + */ + suspend fun getImageBitmapByUrl(context: Context, url: String): Bitmap { + val imageLoader = ImageLoader(context) + val request = + ImageRequest.Builder(context).data(url).transformations(CircleCropTransformation()) + //默认大å°50dp + .size(QMUIDisplayHelper.dpToPx(50)).allowHardware(false).build() + val drawable = imageLoader.execute(request).drawable ?: return getBitmapFromDrawableAndSvg( + context, R.drawable.icon_dog_default_head_svg + ) ?: BitmapFactory.decodeResource( + context.resources, R.drawable.pic_avatar_df + ) + return (drawable as BitmapDrawable).bitmap + } + + /** + * é€‚é… SVG转Bitmap,drawableRes转Bitmap + */ + fun getBitmapFromDrawableAndSvg(context: Context, @DrawableRes drawableId: Int): Bitmap? { + return when (val drawable = ContextCompat.getDrawable(context, drawableId)) { + is BitmapDrawable -> { + drawable.bitmap + } + + is VectorDrawable, is VectorDrawableCompat -> { + val bitmap = Bitmap.createBitmap( + drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + drawable.setBounds(0, 0, canvas.width, canvas.height) + drawable.draw(canvas) + bitmap + } + + else -> { + throw IllegalArgumentException("unsupported drawable type") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/LonAndLatUtil.kt b/app/src/main/java/com/abbidot/tracker/util/LonAndLatUtil.kt new file mode 100644 index 0000000..88bcb4d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/LonAndLatUtil.kt @@ -0,0 +1,146 @@ +package com.abbidot.tracker.util + +import kotlin.math.abs +import kotlin.math.cos +import kotlin.math.sin +import kotlin.math.sqrt + + +/** + *Created by .yzq on 2022/6/25/025. + * @link + * @description: + */ +class LonAndLatUtil { + + companion object { + + //当å‰ç”¨æˆ·çš„GPSç»çº¬åº¦ + var currentUserGPSLat = 0.0 + var currentUserGPSLon = 0.0 + + private const val a = 6378245.0 + private const val ee = 0.00669342162296594323 + + /** + * GPSåæ ‡(WGS84)è½¬ç«æ˜ŸGCJ02åæ ‡ + * @return + */ + fun convertFromWGS84ToGCJ02(latitude: Double, longitude: Double): DoubleArray { + //åˆå§‹åŒ–åæ ‡è½¬æ¢å·¥å…·ç±»ï¼ŒæŒ‡å®šæºåæ ‡ç±»åž‹å’Œåæ ‡æ•°æ® + // sourceLatLng待转æ¢åæ ‡ +// val converter = CoordinateConverter().from(CoordinateConverter.CoordType.GPS) +// .coord(LatLng(latitude, longitude)) + //desLatLng 转æ¢åŽçš„åæ ‡ +// val desLatLng = converter.convert() + return convert(latitude, longitude) + } + + /** + * ç«æ˜ŸGCJ02åæ ‡è½¬GPSåæ ‡(WGS84) + * @return + */ + fun convertFromGCJ02ToWGS84(lat: Double, lon: Double): DoubleArray { + val dd = DoubleArray(2) + val initDelta = 0.01 + val threshold = 0.000001 + var dLat = initDelta + var dLon = initDelta + var mLat = lat - dLat + var mLon = lon - dLon + var pLat = lat + dLat + var pLon = lon + dLon + var wgsLat: Double + var wgsLon: Double + var i = 0 + while (true) { + wgsLat = (mLat + pLat) / 2 + wgsLon = (mLon + pLon) / 2 + val tmp = convertFromWGS84ToGCJ02(wgsLat, wgsLon) + dLat = tmp[0] - lat + dLon = tmp[1] - lon + if ((abs(dLat) < threshold) && (abs(dLon) < threshold)) { + break + } + if (dLat > 0) { + pLat = wgsLat + } else { + mLat = wgsLat + } + if (dLon > 0) { + pLon = wgsLon + } else { + mLon = wgsLon + } + if (++i > 1000) break + } + dd[0] = wgsLat + dd[1] = wgsLon + return dd + } + + /** + * 动æ€ä¸ªæ•°å‚æ•° + * vararg + * 数组多个元素传入函数的å˜é•¿å‚数需è¦åœ¨æ•°ç»„åå‰åŠ  * å· + */ + fun getMinLatOrLon(vararg latOrLonList: Double): Double { + if (latOrLonList.isNotEmpty()) { + var minLatOrLon = latOrLonList[0] + latOrLonList.forEach { + if (minLatOrLon > it) minLatOrLon = it + } + return minLatOrLon + } + return 0.0 + } + + fun getMaxLatOrLon(vararg latOrLonList: Double): Double { + if (latOrLonList.isNotEmpty()) { + var maxLatOrLon = latOrLonList[0] + latOrLonList.forEach { + if (maxLatOrLon < it) maxLatOrLon = it + } + return maxLatOrLon + } + return 0.0 + } + + /** + * 把公å¼éƒ¨åˆ†æŠ½å–å‡ºæ¥ + */ + private fun convert(latitude: Double, longitude: Double): DoubleArray { + val dd = DoubleArray(2) + var dLat: Double = convertLat(longitude - 105.0, latitude - 35.0) + var dLon: Double = convertLon(longitude - 105.0, latitude - 35.0) + val radLat = latitude / 180.0 * Math.PI + var magic = sin(radLat) + magic = 1 - ee * magic * magic + val sqrtMagic = sqrt(magic) + dLat = dLat * 180.0 / (a * (1 - ee) / (magic * sqrtMagic) * Math.PI) + dLon = dLon * 180.0 / (a / sqrtMagic * cos(radLat) * Math.PI) + dd[0] = latitude + dLat + dd[1] = longitude + dLon + return dd + } + + private fun convertLat(x: Double, y: Double): Double { + var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt( + if (x > 0) x else -x + ) + ret += (20.0 * sin(6.0 * x * Math.PI) + 20.0 * sin(2.0 * x * Math.PI)) * 2.0 / 3.0 + ret += (20.0 * sin(y * Math.PI) + 40.0 * sin(y / 3.0 * Math.PI)) * 2.0 / 3.0 + ret += (160.0 * sin(y / 12.0 * Math.PI) + 320 * sin(y * Math.PI / 30.0)) * 2.0 / 3.0 + return ret + } + + private fun convertLon(x: Double, y: Double): Double { + var ret = + 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(if (x > 0) x else -x) + ret += (20.0 * sin(6.0 * x * Math.PI) + 20.0 * sin(2.0 * x * Math.PI)) * 2.0 / 3.0 + ret += (20.0 * Math.sin(x * Math.PI) + 40.0 * sin(x / 3.0 * Math.PI)) * 2.0 / 3.0 + ret += (150.0 * sin(x / 12.0 * Math.PI) + 300.0 * sin(x / 30.0 * Math.PI)) * 2.0 / 3.0 + return ret + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/NumberPickerValueFill0Format.kt b/app/src/main/java/com/abbidot/tracker/util/NumberPickerValueFill0Format.kt new file mode 100644 index 0000000..80c27a4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/NumberPickerValueFill0Format.kt @@ -0,0 +1,17 @@ +package com.abbidot.tracker.util + +import android.widget.NumberPicker + +/** + *Created by .yzq on 2024/2/21/021. + * @link + * @description: + */ +class NumberPickerValueFill0Format: NumberPicker.Formatter { + override fun format(value: Int): String { +// if (value < 10) { +// return "0$value" +// } + return "$value" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/SocketUtilManage.kt b/app/src/main/java/com/abbidot/tracker/util/SocketUtilManage.kt new file mode 100644 index 0000000..c7a7f7f --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/SocketUtilManage.kt @@ -0,0 +1,223 @@ +package com.abbidot.tracker.util + +import android.content.Context +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.clj.fastble.utils.HexUtil +import com.easysocket.EasySocket +import com.easysocket.config.EasySocketOptions +import com.easysocket.connection.action.SocketStatus +import com.easysocket.entity.OriginReadData +import com.easysocket.entity.SocketAddress +import com.easysocket.interfaces.conn.ISocketActionListener + + +/** + *Created by .yzq on 2025/4/18/018. + * @link + * @description: + */ +class SocketUtilManage { + + private val iP = "3.101.8.36" +// private val iP = "192.168.0.69" + + //默认国外æœåŠ¡å™¨ç«¯å£ + private var port = 6868 + + @OptIn(ExperimentalUnsignedTypes::class) + private val crcTable = ushortArrayOf( + 0x0000u, + 0xCC01u, + 0xD801u, + 0x1400u, + 0xF001u, + 0x3C00u, + 0x2800u, + 0xE401u, + 0xA001u, + 0x6C00u, + 0x7800u, + 0xB401u, + 0x5000u, + 0x9C01u, + 0x8801u, + 0x4400u + ) + + /** + * åˆå§‹åŒ–EasySocket + */ + fun initEasySocket(context: Context) { + if (AppUtils.isChina()) { + //国内socket端å£å· + port = 9168 + } + //socketé…ç½® + val options = EasySocketOptions.Builder().setSocketAddress(SocketAddress(iP, port)) + .setMaxWriteBytes(300) + // 强烈建议定义一个消æ¯å议,方便解决 socketé»åŒ…ã€åˆ†åŒ…的问题 + // .setReaderProtocol(new DefaultMessageProtocol()) // 默认的消æ¯åè®® + .build() + //åˆå§‹åŒ–EasySocket + EasySocket.getInstance().createConnection(options, context).setDebug(AppUtils.isDebug()) + + //监å¬socket相关行为 + EasySocket.getInstance().subscribeSocketAction(object : ISocketActionListener { + override fun onSocketConnSuccess(socketAddress: SocketAddress?) { + LogUtil.e("socket连接æˆåŠŸ") + } + + override fun onSocketConnFail(socketAddress: SocketAddress?, isNeedReconnect: Boolean) { + LogUtil.e("socket连接失败,是å¦éœ€è¦é‡è¿ž:$isNeedReconnect") + } + + override fun onSocketDisconnect( + socketAddress: SocketAddress?, isNeedReconnect: Boolean + ) { + LogUtil.e("socket断开连接,是å¦éœ€è¦é‡è¿ž:$isNeedReconnect") + } + + override fun onSocketResponse( + socketAddress: SocketAddress?, originReadData: OriginReadData? + ) { + LogUtil.d("socket监å¬å™¨æ”¶åˆ°å¯¹è±¡æ•°æ®=" + originReadData?.bodyString) + } + + override fun onSocketResponse(socketAddress: SocketAddress?, readData: String?) { + LogUtil.d("socket监å¬å™¨æ”¶åˆ°å­—符串数æ®=$readData") + } + + override fun onSocketResponse(socketAddress: SocketAddress?, readData: ByteArray?) { + val data = HexUtil.formatHexString(readData, true) + LogUtil.e("socket监å¬å™¨æ”¶åˆ°å­—节数组数æ®=$data") + } + }) + } + + /** + * å•字节 CRC16 计算 + */ + @OptIn(ExperimentalUnsignedTypes::class) + private fun crcGet16(crc: UShort, byte: UByte): UShort { + var currentCrc = crc.toInt() + val lowerNibble = byte.toInt() and 0x0F + val upperNibble = (byte.toInt() shr 4) and 0x0F + + // 处ç†ä½Ž 4 ä½ + var tmp = crcTable[currentCrc and 0x0F].toInt() + currentCrc = (currentCrc shr 4) and 0x0FFF + currentCrc = currentCrc xor tmp xor crcTable[lowerNibble].toInt() + + // 处ç†é«˜ 4 ä½ + tmp = crcTable[currentCrc and 0x0F].toInt() + currentCrc = (currentCrc shr 4) and 0x0FFF + currentCrc = currentCrc xor tmp xor crcTable[upperNibble].toInt() + + return currentCrc.toUShort() + } + + /** + * 计算 CRC16(处ç†å­—节数组) + */ + private fun crcCalc16(data: ByteArray): UShort { + // åˆå§‹å€¼ï¼ˆåˆå§‹ CRC 为 0) + var crc = 0 + data.forEach { byte -> + crc = crcGet16(crc.toUShort(), byte.toUByte()).toInt() + } + return crc.toUShort() + } + + /** + * 大端åºè½¬æ¢:0x3C (高字节) 0x30 (低字节) + */ + private fun UShort.toBytesBE(): ByteArray = byteArrayOf( + (this.toInt() shr 8).toByte(), this.toByte() + ) + + /** + * å°ç«¯åºè½¬æ¢:0x30 (低字节) 0x3C (高字节) + */ + private fun UShort.toBytesLE(): ByteArray = byteArrayOf( + this.toByte(), (this.toInt() shr 8).toByte() + ) + + /** + * å‘é€ä¸€ä¸ªçš„æ¶ˆæ¯ï¼Œ + */ + fun sendMessage(mac: String, msgID: Byte, msgData: MutableList) { + try { +// val data = byteArrayOf(0x01, 0x03, 0x00, 0x01) +// //输出 15408 +// val crc16 = crcCalc16(data) +// // 输出 0x3c30 +// val bytes = crc16.toBytesBE() +// LogUtil.e("CRC16: ${HexUtil.formatHexString(bytes, true)},$crc16") + + val macList = mac.split(":") + val macLen = macList.size + val macByteArray = ByteArray(macLen) + for (i in 0 until macLen) { + macByteArray[i] = macList[i].toInt(16).toByte() + } + val deviceIdByteArray = byteArrayOf( + macByteArray[macLen - 1], + macByteArray[macLen - 2], + macByteArray[macLen - 3], + macByteArray[macLen - 4] + ) + + val cmdList = mutableListOf() + //Device ID ,4 Bytes + cmdList.addAll(deviceIdByteArray.toMutableList()) + //BLE MAC地å€,6 Bytes + cmdList.addAll(macByteArray.toMutableList()) + //Seq No.:包顺åºå·ï¼Œ2 Bytes + cmdList.add(0) + cmdList.add(1) + //åŽç»­æ¶ˆæ¯æ•°ï¼š1 Byte + cmdList.add(0) + //消æ¯ID:MsgID,1 Byte + cmdList.add(msgID) + //æ¶ˆæ¯æ•°æ®ï¼šMsg Data + cmdList.addAll(msgData.toMutableList()) + val packetLength = 19 + msgData.size + //包长:从包起始符到包结æŸç¬¦æ•´ä¸ªæ•°æ®åŒ…的长度,1 Byte + cmdList.add(0, packetLength.toByte()) + val crc = crcCalc16(cmdList.toByteArray()) + val crc16ByteArray = crc.toBytesBE() + //校验值:CRC16,2 Bytes + cmdList.addAll(crc16ByteArray.toMutableList()) + //包结æŸç¬¦ï¼šå­—符‘#’,1 Byte + cmdList.add('#'.code.toByte()) + //包起始符:字符‘@’,1 Byte + cmdList.add(0, '@'.code.toByte()) + val cmdByteArray = cmdList.toByteArray() + + val cmdByteArrayFormat = HexUtil.formatHexString(cmdByteArray, true) + LogUtil.e("$mac==${cmdList.size}个字节,$cmdByteArrayFormat") + + val socketStatus = EasySocket.getInstance().defconnection.connectionStatus + //socket状æ€å·²è¿žæŽ¥ + if (socketStatus == SocketStatus.SOCKET_CONNECTED) { + //å‘é€ + EasySocket.getInstance().upMessage(cmdByteArray) + } + } catch (e: Exception) { + LogUtil.e("socket 呿¶ˆæ¯å¼‚常:${e.message}") + } + } + + fun destroy() { + try { + //destroyConnection()ä»£è¡¨é”€æ¯æ•´ä¸ªè¿žæŽ¥çжæ€ï¼Œè·Ÿdisconnect()ä¸ä¸€æ ·ï¼Œå¦‚果此时è¦è¿›è¡Œsocket连接需è¦é‡æ–°åˆ›å»ºä¸€ä¸ªè¿žæŽ¥ + EasySocket.getInstance().destroyConnection() + //注销监å¬socket相关行为 + EasySocket.getInstance().defOptions.reconnectionManager.detach() + LogUtil.e("socket销æ¯è¿žæŽ¥") + } catch (e: Exception) { + LogUtil.e("socket销æ¯è¿žæŽ¥å¼‚常:${e.message}") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/ThirdPartyUtil.kt b/app/src/main/java/com/abbidot/tracker/util/ThirdPartyUtil.kt new file mode 100644 index 0000000..44613a5 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/ThirdPartyUtil.kt @@ -0,0 +1,49 @@ +package com.abbidot.tracker.util + +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.MyApplication +import com.abbidot.tracker.base.BaseActivity +import com.hjq.toast.Toaster +import com.tencent.mm.opensdk.modelmsg.SendAuth +import com.tencent.mm.opensdk.openapi.IWXAPI +import com.tencent.mm.opensdk.openapi.WXAPIFactory + +/** + *Created by .yzq on 2022/7/8/008. + * @link + * @description:第三方授æƒå·¥å…·ç±»ï¼Œå¾®ä¿¡å’Œæ”¯ä»˜å® + */ +class ThirdPartyUtil { + + companion object { + // APP_ID 替æ¢ä¸ºä½ çš„åº”ç”¨ä»Žå®˜æ–¹ç½‘ç«™ç”³è¯·åˆ°çš„åˆæ³•appID + const val WXAppID = "wx19e9c16c9af43924" + + //IWXAPIå•例模å¼, 是第三方 app 和微信通信的 openApi æŽ¥å£ + val mApi: IWXAPI by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + LogUtil.e("创建微信Api") + // 通过 WXAPIFactory å·¥åŽ‚ï¼ŒèŽ·å– IWXAPI 的实例 + WXAPIFactory.createWXAPI(MyApplication.instance, WXAppID, true) + } + + val instance: ThirdPartyUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + ThirdPartyUtil() + } + } + + /** + * 开始微信登录 + */ + fun startWXLogin(activity: BaseActivity<*>) { + if (!mApi.isWXAppInstalled) { + Toaster.show("没有安装微信") + return + } + activity.showLoading(true) + // send oauth request + val req = SendAuth.Req() + req.scope = "snsapi_userinfo" + req.state = "wechat_sdk_demo_test" + mApi.sendReq(req) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/Util.kt b/app/src/main/java/com/abbidot/tracker/util/Util.kt new file mode 100644 index 0000000..39d506e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/Util.kt @@ -0,0 +1,786 @@ +package com.abbidot.tracker.util + +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.location.LocationManager +import android.os.Build +import android.os.Parcelable +import android.provider.Settings +import androidx.lifecycle.LifecycleCoroutineScope +import cn.jpush.android.api.JPushInterface +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.BleReportDataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.MessageBean +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.dialog.PackageUpgradeDialog +import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.SayHelloActivity +import com.abbidot.tracker.ui.activity.device.AddNewTracker1Activity +import com.abbidot.tracker.ui.activity.pet.ShowInviteDeviceActivity +import com.abbidot.tracker.ui.activity.pet.first.FirstSetPetTypeActivity +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.baidu.mapapi.utils.DistanceUtil +import com.clj.fastble.BleManager +import com.google.android.gms.maps.model.LatLng +import com.hjq.permissions.OnPermissionCallback +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists +import com.hjq.permissions.permission.base.IPermission +import com.hjq.toast.Toaster +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MultipartBody +import okhttp3.RequestBody.Companion.asRequestBody +import java.io.File +import java.util.Random +import kotlin.math.acos +import kotlin.math.cos +import kotlin.math.sin + + +/** + *Created by .yzq on 2022/1/19/019. + * @link + * @description:工具类 + */ +class Util { + + companion object { + + /** + * 计算2个ç»çº¬åº¦é—´è·ç¦»,结果返回 ç±³ + */ + fun measureLatLonDistance( + startLat: Double, startLon: Double, endLat: Double, endLon: Double + ): Double { + val dis = if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + //百度地图计算两点之间的直线è·ç¦»ï¼Œå•ä½ï¼šç±³ï¼Œç»çº¬åº¦ç™¾åº¦è¾“出的GCJ02åæ ‡ï¼Œä¸éœ€è¦è½¬æ¢ + DistanceUtil.getDistance( + com.baidu.mapapi.model.LatLng(startLat, startLon), + com.baidu.mapapi.model.LatLng(endLat, endLon) + ) + } else { + //mapbox计算2个ç»çº¬åº¦é—´è·ç¦»,结果返回 ç±³ +// TurfMeasurement.distance(Point.fromLngLat(startLon, startLat), +// Point.fromLngLat(endLon, endLat), TurfConstants.UNIT_METERS) + DistanceUtil.getDistance( + com.baidu.mapapi.model.LatLng(startLat, startLon), + com.baidu.mapapi.model.LatLng(endLat, endLon) + ) + } + + return Utils.formatDecimal(dis).toDouble() + } + + /** + * 转æ¢è‹±åˆ¶å•ä½ + * @param type 0=in 1=lbs 2=mph 3=ft + */ + fun metricConvertUnits(value: Float, type: Int, keepNum: Int = 1): Float { + var convertValue = value + val measureUnit = getMeasureSpUnit() + if (measureUnit == ConstantInt.Type1) { + when (type) { + ConstantInt.Type0 -> convertValue = cmToIn(value.toDouble()).toFloat() + ConstantInt.Type1 -> convertValue = kgToLbs(value.toDouble()).toFloat() + ConstantInt.Type2 -> convertValue = kmhToMph(value.toDouble()).toFloat() + ConstantInt.Type3 -> convertValue = mToFT(value.toDouble()).toFloat() + ConstantInt.Type4 -> convertValue = kmToMile(value.toDouble()).toFloat() + } + } + + return Utils.formatDecimal(convertValue, keepNum).toFloat() + } + + /** + * 转æ¢å…¬åˆ¶å•ä½ + * @param type 0=cm 1=kg 2=km/h 3=m + */ + fun convertMetricUnits(value: Float, type: Int, keepNum: Int = 1): Float { + var convertValue = value + val measureUnit = getMeasureSpUnit() + if (measureUnit == ConstantInt.Type1) { + when (type) { + ConstantInt.Type0 -> convertValue = inToCm(value.toDouble()).toFloat() + ConstantInt.Type1 -> convertValue = lbsToKg(value.toDouble()).toFloat() + } + } + + return Utils.formatDecimal(convertValue, keepNum).toFloat() + } + + + /** + * 获å–å•ä½ + */ + fun getMeasureSpUnit() = MMKVUtil.getInt(MMKVKey.MeasureUnit, 1) + + /** + * 获å–å•ä½åç§° + */ + fun getMeasureUnitName(context: Context): String { + return if (getMeasureSpUnit() == ConstantInt.Type1) context.getString(R.string.txt_imperial) + else context.getString(R.string.txt_metric) + } + + /** + * km/h转æ¢mph + */ + private fun kmhToMph(value: Double): Double { + return value / 0.6213712 + } + + private fun mToFT(value: Double): Double { + return value * 3.2808399 + } + + private fun kmToMile(value: Double): Double { + return value * 0.621 + } + + private fun cmToIn(value: Double): Double { + return value * 0.3937 + } + + private fun inToCm(value: Double): Double { + return value * 2.54 + } + + private fun kgToLbs(value: Double): Double { + return value * 2.2065 + } + + private fun lbsToKg(value: Double): Double { + return value * 0.4532 + } + + /** + * 获å–宠物的体é‡èº«é«˜èŒƒå›´ + * @param type æ˜¯èº«é«˜è¿˜æ˜¯ä½“é‡ 0身高 1ä½“é‡ + * @param valueType 最大值还是最å°å€¼ 0大 1å° + */ + fun getPetHeightAndWeightRangeValue(petType: Int, type: Int, valueType: Int): Int { + var value = 0 + val measureUnit = getMeasureSpUnit() + if (petType == ConstantInt.CatPetType) { + //身高 + if (type == ConstantInt.HeightType) { + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 25 + else if (measureUnit == ConstantInt.Type2) value = 65 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 3 + else if (measureUnit == ConstantInt.Type2) value = 7 + } + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 30 + else if (measureUnit == ConstantInt.Type2) value = 13 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 0 + } + } + } else if (petType == ConstantInt.DogPetType) { + //身高 + if (type == ConstantInt.HeightType) { + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 50 + else if (measureUnit == ConstantInt.Type2) value = 130 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 3 + else if (measureUnit == ConstantInt.Type2) value = 7 + } + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 200 + else if (measureUnit == ConstantInt.Type2) value = 90 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 0 + } + } + } else { + //身高 + if (type == ConstantInt.HeightType) { + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 20 + else if (measureUnit == ConstantInt.Type2) value = 50 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 1 + } + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (valueType == ConstantInt.MaxType) { + if (measureUnit == ConstantInt.Type1) value = 45 + else if (measureUnit == ConstantInt.Type2) value = 20 + } else if (valueType == ConstantInt.MinType) { + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 1 + } + } + } + return value + } + + /** + * 获å–宠物的体é‡èº«é«˜é»˜è®¤å€¼ + * @param type æ˜¯èº«é«˜è¿˜æ˜¯ä½“é‡ 0身高 1ä½“é‡ + */ + fun getPetHeightAndWeightDefaultValue(petType: Int, type: Int): Int { + var value = 0 + val measureUnit = getMeasureSpUnit() + if (petType == ConstantInt.CatPetType) { + //身高 + if (type == ConstantInt.HeightType) { + if (measureUnit == ConstantInt.Type1) value = 10 + else if (measureUnit == ConstantInt.Type2) value = 25 + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (measureUnit == ConstantInt.Type1) value = 9 + else if (measureUnit == ConstantInt.Type2) value = 4 + } + } else if (petType == ConstantInt.DogPetType) { + //身高 + if (type == ConstantInt.HeightType) { + if (measureUnit == ConstantInt.Type1) value = 20 + else if (measureUnit == ConstantInt.Type2) value = 50 + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (measureUnit == ConstantInt.Type1) value = 22 + else if (measureUnit == ConstantInt.Type2) value = 10 + } + } else { + //身高 + if (type == ConstantInt.HeightType) { + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 1 + } else if (type == ConstantInt.WeightType) { + //1ä½“é‡ + if (measureUnit == ConstantInt.Type1) value = 1 + else if (measureUnit == ConstantInt.Type2) value = 1 + } + } + return value + } + + /** + * 获å–å•ä½ + * @param type 0=cm 1=kg 2=km/h 3=m 4=km + */ + fun getMetricUnits(context: Context, type: Int): String { + var unit = "" + val measureUnit = getMeasureSpUnit() + when (type) { + ConstantInt.Type0 -> { + if (measureUnit == ConstantInt.Type2) unit = context.getString(R.string.txt_cm) + else if (measureUnit == ConstantInt.Type1) unit = + context.getString(R.string.txt_in) + } + + ConstantInt.Type1 -> { + if (measureUnit == ConstantInt.Type2) unit = context.getString(R.string.txt_kg) + else if (measureUnit == ConstantInt.Type1) unit = + context.getString(R.string.txt_lb) + } + + ConstantInt.Type2 -> { + if (measureUnit == ConstantInt.Type2) unit = + context.getString(R.string.txt_km_h) + else if (measureUnit == ConstantInt.Type1) unit = + context.getString(R.string.txt_mph) + } + + ConstantInt.Type3 -> { + if (measureUnit == ConstantInt.Type2) unit = context.getString(R.string.txt_m) + else if (measureUnit == ConstantInt.Type1) unit = + context.getString(R.string.txt_ft) + } + + ConstantInt.Type4 -> { + if (measureUnit == ConstantInt.Type2) unit = context.getString(R.string.txt_km) + else if (measureUnit == ConstantInt.Type1) unit = + context.getString(R.string.txt_distance_unit) + } + } + return unit + } + + /** + * 计算两点之间è·ç¦» + * @param start + * @param end + * @return ç±³ + */ + fun getDistance(start: LatLng, end: LatLng): Double { + val lat1 = Math.PI / 180 * start.latitude + val lat2 = Math.PI / 180 * end.latitude + val lon1 = Math.PI / 180 * start.longitude + val lon2 = Math.PI / 180 * end.longitude + //地çƒåŠå¾„ + val r = 6371.393 + //两点间è·ç¦» km,如果想è¦ç±³çš„è¯ï¼Œç»“æžœ*1000å°±å¯ä»¥äº† + val d = acos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1)) * r + return d * 1000 + } + + /** + * 检查æƒé™å¹¶èŽ·å–æƒé™ + */ + fun checkPermissions( + context: Context, + requestPermissionCallback: RequestPermissionCallback, + permissionTag: String, + vararg permissions: IPermission + ) { + XXPermissions.with(context).permissions(permissions) + .request(object : OnPermissionCallback { + override fun onGranted( + permissions: MutableList, all: Boolean + ) { + if (all) { + LogUtil.e("获å–${permissionTag}æƒé™æˆåŠŸ") + requestPermissionCallback.onRequestPermissionSuccess() + } else { + LogUtil.e("获å–部分æƒé™æˆåŠŸï¼Œä½†éƒ¨åˆ†æƒé™æœªæ­£å¸¸æŽˆäºˆ") + requestPermissionCallback.onRequestPermissionFail() + } + } + + override fun onDenied( + permissions: MutableList, doNotAskAgain: Boolean + ) { + if (doNotAskAgain) { + LogUtil.e("è¢«æ°¸ä¹…æ‹’ç»æŽˆæƒï¼Œè¯·æ‰‹åŠ¨æŽˆäºˆå®šä½æƒé™") + // 如果是被永久拒ç»å°±è·³è½¬åˆ°åº”用æƒé™ç³»ç»Ÿè®¾ç½®é¡µé¢ + XXPermissions.startPermissionActivity(context, permissions) + } else { + LogUtil.e("获å–${permissionTag}æƒé™å¤±è´¥") + requestPermissionCallback.onRequestPermissionFail() + } + } + }) + } + + + /** + * 上传调用的方法 ,传入本地文件路径,å程挂载方法 + */ + fun uploadFile(pathImg: String, fileType: String = "image/png"): MultipartBody.Part { + val file = File(pathImg) + val fileRQ = file.asRequestBody(fileType.toMediaTypeOrNull()) + return MultipartBody.Part.createFormData("file", file.name, fileRQ) + } + + +// var pattern: String { +// switch self { +// case .visa: return "^4[0-9]{12}(?:[0-9]{3})?$" +// case .visaElectron: return "^(4026|417500|4508|4844|491(3|7))" +// case .mastercard: return "^5[1-5][0-9]{14}$" +// case .maestro: return "^(5018|5020|5038|6304|6759|676[1-3])" +// case .americanExpress: return "^3[47][0-9]{13}$" +// case .dinnersClub: return "^3(?:0[0-5]|[68][0-9])[0-9]{11}$" +// case .discovery: return "^6(?:011|5[0-9]{2})[0-9]{12}$" +// case .jcb: return "^(?:2131|1800|35\\d{3})\\d{11}$" +// case .unknown: +// return "" +// } +// } + /** + * åˆæ³•的信用å¡ç±»åž‹ + */ + fun getCreditCardType(cardNumber: String): Int { + //visa + var regex = "^4[0-9]{12}(?:[0-9]{3})?$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_visa_card + } + //visaElectron + regex = "^(4026|417500|4508|4844|491(3|7))" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_visa_card + } + //mastercard + regex = "^5[1-5][0-9]{14}$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_mastercard + } + //maestro + regex = "^(5018|5020|5038|6304|6759|676[1-3])" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_maestrocard + } + //americanExpress + regex = "^3[47][0-9]{13}$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_amexcard + } + //dinnersClub + regex = "^3(?:0[0-5]|[68][0-9])[0-9]{11}$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_newcard + } + //discovery + regex = "^6(?:011|5[0-9]{2})[0-9]{12}$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_discovercard + } + //jcb + regex = "^(?:2131|1800|35\\d{3})\\d{11}$" + if (Utils.isRegularExpression(cardNumber, regex)) { + return R.drawable.ico_lay_newcard + } + //unknown类型å¡ç‰‡,ä¸åˆæ³• + return 0 + } + + private const val CARD_NUMBER_FORMAT = "XXXX XXXX XXXX XXXX" + private const val CARD_NUMBER_FORMAT_AMEX = "XXXX XXXXXX XXXXX" + + /** + * æ ¼å¼åŒ–å¡å· + */ + fun formatCardNumber(cardNumber: String): String { + val unformattedText = cardNumber.replace(" ", "") + val sbFormattedNumber = StringBuilder() + val format = if (cardNumber.length == 15) { + CARD_NUMBER_FORMAT_AMEX + } else { + CARD_NUMBER_FORMAT + } + var j = 0 + for (i in format.indices) { + if (j > unformattedText.length - 1) { + break + } + if (format[i] == 'X') { + sbFormattedNumber.append(unformattedText[j++]) + } else { + sbFormattedNumber.append(format[i]) + } + } + return sbFormattedNumber.toString() + } + + /** + * getParcelable ä¸åŒç‰ˆæœ¬é€‚é… + */ + fun getParcelableAdaptive(intent: Intent, key: String, clazz: Class): T? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.extras?.getParcelable(key, clazz) + } else { + intent.extras?.getParcelable(key) + } + } + + /** + * getParcelableArrayList ä¸åŒç‰ˆæœ¬é€‚é… + */ + fun getParcelableArrayListAdaptive( + intent: Intent, key: String, clazz: Class + ): ArrayList? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.extras?.getParcelableArrayList(key, clazz) + } else { + intent.extras?.getParcelableArrayList(key) + } + } + + /** + * 获å–AndroidManifest.xml中的meta-data值 + */ + fun getMetadata(context: Context, key: String): String { + val app = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + context.packageManager.getApplicationInfo( + context.packageName, + PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA.toLong()) + ) + } else { + context.packageManager.getApplicationInfo( + context.packageName, PackageManager.GET_META_DATA + ) + } + return app.metaData.getString(key) ?: "" + } + + /** + * 处ç†ç™»å½•æˆåŠŸåŽçš„æ•°æ® + */ + fun dealLoginSuccessData(context: Context, userBean: UserBean) { + LogUtil.e("处ç†ç™»å½•æˆåŠŸåŽçš„æ•°æ®:$userBean") + //通知相关页é¢å…³é—­ + XEventBus.post(EventName.FinishActivity) + userBean.apply { + MMKVUtil.putString(MMKVKey.UserId, userId) + MMKVUtil.putString(MMKVKey.Email, email) + MMKVUtil.putString(MMKVKey.Token, token) + MMKVUtil.putString(MMKVKey.UserName, userName) + MMKVUtil.putInt(MMKVKey.MeasureUnit, measurementUnitType) + MMKVUtil.putInt(MMKVKey.isBindDevice, isBindDevice) + MMKVUtil.putInt(MMKVKey.isBindPet, isBindPet) + MMKVUtil.putInt(MMKVKey.isExistNewInvite, isExistNewInvite) + MMKVUtil.putBoolean(MMKVKey.FirstOpen, false) + val rand = Random() + //æžå…‰æŽ¨é€è®¾ç½®åˆ«å + JPushInterface.setAlias(context, rand.nextInt(1000), userId) + } + } + + /** + * 退出登录 + */ + fun logOut(activity: BaseActivity<*>, lifecycleScope: LifecycleCoroutineScope) { + val rand = Random() + //此接å£åªèƒ½æ¸…除当å‰è®¾å¤‡ä¸Žç›®æ ‡ alias 的绑定关系 + // 想清除目标 alias 与所有设备的绑定关系,请想清除目标 alias 与所有设备的绑定关系 + // ,调用æœåŠ¡å™¨æŽ¥å£https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device + JPushInterface.deleteAlias(activity, rand.nextInt(1000)) + XEventBus.post(EventName.LogOut) + SRBleUtil.instance.cancelBleScan("å·²ç»åœ¨æ‰«æè“ç‰™ï¼Œé€€å‡ºç™»å½•å–æ¶ˆæ‰«æ") + BleManager.getInstance().disconnectAllDevice() + lifecycleScope.launch { + val email = MMKVUtil.getString(MMKVKey.Email) + MMKVUtil.clearAll() + //ä¿å­˜æœ€åŽä¸€æ¬¡ç™»å½•的邮箱 + MMKVUtil.putString(MMKVKey.Email, email) + withContext(Dispatchers.IO) { + MyDatabase.deviceDao().deleteAll(MyDatabase.DeviceTableName) + MyDatabase.messageDao().deleteAll(MyDatabase.MessageTableName) + MyDatabase.creditCardDao().deleteAll(MyDatabase.CreditCardTableName) + } + activity.startActivityFinish(Intent(activity, SayHelloActivity::class.java)) + } + } + + /** + * 检测首次是å¦ç»‘定设备和宠物 + */ + fun checkBindDeviceAndPetGoActivity(context: Context): Intent { + val intent = Intent() + val isExistNewInvite = MMKVUtil.getInt(MMKVKey.isExistNewInvite) + if (isExistNewInvite != ConstantInt.NoShare) { + intent.setClass(context, ShowInviteDeviceActivity::class.java) + return intent + } + val isBindDevice = MMKVUtil.getInt(MMKVKey.isBindDevice) + val isBindPet = MMKVUtil.getInt(MMKVKey.isBindPet) + if (isBindDevice == ConstantInt.NoBind) { + intent.setClass(context, AddNewTracker1Activity::class.java) + intent.putExtra(ConstantString.isFirstBind, true) + } else if (isBindPet == ConstantInt.NoBind) { + intent.setClass(context, FirstSetPetTypeActivity::class.java) + intent.putExtra(ConstantString.isFirstBind, true) + } else { + intent.setClass(context, HomeV2Activity::class.java) + } + return intent + } + + fun dealMessage(serverMessageList: MutableList) { + MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.let { messageList -> + for (message in serverMessageList) { + var isAdd = false + for (m in messageList) { + if (message.messageId == m.messageId) { + isAdd = true + break + } + } + if (!isAdd) MyDatabase.messageDao().insert(message) + } + } + } + + /** + * æ£€æµ‹æ˜¯å¦æœ‰å¿…è¦æƒé™å’Œå¼€å…³ + */ + fun checkNeedPermissionsEnabled(context: Context): Boolean { + val locationManager = + context.getSystemService(Context.LOCATION_SERVICE) as LocationManager + var hasPermissions = true + //检测è“牙æƒé™å’Œè“牙开关 + if (!XXPermissions.isGrantedPermissions( + context, mutableListOf( + PermissionLists.getBluetoothScanPermission(), + PermissionLists.getBluetoothConnectPermission() + ) + ) || !SRBleUtil.instance.isBlueEnable(context) + ) { + hasPermissions = false + } + if (hasPermissions) { + //æ£€æŸ¥å®šä½æƒé™ + if (!XXPermissions.isGrantedPermissions( + context, mutableListOf( + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + ) || !locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) + ) { + hasPermissions = false + } + } + if (hasPermissions) { + //检测通知æƒé™ + if (!XXPermissions.isGrantedPermissions( + context, mutableListOf( + PermissionLists.getPostNotificationsPermission(), + PermissionLists.getNotificationServicePermission() + ) + ) + ) { + hasPermissions = false + } + } + return hasPermissions + } + + /** + * 检查è“牙æƒé™å’Œå¼€å…³ + */ + fun checkBluetoothPermissionsEnabled( + context: Context, successAuthorize: () -> Unit, isShowToast: Boolean = true + ) { + checkPermissions( + context, + object : RequestPermissionCallback { + override fun onRequestPermissionSuccess() { + //判断è“ç‰™æ˜¯å¦æ‰“å¼€ + if (!SRBleUtil.instance.isBlueEnable(context)) { + SRBleUtil.instance.openBluetooth(context) + return + } + successAuthorize() + } + + override fun onRequestPermissionFail() { + if (isShowToast) Toaster.show(R.string.txt_permissions_fail_tips) + } + }, + "checkBluetoothPermissionsEnabled,定ä½å’Œè“牙æƒé™,Android12è“牙扫æå’Œè¿žæŽ¥æƒé™", + PermissionLists.getBluetoothScanPermission(), + PermissionLists.getBluetoothConnectPermission(), + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + } + + /** + * æ£€æŸ¥å®šä½æƒé™å’ŒGPS开关 + */ + fun checkLocationPermissionsGpsEnabled( + context: Context, successAuthorize: () -> Unit, isShowToast: Boolean = true + ) { + val locationManager = + context.getSystemService(Context.LOCATION_SERVICE) as LocationManager + checkPermissions( + context, + object : RequestPermissionCallback { + override fun onRequestPermissionSuccess() { + //判断GPSæ˜¯å¦æ‰“å¼€ + if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { + val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) + context.startActivity(intent) + return + } + successAuthorize() + } + + override fun onRequestPermissionFail() { + if (isShowToast) Toaster.show(R.string.txt_permissions_fail_tips) + } + }, + "checkLocationPermissionsGpsEnabled,å®šä½æƒé™", + PermissionLists.getAccessFineLocationPermission(), + PermissionLists.getAccessCoarseLocationPermission() + ) + } + + /** + * åŸºç¡€å¥—é¤æƒé™æŽ§åˆ¶ + */ + fun checkPackageLimit( + activity: BaseActivity<*>, deviceId: String + ): Boolean { + LogUtil.e("åŸºç¡€å¥—é¤æƒé™æŽ§åˆ¶deviceId=$deviceId") + val mealType = MMKVUtil.getInt(MMKVKey.MealType) + if (ConstantInt.BasicPackage == mealType) { + PackageUpgradeDialog(activity, deviceId).show() + return true + } + return false + } + + /** + * BleReportDataBeanæ•°æ®è½¬æ¢MapDeviceBeanæ•°æ® + */ + fun bleReportDataToMapDevice( + mapDeviceBean: MapDeviceBean, bleReportData: BleReportDataBean + ) { + bleReportData.apply { + mapDeviceBean.let { + it.inSafeZone = inSafeZone + it.gpsSignal = gpsSignal + it.batteryLevel = batteryLevel + it.ledSwitch = ledSwitch + it.gnssInterval = gnssInterval + it.liveFlag = liveFlag + it.updateTime = updateTime + it.latLonUpdateTime = latLonUpdateTime + it.lteSignal = lteSignal + it.powerSwitch = powerSwitch + it.inNoGoZone = inNoGoZone + it.inWifiZone = inWifiZone + it.ledRedValue = ledRedValue + it.ledGreenValue = ledGreenValue + it.ledBlueValue = ledBlueValue + } + } + } + + /** + * æ˜¯å¦æ˜¯è¶…时上报了 + * + * @param updateTime 10使—¶é—´æˆ³ + */ + fun isTimeoutReport(updateTime: Long): Boolean { + val now = System.currentTimeMillis() / 1000 + val updateMin = (now - updateTime) / 60 + return updateMin > ConstantInt.ReportTimeOutTime + } + + /** + * 获å–ä¿å­˜çš„åœ°å›¾æ¨¡å¼ åœ°å›¾ç±»åž‹ï¼Œ0标准 1嫿˜Ÿåœ°å›¾ + */ + fun getMapTypeSp() = MMKVUtil.getInt(MMKVKey.MapType, ConstantInt.Type0) + fun getShowFenceSp() = MMKVUtil.getBoolean(MMKVKey.ShowFence, true) + + } + + /** + *è¯·æ±‚èŽ·å–æƒé™æˆåŠŸå¤±è´¥å›žè°ƒ + */ + interface RequestPermissionCallback { + fun onRequestPermissionSuccess() + fun onRequestPermissionFail() {} + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt new file mode 100644 index 0000000..be2c0ee --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt @@ -0,0 +1,1113 @@ +package com.abbidot.tracker.util + +import android.animation.AnimatorSet +import android.animation.ObjectAnimator +import android.animation.TimeInterpolator +import android.animation.ValueAnimator +import android.app.Activity +import android.content.Context +import android.graphics.Rect +import android.graphics.Typeface +import android.graphics.drawable.GradientDrawable +import android.graphics.drawable.StateListDrawable +import android.os.Build +import android.text.InputFilter +import android.text.InputType +import android.text.TextUtils +import android.text.method.HideReturnsTransformationMethod +import android.text.method.PasswordTransformationMethod +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.view.animation.Animation +import android.view.animation.AnimationUtils +import android.view.animation.DecelerateInterpolator +import android.view.animation.LinearInterpolator +import android.widget.CompoundButton +import android.widget.DatePicker +import android.widget.EditText +import android.widget.FrameLayout +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.NumberPicker +import android.widget.ProgressBar +import android.widget.RelativeLayout +import android.widget.TextView +import androidx.annotation.DrawableRes +import androidx.core.content.ContextCompat +import androidx.core.view.setPadding +import androidx.core.widget.addTextChangedListener +import androidx.fragment.app.FragmentActivity +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.viewpager2.widget.ViewPager2 +import coil.load +import coil.transform.Transformation +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.BuildConfig +import com.abbidot.tracker.R +import com.abbidot.tracker.adapter.GridItemDecoration +import com.abbidot.tracker.adapter.SelectMapTypeCardShadeAdapter +import com.abbidot.tracker.adapter.SpaceItemDecoration +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.constant.MultipleEntity +import com.abbidot.tracker.dialog.MyAlertDialog +import com.abbidot.tracker.dialog.SelectMapTypeDialog +import com.abbidot.tracker.ui.activity.WebViewActivity +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.widget.TypefaceTextView +import com.daimajia.androidanimations.library.Techniques +import com.daimajia.androidanimations.library.YoYo +import com.daimajia.androidanimations.library.YoYo.YoYoString +import com.google.android.flexbox.FlexboxLayoutManager +import com.google.android.material.bottomsheet.BottomSheetBehavior +import com.google.android.material.bottomsheet.BottomSheetDialog +import com.hjq.permissions.OnPermissionCallback +import com.hjq.permissions.XXPermissions +import com.hjq.permissions.permission.PermissionLists +import com.hjq.permissions.permission.base.IPermission +import com.hjq.toast.Toaster +import com.huantansheng.easyphotos.EasyPhotos +import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView +import java.util.Calendar + + +/** + *Created by .yzq on 2021/12/22/022. + * @link + * @description: + */ +class ViewUtil private constructor() { + + //å•ä¾‹æ¨¡å¼ + companion object { + //粗体字体 + const val FONT_BOLD = "fonts/Roboto_Bold.ttf" + const val FONT_BOLD_NAME = "roboto_bold_font" + + //普通黑色字体 + const val FONT_COMMON = "fonts/Roboto_Regular.ttf" + const val FONT_COMMON_NAME = "roboto_regular_font" + + //数字字体 + const val FONT_NUMBER = "fonts/DinCond_Bold.otf" + const val FONT_NUMBER_NAME = "number_din_cond_font" + + //信用å¡å­—体 + const val FONT_CREDIT = "fonts/Credit.ttf" + const val FONT_CREDIT_NAME = "credit_card_font" + + const val textImageUrl = + "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.zhimg.com%2Fv2-087b76d6a57befbf484e3aa8138037fa_1440w.jpg%3Fsource%3D172ae18b&refer=http%3A%2F%2Fpic1.zhimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644660067&t=b8edb5a50920007abdd445d461ff6bab" + + val instance: ViewUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + ViewUtil() + } + } + + /** + * 设置字体 + */ + fun setTypeface(context: Context, type: String?): Typeface { + //默认字体 + var typeface = Typeface.DEFAULT + when (type) { + FONT_BOLD_NAME -> { + typeface = Typeface.createFromAsset(context.assets, FONT_BOLD) + } + + FONT_COMMON_NAME -> { + typeface = Typeface.createFromAsset(context.assets, FONT_COMMON) + } + + FONT_NUMBER_NAME -> { + typeface = Typeface.createFromAsset(context.assets, FONT_NUMBER) + } + + FONT_CREDIT_NAME -> { + typeface = Typeface.createFromAsset(context.assets, FONT_CREDIT) + } + } + + return typeface + } + + + /** + * 设置QMUICommonListItemViewæ•°æ®,一组多个水平控件的按钮 + * + * @param name 按钮å字用于左边显示 + * @param accessoryType å³è¾¹æ˜¾ç¤ºç±»åž‹ + */ + fun showQMUICommonListItemView( + context: Context, + qMUIItemView: QMUICommonListItemView, + onClickListener: View.OnClickListener?, + name: String, + accessoryType: Int + ) { + val tf = setTypeface(context, context.getString(R.string.roboto_bold_font)) + + qMUIItemView.let { + it.text = name + //带有值显示下方,例如详情 + it.orientation = QMUICommonListItemView.HORIZONTAL + it.textView.typeface = tf + if (accessoryType != -1) it.accessoryType = accessoryType + it.detailText = "" + it.setOnClickListener(onClickListener) + } + } + + fun showQMUICommonListItemView( + context: Context, + qMUIItemView: QMUICommonListItemView, + onClickListener: View.OnClickListener?, + name: String + ) { + showQMUICommonListItemView(context, qMUIItemView, onClickListener, name, -1) + } + + /** + * 设置NumberPicker相关属性 + */ + fun setNumberPickerAttributes( + context: Context, + numberPicker: NumberPicker, + min: Int = 0, + max: Int, + cValue: Int = 0, + tSize: Int = 0, + formatter: NumberPicker.Formatter? = null, + valueChangeListener: NumberPicker.OnValueChangeListener? = null, + //去掉上下2行线 + removeUpDownLine: Boolean = false, + loopSelector: Boolean = true + ) { + numberPicker.apply { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) { + selectionDividerHeight = AppUtils.dpToPx(1) + if (tSize > 0) { + textSize = QMUIDisplayHelper.sp2px(context, tSize).toFloat() + } + } + if (min >= 0) minValue = min + if (max >= 0) maxValue = max + if (cValue >= 0) value = cValue + //ä¸å¯ç¼–辑 + descendantFocusability = NumberPicker.FOCUS_BLOCK_DESCENDANTS + //是å¦å¯ä»¥å¾ªçŽ¯æ»‘åŠ¨ + wrapSelectorWheel = loopSelector + //去掉上下2行线 + if (removeUpDownLine) showDividers = LinearLayout.SHOW_DIVIDER_NONE + if (null != formatter) setFormatter(formatter) + if (null != valueChangeListener) setOnValueChangedListener(valueChangeListener) + } + } + + /** + * 监å¬2ä¸ªå…³è” NumberPicker ä¸èƒ½åŒæ—¶ä¸º0,éšè—按钮 + */ + fun numberPickerLinkageValueNo0(cNumberPickerNewVal: Int, linkage: NumberPicker, btn: View) { + if (cNumberPickerNewVal == 0 && linkage.value == 0) { + if (btn.visibility == View.VISIBLE) { + btn.isEnabled = false + viewHideFadeInAnimation(btn, hideType = View.INVISIBLE) + } + } else { + if (btn.visibility == View.INVISIBLE) { + btn.isEnabled = true + viewShowFadeInAnimation(btn) + } + } + } + + /** + * 设置item分割线和水平线性布局 + */ + fun setRecyclerViewDecorationLinearLayoutManager( + context: Context, recyclerView: RecyclerView, adapter: RecyclerView.Adapter<*> + ) { + recyclerView.let { + it.layoutManager = LinearLayoutManager(context) + it.addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL)) + it.adapter = adapter + } + } + + /** + * 设置垂直滑动布局的RecyclerView + */ + fun setRecyclerViewVerticalLinearLayout( + context: Context, + recyclerView: RecyclerView, + adapter: RecyclerView.Adapter<*>, + left: Int = 0, + right: Int = 0, + top: Int = 0, + bottom: Int = 0 + ) { + recyclerView.let { + it.layoutManager = LinearLayoutManager(context) + if (left > 0 || right > 0 || top > 0 || bottom > 0) it.addItemDecoration( + SpaceItemDecoration(left, right, top, bottom) + ) + it.adapter = adapter + } + } + + /** + * 设置水平滑动布局的RecyclerView + */ + fun setRecyclerViewHorizontalLinearLayout( + context: Context, + recyclerView: RecyclerView, + adapter: RecyclerView.Adapter<*>, + left: Int = 0, + right: Int = 0, + top: Int = 0, + bottom: Int = 0 + ) { + recyclerView.let { + it.layoutManager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false) + if (left > 0 || right > 0 || top > 0 || bottom > 0) it.addItemDecoration(object : + RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State + ) { + val position = parent.getChildAdapterPosition(view) + if (left > 0 && position == 0) { + outRect.left = left + } + if (right > 0) { + outRect.right = right + } + if (top > 0) { + outRect.top = top + } + if (bottom > 0) { + outRect.bottom = bottom + } + } + }) + it.adapter = adapter + } + } + + fun setRecyclerViewFlexboxLayout( + context: Context, + recyclerView: RecyclerView, + adapter: RecyclerView.Adapter<*>, + left: Int = 0, + right: Int = 0, + top: Int = 0, + bottom: Int = 0 + ) { + recyclerView.let { + it.layoutManager = FlexboxLayoutManager(context) + if (left > 0 || right > 0 || top > 0 || bottom > 0) it.addItemDecoration( + SpaceItemDecoration(left, right, top, bottom) + ) + it.adapter = adapter + } + } + + /** + * 设置GridLayout布局的RecyclerView + * @param offset 控件的外边è·ï¼Œä¸ä½¿ç”¨å±å¹•宽度æ¥è®¡ç®— + */ + fun setRecyclerViewGridLayout( + context: Context, + recyclerView: RecyclerView, + adapter: RecyclerView.Adapter<*>, + spanCount: Int, + itemWidth: Int = AppUtils.dpToPx(80), + top: Int = 0, + bottom: Int = 0, + offset: Int = 0 + ) { + recyclerView.let { + it.layoutManager = GridLayoutManager(context, spanCount) + it.addItemDecoration( + GridItemDecoration( + context, spanCount, itemWidth, top, bottom, offset + ) + ) + it.adapter = adapter + } + } + + /** + * 设置输入框的错误显示 + */ + fun setInputViewErrorShow( + context: Context, viewGroup: ViewGroup, errorTextView: TextView + ) { + viewGroup.apply { + YoYo.with(Techniques.Shake).onStart { + background = ContextCompat.getDrawable( + context, R.drawable.shape8_red_border_white_bg + ) + errorTextView.setTextColor(ContextCompat.getColor(context, R.color.red_color2)) + viewShowFadeInAnimation(errorTextView, 800) + }.duration(50).playOn(this) + } + } + + /** + * 设置输入框的错误éšè—事件 + */ + fun setInputViewErrorHideClick( + context: Context, + viewGroup: ViewGroup, + errorView: View, + editText: EditText, + onTextChanged: (s: String) -> Unit = {} + ) { + viewGroup.apply { + editText.addTextChangedListener { + if (errorView.visibility == View.VISIBLE) { + background = ContextCompat.getDrawable( + context, R.drawable.shape8_gray_border_white_bg + ) + viewHideFadeInAnimation(errorView, 400) + } + onTextChanged(it.toString()) + } + } + } + + /** + *设置地图视图离底部é‡å éƒ¨åˆ† + */ + fun setMapViewBottomMarginOverlap( + viewGroup: ViewGroup, bottomMargin: Int, overlapSpace: Int + ) { + val params = viewGroup.layoutParams + val space = bottomMargin - overlapSpace + when (params) { + is LinearLayout.LayoutParams -> { + if (params.bottomMargin == space) return + params.bottomMargin = space + } + + is RelativeLayout.LayoutParams -> { + if (params.bottomMargin == space) return + params.bottomMargin = space + } + + is FrameLayout.LayoutParams -> { + if (params.bottomMargin == space) return + params.bottomMargin = space + } + } + viewGroup.layoutParams = params + } + + /** + * 修改shape的圆角åŠå¾„ + * @param radiusDp åŠå¾„大å°,dpå•ä½ + */ + fun setShapeRadius(view: View, radiusDp: Int) { + val stateListDrawable = view.background as StateListDrawable + val drawable = stateListDrawable.current + if (drawable is GradientDrawable) { + drawable.cornerRadius = QMUIDisplayHelper.dpToPx(radiusDp).toFloat() + } + } + + /** + * 显示自定义Dialog + */ + fun showDialog( + context: Context, + contentResId: Int, + okListener: BaseDialog.OnDialogOkListener, + title: String = "", + okTextResId: Int = 0, + cancelTextResId: Int = 0, + cancelListener: BaseDialog.OnDialogCancelListener? = null + ) { + try { + showDialog( + context, + context.getString(contentResId), + okListener, + title, + okTextResId, + cancelTextResId, + cancelListener + ) + } catch (e: Exception) { + LogUtil.e("showDialog异常:${e.message}") + } + } + + /** + * 显示自定义Dialog + */ + fun showDialog( + context: Context, + contentResId: String, + okListener: BaseDialog.OnDialogOkListener, + title: String = "", + okTextResId: Int = 0, + cancelTextResId: Int = 0, + cancelListener: BaseDialog.OnDialogCancelListener? = null + ) { + val myDialog = MyAlertDialog(context) + myDialog.show() + myDialog.setTipTitle(title) + myDialog.setContent(contentResId) + if (okTextResId != 0) { + myDialog.setOkText(okTextResId) + } + if (cancelTextResId != 0) { + myDialog.setCancelText(cancelTextResId) + } + if (null == cancelListener) { + myDialog.setOnDialogCancelListener(object : BaseDialog.OnDialogCancelListener { + override fun onCancelClick(dialog: BaseDialog<*>) { + dialog.dismiss() + } + }) + } else myDialog.setOnDialogCancelListener(cancelListener) + + myDialog.setOnDialogOkListener(okListener) + } + + /** + * 底部弹出èœå• + * @param allowDragDismiss æ‹–ç€ç©ºç™½åœ°æ–¹å¯æ¶ˆå¤± + */ + fun showBottomSheetList( + context: Context, + onSheetItemClickListener: BottomListSheetBuilder.OnSheetItemClickListener?, + title: CharSequence = "", + gravityCenter: Boolean = true, + addCancelBtn: Boolean = true, + allowDragDismiss: Boolean = false + ): BottomListSheetBuilder { + val builder = BottomListSheetBuilder(context) + builder.setGravityCenter(gravityCenter).setAllowDrag(allowDragDismiss) + .setAddCancelBtn(addCancelBtn).setTitle(title) + .setCancelText(context.getString(R.string.txt_cancel)) + .setOnSheetItemClickListener(onSheetItemClickListener) + return builder + } + + /** + * åº•éƒ¨å¼¹å‡ºç•Œé¢ + * @param layoutId è¦æ˜¾ç¤ºçš„布局 + * @param behaviorState 显示ä½ç½®ã€‚å¯åº•部ã€å±…中 + */ + fun showBottomSheet( + context: Context, layoutId: Int, behaviorState: Int = 0 + ): BottomSheetDialog { + val view = View.inflate(context, layoutId, null) + val bottomSheetDialog = BottomSheetDialog(context) + bottomSheetDialog.setContentView(view) + //改å˜å¼¹å‡ºä½ç½®æ–¹å¼ + if (behaviorState > 0) { + val behavior = BottomSheetBehavior.from(view.parent as View) + behavior.state = behaviorState + } + bottomSheetDialog.show() + return bottomSheetDialog + } + + /** + * 弹出底部日期 + * + * @param dateList åˆå§‹åŒ–datePicker显示日期 + * @param getResultCallback 点击ok确定回调 + */ + fun showBottomSheetDate( + context: Context, dateList: List, getResultCallback: GetResultCallback + ) { + val bottomSheetDialog = showBottomSheet(context, R.layout.sheet_dialog_select_date) + val delegate = bottomSheetDialog.delegate + + val datePicker = delegate.findViewById(R.id.bottom_sheet_date_picker) + datePicker!!.maxDate = Calendar.getInstance().timeInMillis + + if (dateList.size > 2) { + datePicker.updateDate(dateList[0].toInt(), dateList[1].toInt() - 1, dateList[2].toInt()) + } + + delegate.findViewById(R.id.bottom_sheet_date_ok)!!.setOnClickListener { + val month = Utils.fill2Digits(datePicker.month + 1) + val day = Utils.fill2Digits(datePicker.dayOfMonth) + val birthday = "${datePicker.year}-${month}-${day}" + getResultCallback.onResult(birthday) + bottomSheetDialog.dismiss() + } + delegate.findViewById(R.id.bottom_sheet_date_cancel)!! + .setOnClickListener { + bottomSheetDialog.dismiss() + } + } + + /** + * 跳转相册和æ‹ç…§ + * @param count å¯ä»¥é€‰å‡ å¼ ç…§ç‰‡ + */ + fun goSelectPhoto(activity: FragmentActivity, requestCode: Int, count: Int = 1) { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) + + XXPermissions.with(activity).permission(PermissionLists.getReadMediaImagesPermission()) + .permission(PermissionLists.getCameraPermission()) + .request(object : OnPermissionCallback { + override fun onGranted(permissions: MutableList, allGranted: Boolean) { + if (allGranted) { + LogUtil.e("获å–READ_MEDIA_IMAGESæƒé™æˆåŠŸ") + EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance) + .setFileProviderAuthority("${BuildConfig.APPLICATION_ID}.fileprovider") + .setCount(count).setPuzzleMenu(false).setCleanMenu(false) + .start(requestCode) + //activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) + } else { + LogUtil.e("获å–READ_MEDIA_IMAGESæƒé™ï¼Œä½†éƒ¨åˆ†æƒé™æœªæ­£å¸¸æŽˆäºˆ") + Toaster.show(R.string.txt_permissions_fail_tips) + } + } + + override fun onDenied( + permissions: MutableList, doNotAskAgain: Boolean + ) { + if (doNotAskAgain) { + LogUtil.e("READ_MEDIA_IMAGESè¢«æ°¸ä¹…æ‹’ç»æŽˆæƒï¼Œè¯·æ‰‹åŠ¨æŽˆäºˆå®šä½æƒé™") + // 如果是被永久拒ç»å°±è·³è½¬åˆ°åº”用æƒé™ç³»ç»Ÿè®¾ç½®é¡µé¢ + XXPermissions.startPermissionActivity(activity, permissions) + } else { + LogUtil.e("获å–READ_MEDIA_IMAGESæƒé™å¤±è´¥") + Toaster.show(R.string.txt_permissions_fail_tips) + } + } + }) + } + + /** + * coil加载网络图片 + * @param transformations å››ç§å˜æ¢ï¼šæ¨¡ç³Šå˜æ¢ï¼ˆBlurTransformation)〠+ * åœ†å½¢å˜æ¢ï¼ˆCircleCropTransformation)ã€ç°åº¦å˜æ¢ï¼ˆGrayscaleTransformation) + * å’Œåœ†è§’å˜æ¢ï¼ˆRoundedCornersTransformation) + */ + fun imageLoadUrl( + imageView: ImageView, + url: String, + @DrawableRes errorImageResId: Int = R.drawable.icon_placeholder_image_svg, + vararg transformations: Transformation + ) { + imageView.load(url) { + //placeholder预置展ä½å›¾ + placeholder(errorImageResId) + //失败时的错误å ä½å›¾ç‰‡ + error(errorImageResId) + //淡入淡出的动画时间 +// crossfade(2000) +// memoryCachePolicy(CachePolicy.ENABLED)//设置内存的缓存策略 +// diskCachePolicy(CachePolicy.ENABLED)//设置ç£ç›˜çš„缓存策略 +// networkCachePolicy(CachePolicy.ENABLED)//设置网络的缓存策略 +// OkHttpClient.Builder().cache(CoilUtils.createDefaultCache(context)) + transformations(transformations.toList()) + } + } + + + //属性动画æŒç»­æ—¶é—´,首页动画时间 + private val valueAnimatorDuration = 600L + + /** + * 设置数字å˜åŒ–动画,并设置值 + * @param stringFormat å­—ç¬¦ä¸²èµ„æºæ ¼å¼ + */ + fun viewNumberValueAnimator( + view: View, + startValue: Number, + endValueAny: Any, + stringFormat: String = "", + animatorDuration: Long = valueAnimatorDuration + ) { + setValueAnimator(startValue, endValueAny, animatorDuration) { + if (view is TextView) { + var str = "" + when (val value = it.animatedValue) { + is Int -> str = value.toString() + is Float -> str = Utils.formatDecimal(value, 2) + is Double -> str = Utils.formatDecimal(value, 2) + } + view.text = if (TextUtils.isEmpty(stringFormat)) str + else String.format(stringFormat, str) + } else if (view is ProgressBar) { + view.progress = it.animatedValue as Int + } + } + } + + /** + * 设置数值动画 + */ + fun setValueAnimator( + startValue: Number, + endValueAny: Any, + animatorDuration: Long = 1000, + interpolator: TimeInterpolator = DecelerateInterpolator(), //该æ’值器的å˜åŒ–率开始很快,然åŽå‡é€Ÿã€‚ + listener: ValueAnimator.AnimatorUpdateListener? = null + ): ValueAnimator? { + if (startValue == endValueAny) return null + + var valueAnimator: ValueAnimator? = null + var endValue = endValueAny + + if (endValueAny is String) { + endValue = try { + endValueAny.toInt() + } catch (e: Exception) { + endValueAny.toFloat() + } + } + + when (endValue) { + is Int -> valueAnimator = ValueAnimator.ofInt(startValue as Int, endValue) + is Long -> valueAnimator = ValueAnimator.ofInt(startValue as Int, endValue.toInt()) + is Float -> valueAnimator = ValueAnimator.ofFloat(startValue.toFloat(), endValue) + is Double -> valueAnimator = + ValueAnimator.ofFloat(startValue.toFloat(), endValue.toFloat()) + } + + if (null == valueAnimator) return valueAnimator + + valueAnimator.duration = animatorDuration + valueAnimator.interpolator = interpolator + listener?.apply { + valueAnimator.addUpdateListener(this) + } + valueAnimator.start() + + return valueAnimator + } + + /** + * 围绕自身中心旋转360åº¦ã€æ·¡åŒ–动画 + */ + fun viewAlphaAndRotationObjectAnimator(view: View, isLoop: Boolean = false): AnimatorSet { + val objectAnimator = ObjectAnimator.ofFloat(view, "alpha", 0f, 0.5f, 1f).apply { + duration = 500 + interpolator = LinearInterpolator() + if (isLoop) { + repeatMode = ValueAnimator.RESTART + repeatCount = ValueAnimator.INFINITE + } + } + val objectAnimator2 = ObjectAnimator.ofFloat(view, "rotation", 0f, 360f).apply { + duration = 1000 + interpolator = LinearInterpolator() + if (isLoop) { + repeatMode = ValueAnimator.RESTART + repeatCount = ValueAnimator.INFINITE + } + } + val animatorSet = AnimatorSet().apply { + play(objectAnimator).with(objectAnimator2) + start() + } + return animatorSet + } + + + /** + * 加载动画文件执行动画 + */ + fun viewLoadAnimation( + context: Context, + view: View, + animId: Int = R.anim.scale_enter, + durationMillis: Long = 2000, + startOffset: Long = 3000 + ): Animation { + val animation = AnimationUtils.loadAnimation(context, animId) + animation.duration = durationMillis + animation.startOffset = startOffset + view.startAnimation(animation) + return animation + } + + /** + * 控件淡入显示 + */ + fun viewShowFadeInAnimation(target: View, duration: Long = 350): YoYoString { + return YoYo.with(Techniques.FadeIn).duration(duration).onStart { + if (target.visibility == View.GONE || target.visibility == View.INVISIBLE) { + target.post { + target.visibility = View.VISIBLE + } + } + }.playOn(target) + } + + /** + * 控件淡出éšè— + */ + fun viewHideFadeInAnimation(target: View, duration: Long = 350, hideType: Int = View.GONE) { + YoYo.with(Techniques.FadeOut).duration(duration).onEnd { + if (target.visibility == View.VISIBLE) target.visibility = hideType + }.playOn(target) + } + + /** + * 添加èœå•æ•°æ® + */ + fun addMenuBean( + list: MutableList, + name: String, + value: String = "", + imageResId: Int = 0, + imageUrl: String = "", + colorRedId: Int = R.color.orange_color3, + isSwitch: Boolean = false, + @MultipleEntity menuType: Int = MultipleEntity.TEXT + ) { + val menuTxtBean = MenuTxtBean(name, value, menuType) + if (imageResId > 0) { + menuTxtBean.imageId = imageResId + } + if (!TextUtils.isEmpty(imageUrl)) { + menuTxtBean.imageUrl = imageUrl + } + if (isSwitch) { + menuTxtBean.isSwitch = isSwitch + } + menuTxtBean.colorRedId = colorRedId + list.add(menuTxtBean) + } + + /** + * 更新选中的状æ€item + */ + fun updateDataBeanOnlySelectedItem( + adapter: BaseRecyclerAdapter<*>, list: MutableList, position: Int + ) { + if (position > list.size - 1 || position < 0) return + val dataBean = list[position] + if (dataBean.selected) return + for (i in 0 until list.size) { + val data = list[i] + if (data.selected) { + data.selected = false + adapter.notifyItemChanged(i) + break + } + } + dataBean.selected = true + adapter.notifyItemChanged(position) + } + + /** + * 显示地图类型选择弹窗 + */ + fun getMapTypeDialog( + context: Context, + onItemClickListener: BaseRecyclerAdapter.OnItemClickListener? = null, + checkedChangeListener: CompoundButton.OnCheckedChangeListener? = null + ): SelectMapTypeDialog { + val mapType = Util.getMapTypeSp() + val typeList = mutableListOf() + DataBean().apply { + selected = mapType == ConstantInt.Type0 + imageId = R.drawable.icon_map_standard_type + name = context.getString(R.string.txt_standard) + typeList.add(this) + } + DataBean().apply { + selected = mapType == ConstantInt.Type1 + imageId = R.drawable.icon_map_satellite_type + name = context.getString(R.string.txt_satellite) + typeList.add(this) + } + val mapTypeAdapter = SelectMapTypeCardShadeAdapter(context, typeList).apply { + setOnItemClickListener(object : BaseRecyclerAdapter.OnItemClickListener { + override fun onItemClick(itemView: View?, pos: Int) { + updateDataBeanOnlySelectedItem(this@apply, typeList, pos) + onItemClickListener?.onItemClick(itemView, pos) + } + }) + } + return SelectMapTypeDialog(context, mapTypeAdapter, checkedChangeListener) + } + + /** + * 设置切æ¢ä½ç½®æŒ‰é’®å›¾ç‰‡ + */ + fun setMapSwitchLocationButtonImage(iv: ImageView, locationType: Int) { + viewShowFadeInAnimation(iv, 600) + when (locationType) { + ConstantInt.PetLocationType -> { + iv.setBackgroundResource(R.drawable.shape_yellow_circle_bg) + iv.setImageResource(R.drawable.icon_pet_foot_svg) + iv.setPadding(AppUtils.dpToPx(14)) + } + + ConstantInt.UserLocationType -> { + iv.setBackgroundResource(R.drawable.shape_white_circle_bg) + iv.setImageResource(R.drawable.icon_user_head_svg) + iv.setPadding(AppUtils.dpToPx(13)) + } + + ConstantInt.OtherLocationType -> { + iv.setBackgroundResource(R.drawable.shape_white_circle_bg) + iv.setImageResource(R.drawable.icon_pet_fence_svg) + iv.setPadding(AppUtils.dpToPx(13)) + } + } + } + + + /** + * 跳转éšç§æ”¿ç­– + */ + fun goPrivacyPolicy(activity: Activity) { + val url = if (AppUtils.isChina()) { + "file:///android_asset/privacy_cn.html" + } else { + "file:///android_asset/privacy_en.html" + } + WebViewActivity.startWebViewActivity( + activity, activity.getString(R.string.txt_privacy_policy), url + ) + } + + /** + * 跳转æœåŠ¡åè®® + */ + fun goServiceContract(activity: Activity) { + val url = if (AppUtils.isChina()) { + "file:///android_asset/terms_cn.html" + } else { + "file:///android_asset/terms_en.html" + } + WebViewActivity.startWebViewActivity( + activity, activity.getString(R.string.txt_service_contract), url + ) + } + + /** + * 设置显示éšè—å¯†ç  + */ + fun setShowAndHidePassword( + editText: EditText, hideShowImBtn: QMUIAlphaImageButton + ) { + editText.apply { + val filter = arrayOf(InputFilter.LengthFilter(60)) + filters = filter + transformationMethod = PasswordTransformationMethod.getInstance() + inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD + } + hideShowImBtn.apply { + visibility = View.VISIBLE + setImageResource(R.drawable.icon_hide_password_svg) + setChangeAlphaWhenPress(true) + } + } + + /** + * 显示éšè—密ç äº‹ä»¶ + */ + fun showAndHidePasswordClick( + editText: EditText, hideShowImBtn: QMUIAlphaImageButton, isShowPassword: Boolean + ) { + if (isShowPassword) { + hideShowImBtn.setImageResource(R.drawable.icon_show_password_svg) + editText.transformationMethod = HideReturnsTransformationMethod.getInstance() + } else { + hideShowImBtn.setImageResource(R.drawable.icon_hide_password_svg) + editText.transformationMethod = PasswordTransformationMethod.getInstance() + } + editText.setSelection(editText.text.toString().length) + } + + /** + * 设置EditTextä¸å¯ç¼–è¾‘ï¼Œä¸‹æ‹‰çŠ¶æ€ + */ + fun setEditTextDropSelectState(editText: EditText, hintResId: Int = R.string.txt_select) { + editText.apply { + isEnabled = false + layoutParams.width = RelativeLayout.LayoutParams.WRAP_CONTENT + setHint(hintResId) + } + } + + /** + * 设置已选择宠物显示 + */ + fun selectPetDialogShow( + context: Context, + petList: MutableList, + selectPos: Int, + petName: TextView, + petHead: ImageView + ) { + if (petList.size == 0) { + petName.text = context.getString(R.string.no_pet) + petHead.load(R.drawable.icon_dog_default_head_svg) + return + } + val pet = petList[selectPos] + savePetSP(pet, selectPos) + petName.text = pet.petName + setPetTypeHead(petHead, pet.imgurl, pet.petType) + viewAlphaAndRotationObjectAnimator(petHead) + } + + /** + * ä¿å­˜å® ç‰©ç›¸å…³æ•°æ®åˆ°æœ¬åœ° + */ + private fun savePetSP(petBean: PetBean, selectPos: Int) { + //ä¿å­˜å·²é€‰å® ç‰©ä¸‹æ ‡ + MMKVUtil.putInt(MMKVKey.PetSelectPosition, selectPos) + //ä¿å­˜å½“å‰è®¾å¤‡çš„套é¤ç±»åž‹ï¼ŒæŽ§åˆ¶æƒé™ + MMKVUtil.putInt(MMKVKey.MealType, petBean.mealType) + //ä¿å­˜å½“å‰å® ç‰©æ˜¯å¦åˆ†äº«çš„ + MMKVUtil.putInt(MMKVKey.Shared, petBean.shared) + } + + /** + * ViewPager2é…ç½®ä¿¡æ¯ + */ + fun setViewPager2Config( + viewPager2: ViewPager2, + callback: ViewPager2.OnPageChangeCallback?, + pageLimit: Int = 0, + isCanSlide: Boolean = false + ) { + viewPager2.apply { + //ç¦æ­¢ViewPager滑动 + isUserInputEnabled = isCanSlide + if (pageLimit > 0) offscreenPageLimit = pageLimit + //滑动动画 +// it.setPageTransformer(CompositePageTransformer()) +// (getChildAt(0) as RecyclerView).layoutManager!!.isItemPrefetchEnabled = false + (getChildAt(0) as RecyclerView).let { + it.layoutManager?.isItemPrefetchEnabled = false + //滑动动画 +// itemAnimator = DefaultItemAnimator() + } + callback?.let { + registerOnPageChangeCallback(it) + } + } + } + + /** + * 获å–å›´æ çš„类型图片 + */ + fun getFenceNameImageType(fenceNameType: Int): Int { + var fenceNameTypeImage = 0 + when (fenceNameType) { + 1 -> fenceNameTypeImage = R.drawable.icon_save_zone_type1_svg + 2 -> fenceNameTypeImage = R.drawable.icon_save_zone_type2_svg + 3 -> fenceNameTypeImage = R.drawable.icon_save_zone_type3_svg + 4 -> fenceNameTypeImage = R.drawable.icon_save_zone_type4_svg + 5 -> fenceNameTypeImage = R.drawable.icon_save_zone_type5_svg + 6 -> fenceNameTypeImage = R.drawable.icon_no_zone_type1_svg + 7 -> fenceNameTypeImage = R.drawable.icon_no_zone_type2_svg + 8 -> fenceNameTypeImage = R.drawable.icon_no_zone_type3_svg + } + return fenceNameTypeImage + } + + /** + * è®¾ç½®å® ç‰©å¤´åƒ + */ + fun setPetTypeHead(imageView: ImageView, imageUrl: String, type: Int) { + if (TextUtils.isEmpty(imageUrl)) { + val defaultHead = if (type == 2) R.drawable.icon_cat_default_head_svg + else R.drawable.icon_dog_default_head_svg + imageView.load(defaultHead) + } else { + imageLoadUrl(imageView, imageUrl) + } + } + + /** + * æ“作æç¤ºæ¡† + */ + fun operateDialogTips(context: Context, messageID: Int, okCallback: () -> Unit) { + showDialog(context, messageID, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + okCallback() + } + }, okTextResId = R.string.start_txt_yes) + } + + /** + * 手动连接è“牙æç¤º + */ + fun bleConActionState( + baseActivity: BaseActivity<*>, + textView: TextView, + conState: Int, + gravity: Int = Gravity.BOTTOM + ) { + when (conState) { + ConState.CONNECTING, ConState.CONNECTING_MAC -> { + textView.text = baseActivity.getString(R.string.txt_connecting) + } + + else -> { + textView.text = baseActivity.getString(R.string.tracker_manage_set_ble_unconnect) + baseActivity.showToast(R.string.txt_ble_connect_fail, gravity = gravity) + } + } + textView.setBackgroundColor(ContextCompat.getColor(baseActivity, R.color.red_color4)) + } + + fun bleConStateToast( + baseActivity: BaseActivity<*>, conState: Int, gravity: Int = Gravity.BOTTOM + ) { + when (conState) { + ConState.CONNECTED -> baseActivity.showToast( + R.string.txt_connect_success, gravity = gravity + ) + + ConState.DISCONNECTED -> baseActivity.showToast( + R.string.txt_unconnect_no, gravity = gravity + ) + + else -> baseActivity.showToast(R.string.txt_connect_fail, gravity = gravity) + } + } + + /** + * 手动连接/断开设备 + */ + fun connectionBtn( + context: Context, btnString: String, mac: String, noConnectCallback: () -> Unit + ) { + if (btnString == context.getString(R.string.tracker_manage_set_ble_unconnect)) { + noConnectCallback() + } else if (btnString == context.getString(R.string.tracker_manage_set_ble_connect)) { + operateDialogTips(context, R.string.txt_disconnect_tips) { + SRBleUtil.instance.disconnectToMac(mac) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleCmdUtil.kt b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleCmdUtil.kt new file mode 100644 index 0000000..cbaf77e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleCmdUtil.kt @@ -0,0 +1,298 @@ +package com.abbidot.tracker.util.bluetooth + +import android.text.TextUtils +import com.abbidot.tracker.bean.WiFiZoneBean +import java.util.TimeZone +import kotlin.experimental.xor + + +/** + *Created by .yzq on 2021/12/1/001. + * @link + * @description: è“牙cmd命令 + */ +class SRBleCmdUtil private constructor() { + + companion object { + val instance: SRBleCmdUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + SRBleCmdUtil() + } + + /** + * 写指令 + */ + const val CMD_WRITE = 1 + + /** + * 读指令 + */ + const val CMD_READ = 0 + } + + /** + * java 写法 + * + * public byte calcCrc8(byte[] data) { + byte crc = 0; + for (int j = 0; j < data.length; j++) { + crc ^= data[j]; + for (int i = 0; i < 8; i++) { + if ((crc & 0x01) != 0) { + crc = (byte) ((crc) >> 1); + crc ^= 0x8c; + } else { + crc = (byte) ((crc) >> 1); + } + } + } + return crc; + } + * + * CRC8 算法 + */ + private fun calcCrc8(data: ByteArray): Byte { + var crc: Byte = 0 + for (j in data.indices) { + crc = crc xor data[j] + for (i in 0..7) { + if (byteToInt(crc) and 0x01 != 0) { + crc = (byteToInt(crc) shr 1).toByte() + crc = crc xor 0x8c.toByte() + } else { + crc = (byteToInt(crc) shr 1).toByte() + } + } + } + return crc + } + + /** + * CRC8 算法 + */ + private fun getCrc8(data: ByteArray): Byte { + return calcCrc8(data) + } + + /** + * 长整型转æ¢é«˜ä½Ž4个字节 + */ + fun longTo4ByteArray(value: Long): ByteArray { + val byte1 = (value shr 24 and 0xffL).toByte() + val byte2 = (value shr 16 and 0xffL).toByte() + val byte3 = (value shr 8 and 0xffL).toByte() + val byte4 = (value and 0xffL).toByte() + return byteArrayOf(byte1, byte2, byte3, byte4) + } + + /** + * 高低4个字节转æ¢é•¿æ•´åž‹ + */ + fun byte4ArrayToLong(data: ByteArray): Long { + if (data.size == 4) { + return (data[0].toLong() and 0xffL shl 24) or (data[1].toLong() and 0xffL shl 16) or (data[2].toLong() and 0xffL shl 8) or (data[3].toLong() and 0xffL) + } + return 0L + } + + /** + * 高低2个字节转æ¢é•¿æ•´åž‹ + */ + fun byte2ArrayToInt(data: ByteArray): Int { + if (data.size == 2) { + return (data[0].toInt() and 0xff shl 8) or (data[1].toInt() and 0xff) + } + return 0 + } + + /** + * 长整型转æ¢é«˜ä½Ž2个字节 + */ + private fun longTo2ByteArray(value: Long): ByteArray { + val byte1 = (value shr 8 and 0xffL).toByte() + val byte2 = (value and 0xffL).toByte() + return byteArrayOf(byte1, byte2) + } + + /** + * byte转int + */ + fun byteToInt(byte: Byte): Int { + return byte.toInt() and 0xff + } + + /** + * èŽ·å–æœ€ç»ˆå®Œæ•´åР坆命令 + */ + private fun getCrc8Cmd(byteArray: ByteArray): ByteArray { + val crc8 = getCrc8(byteArray) + //åŽé¢è¿½åŠ  + return byteArray.plus(crc8) + } + + /** + * 绑定设备 + */ + fun bindDevice(): ByteArray { + val byteArray = byteArrayOf(0x01, CMD_WRITE.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 彩ç¯é¢œè‰²è®¾ç½®/æŸ¥è¯¢æ¶ˆæ¯ + */ + fun ledColor(readOrWrite: Int, R: Int, G: Int, B: Int): ByteArray { + val byteArray = byteArrayOf(0x02, readOrWrite.toByte(), R.toByte(), G.toByte(), B.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 彩ç¯çжæ€è®¾ç½®/æŸ¥è¯¢æ¶ˆæ¯ + */ + fun ledState(readOrWrite: Int, state: Int): ByteArray { + val byteArray = byteArrayOf(0x03, readOrWrite.toByte(), state.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 激活设备 + */ + fun activeDevice(): ByteArray { + val byteArray = byteArrayOf(0x05, CMD_WRITE.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 关机 + */ + fun shutdownDevice(): ByteArray { + val byteArray = byteArrayOf(0x04, CMD_WRITE.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 获å–å›ºä»¶ç‰ˆæœ¬å· + */ + fun getFirmwareVersion(): ByteArray { + val byteArray = byteArrayOf(0x09, CMD_READ.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 获å–WiFi列表 + */ + fun getWiFiZoneList(): ByteArray { + val byteArray = byteArrayOf(0x0f, CMD_READ.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * Mac地å€è½¬å­—节数组 + */ + private fun macToByte(wifiMac: String): ByteArray { + var byteArray = byteArrayOf() + if (TextUtils.isEmpty(wifiMac)) return byteArray + val macs = wifiMac.split(":") + for (c in macs) { + val hexValue = c.toInt(16) + byteArray = byteArray.plus(hexValue.toByte()) + } + return byteArray + } + + /** + * 4.16 设置WiFi 0x10 + */ + fun setWiFiZone(wiFiZoneBean: WiFiZoneBean): ByteArray { + wiFiZoneBean.apply { + var byteArray = byteArrayOf(0x10, CMD_WRITE.toByte()) + byteArray = byteArray.plus(macToByte(wifiMac)) + val lonArray = longTo4ByteArray((longitude * 1000000L).toLong()) + val latArray = longTo4ByteArray((latitude * 1000000L).toLong()) + byteArray = byteArray.plus(lonArray) + byteArray = byteArray.plus(latArray) + return getCrc8Cmd(byteArray) + } + } + + /** + * 4.17 删除WiFi 0x11 + */ + fun deleteWiFiZone(wifiMac: String): ByteArray { + var byteArray = byteArrayOf(0x11, CMD_WRITE.toByte()) + byteArray = byteArray.plus(macToByte(wifiMac)) + return getCrc8Cmd(byteArray) + } + + /** + * 设置时区 + */ + fun setTime(): ByteArray { + val currentTime = System.currentTimeMillis() / 1000 + val timeMillisByte = longTo4ByteArray(currentTime) + + val tz = TimeZone.getDefault() + //为了ä¸å‡ºçŽ°è´Ÿæ•°ï¼Œæ•°å€¼=实际时区+12 + val timeZone = tz.getOffset(System.currentTimeMillis()) / (1000 * 60 * 60) + 12 + + val byteArray = byteArrayOf( + 0x16, CMD_WRITE.toByte() + ).plus(timeMillisByte).plus((timeZone and 0xff).toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * 4.23 傿•°åŒæ­¥æé†’æ¶ˆæ¯ 0x017 + */ + fun setNotifySyncData(): ByteArray { + val byteArray = byteArrayOf(0x17, CMD_WRITE.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * å¯åЍ/åœæ­¢Liveç›´æ’­ + */ + fun setLiveSwitch(switch: Int, liveTime: Long): ByteArray { + var byteArray = byteArrayOf(0x06, CMD_WRITE.toByte(), switch.toByte()) + byteArray = byteArray.plus(longTo2ByteArray(liveTime)) + return getCrc8Cmd(byteArray) + } + + /** + * 4.32 设置å¯è¿žæŽ¥WIFI热点 0x21 + * @param authType wifi认è¯ç±»åž‹ + */ + fun setConnectWiFi(wifiMac: String, wifiPassword: String, authType: Int): ByteArray { + //20字节一个包,分包å‘é€,å‰é¢4个字节为固定包头,åŽé¢16个字节为包的内容 + val totalPackage = 12 + wifiPassword.length - 4 + val packageNum = (totalPackage / 16) + 1 + var byteArray = byteArrayOf(0x21, CMD_WRITE.toByte(), packageNum.toByte(), 0x01) + byteArray = byteArray.plus(macToByte(wifiMac)) + byteArray = byteArray.plus(authType.toByte()) + byteArray = byteArray.plus(wifiPassword.length.toByte()) + if (!TextUtils.isEmpty(wifiPassword)) { + val passwordCharArray = wifiPassword.toCharArray() + for (pca in passwordCharArray) { + val b = pca.code.toByte() + byteArray = byteArray.plus(b) + } + } + return getCrc8Cmd(byteArray) + } + + /** + * æ¢å¤å‡ºåŽ‚è®¾ç½® + */ + fun factoryReset(): ByteArray { + val byteArray = byteArrayOf(0x19, CMD_WRITE.toByte()) + return getCrc8Cmd(byteArray) + } + + /** + * è®¾ç½®è®¾å¤‡å·¥ä½œçŠ¶æ€ + */ + fun setWorkingStatus(writeAndRed: Int = CMD_WRITE, status: Int = 3): ByteArray { + val byteArray = byteArrayOf(0x1A, writeAndRed.toByte(), status.toByte()) + return getCrc8Cmd(byteArray) + } +} + diff --git a/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt new file mode 100644 index 0000000..8b1eae9 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/util/bluetooth/SRBleUtil.kt @@ -0,0 +1,449 @@ +package com.abbidot.tracker.util.bluetooth + +import android.annotation.SuppressLint +import android.app.Activity +import android.app.Application +import android.bluetooth.BluetoothAdapter +import android.bluetooth.BluetoothGatt +import android.bluetooth.BluetoothManager +import android.content.Context +import android.content.Intent +import android.text.TextUtils +import androidx.core.app.ActivityCompat.startActivityForResult +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.bean.BleTrackDeviceBean +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.util.Util +import com.clj.fastble.BleManager +import com.clj.fastble.callback.BleGattCallback +import com.clj.fastble.callback.BleNotifyCallback +import com.clj.fastble.callback.BleRssiCallback +import com.clj.fastble.callback.BleWriteCallback +import com.clj.fastble.data.BleDevice +import com.clj.fastble.data.BleScanState +import com.clj.fastble.exception.BleException +import com.clj.fastble.utils.HexUtil +import com.hjq.toast.Toaster +import java.util.UUID + + +/** + *Created by .yzq on 2021/11/24/024. + * @link + * @description: bleè“牙工具类 + */ +class SRBleUtil private constructor() { + + //track设备è“牙的开头åå­— + val trackDeviceBleStartName = "Pet_Tracker" + + //æ˜¯å¦æ­£åœ¨è¿žæŽ¥è“牙设备 + var isBleConnecting = false + + //äººä¸ºåœæ­¢æ‰«æè®¾å¤‡ï¼Œæ‰«æä¸­æ–­ + var isScanInterrupt = false + + /** + * Bluetooth_Base_UUID定义为 00000000-0000-1000-8000-00805F9B34FB + * è‹¥16 bit UUID为xxxx,转æ¢ä¸º128 bit UUID为0000xxxx-0000-1000-8000-00805F9B34FB + */ + //å‘逿¶ˆæ¯ç»™è®¾å¤‡write + private val serviceUUID = UUID.fromString("6e400001-b5a3-f393-e0a9-e50e24dcca9e").toString() + private val writeCharacteristicUUID = + UUID.fromString("6e400002-b5a3-f393-e0a9-e50e24dcca9e").toString() + + //获å–设备消æ¯notify,read + private val notifyServiceUUID = serviceUUID + private val notifyCharacteristicUUID = + UUID.fromString("6e400003-b5a3-f393-e0a9-e50e24dcca9e").toString() + + //è“牙上报notify + private val bleNotifyCharacteristicUUID = + UUID.fromString("6e400004-b5a3-f393-e0a9-e50e24dcca9e").toString() + + //日志上报notify + private val logNotifyCharacteristicUUID = + UUID.fromString("6e400005-b5a3-f393-e0a9-e50e24dcca9e").toString() + + //ä¿å­˜å·²è¿žæŽ¥æˆåŠŸè®¾å¤‡çš„å…¨å±€å˜é‡ + lateinit var mTrackDeviceList: MutableList + private var mContext: Context? = null + + //SRBleUtilå•ä¾‹æ¨¡å¼ + companion object { + val instance: SRBleUtil by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { + SRBleUtil() + } + } + + + /* + val scanRuleConfig = BleScanRuleConfig.Builder() + // åªæ‰«ææŒ‡å®šçš„æœåŠ¡çš„è®¾å¤‡ï¼Œå¯é€‰ + .setServiceUuids(serviceUuids) + // åªæ‰«ææŒ‡å®šå¹¿æ’­å的设备,å¯é€‰ + .setDeviceName(true, names) + // åªæ‰«ææŒ‡å®šmac的设备,å¯é€‰ + .setDeviceMac(mac) + // 连接时的autoConnect傿•°ï¼Œå¯é€‰ï¼Œé»˜è®¤false + .setAutoConnect(isAutoConnect) + // 扫æè¶…时时间,å¯é€‰ï¼Œé»˜è®¤10ç§’ + .setScanTimeOut(10000).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + */ + fun init(app: Application) { + mContext = app.applicationContext + BleManager.getInstance().init(app) + //æ˜¯å¦æ˜¾ç¤ºæ¡†æž¶å†…部日志,é‡è¿žæ¬¡æ•°å’Œé‡è¿žæ—¶é—´é—´éš”ï¼Œä»¥åŠæ“作超时时间。 + BleManager.getInstance().enableLog(AppUtils.isDebug()).operateTimeout = 5000 + mTrackDeviceList = mutableListOf() + } + + /** + * 判断当å‰Androidè®¾å¤‡æ˜¯å¦æ”¯æŒBLE。Android 4.3以åŽç³»ç»Ÿä¸­åŠ å…¥äº†è“牙BLE的功能。 + */ + fun isSupportBle(): Boolean = BleManager.getInstance().isSupportBle + + /** + * 判断当å‰Android设备的è“牙是å¦å·²ç»æ‰“å¼€ + */ + fun isBlueEnable(context: Context): Boolean { +// BleManager.getInstance().isBlueEnable + // 获å–BluetoothManageræœåŠ¡ + val bluetoothManager = + context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager + // 获å–BluetoothAdapter实例 + val bluetoothAdapter = bluetoothManager.adapter + return bluetoothAdapter?.isEnabled ?: false + } + + /** + * 打开è“牙。需è¦Manifest.permission.BLUETOOTH_CONNECTæƒé™ + */ + @SuppressLint("MissingPermission") + fun openBluetooth(context: Context) { +// BleManager.getInstance().enableBluetooth() + val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) + context.startActivity(intent) + } + + /** + * 通过startActivityForResult引导界é¢å¼•导用户打开è“牙 + * 需è¦Manifest.permission.BLUETOOTH_CONNECTæƒé™ + */ + fun goOpenBluetooth(activity: Activity, requestCode: Int) { + val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) + startActivityForResult(activity, intent, requestCode, null) + } + + fun connect(bleDevice: BleDevice) { + BleManager.getInstance().connect(bleDevice, object : BleGattCallback() { + override fun onStartConnect() { + isBleConnecting = true + LogUtil.e("开始连接:${bleDevice.name}--${bleDevice.mac}") + } + + override fun onConnectFail(bleDevice: BleDevice?, exception: BleException?) { + isBleConnecting = false + if (null != bleDevice) { + LogUtil.e("连接失败:${bleDevice.name}--${bleDevice.mac}") + notifyDeviceState(bleDevice, ConState.CONNECTION_FAIL) + } + } + + override fun onConnectSuccess(bleDevice: BleDevice, gatt: BluetoothGatt, status: Int) { + LogUtil.e("连接æˆåŠŸ:${bleDevice.name}--${bleDevice.mac}") + isBleConnecting = false + openNotify( + bleDevice, gatt, notifyServiceUUID, notifyCharacteristicUUID + ) + } + + override fun onDisConnected( + isActiveDisConnected: Boolean, + bleDevice: BleDevice, + gatt: BluetoothGatt, + status: Int + ) { + LogUtil.e("è“牙断开${bleDevice.name},${bleDevice.mac},activeDisConnected=$isActiveDisConnected,status=$status") + notifyDeviceState(bleDevice, ConState.DISCONNECTED) + mContext?.apply { + if (isBlueEnable(this) && !isActiveDisConnected) { + connect(bleDevice) + } + } + } + }) + } + + /** + * 打开通é“通知 + */ + fun openNotify( + bleDevice: BleDevice, gatt: BluetoothGatt, uuid_service: String, uuid_notify: String + ) { + BleManager.getInstance() + .notify(bleDevice, uuid_service, uuid_notify, object : BleNotifyCallback() { + override fun onNotifySuccess() { + LogUtil.e("onNotifySuccess:${bleDevice.name}--${bleDevice.mac}") + //绑定 + writeData(bleDevice, SRBleCmdUtil.instance.bindDevice()) + } + + override fun onNotifyFailure(exception: BleException?) { + LogUtil.e("onNotifyFailure--${bleDevice.mac},$exception") + //打开通é“å¤±è´¥ï¼Œæ–­å¼€è¿žæŽ¥é‡æ–°è¿žæŽ¥ + gatt.disconnect() + connect(bleDevice) + } + + override fun onCharacteristicChanged(data: ByteArray?) { + val formatData = HexUtil.formatHexString(data, true) + LogUtil.e("设备å“应指令,${bleDevice.mac}->" + formatData) + data?.apply { + val data0 = SRBleCmdUtil.instance.byteToInt(data[0]) + val data1 = SRBleCmdUtil.instance.byteToInt(data[1]) + val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) + //绑定设备æˆåŠŸè¿”å›ž + if (data0 == 0x01 && data1 == 0x01 && data2 == 0x00) { + LogUtil.e("${bleDevice.mac},绑定æˆåŠŸ") + //åŒæ­¥æ—¶é—´ + writeData(bleDevice, SRBleCmdUtil.instance.setTime()) + } else if (data0 == 0x16 && data1 == 0x01 && data2 == 0x00) { + //åŒæ­¥æ—¶é—´æˆåŠŸè¿”å›ž + LogUtil.e("${bleDevice.mac},åŒæ­¥æ—¶é—´æˆåŠŸ") + openBleReportNotify( + bleDevice, notifyServiceUUID, bleNotifyCharacteristicUUID + ) + } else { + val deviceData = ReceiveDeviceData(bleDevice, data, bleDevice.mac) + XEventBus.post(EventName.DeviceReceiveData, deviceData) + } + } + } + }) + } + + /** + * 打开è“ç‰™ä¸ŠæŠ¥é€šé“ + */ + private fun openBleReportNotify( + bleDevice: BleDevice, uuid_service: String, uuid_notify: String + ) { + BleManager.getInstance() + .notify(bleDevice, uuid_service, uuid_notify, object : BleNotifyCallback() { + override fun onNotifySuccess() { +// Toaster.show("打开è“ç‰™ä¸ŠæŠ¥é€šé“æˆåŠŸ") + LogUtil.e("打开è“ç‰™ä¸ŠæŠ¥é€šé“æˆåŠŸï¼š${bleDevice.name}--${bleDevice.mac}") + openLogReportNotify(bleDevice, notifyServiceUUID, logNotifyCharacteristicUUID) + } + + override fun onNotifyFailure(exception: BleException?) { +// Toaster.show("打开è“牙上报通é“失败") + LogUtil.e("打开è“牙上报通é“失败:${bleDevice.mac},$exception") + openLogReportNotify(bleDevice, notifyServiceUUID, logNotifyCharacteristicUUID) + } + + override fun onCharacteristicChanged(data: ByteArray?) { + data?.apply { + val formatData = HexUtil.formatHexString(data, true) + LogUtil.e("接收è“ç‰™ä¸ŠæŠ¥é€šé“æ•°æ®ï¼š${bleDevice.mac},$formatData") + val deviceData = ReceiveDeviceData(bleDevice, data, bleDevice.mac) + XEventBus.post(EventName.BleReport, deviceData) + } + } + }) + } + + /** + * æ‰“å¼€æ—¥å¿—ä¸ŠæŠ¥é€šé“ + */ + private fun openLogReportNotify( + bleDevice: BleDevice, uuid_service: String, uuid_notify: String + ) { + BleManager.getInstance() + .notify(bleDevice, uuid_service, uuid_notify, object : BleNotifyCallback() { + override fun onNotifySuccess() { + LogUtil.e("æ‰“å¼€æ—¥å¿—ä¸ŠæŠ¥é€šé“æˆåŠŸï¼š${bleDevice.name}--${bleDevice.mac}") + notifyDeviceState(bleDevice, ConState.CONNECTED) + } + + override fun onNotifyFailure(exception: BleException?) { + LogUtil.e("打开日志上报通é“失败:${bleDevice.mac},$exception") + notifyDeviceState(bleDevice, ConState.CONNECTED) + } + + override fun onCharacteristicChanged(data: ByteArray?) { + data?.apply { +// val formatData = HexUtil.formatHexString(data, true) +// LogUtil.e("æŽ¥æ”¶æ—¥å¿—ä¸ŠæŠ¥é€šé“æ•°æ®ï¼š${bleDevice.mac},$formatData") +// LogUtil.e(String(data, Charsets.UTF_8)) + val deviceData = ReceiveDeviceData(bleDevice, data, bleDevice.mac) + XEventBus.post(EventName.LogReport, deviceData) + } + } + }) + } + + /** + * 关闭通é“通知 + */ + fun closeNotify(bleDevice: BleDevice, uuid_service: String, uuid_notify: String) { + BleManager.getInstance().stopNotify(bleDevice, uuid_service, uuid_notify) + } + + + /** + * å‘逿•°æ® + */ + fun writeData(bleDevice: BleDevice?, data: ByteArray) { + if (null == bleDevice) return + writeData(bleDevice, serviceUUID, writeCharacteristicUUID, data) + } + + private fun writeData( + bleDevice: BleDevice, uuidService: String, uuidWrite: String, data: ByteArray + ) { + LogUtil.d("send cmd:" + HexUtil.formatHexString(data, true)) + BleManager.getInstance() + .write(bleDevice, uuidService, uuidWrite, data, object : BleWriteCallback() { + override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) { + LogUtil.e( + "writeData onWriteSuccess data:" + HexUtil.formatHexString(data, true) + ) + } + + override fun onWriteFailure(exception: BleException?) { + LogUtil.e( + "writeData onWriteFailure data:" + HexUtil.formatHexString( + data, true + ) + " , error = " + exception.toString() + ) + } + }) + } + + /** + * é€šçŸ¥è®¾å¤‡çŠ¶æ€ + */ + private fun notifyDeviceState(bleDevice: BleDevice, @ConState consState: Int) { + LogUtil.e("æ›´æ–°è“牙连接状æ€consState=$consState") + var device: BleTrackDeviceBean? = null + + for (trackDevice in mTrackDeviceList) { + if (trackDevice.mac == bleDevice.mac) { + device = trackDevice + break + } + } + if (null == device) { + device = BleTrackDeviceBean() + device.mac = bleDevice.mac + } + device.conState = consState + device.bleDevice = bleDevice + + if (!mTrackDeviceList.contains(device)) { + mTrackDeviceList.add(device) + } + + XEventBus.post(EventName.ConnectDeviceState, device) + } + + /** + * 获å–已连接指定的Mac设备 + */ + fun getConnectMacDevice(mac: String): BleTrackDeviceBean? { + var trackDeviceBean: BleTrackDeviceBean? = null + for (device in mTrackDeviceList) { + if (device.mac == mac && BleManager.getInstance().isConnected(mac)) { + trackDeviceBean = device + break + } + } + return trackDeviceBean + } + + /** + * 断开指定的è“牙设备 + */ + fun disconnectToMac(mac: String) { + if (TextUtils.isEmpty(mac)) { + return + } + for (ble in mTrackDeviceList) { + if (mac == ble.mac) { + ble.bleDevice?.let { +// closeNotify(it, notifyServiceUUID, logNotifyCharacteristicUUID) +// closeNotify(it, notifyServiceUUID, bleNotifyCharacteristicUUID) + BleManager.getInstance().disconnect(it) + } + break + } + } + } + + /** + * 获å–è¿žæŽ¥è®¾å¤‡çš„å®žæ—¶ä¿¡å· + */ + fun readConnectRssi(mac: String, callback: BleRssiCallback) { + if (TextUtils.isEmpty(mac)) { + return + } + for (ble in mTrackDeviceList) { + if (mac == ble.mac) { + ble.bleDevice?.let { + BleManager.getInstance().readRssi(it, callback) + } + break + } + } + } + + /** + * å‘é€å‚æ•°åŒæ­¥æé†’æ¶ˆæ¯ 0x017 + */ + fun isConnectBleSendNotifyData(mac: String) { + if (TextUtils.isEmpty(mac)) { + return + } + if (BleManager.getInstance().isConnected(mac)) { + val trackDeviceBean = getConnectMacDevice(mac) + trackDeviceBean?.let { + writeData( + it.bleDevice, SRBleCmdUtil.instance.setNotifySyncData() + ) + } + } + } + + /** + *å‘é€è®¾å¤‡å¼€å¯å…³é—­ledè“牙指令 + */ + fun setBleLedSwitch(context: Context, bleDevice: BleDevice?, mode: Int) { + //åˆ¤æ–­æ˜¯å¦æœ‰è“牙连接 + if (BleManager.getInstance().isConnected(bleDevice)) { + Util.checkBluetoothPermissionsEnabled(context, { + writeData( + bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_WRITE, mode) + ) + }) + } + } + + /** + * å–æ¶ˆè“牙扫æ + */ + fun cancelBleScan(log: String = "") { + if (BleManager.getInstance().scanSate == BleScanState.STATE_SCANNING) { + isScanInterrupt = true + if (TextUtils.isEmpty(log)) LogUtil.e("正在扫æè®¾å¤‡,å–æ¶ˆè“牙扫æ") + else LogUtil.e(log) + BleManager.getInstance().cancelScan() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/AppSetViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/AppSetViewModel.kt new file mode 100644 index 0000000..3879482 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/AppSetViewModel.kt @@ -0,0 +1,43 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.bean.NotificationBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2024/9/26/026. + * @link + * @description: + */ +class AppSetViewModel : ViewModel() { + + val mGetNotificationLiveData = MutableLiveData>>() + val mSetNotificationLiveData = MutableLiveData>() + + /** + * 获å–通知设置 + */ + fun getNotificationSet() { + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getNotificationSet(userId) + mGetNotificationLiveData.value = result + } + } + + /** + * 消æ¯é€šçŸ¥è®¾ç½® + */ + fun setNotification(notificationType: Int, status: Int) { + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.setNotification(userId, notificationType, status) + mSetNotificationLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/ConnectionDeviceViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/ConnectionDeviceViewModel.kt new file mode 100644 index 0000000..1125adf --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/ConnectionDeviceViewModel.kt @@ -0,0 +1,282 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import android.os.CountDownTimer +import android.text.TextUtils +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.ConState +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.database.MyDatabase +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.clj.fastble.callback.BleScanCallback +import com.clj.fastble.data.BleDevice +import com.clj.fastble.data.BleScanState +import com.clj.fastble.scan.BleScanRuleConfig +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +/** + *Created by on 2022/5/26/026. + * @link + * @description:自动连接设备 + */ +class ConnectionDeviceViewModel : ViewModel() { + + private var mCountDownTimer: CountDownTimer? = null + + fun autoConnectBleDevice(context: Context) { + //判断è“ç‰™æ˜¯å¦æ‰“å¼€ + if (!SRBleUtil.instance.isBlueEnable(context)) { + LogUtil.e("automaticConnection,è“牙没打开") + return + } + if (BleManager.getInstance().scanSate == BleScanState.STATE_SCANNING) { + LogUtil.e("automaticConnection,å·²ç»åœ¨æ‰«æè“牙,开始扫æå¤±è´¥") + return + } + viewModelScope.launch(Dispatchers.IO) { + val localDevices = MyDatabase.deviceDao() + .findAll(MyDatabase.DeviceTableName) as MutableList + LogUtil.e("查找本地ble设备有${localDevices.size}个") + if (localDevices.size == 0) { + return@launch + } + val scanTrackBle = mutableListOf() + val scanRuleConfig = BleScanRuleConfig.Builder().build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + SRBleUtil.instance.isScanInterrupt = false + LogUtil.e("开始扫æ...$success") + } + + override fun onScanning(bleDevice: BleDevice?) { + LogUtil.d("onScanning....$bleDevice") + bleDevice?.apply { + if (null != name && name.contains(SRBleUtil.instance.trackDeviceBleStartName)) { + scanTrackBle.add(this) + } + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + val interrupt = SRBleUtil.instance.isScanInterrupt + LogUtil.e("automaticConnection--扫æå®Œæˆ..中断扫æ$interrupt,${scanResultList?.size}") + if (!interrupt) { + compareDevice(scanTrackBle, localDevices) + } + } + }) + } + } + + /** + * 从扫æåˆ°çš„设备中查找已添加的设备,并连接设备 + */ + private fun compareDevice( + scanResultList: MutableList, localDevices: MutableList + ) { + if (scanResultList.size > 0) { + var connected = false + viewModelScope.launch(Dispatchers.IO) { + //创建新的å˜é‡ï¼Œé˜²æ­¢åˆ«çš„è“牙扫æ(è“牙找设备功能)改å˜scanResultListå˜é‡ï¼Œå¯¼è‡´å¼‚常 + val scanBleList = mutableListOf() + scanBleList.addAll(scanResultList) + for (device in localDevices) { + for (bleDevice in scanBleList) { + if (!TextUtils.isEmpty(bleDevice.name)) { + if (device.macId == bleDevice.mac) { + SRBleUtil.instance.connect(bleDevice) + connected = true + break + } + } + } + } + if (!connected) { + LogUtil.e("没有è“牙设备å¯è¿ž") + SRBleUtil.instance.isBleConnecting = false +// XEventBus.post(EventName.ActionConDeviceState, ConState.DEVICE_NOT_FOUND) + } + } + } else { + LogUtil.e("è“牙设备为0") + SRBleUtil.instance.isBleConnecting = false +// XEventBus.post(EventName.ActionConDeviceState, ConState.DEVICE_NOT_FOUND) + } + } + + /** + * 连接中倒计时20så˜ä¸ºæœªè¿žæŽ¥çŠ¶æ€ + */ + fun connectingFailCountDown() { + mCountDownTimer = object : CountDownTimer(20 * 1000, 1000) { + override fun onTick(time: Long) { + } + + override fun onFinish() { + LogUtil.e("连接中倒计时20så˜ä¸ºæœªè¿žæŽ¥çжæ€") + XEventBus.post(EventName.ActionConDeviceState, ConState.CONNECTION_FAIL) + } + }.start() + } + + /** + * 连接æˆåŠŸåŽå–消倒计时 + */ + private fun cancelFailCountDown() { + mCountDownTimer?.cancel() + } + + /** + * æ ¹æ®mac连接设备 + */ + fun connectDeviceToMac(activity: BaseActivity<*>, mac: String, showLoading: Boolean = true) { + if (TextUtils.isEmpty(mac)) { + return + } + if (SRBleUtil.instance.isBleConnecting) { + LogUtil.e("å·²ç»æœ‰è®¾å¤‡åœ¨è¿žæŽ¥ä¸­...") + XEventBus.post(EventName.ActionConDeviceState, ConState.CONNECTING_MAC) + return + } + Util.checkBluetoothPermissionsEnabled(activity, { + SRBleUtil.instance.cancelBleScan("connectDeviceToMac,å·²ç»åœ¨æ‰«æè“ç‰™ï¼Œå–æ¶ˆä¸Šæ¬¡æ‰«æ") + if (showLoading) activity.showLoading(showLoading, R.string.txt_connecting, false) + viewModelScope.launch(Dispatchers.IO) { + //防止和自动连接设备,扫æå®ŒæˆåŽå›žè°ƒå†²çª + if (SRBleUtil.instance.isScanInterrupt) { + delay(1000) + } + //åªæ‰«ææŒ‡å®šçš„mac设备 + val scanRuleConfig = BleScanRuleConfig.Builder().setDeviceMac(mac).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + LogUtil.e("开始扫æ${mac}设备...") + SRBleUtil.instance.isScanInterrupt = false + XEventBus.post(EventName.ActionConDeviceState, ConState.CONNECTING_MAC) + } + + override fun onScanning(bleDevice: BleDevice?) { + LogUtil.d("onScanning....$bleDevice") + bleDevice?.apply { + if (bleDevice.mac == mac) BleManager.getInstance().cancelScan() + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + val interrupt = SRBleUtil.instance.isScanInterrupt + if (interrupt) { + LogUtil.e("connectDeviceToMac--扫æå®Œæˆ..中断扫æ") + } else { + activity.showLoading(false) + scanResultList?.let { + val size = scanResultList.size + LogUtil.e("扫æ${mac}设备完æˆ...$size") + if (size > 0) { + SRBleUtil.instance.connect(scanResultList[0]) + } else { + XEventBus.post( + EventName.ActionConDeviceState, ConState.DEVICE_NOT_FOUND + ) + } + } + } + } + }) + } + }) + } + + /** + * æ ¹æ®å¤–显id连接设备 + */ + fun connectDeviceToDeviceOutId( + activity: BaseActivity<*>, deviceOutId: String, showLoading: Boolean = true + ) { + if (TextUtils.isEmpty(deviceOutId)) { + return + } + var isHaveScan = false + Util.checkBluetoothPermissionsEnabled(activity, { + SRBleUtil.instance.cancelBleScan("connectDeviceToDeviceOutId,å·²ç»åœ¨æ‰«æè“ç‰™ï¼Œå–æ¶ˆä¸Šæ¬¡æ‰«æ") + activity.showLoading(showLoading, R.string.txt_search_device, false) + viewModelScope.launch(Dispatchers.IO) { + //防止和自动连接设备,扫æå®ŒæˆåŽå›žè°ƒå†²çª + if (SRBleUtil.instance.isScanInterrupt) { + delay(1000) + } + val scanRuleConfig = BleScanRuleConfig.Builder().setScanTimeOut(10 * 1000).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + LogUtil.e("开始扫æ${deviceOutId}外显id设备...") + SRBleUtil.instance.isScanInterrupt = false + XEventBus.post(EventName.ActionConDeviceState, ConState.CONNECTING) + } + + override fun onScanning(bleDevice: BleDevice?) { + LogUtil.d("onScanning....$bleDevice") + bleDevice?.apply { + if (null != name && name.contains(SRBleUtil.instance.trackDeviceBleStartName)) { + val start = 45 + val end = start + 6 + val subArray = scanRecord.sliceArray(start until end) + val scanDeviceOutId = subArray.decodeToString() + if (scanDeviceOutId == deviceOutId) { + isHaveScan = true + BleManager.getInstance().cancelScan() + SRBleUtil.instance.connect(this) + } + } + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + val interrupt = SRBleUtil.instance.isScanInterrupt + if (interrupt) { + LogUtil.e("connectDeviceToDeviceOutId--扫æå®Œæˆ..中断扫æ") + } else { + LogUtil.e("扫æ${deviceOutId}外显id设备 结æŸ") + if (isHaveScan) { + activity.showLoading(showLoading, R.string.txt_connecting, false) + } else { + activity.showLoading(false) + XEventBus.post( + EventName.ActionConDeviceState, ConState.DEVICE_NOT_FOUND + ) + } + } + } + }) + } + }) + } + + /** + * 断开连接 + */ + fun disconnect(bleDevice: BleDevice?) { + bleDevice?.let { + BleManager.getInstance().disconnect(it) + } + } + + override fun onCleared() { + super.onCleared() + LogUtil.e("ConnectionDeviceViewModel,onCleared") + SRBleUtil.instance.isBleConnecting = false + SRBleUtil.instance.cancelBleScan("退出APPï¼Œå–æ¶ˆæ‰«æè“") + cancelFailCountDown() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/CountDownTimerViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/CountDownTimerViewModel.kt new file mode 100644 index 0000000..6bd687d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/CountDownTimerViewModel.kt @@ -0,0 +1,43 @@ +package com.abbidot.tracker.vm + +import android.os.CountDownTimer +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +/** + *Created by .yzq on 2022/7/18/018. + * @link + * @description: 倒计时 + */ +class CountDownTimerViewModel : ViewModel() { + val mCountDowningLiveData = MutableLiveData() + val mCountDownEndLiveData = MutableLiveData() + private var mCountDownTimer: CountDownTimer? = null + + /** + * @param second ç§’ + * 倒计时 + */ + fun startCountDown(second: Long, countDownInterval: Long = 1) { + stopCountDown() + mCountDownTimer = object : CountDownTimer(second * 1000, countDownInterval * 1000L) { + override fun onTick(millisUntilFinished: Long) { + val time = millisUntilFinished / 1000 + mCountDowningLiveData.value = time + } + + override fun onFinish() { + mCountDownEndLiveData.value = 0L + } + }.start() + } + + fun stopCountDown() { + mCountDownTimer?.cancel() + } + + override fun onCleared() { + super.onCleared() + stopCountDown() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/DataDetailViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DataDetailViewModel.kt new file mode 100644 index 0000000..cc440e7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/DataDetailViewModel.kt @@ -0,0 +1,85 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.ActiveTimeBean +import com.abbidot.tracker.bean.HistoryDataBean +import com.abbidot.tracker.bean.SleepTimeBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/16/016. + * @link + * @description: + */ +class DataDetailViewModel : ViewModel() { + + val mActiveDetailLiveData = MutableLiveData>() + val mSleepDetailLiveData = MutableLiveData>() + val mHistoryDetailLive = MutableLiveData>>() + val mSetGoalLiveData = MutableLiveData>() + val mPetActivityInfoLiveData = MutableLiveData>() + + /** + * è¿åŠ¨æ—¶é—´è¯¦æƒ… + */ + fun getActiveTimeByDay( + activity: BaseActivity<*>, deviceId: String, dayTime: String, petId: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getActiveTimeByDay(deviceId, dayTime, petId) + mActiveDetailLiveData.value = result + } + } + + /** + * 获å–SleepTimeæ•°æ® + */ + fun getSleepTimeByDay( + activity: BaseActivity<*>, + deviceId: String, + dayTime: String, + petId: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getSleepTimeByDay(deviceId, dayTime, petId) + mSleepDetailLiveData.value = result + } + } + + fun getHistoryByDay(activity: BaseActivity<*>, deviceId: String, fromTime: Long, toTime: Long) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getHistoryByDay(deviceId, fromTime, toTime) + mHistoryDetailLive.value = result + } + } + + /** + *设置è¿åŠ¨ç›®æ ‡ + * @param goalTime min + */ + fun setGoal(activity: BaseActivity<*>, deviceId: String, goalTime: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.setGoal(deviceId, goalTime) + mSetGoalLiveData.value = result + } + } + + /** + * 获å–宠物活动统计 + */ + fun getPetActivityDetailInfo(activity: BaseActivity<*>, petId: String, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetActivityDetailInfo(petId, deviceId) + mPetActivityInfoLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/DataViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DataViewModel.kt new file mode 100644 index 0000000..b1f91a8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/DataViewModel.kt @@ -0,0 +1,53 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.HomeDataBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/11/011. + * @link + * @description: + */ +class DataViewModel : ViewModel() { + + val mHomePetLiveData = MutableLiveData>>() + val mHomeDataLiveData = MutableLiveData>() + + /** + * 获å–å® ç‰©æ•°æ® + */ + fun getHomeBindPetList(activity: BaseActivity<*>) { + activity.showLoading(true, cancelable = false) + getHomeBindPetList() + } + + /** + * 获å–å® ç‰©æ•°æ® + */ + fun getHomeBindPetList() { + val userId = MMKVUtil.getString(MMKVKey.UserId) + viewModelScope.launch { + val result = NetworkApi.getHomeBindPetList(userId) + mHomePetLiveData.value = result + } + } + + /** + * 获å–首页Data模å—çš„è®¾å¤‡æ•°æ® + */ + fun getHomeDeviceData(deviceId: String, dayTime: String, petId: String) { + viewModelScope.launch { + val result = NetworkApi.getDeviceData(deviceId, dayTime, petId) + mHomeDataLiveData.value = result + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt new file mode 100644 index 0000000..86c7194 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt @@ -0,0 +1,235 @@ +package com.abbidot.tracker.vm + +import android.app.Application +import android.content.Context +import android.os.Build +import android.text.TextUtils +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DFUStateBean +import com.abbidot.tracker.bean.FirmwareBean +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.service.DfuService +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.clj.fastble.BleManager +import com.clj.fastble.callback.BleScanCallback +import com.clj.fastble.data.BleDevice +import com.clj.fastble.data.BleScanState +import com.clj.fastble.scan.BleScanRuleConfig +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import no.nordicsemi.android.dfu.DfuProgressListener +import no.nordicsemi.android.dfu.DfuServiceInitiator + +/** + *Created by .yzq on 2023/3/16/016. + * @link + * @description: + */ +class DeviceDFUViewModel(application: Application) : AndroidViewModel(application) { + + val mFirmwareInfoLiveData = MutableLiveData>() + val mDfuStateLiveData = MutableLiveData() + + //dfuæˆåŠŸ + val mDFUSuccessCode = 101 + + //dfu失败 + val mDFUFailCode = -2 + + //记下更新时间,ä¸ç”¨é¢‘ç¹æ›´æ–° + private var mUpdatePostTimeMillis = System.currentTimeMillis() + + + /** + * 获å–å›ºä»¶ä¿¡æ¯ + */ + fun getFirmware(activity: BaseActivity<*>, isShowLoading: Boolean = true) { + activity.showLoading(isShowLoading) + viewModelScope.launch(Dispatchers.IO) { + val result = NetworkApi.getFirmware("GPS_Tracker_01") + mFirmwareInfoLiveData.postValue(result) + } + } + + /** + * å¯¹æ¯”ç‰ˆæœ¬å·æ˜¯å¦å¯ä»¥æ›´æ–° + */ + fun checkVersionUpdate(localVersion: String, serviceVersion: String): Boolean { + if (TextUtils.isEmpty(localVersion)) return false + val localVersionInt = (localVersion.replace(".", "").substring(1, 4)).toInt() + val serviceVersionInt = serviceVersion.replace(".", "").toInt() + LogUtil.e("对比固件版本localVersionInt=$localVersionInt,serviceVersionInt=$serviceVersionInt") + return serviceVersionInt > localVersionInt + } + + fun startDFU(context: Context, device: BleDevice, path: String) { + viewModelScope.launch { + val dFUStateBean = DFUStateBean(context.getString(R.string.txt_dfu_model)) + mDfuStateLiveData.value = dFUStateBean + //æ˜¯å¦æ‰«æåˆ° + var isScan = false + val dfuCmd = byteArrayOf(0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66) + SRBleUtil.instance.writeData(device, dfuCmd) + if (BleScanState.STATE_IDLE != BleManager.getInstance().scanSate) BleManager.getInstance() + .cancelScan() + // 扫æè¶…时时间,å¯é€‰ï¼Œé»˜è®¤10ç§’ + val scanRuleConfig = BleScanRuleConfig.Builder().setScanTimeOut(60000).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + val stateBean = DFUStateBean(context.getString(R.string.txt_search_dfu)) + mDfuStateLiveData.value = stateBean + LogUtil.e("开始æœç´¢DUF设备。。。。") + } + + override fun onScanning(bleDevice: BleDevice?) { + bleDevice?.apply { + LogUtil.e("æœç´¢DUF设备中。。。已æœç´¢åˆ°$name") + val deviceDFUName = "DfuTarg" +// val deviceDFUName = "xxx" + if (!TextUtils.isEmpty(name) && name.contains(deviceDFUName)) { + isScan = true + BleManager.getInstance().cancelScan() + dfu(context, bleDevice, path) + } + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + LogUtil.e("æœç´¢DUF设备结æŸã€‚") + if (!isScan) { + val stateBean = + DFUStateBean(context.getString(R.string.txt_no_dfu), mDFUFailCode) + mDfuStateLiveData.value = stateBean + } + } + }) + } + } + + + private fun dfu(context: Context, bleDevice: BleDevice, path: String) { + val dfuServiceInitiator = DfuServiceInitiator(bleDevice.mac) + dfuServiceInitiator.setDeviceName(bleDevice.name) + dfuServiceInitiator.setKeepBond(false).setPacketsReceiptNotificationsEnabled(false) + .setPacketsReceiptNotificationsValue(10) + .setUnsafeExperimentalButtonlessServiceInSecureDfuEnabled(true).setZip(path) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + //Android O,通知æ é—®é¢˜ + DfuServiceInitiator.createDfuNotificationChannel(context) + } + dfuServiceInitiator.start(context, DfuService::class.java) + } + + val mDfuProgressListener = object : DfuProgressListener { + + private val context = getApplication() + + /**设备正在连接 */ + override fun onDeviceConnecting(deviress: String) { + val stateBean = DFUStateBean(context.getString(R.string.txt_connect_device)) + mDfuStateLiveData.value = stateBean + LogUtil.e("DfuProgressListener -->> onDeviceConnecting,dfu开始连接设备") + } + + /** + * 设备连接了 1 + * @param deviceAddress + */ + override fun onDeviceConnected(deviceAddress: String) { + val stateBean = DFUStateBean(context.getString(R.string.txt_device_connect_success)) + mDfuStateLiveData.value = stateBean + LogUtil.e("DfuProgressListener -->> dfu连接设备æˆåŠŸ onDeviceConnected") + } + + /**å‡çº§å‡†å¤‡å¼€å§‹ + * 2 + */ + override fun onDfuProcessStarting(deviceAddress: String) { + val stateBean = DFUStateBean(context.getString(R.string.txt_upgrade_start)) + mDfuStateLiveData.value = stateBean + LogUtil.e("DfuProgressListener -->> onDfuProcessStarting") + } + + /**更新进度开始 + * 3 + */ + override fun onDfuProcessStarted(deviceAddress: String) { + LogUtil.e("DfuProgressListener -->> onDfuProcessStarted") + } + + override fun onEnablingDfuMode(deviceAddress: String) { + LogUtil.e("DfuProgressListener -->> onEnablingDfuMode") + } + + /**å‡çº§ä¸­çš„回调 */ + override fun onProgressChanged( + deviceAddress: String, + percent: Int, + speed: Float, + avgSpeed: Float, + currentPart: Int, + partsTotal: Int + ) { + val currentTimeMillis = System.currentTimeMillis() + //500msæ›´æ–°å‘逿•°æ®ï¼Œä¸ç”¨é¢‘ç¹æ›´æ–° + if (currentTimeMillis - mUpdatePostTimeMillis > 500 || percent == 100) { + mUpdatePostTimeMillis = currentTimeMillis + val dFUStateBean = + DFUStateBean(context.getString(R.string.txt_upgrading) + " ", percent) + mDfuStateLiveData.value = dFUStateBean + } + } + + /**固件验è¯-未用 */ + override fun onFirmwareValidating(deviceAddress: String) { + LogUtil.e("DfuProgressListener -->> onFirmwareValidating") + } + + /**设备正在断开 + * 4 + */ + override fun onDeviceDisconnecting(deviceAddress: String) { + val dFUStateBean = DFUStateBean(context.getString(R.string.txt_unconnect_no)) + mDfuStateLiveData.value = dFUStateBean + LogUtil.e("DfuProgressListener -->> onDeviceDisconnecting") + } + + /**设备断开了 + * 5 + */ + override fun onDeviceDisconnected(deviceAddress: String) { + val stateBean = DFUStateBean(context.getString(R.string.txt_unconnect)) + mDfuStateLiveData.value = stateBean + LogUtil.e("DfuProgressListener -->> onDeviceDisconnected") + } + + /**å‡çº§å®Œæˆ + * 6 + */ + override fun onDfuCompleted(deviceAddress: String) { + val stateBean = DFUStateBean(context.getString(R.string.txt_upgrade_success)) + mDfuStateLiveData.value = stateBean + LogUtil.e("DfuProgressListener -->> onDfuCompleted") + val state = + DFUStateBean(context.getString(R.string.txt_reconnect_device), mDFUSuccessCode) + mDfuStateLiveData.value = state + } + + override fun onDfuAborted(deviceAddress: String) { + LogUtil.e("DfuProgressListener -->> onDfuAborted") + } + + /**å‡çº§å¤±è´¥ */ + override fun onError(deviceAddress: String, error: Int, errorType: Int, message: String) { + LogUtil.e("DfuProgressListener -->> onError") + val stateBean = DFUStateBean(context.getString(R.string.txt_upgrade_fail), mDFUFailCode) + mDfuStateLiveData.value = stateBean + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/DownLoadFileViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DownLoadFileViewModel.kt new file mode 100644 index 0000000..15b8eb2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/DownLoadFileViewModel.kt @@ -0,0 +1,170 @@ +package com.abbidot.tracker.vm + +import android.app.DownloadManager +import android.content.Context +import android.content.Context.DOWNLOAD_SERVICE +import android.net.Uri +import android.text.TextUtils +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.DFUStateBean +import com.abbidot.tracker.util.FileUtil +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import java.io.File + + +/** + *Created by .yzq on 2023/3/22/022. + * @link + * @description:通知中心显示下载文件 + */ +class DownLoadFileViewModel : ViewModel() { + + val mDownloadProgressLiveData = MutableLiveData() + private var mDownloadManager: DownloadManager? = null + private var mDownloadId: Long = 0L + private var isLoop = true + + fun downLoadFile(context: Context, fileName: String, downloadUrl: String) { + if (TextUtils.isEmpty(downloadUrl)) { + return + } + //获å–缓存的file目录context.getExternalFilesDir() + val file = File(context.getExternalFilesDir(FileUtil.DFU_DIRECTORY_NAME), fileName) + //文件存在就删除 + if (file.exists()) { + file.delete() + } + mDownloadManager = context.getSystemService(DOWNLOAD_SERVICE) as DownloadManager + val uri: Uri = Uri.parse(downloadUrl) + val request = DownloadManager.Request(uri) + //设置文件类型 + request.setMimeType("zip/*") + //在通知æ ä¸­æ˜¾ç¤º + //在下载进行中时显示,在下载完æˆåŽå°±ä¸æ˜¾ç¤ºäº†ã€‚å¯ä»¥è®¾ç½®å¦‚下三个值: + // VISIBILITY_HIDDEN 下载UIä¸ä¼šæ˜¾ç¤ºï¼Œä¹Ÿä¸ä¼šæ˜¾ç¤ºåœ¨é€šçŸ¥ä¸­ï¼Œå¦‚果设置该值,需è¦å£°æ˜Žandroid.permission.DOWNLOAD_WITHOUT_NOTIFICATION + // VISIBILITY_VISIBLE å½“å¤„äºŽä¸‹è½½ä¸­çŠ¶æ€æ—¶ï¼Œå¯ä»¥åœ¨é€šçŸ¥æ ä¸­æ˜¾ç¤ºï¼›å½“下载完æˆåŽï¼Œé€šçŸ¥æ ä¸­ä¸æ˜¾ç¤º + // VISIBILITY_VISIBLE_NOTIFY_COMPLETED 当处于下载中状æ€å’Œä¸‹è½½å®Œæˆæ—¶çжæ€ï¼Œå‡åœ¨é€šçŸ¥æ ä¸­æ˜¾ç¤º + // VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION åªåœ¨ä¸‹è½½å®Œæˆæ—¶æ˜¾ç¤ºåœ¨é€šçŸ¥æ ä¸­ã€‚ + request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN) + request.setTitle(fileName) + request.setDescription("正在下载") + + //设置为å¯è¢«åª’体扫æå™¨æ‰¾åˆ° +// request.allowScanningByMediaScanner() + //è®¾ç½®å…¬å…±ç›®å½•ï¼Œå¸Œæœ›è¢«å…¶ä»–çš„åº”ç”¨å…±äº«ï¼Œæ¯”å¦‚éŸ³ä¹æ–‡ä»¶ +// request. setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,fileName) + + //设置自定义目录,软件å¸è½½åŽï¼Œä¸‹è½½çš„æ–‡ä»¶å°†éšç€å¸è½½å…¨éƒ¨è¢«åˆ é™¤ + request.setDestinationInExternalFilesDir(context, FileUtil.DFU_DIRECTORY_NAME, fileName) + + //注册广播,监å¬ä¸‹è½½çŠ¶æ€ +// mIntentFilter = IntentFilter() +// mIntentFilter!!.addAction(DownloadManager.ACTION_DOWNLOAD_COMPLETE) +// mIntentFilter!!.addAction(DownloadManager.ACTION_NOTIFICATION_CLICKED) +// context.registerReceiver(receiver, mIntentFilter) + + // 将下载请求放入队列 + mDownloadId = mDownloadManager!!.enqueue(request) + isLoop = true + updateProgress(context) + } + + private fun updateProgress(context: Context) { + viewModelScope.launch(Dispatchers.IO) { + while (isLoop) { + val query = DownloadManager.Query() + val cursor = mDownloadManager!!.query(query.setFilterById(mDownloadId)) + if (cursor.moveToFirst()) { + var path = "" + val bytesDownloaded = cursor.getFloat( + cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR) + ) + val bytesTotal = cursor.getFloat( + cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES) + ) + val progress = (bytesDownloaded / bytesTotal) * 100 + LogUtil.d("下载进度 bytesDownloaded=$bytesDownloaded 总文件大å°ï¼šbytesTotal=$bytesTotal") + LogUtil.d(">>>下载进度$progress") + val columnStatus = + cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) + if (columnStatus == DownloadManager.STATUS_SUCCESSFUL) { + // æˆåŠŸåŽå–消循环 + isLoop = false + val localUri = cursor.getString( + cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI) + ) + val uri = Uri.parse(localUri) + LogUtil.i(localUri) + path = uri.path.toString() + LogUtil.i(path) + } + val dfuStateBean = DFUStateBean( + context.getString(R.string.txt_down_firmware), + progress.toInt(), + path + ) + mDownloadProgressLiveData.postValue(dfuStateBean) + } + cursor.close() + //延时循环 + delay(500) + } + } + } + + /** + * 广播接å—è€…ï¼ŒæŽ¥æ”¶ä¸‹è½½çŠ¶æ€ + */ +// private val receiver = object : BroadcastReceiver() { +// override fun onReceive(context: Context, intent: Intent) { +// val action = intent.action +// if (action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) { +// val downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0) +// //æ£€æŸ¥ä¸‹è½½çŠ¶æ€ +// checkDownloadStatus(downloadId) +// } else if (action.equals(DownloadManager.ACTION_NOTIFICATION_CLICKED)) { +// Toast.makeText(context, "用户点击了通知æ ", Toast.LENGTH_SHORT).show(); +// } +// +// } + /** + * æ£€æŸ¥ä¸‹è½½çŠ¶æ€ + */ +// private fun checkDownloadStatus(downloadId: Long) { +// val query = DownloadManager.Query() +// query.setFilterById(downloadId) //筛选下载任务,传入任务ID,å¯å˜å‚æ•° +// val cursor = mDownloadManager!!.query(query) +// val status: Int +// if (cursor.moveToFirst()) { +// status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) +// when (status) { +// DownloadManager.STATUS_PAUSED -> LogUtil.i(">>>下载暂åœ") +// DownloadManager.STATUS_PENDING -> LogUtil.i(">>>下载延迟") +// DownloadManager.STATUS_RUNNING -> LogUtil.i(">>>正在下载")// 此处无法监å¬åˆ° +// DownloadManager.STATUS_SUCCESSFUL -> LogUtil.i(">>>下载完æˆ") +// DownloadManager.STATUS_FAILED -> LogUtil.i(">>>下载失败") +// } +// } +// val bytesDownload = cursor.getLong( +// cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)) +// val totalSize = +// cursor.getLong(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)) +// } +// } + + + override fun onCleared() { + super.onCleared() + mDownloadManager?.apply { + //ç”¨äºŽåˆ é™¤ä¸‹è½½ï¼Œå¦‚æžœä¸‹è½½ä¸­åˆ™å–æ¶ˆä¸‹è½½ï¼Œ åŒæ—¶ä¼šåˆ é™¤ä¸‹è½½æ–‡ä»¶å’Œè®°å½• + remove(mDownloadId) + } + isLoop = false + } +} diff --git a/app/src/main/java/com/abbidot/tracker/vm/FamilyViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/FamilyViewModel.kt new file mode 100644 index 0000000..431cd9c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/FamilyViewModel.kt @@ -0,0 +1,86 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.FamilyBean +import com.abbidot.tracker.bean.FamilyPetBean +import com.abbidot.tracker.bean.InviteInfoBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/11/011. + * @link + * @description: + */ +class FamilyViewModel : ViewModel() { + + val mInviteLiveData = MutableLiveData>() + val mFamilyListLiveData = MutableLiveData>() + val mFamilyRemoveLiveData = MutableLiveData>() + val mInviteInfoLiveData = MutableLiveData>() + + fun invite(activity: BaseActivity<*>, familyBean: FamilyBean) { + activity.showLoading(true) + viewModelScope.launch { + familyBean.apply { + val result = NetworkApi.invite( + userId, + userName, + sendEmail, + deviceId, + acceptEmail, + relation, + avatar, + petId, + petName + ) + mInviteLiveData.value = result + } + } + } + + fun inviteCN( + fragment: BaseFragment<*>, userId: String, userName: String, deviceId: String, phone: String + ) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.inviteCN(userId, userName, deviceId, phone) + mInviteLiveData.value = result + } + } + + + fun getFamilies(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getFamilies(deviceId) + mFamilyListLiveData.value = result + } + } + + fun removeFamily(activity: BaseActivity<*>, familyId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.removeFamily(familyId) + mFamilyRemoveLiveData.value = result + } + } + + /** + * 获å–è®¾å¤‡é‚€è¯·ä¿¡æ¯ + */ + fun getDeviceInviteInfo(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val email = MMKVUtil.getString(MMKVKey.Email) + val result = NetworkApi.getDeviceInviteInfo(email) + mInviteInfoLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/FeedbackViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/FeedbackViewModel.kt new file mode 100644 index 0000000..650b0af --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/FeedbackViewModel.kt @@ -0,0 +1,35 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/24/024. + * @link + * @description: + */ +class FeedbackViewModel : ViewModel() { + + val mFeedbackResultLiveData = MutableLiveData>() + + /** + *用户æ„è§å馈 + * type=å馈问题类型 type 1为APP 2为设备 3其它 + */ + fun feedback(activity: BaseActivity<*>, + type: Int, + userId: String, + content: String, + imgurls: String, + email: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.feedback(type, userId, content, imgurls, email) + mFeedbackResultLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/FencesManageViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/FencesManageViewModel.kt new file mode 100644 index 0000000..905d6e1 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/FencesManageViewModel.kt @@ -0,0 +1,150 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseDialog +import com.abbidot.tracker.bean.FencesBean +import com.abbidot.tracker.bean.GetFencesBean +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.util.ViewUtil +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/1/001. + * @link + * @description: + */ +class FencesManageViewModel : ViewModel() { + + val mFencesAddLiveData = MutableLiveData>() + val mDeleteFenceLiveData = MutableLiveData>() + val mUpdateFenceLiveData = MutableLiveData>() + val mFencesLiveData = MutableLiveData>() + + /** + *获å–å›´æ åˆ—表 + */ + fun getFenceList(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getFenceList(deviceId) + mFencesLiveData.value = result + } + } + + fun addCircleFence(activity: BaseActivity<*>, fencesBean: FencesBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.addCircleFence(fencesBean) + mFencesAddLiveData.value = result + } + } + + fun addRectFence(activity: BaseActivity<*>, fencesBean: FencesBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.addRectFence(fencesBean) + mFencesAddLiveData.value = result + } + } + + fun addPolygonFence(activity: BaseActivity<*>, fencesBean: FencesBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.addPolygonFence(fencesBean) + mFencesAddLiveData.value = result + } + } + + fun updateCircleFence( + activity: BaseActivity<*>, fencesBean: FencesBean + ) { + activity.showLoading(true) + fencesBean.apply { + viewModelScope.launch { + val result = NetworkApi.updateCircleFence( + deviceId, + deviceServiceId, + name, + address, + imgurl, + isOn, + radius, + longitudeCenter, + latitudeCenter, + fenceNameType, + fenceType, + fenceId, + ancillaryLatitude, + ancillaryLongitude, + ancillaryOtherLatitude, + ancillaryOtherLongitude + ) + mUpdateFenceLiveData.value = result + } + } + } + + fun updateRectFence( + activity: BaseActivity<*>, fencesBean: FencesBean + ) { + activity.showLoading(true) + fencesBean.apply { + viewModelScope.launch { + val result = NetworkApi.updateRectFence( + deviceId, + deviceServiceId, + name, + address, + imgurl, + isOn, + fenceNameType, + fenceType, + fenceId, + longitudeA, + latitudeA, + longitudeB, + latitudeB, + longitudeC, + latitudeC, + longitudeD, + latitudeD, + longitudeCenter, + latitudeCenter, + longDistance, + shortDistance + ) + mUpdateFenceLiveData.value = result + } + } + } + + /** + * æ›´æ–°å¤šè¾¹å½¢å›´æ  + */ + fun updatePolygonFence(activity: BaseActivity<*>, fencesBean: FencesBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.updatePolygonFence(fencesBean) + mUpdateFenceLiveData.value = result + } + } + + fun deleteFence(activity: BaseActivity<*>, fenceId: String, deviceServiceId: String) { + ViewUtil.instance.showDialog( + activity, R.string.txt_delete_tips, object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.removeFence(fenceId, deviceServiceId) + mDeleteFenceLiveData.value = result + } + } + }, okTextResId = R.string.txt_sure + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/FencesMapViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/FencesMapViewModel.kt new file mode 100644 index 0000000..934b0ca --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/FencesMapViewModel.kt @@ -0,0 +1,279 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModel +import com.abbidot.tracker.R +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.google.android.gms.maps.model.LatLng + +/** + *Created by .yzq on 2022/3/2/002. + * @link + * @description: + */ +class FencesMapViewModel : ViewModel() { + + /** + * 获å–å›´æ é—´æœ€å¤§è·ç¦» + */ +// fun getFencesDistance(fencesBean: FencesBean): Double { +// var distance = 0.0 +// fencesBean.apply { +// when (fenceShapeType) { +// ConstantInt.CircleShapeType -> distance = radius +// ConstantInt.RectangleShapeType -> distance = minOf(shortDistance, longDistance) +// ConstantInt.PolygonShapeType -> { +// val distanceA = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeA, longitudeA +// ) +// val distanceB = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeB, longitudeB +// ) +// val distanceC = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeC, longitudeC +// ) +// val distanceD = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeD, longitudeD +// ) +// val distanceE = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeE, longitudeE +// ) +// val distanceF = Util.measureLatLonDistance( +// latitudeCenter, longitudeCenter, latitudeF, longitudeF +// ) +// distance = +// minOf(distanceA, distanceB, distanceC, distanceD, distanceE, distanceF) +// } +// } +// } +// +// if (distance == 0.0) distance = 150.0 +// return distance +// } + + /** + * è®¾ç½®åœ°å›¾å›´æ æ•°æ® + */ + fun setFencesData( + context: Context, fencesList: MutableList?, mapFragment: Fragment + ) { + if (mapFragment is BaseGoogleMapFragment) { + mapFragment.clearFenceList() + } else if (mapFragment is BaseBaiduMapFragment) { + mapFragment.clearFenceList() + } + + if (null == fencesList) return + if (fencesList.size == 0) return + + val saveFillColor = ContextCompat.getColor(context, R.color.select_color4) + val saveStrokeColor = ContextCompat.getColor(context, R.color.select_color2) + val noGoFillColor = ContextCompat.getColor(context, R.color.red_color3) + val noGoStrokeColor = ContextCompat.getColor(context, R.color.red_color2) + + fencesList.forEach { + if (it.isOn == ConstantInt.Open) { + if (mapFragment is BaseGoogleMapFragment) { + if (it.fenceShapeType == ConstantInt.CircleShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addCircleFence( + LatLng(it.latitudeCenter, it.longitudeCenter), + it.radius.toDouble(), + saveStrokeColor, + saveFillColor + ) + else mapFragment.addCircleFence( + LatLng(it.latitudeCenter, it.longitudeCenter), + it.radius.toDouble(), + noGoStrokeColor, + noGoFillColor + ) + } else if (it.fenceShapeType == ConstantInt.RectangleShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addRectFence( + it, saveStrokeColor, saveFillColor + ) + else mapFragment.addRectFence( + it, noGoStrokeColor, noGoFillColor + ) + } else if (it.fenceShapeType == ConstantInt.PolygonShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addPolygonFence( + it, saveStrokeColor, saveFillColor + ) + else mapFragment.addPolygonFence( + it, noGoStrokeColor, noGoFillColor + ) + } + } else if (mapFragment is BaseBaiduMapFragment) { + if (it.fenceShapeType == ConstantInt.CircleShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addCircleFence( + it.latitudeCenter, + it.longitudeCenter, + it.radius.toDouble(), + saveStrokeColor, + saveFillColor + ) + else mapFragment.addCircleFence( + it.latitudeCenter, + it.longitudeCenter, + it.radius.toDouble(), + noGoStrokeColor, + noGoFillColor + ) + } else if (it.fenceShapeType == ConstantInt.RectangleShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addRectFence( + it, saveStrokeColor, saveFillColor + ) + else mapFragment.addRectFence( + it, noGoStrokeColor, noGoFillColor + ) + } else if (it.fenceShapeType == ConstantInt.PolygonShapeType) { + if (it.fenceType == ConstantInt.SafeZone) mapFragment.addPolygonFence( + it, saveStrokeColor, saveFillColor + ) + else mapFragment.addPolygonFence( + it, noGoStrokeColor, noGoFillColor + ) + } + } + } + } + } + + /** + * 设置地图虚实线围æ å’Œå›¾ç‰‡ç±»åž‹ + */ + fun setImageFencesData( + context: Context, + fencesList: MutableList?, + mapFragment: Fragment, + currentFencesId: String = "", + isSatelliteMap: Boolean = false + ) { + if (mapFragment is BaseGoogleMapFragment) { + mapFragment.clearAllMarker() + } else if (mapFragment is BaseBaiduMapFragment) { + mapFragment.clearAllMarker() + } + + if (null == fencesList) return + if (fencesList.size == 0) return + + val saveFillColor = ContextCompat.getColor(context, R.color.select_color4) + var saveStrokeColor = ContextCompat.getColor(context, R.color.select_color) + val noGoFillColor = ContextCompat.getColor(context, R.color.red_color3) + val noGoStrokeColor = ContextCompat.getColor(context, R.color.red_color2) + val closeFillColor = ContextCompat.getColor(context, R.color.black5) + val closeStrokeColor = ContextCompat.getColor(context, R.color.black20) + + if (isSatelliteMap) saveStrokeColor = ContextCompat.getColor(context, R.color.select_color2) + + fencesList.forEach { + //是å¦ç”»è™šçº¿ + var isDashed = false + val imageTypeResId = if (it.fenceId == currentFencesId) { + isDashed = true + if (it.fenceType == ConstantInt.NoGoZone) R.drawable.icon_fences_zone_gps_red_svg + else if (isSatelliteMap) R.drawable.icon_fences_zone_gps_green_svg + else R.drawable.icon_fences_zone_gps_svg + } else getFencesImageTypeResId( + it.fenceNameType + ) + val strokeColor: Int + val fillColor: Int + if (it.isOn == ConstantInt.Close) { + strokeColor = closeStrokeColor + fillColor = closeFillColor + } else if (it.fenceType == ConstantInt.SafeZone) { + strokeColor = saveStrokeColor + fillColor = saveFillColor + } else { + strokeColor = noGoStrokeColor + fillColor = noGoFillColor + } + + if (mapFragment is BaseGoogleMapFragment) { + if (it.fenceShapeType == ConstantInt.CircleShapeType) { + val centerLatLng = LatLng(it.latitudeCenter, it.longitudeCenter) + mapFragment.addCircleImageFence( + centerLatLng, + it.radius.toDouble(), + imageTypeResId, + strokeColor, + fillColor, + isDashed + ) + } else if (it.fenceShapeType == ConstantInt.RectangleShapeType) { + if (it.fenceId == currentFencesId) { + mapFragment.addRectImageEditFence( + it, imageTypeResId, strokeColor, fillColor + ) + } else { + mapFragment.addRectImageFence( + it, imageTypeResId, strokeColor, fillColor, false + ) + } + } else if (it.fenceShapeType == ConstantInt.PolygonShapeType) { + if (it.fenceId == currentFencesId) { + mapFragment.addPolygonImageEditFence( + it, imageTypeResId, strokeColor, fillColor + ) + } else { + mapFragment.addPolygonImageFence( + it, imageTypeResId, strokeColor, fillColor, false + ) + } + } + } else if (mapFragment is BaseBaiduMapFragment) { + if (it.fenceShapeType == ConstantInt.CircleShapeType) { + mapFragment.addCircleDashedAndImageFence( + it.latitudeCenter, + it.longitudeCenter, + it.radius.toDouble(), + imageTypeResId, + strokeColor, + fillColor + ) + } else if (it.fenceShapeType == ConstantInt.RectangleShapeType) { + if (it.fenceId == currentFencesId) { + mapFragment.addRectDashedAndImageEditFence( + it, imageTypeResId, strokeColor, fillColor + ) + } else { + mapFragment.addRectDashedAndImageFence( + it, imageTypeResId, strokeColor, fillColor + ) + } + } else if (it.fenceShapeType == ConstantInt.PolygonShapeType) { + if (it.fenceId == currentFencesId) { + mapFragment.addPolygonDashedAndImageEditFence( + it, imageTypeResId, strokeColor, fillColor + ) + } else { + mapFragment.addPolygonDashedAndImageFence( + it, imageTypeResId, strokeColor, fillColor + ) + } + } + } + } + } + + private fun getFencesImageTypeResId(type: Int): Int { + var imageTypeResId = 0 + when (type) { + 1 -> imageTypeResId = R.drawable.icon_save_zone_type1_small_svg + 2 -> imageTypeResId = R.drawable.icon_save_zone_type2_small_svg + 3 -> imageTypeResId = R.drawable.icon_save_zone_type3_small_svg + 4 -> imageTypeResId = R.drawable.icon_save_zone_type4_small_svg + 5 -> imageTypeResId = R.drawable.icon_save_zone_type5_small_svg + 6 -> imageTypeResId = R.drawable.icon_no_zone_type1_small_svg + 7 -> imageTypeResId = R.drawable.icon_no_zone_type2_small_svg + 8 -> imageTypeResId = R.drawable.icon_no_zone_type3_small_svg + } + return imageTypeResId + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/FindBleDeviceViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/FindBleDeviceViewModel.kt new file mode 100644 index 0000000..90337be --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/FindBleDeviceViewModel.kt @@ -0,0 +1,292 @@ +package com.abbidot.tracker.vm + +import android.app.Service +import android.media.AudioAttributes +import android.media.AudioManager +import android.media.SoundPool +import android.os.CountDownTimer +import android.text.TextUtils +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import com.abbidot.tracker.widget.MyBluetoothAnimView +import com.abbidot.tracker.widget.MySignalView +import com.abbidot.tracker.widget.SignalRadarView +import com.clj.fastble.BleManager +import com.clj.fastble.callback.BleRssiCallback +import com.clj.fastble.callback.BleScanCallback +import com.clj.fastble.data.BleDevice +import com.clj.fastble.data.BleScanState +import com.clj.fastble.exception.BleException +import com.clj.fastble.scan.BleScanRuleConfig +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +/** + *Created by .yzq on 2023/9/20/020. + * @link + * @description: + */ +class FindBleDeviceViewModel : ViewModel() { + + //音é‡ç®¡ç†å™¨ + private lateinit var mAudioManager: AudioManager + + //记录手机原æ¥çš„音é‡ï¼Œä¾¿äºŽè¿˜åŽŸ + private var mPhoneOriginalVolume = 0 + var mMaxVolume = 0 + + //è®¾ç½®æ’­æ”¾çš„å½“å‰æ—¶é—´ + private var mSetPlayTimeMillis = 0L + + private var mSoundPool: SoundPool? = null + private var mSoundID = 0 + private var mStreamID = 0 + + //播放的速度 + private var mSetPlaySpeed = 0.5f + + private var isStartFindBleDevice = false + + private var mCountDownTimer: CountDownTimer? = null + + fun startScanFind( + activity: BaseActivity<*>, + mac: String, + signalView: MySignalView, + radoView: SignalRadarView, + bluetoothView: MyBluetoothAnimView, + showLoading: Boolean = false + ) { + if (TextUtils.isEmpty(mac)) { + return + } + if (!SRBleUtil.instance.isBlueEnable(activity)) { + activity.showToast(R.string.txt_ble_enable) + return + } + SRBleUtil.instance.cancelBleScan("FindBleDeviceViewModel--->å·²ç»åœ¨æ‰«æè“ç‰™ï¼Œå–æ¶ˆä¸Šæ¬¡æ‰«æ") + if (showLoading) activity.showLoading(true) + + //扫æè¶…时时间,å¯é€‰ï¼Œé»˜è®¤10秒,若å°äºŽ0,则时间无é™ï¼Œä¸€ç›´æ‰«çŒ«ï¼Œä½†å¯ä»¥ç”¨BLeManger.getInstance().cancelScan()æ¥ä¸­æ­¢æ‰«æ + val scanTimeOut = 0L + //扫æåˆ°è®¾å¤‡çš„æ—¶é—´ï¼Œå¤šä¹…没扫æåˆ°è®¾å¤‡ + var currentScanTimeMillis = 0L + var speed = 0.5f + + viewModelScope.launch(Dispatchers.IO) { + + isStartFindBleDevice = true + mAudioManager = activity.getSystemService(Service.AUDIO_SERVICE) as AudioManager + mPhoneOriginalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC) + mMaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) + setVolume(0) + + createSoundPoolIfNeeded(activity) + + if (BleManager.getInstance().isConnected(mac)) { + LogUtil.e("是已连接的设备,直接获å–ä¿¡å·") + activity.runOnUiThread { + countDownReadConnectRssi { + SRBleUtil.instance.readConnectRssi(mac, object : BleRssiCallback() { + override fun onRssiFailure(exception: BleException?) { + LogUtil.e("FindBleDeviceViewModel--->获å–连接设备信å·å¤±è´¥...") + } + + override fun onRssiSuccess(rssi: Int) { + LogUtil.e("FindBleDeviceViewModel--->获å–连接设备信å·onRssiSuccess$rssi...") + speed = getPlaySpeed(rssi) + val value = getSignalValue(rssi) + signalView.setValue(value) + bluetoothView.setValue(value) + radoView.setValue(value) + playAudio(speed) + } + + }) + } + } + return@launch + } + //åªæ‰«ææŒ‡å®šçš„mac设备 + val scanRuleConfig = + BleScanRuleConfig.Builder().setDeviceMac(mac).setScanTimeOut(scanTimeOut).build() + BleManager.getInstance().initScanRule(scanRuleConfig) + BleManager.getInstance().scan(object : BleScanCallback() { + override fun onScanStarted(success: Boolean) { + LogUtil.e("FindBleDeviceViewModel--->开始扫æ${mac}设备...") + } + + override fun onScanning(bleDevice: BleDevice?) { + bleDevice?.let { + LogUtil.e("FindBleDeviceViewModel--->onScanning...${it.mac},${it.rssi}") + } + } + + override fun onLeScan(bleDevice: BleDevice?) { + bleDevice?.let { + if (it.mac == mac) { + currentScanTimeMillis = System.currentTimeMillis() + LogUtil.e("FindBleDeviceViewModel--->onLeScan...${it.mac},${it.rssi}") + speed = getPlaySpeed(it.rssi) + val value = getSignalValue(it.rssi) + signalView.setValue(value) + bluetoothView.setValue(value) + radoView.setValue(value) + } + //10s没扫æåˆ°è®¾å¤‡ + if (System.currentTimeMillis() - currentScanTimeMillis > 10 * 1000) { + LogUtil.e("FindBleDeviceViewModel--->10s没扫æåˆ°è®¾å¤‡") + speed = getPlaySpeed(-200) + val value = getSignalValue(-200) + signalView.setValue(value) + bluetoothView.setValue(value) + radoView.setValue(value) + currentScanTimeMillis = System.currentTimeMillis() + } + playAudio(speed) + } + } + + override fun onScanFinished(scanResultList: MutableList?) { + } + }) + } + } + + /** + * æ¯éš”2s执行一次请求 + */ + private fun countDownReadConnectRssi(readConnectRssi: () -> Unit) { + mCountDownTimer = object : CountDownTimer(2 * 1000, 1000) { + override fun onTick(time: Long) { + } + + override fun onFinish() { + readConnectRssi() + countDownReadConnectRssi(readConnectRssi) + } + }.start() + } + + fun setVolume(volume: Int) { + //显示设置音é‡å¤§å°çš„æ“ä½œæ¡ flag=AudioManager.FLAG_SHOW_UI显示设置音é‡çš„ui + mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0) + } + + /** + * 创建SoundPool ï¼Œæ³¨æ„ api 等级 + */ + private fun createSoundPoolIfNeeded(activity: BaseActivity<*>) { + if (mSoundPool == null) { + val audioAttributes = AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA) + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); + + mSoundPool = + SoundPool.Builder().setMaxStreams(5).setAudioAttributes(audioAttributes).build() + + // 设置加载完æˆç›‘å¬ + mSoundPool?.setOnLoadCompleteListener { _, _, status -> + LogUtil.e("音频文件加载完æˆ,status=$status") + } + val fd = activity.assets.openFd("find_device.mp3") + mSoundID = mSoundPool?.load(fd, 1)!! + } + } + + /** + * 播放声音 + */ + private fun playAudio(speed: Float) { + val currentTimeMillis = System.currentTimeMillis() + //1秒更新下播放速度 + if (currentTimeMillis - mSetPlayTimeMillis > 1000) { + mSoundPool?.apply { + if (mStreamID == 0) { + mSetPlaySpeed = speed + mStreamID = play( + mSoundID, mMaxVolume.toFloat(), mMaxVolume.toFloat(), 1, -1, speed + ) + } else { + if (mSetPlaySpeed != speed) { + setRate(mStreamID, speed) + mSetPlaySpeed = speed + } + } + } + mSetPlayTimeMillis = currentTimeMillis + } + } + + /** + * 获å–è¦è®¾ç½®æ’­æ”¾é€Ÿåº¦å¤§å° + * ä¿¡å·å¼º 0dBm~-50dBm ä¿¡å·ä¸­ -50dBm~-70dBm ä¿¡å·å¼± -70dBm~dBm + *低功耗è“牙分四级 + * 4: 0~-60 + * 3: -60~-70 + * 2: -70~-80 + * 1: -80~ + */ + private fun getPlaySpeed(rssi: Int): Float { + return when (getSignalValue(rssi)) { + 4 -> { + 2.0f + } + + 3 -> { + 1.5f + } + + 2 -> { + 1.0f + } + + 1 -> { + 0.75f + } + + else -> { + 0.5f + } + } + } + + private fun getSignalValue(rssi: Int): Int { + return if (rssi >= -50) { + 4 + } else if (rssi >= -70) { + 3 + } else if (rssi >= -90) { + 2 + } else if (rssi >= -100) { + 1 + } else { + 0 + } + } + + /** + * åœæ­¢æŸ¥æ‰¾è®¾å¤‡ + */ + fun stopFindDevice() { + if (!isStartFindBleDevice) return + SRBleUtil.instance.cancelBleScan("åœæ­¢æŸ¥æ‰¾è®¾å¤‡å–消扫æè“牙") + mSoundPool?.apply { + if (mStreamID > 0) stop(mStreamID) + release() + } + //还原手机原æ¥çš„éŸ³é‡ + setVolume(mPhoneOriginalVolume) + isStartFindBleDevice = false + mCountDownTimer?.cancel() + } + + override fun onCleared() { + super.onCleared() + stopFindDevice() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/GeoCoderViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/GeoCoderViewModel.kt new file mode 100644 index 0000000..fa2b42a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/GeoCoderViewModel.kt @@ -0,0 +1,192 @@ +package com.abbidot.tracker.vm + +import android.text.TextUtils +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.util.LonAndLatUtil +import com.baidu.mapapi.model.LatLng +import com.baidu.mapapi.search.geocode.GeoCodeResult +import com.baidu.mapapi.search.geocode.GeoCoder +import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener +import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption +import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult +import com.mapbox.geojson.Point +import com.mapbox.search.ResponseInfo +import com.mapbox.search.ReverseGeoOptions +import com.mapbox.search.SearchCallback +import com.mapbox.search.SearchEngine +import com.mapbox.search.SearchEngineSettings +import com.mapbox.search.common.AsyncOperationTask +import com.mapbox.search.result.SearchResult + + +/** + *Created by .yzq on 2022/6/27/027. + * @link + * @description: 地ç†ç¼–ç (mapbox地图 å’Œ 百度地图) + */ +class GeoCoderViewModel : ViewModel() { + + var mLat = 0.0 + var mLon = 0.0 + var mAddress = "" + val mLatLonAddressLiveData = MutableLiveData() + + //Mapboxåå‘地ç†ç¼–ç  + private var mMapboxSearchRequestTask: AsyncOperationTask? = null + private var mSearchEngine: SearchEngine? = null + + //百度地图åå‘地ç†ç¼–ç  + private var mBaiduMapGeoCoder: GeoCoder? = null + + //æ˜¯å¦æ˜¾ç¤ºè¯¦ç»†åœ°å€ä¿¡æ¯ + private var isShowDetailAddress = true + + /** + * å地ç†ç¼–ç  + * 使用原生gps(WGS84)åæ ‡ + * @param showDetailAddress æ˜¯å¦æ˜¾ç¤ºæœ€è¯¦ç»†çš„åœ°å€ + */ + fun getLatLonAddress(latitude: Double, longitude: Double, showDetailAddress: Boolean = true) { + + isShowDetailAddress = showDetailAddress + + //相åŒç»çº¬åº¦ä¸éœ€è¦å地ç†ç¼–ç  + if (mLon == longitude && mLat == latitude) { + mLatLonAddressLiveData.value = mAddress + return + } + mLon = longitude + mLat = latitude + + if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) { + baiduMapReverseGeocoder(latitude, longitude) + } else { + mapBoxReverseGeocoder(latitude, longitude) + } + } + + /** + * Mapboxåå‘地ç†ç¼–ç  + */ + private fun mapBoxReverseGeocoder(latitude: Double, longitude: Double) { + if (null == mSearchEngine) { + mSearchEngine = + SearchEngine.createSearchEngineWithBuiltInDataProviders(SearchEngineSettings()) + } + mMapboxSearchRequestTask?.cancel() + mMapboxSearchRequestTask = mSearchEngine?.search(ReverseGeoOptions( + center = Point.fromLngLat(longitude, latitude) + ), object : SearchCallback { + override fun onError(e: Exception) { + LogUtil.e(" Mapboxå地ç†ç¼–ç error,${e.message}") +// mLatLonAddressLiveData.value = "" + baiduMapReverseGeocoder(latitude, longitude) + } + + override fun onResults( + results: List, responseInfo: ResponseInfo + ) { + LogUtil.e(results.toString()) + if (results.isNotEmpty()) { + val searchResult = results[0] + var address = "" + searchResult.address?.let { + if (!TextUtils.isEmpty(it.street)) { + address += "${it.street} " + } +// if (!TextUtils.isEmpty(it.houseNumber)) { +// address += "${it.houseNumber} " +// } + if (!TextUtils.isEmpty(it.locality)) { + address += "${it.locality} " + } + if (!TextUtils.isEmpty(it.place)) { + address += "${it.place} " + } + if (isShowDetailAddress && !TextUtils.isEmpty(it.region)) { + address += "${it.region} " + } + if (isShowDetailAddress && !TextUtils.isEmpty(it.country)) { + address += "${it.country}" + } + } +// address = address?.replace("null", "") + mAddress = address + LogUtil.e("Mapboxå地ç†ç¼–ç :$mAddress") + mLatLonAddressLiveData.value = mAddress + } else { +// mLatLonAddressLiveData.value = ""- + baiduMapReverseGeocoder(latitude, longitude) + } + } + }) + } + + /** + * 百度地图åå‘地ç†ç¼–ç  + */ + private fun baiduMapReverseGeocoder(latitude: Double, longitude: Double) { + if (null == mBaiduMapGeoCoder) { + mBaiduMapGeoCoder = GeoCoder.newInstance() + } + mBaiduMapGeoCoder?.destroy() + mBaiduMapGeoCoder!!.setOnGetGeoCodeResultListener(object : OnGetGeoCoderResultListener { + override fun onGetGeoCodeResult(p0: GeoCodeResult?) { + } + + override fun onGetReverseGeoCodeResult(result: ReverseGeoCodeResult?) { + if (null == result || result.error != com.baidu.mapapi.search.core.SearchResult.ERRORNO.NO_ERROR) { + //没有找到检索结果 + return + } else { + var address = "" + //è¡Œæ”¿åŒºå· +// val adCode = result.cityCode + result.addressDetail.apply { + if (isShowDetailAddress && !TextUtils.isEmpty(province)) { + address += province + } + if (!TextUtils.isEmpty(city)) { + address += city + } + if (!TextUtils.isEmpty(district)) { + address += district + } + if (!TextUtils.isEmpty(town)) { + address += town + } + if (!TextUtils.isEmpty(street)) { + address += street + } + if (!TextUtils.isEmpty(streetNumber)) { + address += streetNumber + } + LogUtil.e("百度地图åå‘地ç†ç¼–ç è¯¦ç»†åœ°å€,${streetNumber},${town},${street},$result") + } + //è¯¦ç»†åœ°å€ +// val address = result.address + mAddress = address + mLatLonAddressLiveData.value = mAddress + } + } + }) + val convertLonLat = LonAndLatUtil.convertFromWGS84ToGCJ02(latitude, longitude) + mBaiduMapGeoCoder!!.reverseGeoCode( + ReverseGeoCodeOption().location(LatLng(convertLonLat[0], convertLonLat[1])) + // 设置是å¦è¿”å›žæ–°æ•°æ® é»˜è®¤å€¼0ä¸è¿”回,1返回 + .newVersion(1) + // POIå¬å›žåŠå¾„,å…许设置区间为0-1000米,超过1000米按1000ç±³å¬å›žã€‚默认值为1000 + .radius(500) + ) + } + + override fun onCleared() { + super.onCleared() + //å–æ¶ˆå地ç†ç¼–ç æœç´¢ + mBaiduMapGeoCoder?.destroy() + mMapboxSearchRequestTask?.cancel() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/LogBleReportViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/LogBleReportViewModel.kt new file mode 100644 index 0000000..418f73a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/LogBleReportViewModel.kt @@ -0,0 +1,110 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.bean.ReceiveDeviceData +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.util.FileUtil +import com.abbidot.tracker.util.Util +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +import java.io.File +import java.io.FileOutputStream +import java.io.IOException + + +/** + *Created by .yzq on 2022/3/11/011. + * @link + * @description:设备日志上报 + */ +class LogBleReportViewModel : ViewModel() { + + val mUploadLogLiveData = MutableLiveData>() + val mUploadDeviceLogLiveData = MutableLiveData>() + + //çº¿ç¨‹åŒæ­¥é” No upload + private val mMutex = Mutex() + + + /** + * å¤„ç†æ—¥å¿—ä¸ŠæŠ¥çš„æ•°æ® + */ + fun dealLogReportData(context: Context, receiveData: ReceiveDeviceData) { + viewModelScope.launch(Dispatchers.IO) { + mMutex.withLock { + val fileName = "${receiveData.mac}.txt" + val file = File( + FileUtil.getDiskCacheDirectory(context, FileUtil.LOG_DIRECTORY_NAME), fileName + ) + try { + // è¿½åŠ åˆ›å»ºæ–‡ä»¶è¾“å‡ºæµ + val fos = FileOutputStream(file, true) + // 将数æ®å†™å…¥æ–‡ä»¶ + fos.write(receiveData.data) + // å…³é—­æ–‡ä»¶è¾“å‡ºæµ + fos.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + } + } + + /** + * 设备日志上传 + */ + fun uploadLog(context: Context, mac: String) { + //æ˜¯å¦æœ‰ç½‘络功能 + if (QMUIDisplayHelper.hasInternet(context)) { + viewModelScope.launch { + mMutex.withLock { + try { + val fileName = "$mac.txt" + val file = File( + FileUtil.getDiskCacheDirectory(context, FileUtil.LOG_DIRECTORY_NAME), + fileName + ) + if (file.exists()) { + val newFileName = "${mac}_${System.currentTimeMillis()}.txt" + val newFile = File( + FileUtil.getDiskCacheDirectory( + context, FileUtil.LOG_DIRECTORY_NAME + ), newFileName + ) + //文件é‡å‘½å + file.renameTo(newFile) + val result = + NetworkApi.uploadLog(Util.uploadFile(newFile.path, "file/txt")) + mUploadLogLiveData.value = result + } else { + LogUtil.e("${fileName}日志文件ä¸å­˜åœ¨") + } + } catch (e: Exception) { + LogUtil.e("日志文件上传错误:${e.message}") + } + } + } + } + } + + /** + * 上传设备日志 + */ + fun uploadDeviceLog( + deviceOutId: String, uploadTime: String, macID: String, logFileUrl: String + ) { + viewModelScope.launch { + mMutex.withLock { + val result = NetworkApi.uploadDeviceLog(deviceOutId, uploadTime, macID, logFileUrl) + mUploadDeviceLogLiveData.value = result + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/LoginViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/LoginViewModel.kt new file mode 100644 index 0000000..05f0e09 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/LoginViewModel.kt @@ -0,0 +1,27 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/2/15/015. + * @link + * @description: + */ +class LoginViewModel:ViewModel() { + + val mLoginLiveData=MutableLiveData>() + + fun login(activity: BaseActivity<*>, email: String, password: String){ + activity.showLoading(true) + viewModelScope.launch { + val result=NetworkApi.login(email, password) + mLoginLiveData.value=result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/MapLiveViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/MapLiveViewModel.kt new file mode 100644 index 0000000..37a212a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/MapLiveViewModel.kt @@ -0,0 +1,74 @@ +package com.abbidot.tracker.vm + +import android.os.CountDownTimer +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.LiveDataBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +class MapLiveViewModel : ViewModel() { + private var mCountDownTimer: CountDownTimer? = null + val mMapLiveLiveData = MutableLiveData>() + val mMapLiveStatusLiveData = MutableLiveData>() + + //获å–ç›´æ’­ç»çº¬åº¦çš„æ—¶é—´æˆ³ï¼Œåªæœ‰èŽ·å–到数æ®ï¼Œæ—¶é—´æˆ³æ‰ä¼šå˜åŒ– + var mGetPetLivePointTimeStamp = System.currentTimeMillis() / 1000 + + //åˆ·æ–°æ•°æ®æ—¶é—´ç§’ + val mRefreshTime = 10 + + /** + * 打开关闭直播 + */ + fun setupDeviceLiveStatus(activity: BaseActivity<*>, deviceId: String, liveState: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.setupDeviceLiveStatus(deviceId, liveState) + mMapLiveStatusLiveData.value = result + } + } + + /** + * 直播宠物轨迹 + */ + fun getPetLivePoint(deviceId: String) { + viewModelScope.launch { + val result = NetworkApi.getPetLivePoint(deviceId, mGetPetLivePointTimeStamp) + mMapLiveLiveData.value = result + } + countDownGetData(deviceId) + } + + /** + * æ¯éš”10s执行一次请求 + */ + private fun countDownGetData(deviceId: String) { + stopGetData() + mCountDownTimer = object : CountDownTimer(mRefreshTime * 1000L, 1000) { + override fun onTick(time: Long) { + } + + override fun onFinish() { + getPetLivePoint(deviceId) + } + }.start() + } + + /** + * åœæ­¢èŽ·å–æ•°æ® + */ + fun stopGetData() { + if (null != mCountDownTimer) { + mCountDownTimer!!.cancel() + mCountDownTimer = null + } + } + + override fun onCleared() { + super.onCleared() + stopGetData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt new file mode 100644 index 0000000..2112f6e --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt @@ -0,0 +1,378 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import android.os.CountDownTimer +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import androidx.recyclerview.widget.RecyclerView +import com.abbidot.baselibrary.list.BaseRecyclerAdapter +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.util.Util +import com.abbidot.tracker.util.bluetooth.SRBleUtil +import kotlinx.coroutines.launch + +class MapViewModel : ViewModel() { + + val mMapDeviceLiveData = MutableLiveData>() + private var mCountDownTimer: CountDownTimer? = null + + //几分钟倒计时(min) + private var mRefreshDataMin = 0.5f + private var mDeviceId = "" + + //警告动画是å¦ç»“æŸ + private var isWarningAnimEnd = true + + fun getMapDeviceStatus(deviceId: String, isNeedCountDown: Boolean = true) { + viewModelScope.launch { + stopGetData() + val result = NetworkApi.getMapDeviceStatus(deviceId) + mMapDeviceLiveData.value = result + } + mDeviceId = deviceId + if (isNeedCountDown) countDownGetData(deviceId) + } + + /** + * 更新刷新时间 + */ + fun updateMillisInFuture(refreshMin: Float) { + if (refreshMin <= 0 || mRefreshDataMin == refreshMin) return + mRefreshDataMin = refreshMin + countDownGetData(mDeviceId) + } + + /** + * æ¯éš”mMillisInFuture分钟执行一次请求 + */ + private fun countDownGetData(deviceId: String) { + stopGetData() + mCountDownTimer = object : CountDownTimer((mRefreshDataMin * 60 * 1000L).toLong(), 1000) { + override fun onTick(time: Long) { + } + + override fun onFinish() { + getMapDeviceStatus(deviceId) + } + }.start() + } + + /** + * è®¾ç½®è®¾å¤‡é»˜è®¤çŠ¶æ€ + */ + fun addDeviceDefaultStateData(context: Context, deviceStateList: MutableList) { + DataBean().apply { + imageId = R.drawable.icon_map_signal + menuType = ConstantInt.Close + name = "LTE" + value = + context.getString(R.string.tracker_manage_set_network) + ":" + context.getString(R.string.txt_offline) + deviceStateList.add(this) + } + DataBean().apply { + imageId = R.drawable.icon_map_gps + menuType = ConstantInt.Close + name = context.getString(R.string.tracker_manage_set_gps) + value = + context.getString(R.string.tracker_manage_set_gps) + ":" + context.getString(R.string.txt_no_signal) + deviceStateList.add(this) + } + DataBean().apply { + imageId = R.drawable.icon_map_zone + menuType = ConstantInt.Close + name = context.getString(R.string.txt_wifi) + value = + context.getString(R.string.txt_smart_power_zone) + ":" + context.getString(R.string.txt_outside) + deviceStateList.add(this) + } + DataBean().apply { + imageId = 0 + state = -1 + menuType = ConstantInt.Close + value = String.format(context.getString(R.string.tracker_manage_set_battery), "0") + name = "N/A" + deviceStateList.add(this) + } + } + + /** + * 设置设备状æ€å’Œå‘Šè­¦ä¿¡æ¯æ˜¾ç¤º + */ + fun setDeviceStateAndWarningData( + context: Context, + petBean: PetBean?, + mapDeviceBean: MapDeviceBean, + deviceStateList: MutableList, + deviceStateAdapter: BaseRecyclerAdapter, + deviceMsgList: MutableList, + deviceMsgAdapter: BaseRecyclerAdapter, + rvMsg: RecyclerView, + isLive: Boolean = false + ) { + mapDeviceBean.apply { + deviceMsgList.clear() + //设备关机 + if (powerSwitch == ConstantInt.Close) { +// setNoState(context, deviceStateList) + //è­¦å‘ŠçŠ¶æ€ + DataBean().apply { + val timeString = + Utils.formatTime(updateTime * 1000, Utils.DATE_FORMAT_PATTERN_EN6) + value = context.getString(R.string.txt_tracker_power_off) + " $timeString" + deviceMsgList.add(this) + } + } + //设备充电 + else if (powerSwitch == ConstantInt.Type3) { +// setDeviceState(context, mapDeviceBean, deviceStateList) + + //è­¦å‘ŠçŠ¶æ€ + DataBean().apply { + value = context.getString(R.string.txt_on_charging) + deviceMsgList.add(this) + } + } + //设备休眠 + else if (powerSwitch == ConstantInt.Type2) { +// setDeviceState(context, mapDeviceBean, deviceStateList) +// setNoState(context, deviceStateList) + + //è­¦å‘ŠçŠ¶æ€ + DataBean().apply { + value = context.getString(R.string.txt_in_sleep_mode) + deviceMsgList.add(this) + } + } + //判断是å¦è¿žæŽ¥äº†è“牙 + else if (null != petBean && null != SRBleUtil.instance.getConnectMacDevice(petBean.macID)) { + //ç½‘ç»œæ— ä¿¡å· +// if (lteSignal <= ConstantInt.NoSignal) { +// setNoState(context, deviceStateList) +// } else { +// setDeviceState(context, mapDeviceBean, deviceStateList) +// } + val nearby = + String.format(context.getString(R.string.txt_is_nearby), petBean.petName) + //è­¦å‘ŠçŠ¶æ€ + DataBean().apply { + value = nearby + state = ConstantInt.Type1 + deviceMsgList.add(this) + } + } + //网络无信å·/ åˆ†é’ŸåŽæ— ä¸ŠæŠ¥æ‰€æœ‰ç»¿ç‚¹å–消显示 + else if (lteSignal <= ConstantInt.NoSignal || Util.isTimeoutReport(updateTime)) { +// setNoState(context, deviceStateList) + + //è­¦å‘ŠçŠ¶æ€ + DataBean().apply { + value = context.getString(R.string.map_current_no_signal) + deviceMsgList.add(this) + } + } else { + //è­¦å‘ŠçŠ¶æ€ + setWaringData(context, mapDeviceBean, deviceMsgList, isLive) + } + setDeviceState(context, mapDeviceBean, deviceStateList) + + deviceStateAdapter.notifyItemRangeChanged(0, deviceStateList.size) + deviceMsgAdapter.setData(deviceMsgList) + deviceMsgAdapter.notifyDataSetChanged() +// if (deviceMsgList.size > 0) { +// if (isWarningAnimEnd) { +// YoYo.with(Techniques.FadeOut).onStart { +// isWarningAnimEnd = false +// }.onEnd { +// isWarningAnimEnd = true +// }.delay(29 * 1000).duration(3000).playOn(rvMsg) +// } +// } + } + } + + /** + * è®¾ç½®æ²¡æœ‰çš„çŠ¶æ€ + */ + private fun setNoState(context: Context, deviceStateList: MutableList) { + deviceStateList[0].apply { + menuType = ConstantInt.Close + value = + context.getString(R.string.tracker_manage_set_network) + ":" + context.getString(R.string.txt_offline) + } + deviceStateList[1].apply { + menuType = ConstantInt.Close + value = + context.getString(R.string.tracker_manage_set_gps) + ":" + context.getString(R.string.txt_no_signal) + } + deviceStateList[2].apply { + menuType = ConstantInt.Close + value = + context.getString(R.string.txt_smart_power_zone) + ":" + context.getString(R.string.txt_outside) + } + deviceStateList[3].apply { + menuType = ConstantInt.Close + state = -1 + value = String.format( + context.getString(R.string.tracker_manage_set_battery), "--" + ) + name = "N/A" + } + } + + /** + * è®¾ç½®è®¾å¤‡çŠ¶æ€ + */ + private fun setDeviceState( + context: Context, mapDeviceBean: MapDeviceBean, deviceStateList: MutableList + ) { + mapDeviceBean.let { + //是å¦è¶…时上报 + val isTimeoutReport = Util.isTimeoutReport(it.updateTime) + deviceStateList[0].apply { + menuType = ConstantInt.Open + val lteValue = + if (isTimeoutReport || it.lteSignal == ConstantInt.NoSignal || it.powerSwitch == ConstantInt.Type0 || it.powerSwitch == ConstantInt.Type2) { + menuType = ConstantInt.Close + context.getString(R.string.txt_offline) + } else { + context.getString(R.string.txt_online) + } + value = context.getString(R.string.tracker_manage_set_network) + ":$lteValue" + } + deviceStateList[1].apply { + menuType = ConstantInt.Open + val gpsValue = + if (isTimeoutReport || it.gpsSignal == ConstantInt.NoSignal || it.powerSwitch == ConstantInt.Type0 || it.powerSwitch == ConstantInt.Type2 || it.inWifiZone == ConstantInt.Type1) { + menuType = ConstantInt.Close + context.getString(R.string.txt_no_signal) + } else if (it.gpsSignal > ConstantInt.WeakSignal) { + context.getString(R.string.txt_strong_signal) + } else { + context.getString(R.string.txt_weak_signal) + } + value = context.getString(R.string.tracker_manage_set_gps) + ":$gpsValue" + } + deviceStateList[2].apply { + menuType = ConstantInt.Open + val wifiZoneValue = when (it.inWifiZone) { + ConstantInt.Open -> context.getString(R.string.txt_inside) + + ConstantInt.Type2 -> { + menuType = ConstantInt.Close + context.getString(R.string.txt_not_set) + } + + else -> { + menuType = ConstantInt.Close + context.getString(R.string.txt_outside) + } + } + value = context.getString(R.string.txt_smart_power_zone) + ":$wifiZoneValue" + } + deviceStateList[3].apply { + if (isTimeoutReport || it.lteSignal == ConstantInt.NoSignal || it.powerSwitch == ConstantInt.Type0 || it.powerSwitch == ConstantInt.Type2) { + menuType = ConstantInt.Close +// state = -1 +// value = +// String.format(context.getString(R.string.tracker_manage_set_battery), "--") +// name = "N/A" + } else { + menuType = if (it.batteryLevel > ConstantInt.LowBattery20) ConstantInt.Open + else ConstantInt.Close + } + state = Utils.calculatePowerLevel(it.batteryLevel) + value = String.format( + context.getString(R.string.tracker_manage_set_battery), "${it.batteryLevel}" + ) + name = "${it.batteryLevel}%" + } + } + } + + /** + * è®¾ç½®è­¦å‘ŠçŠ¶æ€ + */ + private fun setWaringData( + context: Context, + mapDeviceBean: MapDeviceBean, + deviceMsgList: MutableList, + isLive: Boolean + ) { + mapDeviceBean.let { + if (!isLive && it.inWifiZone == ConstantInt.Type1) { + DataBean().apply { + value = context.getString(R.string.txt_in_power_zone) + state = ConstantInt.Type1 + deviceMsgList.add(this) + } + } else if (it.batteryLevel <= ConstantInt.LowBattery10) { + DataBean().apply { + value = String.format(context.getString(R.string.txt_battery_less_than), "10") + deviceMsgList.add(this) + } + } else if (it.batteryLevel <= ConstantInt.LowBattery20) { + DataBean().apply { + value = String.format(context.getString(R.string.txt_battery_less_than), "20") + deviceMsgList.add(this) + } + } else if (it.batteryLevel <= ConstantInt.LowBattery30) { + DataBean().apply { + value = String.format(context.getString(R.string.txt_battery_less_than), "30") + deviceMsgList.add(this) + } + } else if (it.gpsSignal <= ConstantInt.WeakSignal) { + DataBean().apply { + value = context.getString(R.string.txt_weak_gps_signal) + deviceMsgList.add(this) + } + } else { + if (!isLive) { + if (it.inNoGoZone == ConstantInt.BadZone) { + DataBean().apply { + value = context.getString(R.string.txt_in_no_go_zone) + deviceMsgList.add(this) + } + } else if (it.inSafeZone == ConstantInt.BadZone) { + DataBean().apply { + value = context.getString(R.string.txt_out_save_zone) + deviceMsgList.add(this) + } + } +// else if (it.inWifiZone == ConstantInt.Type0) { +// DataBean().apply { +// value = context.getString(R.string.txt_out_power_zone) +// deviceMsgList.add(this) +// } +// } + else { + + } + } else { + + } + } + } + } + + /** + * åœæ­¢èŽ·å–æ•°æ® + */ + fun stopGetData() { + if (null != mCountDownTimer) { + mCountDownTimer!!.cancel() + mCountDownTimer = null + } + } + + override fun onCleared() { + super.onCleared() + stopGetData() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/PetInfoViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/PetInfoViewModel.kt new file mode 100644 index 0000000..c255bb2 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/PetInfoViewModel.kt @@ -0,0 +1,412 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import android.text.TextUtils +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.Utils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DataBean +import com.abbidot.tracker.bean.LabelBean +import com.abbidot.tracker.bean.PetAllInfoBean +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2024/5/27/027. + * @link + * @description: 宠物信æ¯ç›¸å…³ + */ +class PetInfoViewModel : ViewModel() { + + val mPetLabelsLiveData = MutableLiveData>>() + val mAddPetLiveData = MutableLiveData>() + val mUpdatePetInfoLiveData = MutableLiveData>() + val mPetInfoLiveData = MutableLiveData>() + val mPetAllInfoLiveData = MutableLiveData>() + + fun getPetLabels(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetLabels() + mPetLabelsLiveData.value = result + } + } + + fun getPetAllInfo(activity: BaseActivity<*>, petId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetAllInfo(petId) + mPetAllInfoLiveData.value = result + } + } + + fun getPetInfo(activity: BaseActivity<*>, petId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getPetInfo(petId) + mPetInfoLiveData.value = result + } + } + + fun addPet(activity: BaseActivity<*>, petBean: PetBean) { + activity.showLoading(true) + petBean.apply { + viewModelScope.launch { + val result = NetworkApi.addPet( + userId, + petName, + breed, + gender, + petType, + birthdayDate, + imgurl, + weight, + height, + labels + ) + mAddPetLiveData.value = result + } + } + } + + fun updatePetInfo(activity: BaseActivity<*>, petBean: PetBean) { + activity.showLoading(true) + petBean.apply { + viewModelScope.launch { + val result = NetworkApi.updatePetInfo( + userId, + petName, + breed, + gender, + petType, + birthdayDate, + petId, + imgurl, + weight, + height, + labels + ) + mUpdatePetInfoLiveData.value = result + } + } + } + + + /** + * 多个标签,隔开的字符串转数组 + */ + fun getLabelData(label: String): MutableList { + val labelList = mutableListOf() + if (!TextUtils.isEmpty(label)) { + val labels = label.split(",") + if (labels.isNotEmpty()) { + labels.forEach { str -> + val labelBean = LabelBean(str) + labelList.add(labelBean) + } + } + } + return labelList + } + + /** + * 获å–宠物类型åç§° + */ + fun getTypeName(context: Context, type: Int): String { + return when (type) { + ConstantInt.DogPetType -> { + context.getString(R.string.txt_dog) + } + + ConstantInt.CatPetType -> { + context.getString(R.string.txt_cat) + } + + else -> { + context.getString(R.string.txt_other) + } + } + } + + /** + * 获å–宠物类型åç§° + */ + fun getSexName(context: Context, sex: Int): String { + return when (sex) { + ConstantInt.Man -> { + context.getString(R.string.pet_manage_gender_male) + } + + else -> { + context.getString(R.string.pet_manage_gender_female) + } + } + } + + /** + * 获å–å‹‹ç«  + */ + fun getBadges( + context: Context, createDate: String, showShort: Boolean = false, shortCount: Int = 4 + ): MutableList { + LogUtil.e("勋章时间:$createDate") + val toTimestamp = Utils.stringToTimestamp(createDate) + val diffTimestamp = if (TextUtils.isEmpty(createDate)) System.currentTimeMillis() + else System.currentTimeMillis() - toTimestamp + val dayTimestamp = 24 * 60 * 60 * 1000L + val monthTimestamp = 30 * dayTimestamp + val yearTimestamp = 12 * monthTimestamp + val list = mutableListOf() + var unlockNum = 0 + + DataBean().apply { + unlockNum++ + name = context.getString(R.string.txt_fresh_paws) + imageId = R.drawable.icon_fresh_paws_unlock_svg + //è§£é”çŠ¶æ€ + state = ConstantInt.Open + //å‹‹ç« è§£é”æ—¶é—´ + value = Utils.stringToDate(createDate, resultFormat = Utils.DATE_FORMAT_PATTERN_EN3) + //å‹‹ç« è§£é”说明 + unit = context.getString(R.string.txt_fresh_paws_dec) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= dayTimestamp) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 1), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_day_1_devotee_dec1) + R.drawable.icon_day_1_devotee_unlock_svg + } else { + unit = context.getString(R.string.txt_day_1_devotee_dec2) + R.drawable.icon_day_1_devotee_lock_svg + } + name = context.getString(R.string.txt_day_1_devotee) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (3 * dayTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 3), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_newbie_navigator_dec1) + R.drawable.icon_newbie_navigator_unlock_svg + } else { + unit = context.getString(R.string.txt_newbie_navigator_dec2) + R.drawable.icon_newbie_navigator_lock_svg + } + name = context.getString(R.string.txt_newbie_navigator) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (7 * dayTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 7), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_furry_friend_dec1) + R.drawable.icon_furry_friend_unlock_svg + } else { + unit = context.getString(R.string.txt_furry_friend_dec2) + R.drawable.icon_furry_friend_lock_svg + } + name = context.getString(R.string.txt_furry_friend) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (15 * dayTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 15), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_pawtential_pal_dec1) + R.drawable.icon_pawtential_pal_unlock_svg + } else { + unit = context.getString(R.string.txt_pawtential_pal_dec2) + R.drawable.icon_pawtential_pal_lock_svg + } + name = context.getString(R.string.txt_pawtential_pal) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= monthTimestamp) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_month_mate_dec1) + R.drawable.icon_month_mate_unlock_svg + } else { + unit = context.getString(R.string.txt_month_mate_dec2) + R.drawable.icon_month__mate_lock_svg + } + name = context.getString(R.string.txt_month_mate) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (3 * monthTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 3), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_tailwag_explorer_dec1) + R.drawable.icon_tailwag_explorer_unlock_svg + } else { + unit = context.getString(R.string.txt_tailwag_explorer_dec2) + R.drawable.icon_tailwag_explorer_lock_svg + } + name = context.getString(R.string.txt_tailwag_explorer) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (6 * monthTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 6), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_pawsome_partner_dec1) + R.drawable.icon_pawsome_partner_unlock_svg + } else { + unit = context.getString(R.string.txt_pawsome_partner_dec2) + R.drawable.icon_pawsome_partner_lock_svg + } + name = context.getString(R.string.txt_pawsome_partner) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= yearTimestamp) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 12), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_1_year_hugger_dec1) + R.drawable.icon_1_year_hugger_unlock_svg + } else { + unit = context.getString(R.string.txt_1_year_hugger_dec2) + R.drawable.icon_1_year_hugger_lock_svg + } + name = context.getString(R.string.txt_1_year_hugger) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (18 * monthTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 18), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_purrfect_partner_dec1) + R.drawable.icon_purrfect_partner_unlock_svg + } else { + unit = context.getString(R.string.txt_purrfect_partner_dec2) + R.drawable.icon_purrfect_partner_lock_svg + } + name = context.getString(R.string.txt_purrfect_partner) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (2 * yearTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 24), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_2_year_companion_dec1) + R.drawable.icon_2_year_companion_unlock_svg + } else { + unit = context.getString(R.string.txt_2_year_companion_dec2) + R.drawable.icon_2_year_companion_lock_svg + } + name = context.getString(R.string.txt_2_year_companion) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (30 * monthTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 30), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_faithful_friend_dec1) + R.drawable.icon_socialite_unlock_svg + } else { + unit = context.getString(R.string.txt_faithful_friend_dec2) + R.drawable.icon_socialite_lock_svg + } + name = context.getString(R.string.txt_faithful_friend) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (3 * yearTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 36), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_3_year_harmony_dec1) + R.drawable.icon_3_year_harmony_unlock_svg + } else { + unit = context.getString(R.string.txt_3_year_harmony_dec2) + R.drawable.icon_3_year_harmony_lock_svg + } + name = context.getString(R.string.txt_3_year_harmony) + list.add(this) + } + + DataBean().apply { + imageId = if (diffTimestamp >= (5 * yearTimestamp)) { + unlockNum++ + state = ConstantInt.Open + value = Utils.formatTime( + Utils.getAfterHowTimestamp(toTimestamp, 30 * 60), Utils.DATE_FORMAT_PATTERN_EN3 + ) + unit = context.getString(R.string.txt_furr_timer_friend_dec1) + R.drawable.icon_furr_timer_friend_unlock_svg + } else { + unit = context.getString(R.string.txt_furr_timer_friend_dec2) + R.drawable.icon_furr_timer_friend_lock_svg + } + name = context.getString(R.string.txt_furr_timer_friend) + list.add(this) + } + + if (showShort) { + return if (unlockNum > shortCount) { + list.subList(unlockNum - shortCount, unlockNum) + } else { + list.subList(0, 4) + } + } + + return list + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/PetRelationViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/PetRelationViewModel.kt new file mode 100644 index 0000000..34bda5d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/PetRelationViewModel.kt @@ -0,0 +1,78 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.PetBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/3/4/004. + * @link + * @description: 宠物绑定,解绑æ“作 + */ +class PetRelationViewModel : ViewModel() { + + val mUnbindPetLiveData = MutableLiveData>() + val mUnbindPetListLiveData = MutableLiveData>>() + val mBindPetLiveData = MutableLiveData>() + val mDeletePetLiveData = MutableLiveData>() + val mAssignOtherPetLiveData = MutableLiveData>() + + fun bindPet(activity: BaseActivity<*>, deviceId: String, petId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.bindPet(userId, deviceId, petId) + mBindPetLiveData.value = result + } + } + + fun unbindPet(activity: BaseActivity<*>, deviceId: String, petId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.unbindPet(userId, deviceId, petId) + mUnbindPetLiveData.value = result + } + } + + fun deletePet(activity: BaseActivity<*>, petId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.deletePet(userId, petId) + mDeletePetLiveData.value = result + } + } + + /** + * èŽ·å–æœªç»‘定的设备宠物列表 + */ + fun getUnbindPetList(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getUnbindPetList(userId) + mUnbindPetListLiveData.value = result + } + } + + /** + * èŽ·å–æœªç»‘定的宠物设备列表 + */ + fun assignOtherPet( + activity: BaseActivity<*>, deviceId: String, originPetId: String, assignPetId: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.assignOtherPet(userId, deviceId, originPetId, assignPetId) + mAssignOtherPetLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/ScreenshotsViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/ScreenshotsViewModel.kt new file mode 100644 index 0000000..515f9c8 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/ScreenshotsViewModel.kt @@ -0,0 +1,156 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import android.graphics.Bitmap +import android.view.View +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.EventName +import com.abbidot.baselibrary.eventbus.XEventBus +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.util.FileUtil +import com.abbidot.tracker.util.ImageUtil +import com.baidu.mapapi.map.BaiduMap +import com.google.android.gms.maps.GoogleMap +import id.zelory.compressor.Compressor +import id.zelory.compressor.constraint.default +import id.zelory.compressor.constraint.destination +import id.zelory.compressor.saveBitmap +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.io.File + +/** + *Created by .yzq on 2022/4/15/015. + * @link + * @description:æˆªå± + */ +class ScreenshotsViewModel : ViewModel() { + + val mMapSnapshotPathLiveData = MutableLiveData() + + /** + * 截å±è°·æ­Œåœ°å›¾å›´æ å›¾ç‰‡,并压缩返回文件路径 + */ + fun fencesGoogleMapSnapshotImage(activity: BaseActivity<*>, + googleMap: GoogleMap, + view: View, + fileName: String = "${System.currentTimeMillis()}.png") { + googleMap.snapshot { + if (null != it) { + fencesMapSnapshotImage(activity, it, view, fileName) + } + } + } + + /** + * 截å±è°·æ­Œåœ°å›¾å›´æ å›¾ç‰‡,并压缩返回文件路径 + */ + fun fencesBaiduMapSnapshotImage(activity: BaseActivity<*>, + baiduMap: BaiduMap, + view: View, + fileName: String = "${System.currentTimeMillis()}.png") { + baiduMap.snapshot { + if (null != it) { + fencesMapSnapshotImage(activity, it, view, fileName) + } + } + } + + /** + * 创建围æ ä¿å­˜åœ°å›¾æˆªå± + */ + private fun fencesMapSnapshotImage(activity: BaseActivity<*>, + bitmap: Bitmap, + view: View, + fileName: String = "${System.currentTimeMillis()}.png") { + activity.showLoading(true) + viewModelScope.launch(Dispatchers.IO) { + val file = + File(FileUtil.getDiskCacheDirectory(activity, FileUtil.SCREENSHOT_DIRECTORY_NAME), + fileName) + + //获å–圆圈view的图片 + var viewBitmap = ImageUtil.viewToBitmap(view) + //åŽ‹ç¼©å›¾ç‰‡å°ºå¯¸å¤§å° + viewBitmap = + ImageUtil.zoomImg(viewBitmap, viewBitmap.width / 3 * 2, viewBitmap.height / 3 * 2) + + //åˆæˆå›¾ç‰‡ + var newBitmap = ImageUtil.combineBitmap(bitmap, viewBitmap) + + //从原ä½å›¾ä¸­æŒ‡å®šå标点(x,y)开始,从中挖å–宽widthã€é«˜height的一å—出æ¥ï¼Œåˆ›å»ºæ–°çš„Bitmap对象 + //截å–谷歌地图中间图片 + val height = newBitmap.height / 6 * 2 + newBitmap = Bitmap.createBitmap(newBitmap, 0, height, newBitmap.width, + newBitmap.height - height * 2) + + //ä¿å­˜Bitmap图片 +// val out = FileOutputStream(file) +// if (newBitmap.compress(Bitmap.CompressFormat.PNG, 100, out)) { +// out.flush() +// out.close() +// } + + //ä¿å­˜Bitmap图片 + saveBitmap(newBitmap, file) + + //压缩图片 + val compressedImageFile = Compressor.compress(activity, File(file.path)) + mMapSnapshotPathLiveData.postValue(compressedImageFile.path) + } + } + + /** + * 历å²è®°å½•,ä¿å­˜åœ°å›¾æˆªå± + */ + private fun saveMapSnapshotBitmap(context: Context, bitmap: Bitmap, fileName: String) { + viewModelScope.launch { + withContext(Dispatchers.IO) { + val imageName = "${fileName}_${FileUtil.DATA_HISTORY_FILE_NAME}" + val file = File(FileUtil.getDiskCacheDirectory(context, + FileUtil.SCREENSHOT_DIRECTORY_NAME), imageName) + val height = bitmap.height / 7 * 2 + val newBitmap = Bitmap.createBitmap(bitmap, 0, height, bitmap.width, height) + //ä¿å­˜Bitmap图片 + saveBitmap(newBitmap, file) + //压缩图片,å°†å›¾åƒæ–‡ä»¶åŽ‹ç¼©åˆ°ç‰¹å®šç›®æ ‡æ–‡ä»¶ + val compressedImageFile = Compressor.compress(context, File(file.path)) { + default() + //ä¿å­˜åˆ°æŒ‡å®šæ–‡ä»¶ + destination(file) + } + XEventBus.post(EventName.HistoryDataSnapshot, compressedImageFile) + } + } + } + + /** + * 获å–历å²è®°å½•è¯¦æƒ…è°·æ­Œåœ°å›¾çš„æˆªå± + */ + fun getHistoryDataGoogleMapSnapshotImage(context: Context, + googleMap: GoogleMap, + fileName: String) { + googleMap.snapshot { + if (null != it) { + saveMapSnapshotBitmap(context, it, fileName) + } + } + } + + /** + * 获å–历å²è®°å½•è¯¦æƒ…ç™¾åº¦åœ°å›¾çš„æˆªå± + */ + fun getHistoryDataBaiduMapSnapshotImage(context: Context, + baiduMap: BaiduMap, + fileName: String) { + //å‘起截图请求 + baiduMap.snapshot { + if (null != it) { + saveMapSnapshotBitmap(context, it, fileName) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/SocketSendMessageViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/SocketSendMessageViewModel.kt new file mode 100644 index 0000000..4d66527 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/SocketSendMessageViewModel.kt @@ -0,0 +1,43 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.util.SocketUtilManage +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + +/** + *Created by .yzq on 2025/4/21/021. + * @link + * @description: + */ +class SocketSendMessageViewModel : ViewModel() { + + //çº¿ç¨‹åŒæ­¥é” + private val mMutex = Mutex() + private var mSocketUtilManage: SocketUtilManage? = null + + /** + * å‘é€ä¸€ä¸ªçš„æ¶ˆæ¯ï¼Œ + */ + fun sendCmd( + socketUtilManage: SocketUtilManage, mac: String, msgID: Byte, msgData: MutableList + ) { + viewModelScope.launch(Dispatchers.IO) { + mMutex.withLock { + mSocketUtilManage = socketUtilManage.apply { + sendMessage(mac, msgID, msgData) + } + delay(2000) + } + } + } + + override fun onCleared() { + super.onCleared() + mSocketUtilManage?.destroy() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/SubscriptionManageViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/SubscriptionManageViewModel.kt new file mode 100644 index 0000000..5982c7c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/SubscriptionManageViewModel.kt @@ -0,0 +1,116 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.bean.OrderBean +import com.abbidot.tracker.bean.PackageBean +import com.abbidot.tracker.bean.PackageTypeBean +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2024/9/4/004. + * @link + * @description: + */ +class SubscriptionManageViewModel : ViewModel() { + + val mSubscriptionsOrderLiveData = MutableLiveData>>() + val mPackageTypeLiveData = MutableLiveData>>() + val mPackageListLiveData = MutableLiveData>>() + val mCommitRefundListLiveData = MutableLiveData>() + val mUpdateStatusListLiveData = MutableLiveData>() + val mSubscriptionsHistoryLiveData = + MutableLiveData>>() + val mReactivationFeeLiveData = MutableLiveData>() + val mRefundLiveData = MutableLiveData>() + + fun getSubscriptionsOrder() { + viewModelScope.launch { + val useId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getSubscriptionsOrder(useId) + mSubscriptionsOrderLiveData.value = result + } + } + + fun getPackageType() { + viewModelScope.launch { + val result = NetworkApi.getPackageType() + mPackageTypeLiveData.value = result + } + } + + fun getPackageList(planTypeName: String) { + viewModelScope.launch { + val result = NetworkApi.getPackageList(planTypeName) + mPackageListLiveData.value = result + } + } + + fun getSubscriptionsHistory(deviceId: String) { + viewModelScope.launch { + val useId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getSubscriptionsHistory(useId, deviceId) + mSubscriptionsHistoryLiveData.value = result + } + } + + fun commitRefund( + orderId: String, + chargeId: String, + amount: Int, + subscriptionId: String, + planName: String, + refundDescription: String, + deviceId: String, + deviceOutId: String, + payType: Int + ) { + viewModelScope.launch { + val result = NetworkApi.commitRefund( + "USD", + orderId, + chargeId, + amount, + subscriptionId, + planName, + refundDescription, + deviceId, + deviceOutId, + payType + ) + mCommitRefundListLiveData.value = result + } + } + + /** + * 退款 + */ + fun refund(orderNum: String) { + viewModelScope.launch { + val result = NetworkApi.refund(orderNum) + mRefundLiveData.value = result + } + } + + /** + * æ›´æ–°è®¢é˜…çŠ¶æ€ çŠ¶æ€ 0æ˜¯å–æ¶ˆ 1使其å˜ä¸ºæ­£å¸¸ + */ + fun updateSubscriptionStatus(subscriptionId: String, status: Int) { + viewModelScope.launch { + val result = NetworkApi.updateSubscriptionStatus(subscriptionId, status) + mUpdateStatusListLiveData.value = result + } + } + + fun getReactivationFee(orderId: String) { + viewModelScope.launch { + val result = NetworkApi.getReactivationFee(orderId) + mReactivationFeeLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/SubscriptionPayViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/SubscriptionPayViewModel.kt new file mode 100644 index 0000000..7e54b1a --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/SubscriptionPayViewModel.kt @@ -0,0 +1,75 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.baselibrary.util.rsa.RSA +import com.abbidot.tracker.bean.CreditCardBean +import com.abbidot.tracker.bean.PayResultBean +import com.abbidot.tracker.bean.StripeSubscriptionPriceBean +import com.abbidot.tracker.bean.SubscriptionsOrderBean +import com.abbidot.tracker.retrofit2.NetworkApi +import com.google.gson.Gson +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2024/9/11/011. + * @link + * @description: + */ +class SubscriptionPayViewModel : ViewModel() { + + val mSubscriptionCustomerLiveData = MutableLiveData>() + val mCreateStripeOrderLiveData = MutableLiveData>() + val mCreatePaypalOrderLiveData = MutableLiveData>() + + /** + * Stripe支付创建消费用户 + */ + fun createCustomer(card: CreditCardBean) { +// activity.showLoading(true) + viewModelScope.launch(Dispatchers.IO) { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val userName = MMKVUtil.getString(MMKVKey.UserName) + val email = MMKVUtil.getString(MMKVKey.Email) + + val dates = card.expirationDate.split("/") + val cardParamsMap = mutableMapOf() + cardParamsMap["month"] = dates[0] + cardParamsMap["year"] = dates[1] + cardParamsMap["cvc"] = card.cvv + cardParamsMap["cardName"] = card.cardName + cardParamsMap["cardnum"] = card.cardNumber + val cardJso = Gson().toJson(cardParamsMap) + val b = + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAofuJbnkwyF7SWg3eRadSYT+ttfHN+CUmCzH0WW1EWTUQOG+01Nv8ux+UJUlxbZA2X7959Et/+VKE03+4OY0/26dlgkROMlXCUnzsucuaoHW+9whGi6xklRZrDLi22QBae/8XV1YDEU2vfYXtcvwf66J0t+bRIhGytQUZvUrL7OEaAHvwJU0QwCy3wQGWcCgSkPpDruIe4ar19iZMleE+BdPGIfKfVdPvWFls63g1eMFECb8F9zN6ydGTCvlqvx/4gfDuFQnF+JuTSre8euSpTRTQn/Q0s3K6KiROVcAYCqDW6cKxNUr2ha1C9ZFxMws9C0qhx5wYzfSlIjFthPC1qwIDAQAB" + + val rsaKey = RSA.encrypt(cardJso, b) + LogUtil.e(cardJso) + val result = NetworkApi.createCustomer( + rsaKey, userId, userName, email + ) + mSubscriptionCustomerLiveData.postValue(result) + } + } + + fun createStripeOrder(subscriptionsOrder: SubscriptionsOrderBean) { + viewModelScope.launch { + LogUtil.e("$subscriptionsOrder") + val result = NetworkApi.createStripeOrder(subscriptionsOrder) + mCreateStripeOrderLiveData.value = result + } + } + + fun createPaypalOrder(subscriptionsOrder: SubscriptionsOrderBean) { + viewModelScope.launch { + LogUtil.e("$subscriptionsOrder") + val result = NetworkApi.createPaypalOrder(subscriptionsOrder) + mCreatePaypalOrderLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/TakePhotoAndCompressViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/TakePhotoAndCompressViewModel.kt new file mode 100644 index 0000000..ad16fa3 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/TakePhotoAndCompressViewModel.kt @@ -0,0 +1,104 @@ +package com.abbidot.tracker.vm + +import android.content.Context +import android.text.TextUtils +import androidx.activity.ComponentActivity +import androidx.activity.result.ActivityResultLauncher +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.ui.common.MyCropImageContract +import com.abbidot.tracker.util.FileUtil.Companion.size +import com.huantansheng.easyphotos.models.album.entity.Photo +import id.zelory.compressor.Compressor +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import java.io.File + +/** + *Created by .yzq on 2022/3/23/023. + * @link + * @description:æ‹ç…§å’Œé€‰å–照片åŽï¼Œè£å‰ªã€åŽ‹ç¼©å›¾ç‰‡è¿”å›ž + */ +class TakePhotoAndCompressViewModel : ViewModel() { + + private lateinit var mCropImageActivityResultLauncher: ActivityResultLauncher + val mPhotoPathLiveData = MutableLiveData>() + + /** + * 适用于:选了照片马上压缩的 + */ + fun dealCompressPhoto(context: Context, resultPhotos: ArrayList) { + val size = resultPhotos.size + if (size > 0) { + val fileList = mutableListOf() + viewModelScope.launch(Dispatchers.IO) { + LogUtil.d("一共选了多少张照片:$size") + for (i in 0 until size) { + val photo = resultPhotos[i] + val file = File(photo.path) + //压缩图片 + val compressedImageFile = Compressor.compress(context, file) + fileList.add(compressedImageFile) + + //打å°ç¬¬ä¸€å¼ ç…§ç‰‡æ—¥å¿— + if (i == 0) { + LogUtil.d("第一张:${photo},size=${photo.size}byte") + LogUtil.d(compressedImageFile.path) + LogUtil.d("size=${compressedImageFile.length()}") + } + } + mPhotoPathLiveData.postValue(fileList) + } + } + } + + /** + * 放在OnCreate()中注册 + */ + fun registerCropImageActivityResult( + componentActivity: ComponentActivity, aspectRatioX: Int = 1, aspectRatioY: Int = 1 + ) { + mCropImageActivityResultLauncher = componentActivity.registerForActivityResult( + MyCropImageContract( + aspectRatioX, aspectRatioY + ) + ) { result -> + if (result.isSuccessful) { + // use the returned uri + val uriContent = result.uriContent + val uriFilePath = result.getUriFilePath(componentActivity) // optional usage + LogUtil.e("è£å‰ªå›¾ç‰‡æˆåŠŸ----------->$uriContent\n$uriFilePath") + compressImage(componentActivity, uriFilePath) + } + } + } + + /** + * 跳转è£å‰ªå›¾ç‰‡å¹¶ä¸”压缩 + */ + fun goCropAndCompressImage(resultPhotos: ArrayList?) { + if (null == resultPhotos || resultPhotos.size == 0) return + val photo = resultPhotos[0] + mCropImageActivityResultLauncher.launch(photo) + } + + /** + * 压缩æŸå¼ å›¾ç‰‡ + */ + private fun compressImage(context: Context, path: String?) { + if (null == path || TextUtils.isEmpty(path)) return + val fileList = mutableListOf() + viewModelScope.launch(Dispatchers.IO) { + val file = File(path) + //压缩图片 + val compressedImageFile = Compressor.compress(context, file) + LogUtil.e( + "è£å‰ªå›¾ç‰‡åŽ‹ç¼©å‰ï¼šsize=${file.size()},path=${file.path} \n压缩åŽï¼šsize=${compressedImageFile.size()},path=${compressedImageFile.path}" + ) + fileList.add(compressedImageFile) + mPhotoPathLiveData.postValue(fileList) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/TrackerInfoViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/TrackerInfoViewModel.kt new file mode 100644 index 0000000..ad0bd96 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/TrackerInfoViewModel.kt @@ -0,0 +1,68 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DeviceBean +import com.abbidot.tracker.bean.DeviceDetailBean +import com.abbidot.tracker.bean.MapDeviceBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/2/16/016. + * @link + * @description:è®¾å¤‡ç›¸å…³ä¿¡æ¯ + */ +class TrackerInfoViewModel : ViewModel() { + + val getDeviceListLiveData = MutableLiveData>>() + val mUnbindTrackerListLiveData = MutableLiveData>>() + val mDeviceDetailLiveData = MutableLiveData>() + val mTrackerInfoLiveData = MutableLiveData>() + + /** + * 获å–设备列表 + * @param type type=1 是自己的 0æ˜¯æ˜¾ç¤ºæŽˆæƒ + */ + fun getDeviceList(activity: BaseActivity<*>, type: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getDeviceList(MMKVUtil.getString(MMKVKey.UserId), type) + getDeviceListLiveData.value = result + } + } + + + fun getDeviceDetail(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getDeviceDetail(deviceId) + mDeviceDetailLiveData.value = result + } + } + + + fun getPetTrackerInfo(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(false) + viewModelScope.launch { + val result = NetworkApi.getPetTrackerInfo(deviceId) + mTrackerInfoLiveData.value = result + } + } + + /** + * èŽ·å–æœªç»‘定的宠物设备列表 + */ + fun getUnbindTrackerList(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getUnboundDevices(userId) + mUnbindTrackerListLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt new file mode 100644 index 0000000..47041a7 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/TrackerSetViewModel.kt @@ -0,0 +1,109 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.DeviceDetailBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/2/26/026. + * @link + * @description:设备设置相关 + */ +class TrackerSetViewModel : ViewModel() { + val mAddBindDeviceLiveData = MutableLiveData>() + val mLedSwitchLiveData = MutableLiveData>() + val mTurnoffLiveData = MutableLiveData>() + val mReportIntervalLiveData = MutableLiveData>() + val mSetLiveTimeLiveData = MutableLiveData>() + val mUnbindDeviceLiveData = MutableLiveData>() + val mAssignOtherTrackerLiveData = MutableLiveData>() + + /** + * 设置ledSwitch开关 + */ + fun setLedSwitch(activity: BaseActivity<*>?, deviceInfoId: String, ledSwitch: Int) { + activity?.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.setLedSwitch(deviceInfoId, ledSwitch) + mLedSwitchLiveData.value = result + } + } + + /** + * 关闭设备 + */ + fun turnOff(activity: BaseActivity<*>, deviceInfoId: String, turnOff: Int = 0) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.turnoff(deviceInfoId, turnOff) + mTurnoffLiveData.value = result + } + } + + /** + * è®¾ç½®è®¾å¤‡ä¸ŠæŠ¥ä¸‹å‘æ—¶é—´ + */ + fun reportInterval(activity: BaseActivity<*>, deviceInfoId: String, gnssInterval: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.reportInterval(deviceInfoId, gnssInterval) + mReportIntervalLiveData.value = result + } + } + + /** + * 设置设备的直播时间 + */ + fun setLiveTime(activity: BaseActivity<*>, deviceId: String, liveTime: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.setLiveTime(deviceId, liveTime) + mSetLiveTimeLiveData.value = result + } + } + + /** + * 解绑删除设备 + */ + fun unbindDevice(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.unbindDevice(userId, deviceId) + mUnbindDeviceLiveData.value = result + } + } + + /** + * 绑定设备 + */ + fun bindDevice(activity: BaseActivity<*>, deviceOutId: String) { + activity.showLoading(true) + val userId = MMKVUtil.getString(MMKVKey.UserId) + viewModelScope.launch { + val result = NetworkApi.bindDevice(userId, deviceOutId) + mAddBindDeviceLiveData.value = result + } + } + + /** + * å…³è”其他宠物/设备 + */ + fun assignOtherPetTracker( + activity: BaseActivity<*>, petId: String, originDeviceId: String, assignDeviceId: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = + NetworkApi.assignOtherPetTracker(userId, petId, originDeviceId, assignDeviceId) + mAssignOtherTrackerLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt new file mode 100644 index 0000000..1bdb70b --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/UserProfileViewModel.kt @@ -0,0 +1,165 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.util.MMKVUtil +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.bean.CountryCodeBean +import com.abbidot.tracker.bean.UserBean +import com.abbidot.tracker.bean.UserInfoBean +import com.abbidot.tracker.retrofit2.NetworkApi +import com.abbidot.tracker.util.Util +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2022/2/14/014. + * @link + * @description:注册ViewModel + */ +class UserProfileViewModel : ViewModel() { + + val mGetEmailCodeLiveData = MutableLiveData>() + val mValidateCodeLiveData = MutableLiveData>() + private val mRegisterLiveData = MutableLiveData>() + val mCountryCodeLiveData = MutableLiveData>>() + val mRegisterV2LiveData = MutableLiveData>() + val mUpdateUserInfoLiveData = MutableLiveData>() + val mUploadImageLiveData = MutableLiveData>() + val mUserInfoLiveData = MutableLiveData>() + val mUserLogoffLiveData = MutableLiveData>() + val mUpdateMeasureUnitLiveData = MutableLiveData>() + + /** + * 获å–邮箱验è¯ç  + * @param type 验è¯ç ç±»åž‹ 1是注册 2æ˜¯å¿˜è®°å¯†ç  3修改邮箱 + */ + fun getEmailCode(activity: BaseActivity<*>, email: String, type: Int) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.requestVerificationCode(email, type) + mGetEmailCodeLiveData.value = result + } + } + + /** + * 验è¯ç éªŒè¯ + */ + fun validateCode(fragment: BaseFragment<*>, email: String, emailCode: String, type: Int) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.validateCode(email, emailCode, type) + mValidateCodeLiveData.value = result + } + } + + /** + * 注册 + */ + fun register(fragment: BaseFragment<*>, email: String, password: String, userName: String) { + fragment.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.register(email, password, userName) + mRegisterLiveData.value = result + } + } + + /** + * 获å–国家代ç å· + */ + fun getCountryCodes(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getCountryCodes() + mCountryCodeLiveData.value = result + } + } + + /** + * 注册/创建用户 + */ + fun registerV2( + activity: BaseActivity<*>, + email: String, + password: String, + userName: String, + countryCode: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.registerV2(email, password, userName, countryCode) + mRegisterV2LiveData.value = result + } + } + + /** + * æ›´æ–°ç”¨æˆ·ä¿¡æ¯ + */ + fun updateUserInfo( + activity: BaseActivity<*>, + email: String, + imgurl: String, + countryCode: String, + username: String + ) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.updateUser(email, userId, imgurl, countryCode, username) + mUpdateUserInfoLiveData.value = result + } + } + + /** + * ä¸Šä¼ å¤´åƒ + */ + fun uploadImage(activity: BaseActivity<*>, pathImg: String) { + activity.runOnUiThread { + activity.showLoading(true) + } + viewModelScope.launch { + val result = NetworkApi.uploadImage(Util.uploadFile(pathImg)) + mUploadImageLiveData.value = result + } + } + + + /** + * 获å–ç”¨æˆ·ä¿¡æ¯ + */ + fun getUserInfo(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.getUserInfo(userId) + mUserInfoLiveData.value = result + } + } + + + /** + * 用户注销 + */ + fun logoff(activity: BaseActivity<*>) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.logoff(userId) + mUserLogoffLiveData.value = result + } + } + + /** + *修改å•ä½ + */ + fun updateMeasureUnit(activity: BaseActivity<*>, measurementUnit: Int) { + activity.showLoading(true) + viewModelScope.launch { + val userId = MMKVUtil.getString(MMKVKey.UserId) + val result = NetworkApi.updateMeasureUnit(userId, measurementUnit) + mUpdateMeasureUnitLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/vm/WiFiZoneViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/WiFiZoneViewModel.kt new file mode 100644 index 0000000..c17586c --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/vm/WiFiZoneViewModel.kt @@ -0,0 +1,83 @@ +package com.abbidot.tracker.vm + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.abbidot.tracker.base.BaseActivity +import com.abbidot.tracker.bean.WiFiZoneBean +import com.abbidot.tracker.bean.WiFiZoneListBean +import com.abbidot.tracker.retrofit2.NetworkApi +import kotlinx.coroutines.launch + +/** + *Created by .yzq on 2024/6/5/005. + * @link + * @description: + */ +class WiFiZoneViewModel : ViewModel() { + + val mWiFiZoneListLiveData = MutableLiveData>() + val mAddWiFiZoneLiveData = MutableLiveData>() + val mUpdateWiFiZoneLiveData = MutableLiveData>() + val mDeleteWiFiZoneLiveData = MutableLiveData>() + + /** + *添加wifi区域 + */ + fun addWifiZone(activity: BaseActivity<*>, wiFiZoneBean: WiFiZoneBean) { + activity.showLoading(true) + viewModelScope.launch { + wiFiZoneBean.apply { + val result = NetworkApi.addWifiZone( + deviceId, wifiZoneName, address, wifiMac, wifiName, longitude, latitude, type + ) + mAddWiFiZoneLiveData.value = result + } + } + } + + /** + *æ›´æ–°wifi区域 + */ + fun updateWifiZone(activity: BaseActivity<*>, wiFiZoneBean: WiFiZoneBean) { + activity.showLoading(true) + viewModelScope.launch { + wiFiZoneBean.apply { + val result = NetworkApi.updateWifiZone( + wifiZoneId, + deviceId, + wifiZoneName, + address, + wifiMac, + wifiName, + longitude, + latitude, + type + ) + mUpdateWiFiZoneLiveData.value = result + } + } + } + + /** + *获å–wifi区域列表 + */ + fun deleteWifiZone(activity: BaseActivity<*>, wiFiZoneBean: WiFiZoneBean) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.removeWifiZone(wiFiZoneBean.wifiZoneId) + mDeleteWiFiZoneLiveData.value = result + } + } + + /** + *获å–wifi区域列表 + */ + fun getWifiZoneList(activity: BaseActivity<*>, deviceId: String) { + activity.showLoading(true) + viewModelScope.launch { + val result = NetworkApi.getWifiZoneList(deviceId) + mWiFiZoneListLiveData.value = result + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/BarChartV2View.kt b/app/src/main/java/com/abbidot/tracker/widget/BarChartV2View.kt new file mode 100644 index 0000000..82a093d --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/BarChartV2View.kt @@ -0,0 +1,217 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.content.ContextCompat +import com.abbidot.tracker.R +import com.abbidot.tracker.util.ViewUtil +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlin.math.abs + + +/** + *Created by .yzq on 2023/12/29/029. + * @link + * @description: + */ +class BarChartV2View : View { + + private lateinit var mContext: Context + private var mWidth = 0 + private var mHeight = 0 + + //æ¯ä¸ªåœ†æŸ±çš„宽度 + private var mBarWidth = 0f + + //åœ†æŸ±ä¹‹é—´çš„é—´è· + private var mBarSpace = 0f + private var mRadius = 0f + private var mData: MutableList? = null + private lateinit var mPaint: Paint + private lateinit var mTextPaint: Paint + private lateinit var mMaxPaint: Paint + + private val mXAxis = mutableListOf("0:00", "4:00", "8:00", "12:00", "16:00", "20:00", "24:00") + private var mYAxis = mutableListOf(20, 40, 60, 80, 100, 120) + + //æ¯ä¸ªæ•°å€¼1所需è¦ã€å ç”¨çš„高度 + private var mValueHeight = 0f + private var mMaxYValue = 120 + private var mMaxValue = 0 + + //é…åˆåŠ¨ç”»,æ¯æ¬¡ç”»ç™¾åˆ†å‡  + private var mAnimatedPercent = 0f + + //动画时长(毫秒) + private val mAnimatorDuration = 1500L + + private var mAxisTextColor = 0 + private var mBarValueColor = 0 + private var mBarMaxValueColor = 0 + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + private fun init(context: Context, attrs: AttributeSet?) { + initAttrs(context, attrs) + + //ç¦ç”¨ç¡¬ä»¶åŠ é€Ÿ,防止返回到界é¢å¤šæ¬¡æ‰§è¡ŒonDraw + setLayerType(LAYER_TYPE_SOFTWARE, null) + mContext = context + mBarWidth = QMUIDisplayHelper.dpToPx(18).toFloat() + mRadius = QMUIDisplayHelper.dpToPx(8).toFloat() + + mPaint = Paint().apply { + color = mBarValueColor + } + mTextPaint = Paint().apply { + color = mAxisTextColor + textSize = QMUIDisplayHelper.sp2px(mContext, 10).toFloat() + } + mMaxPaint = Paint().apply { + color = mBarMaxValueColor + } + } + + private fun initAttrs(context: Context, attrs: AttributeSet?) { + if (null == attrs) { + mAxisTextColor = ContextCompat.getColor(context, R.color.select_color3) + mBarValueColor = ContextCompat.getColor(context, R.color.dark_color) + mBarMaxValueColor = ContextCompat.getColor(context, R.color.select_color2) + return + } + + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.BarChartV2View) + mAxisTextColor = typedArray.getColor( + R.styleable.BarChartV2View_bar_v2_axis_text_color, + ContextCompat.getColor(context, R.color.select_color3) + ) + mBarValueColor = typedArray.getColor( + R.styleable.BarChartV2View_bar_v2_value_color, + ContextCompat.getColor(context, R.color.dark_color) + ) + mBarMaxValueColor = typedArray.getColor( + R.styleable.BarChartV2View_bar_v2_max_value_color, + ContextCompat.getColor(context, R.color.select_color2) + ) + typedArray.recycle() + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + mWidth = measuredWidth + mHeight = measuredHeight + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + canvas?.apply { + drawAxis(this) + startDraw(this) + } + } + + + private fun drawAxis(canvas: Canvas) { + val fontMetrics = mTextPaint.fontMetrics // 获å–å­—ä½“æŒ‡æ ‡ä¿¡æ¯ + val textHeight = abs((fontMetrics.top - fontMetrics.bottom))// 计算文本高度 + + val xSize = mXAxis.size + val xTxtWith = mTextPaint.measureText(mXAxis[xSize - 1]) + val xSpace = (mWidth - textHeight / 2 - xTxtWith * xSize) / (xSize - 1) + for (i in 0 until xSize) { + canvas.drawText( + mXAxis[i], xSpace * i + xTxtWith * i + textHeight / 2, mHeight.toFloat(), mTextPaint + ) + } + + val ySize = mYAxis.size + val ySpace = (mHeight - textHeight * ySize) / (ySize + 1) + for (i in 0 until ySize) { + canvas.drawText( + mYAxis[i].toString(), + 0f, + mHeight - (ySpace * (i + 1)) - textHeight * (i + 1), + mTextPaint + ) + } + } + + private fun startDraw(canvas: Canvas) { + mData?.apply { + if (size > 0) { + //因有xy轴的文字,釿–°è®¡ç®—柱状图的长宽 + val ySize = mYAxis.size + val yTxtWith = mTextPaint.measureText(mYAxis[ySize - 1].toString()) + val fontMetrics = mTextPaint.fontMetrics // 获å–å­—ä½“æŒ‡æ ‡ä¿¡æ¯ + val textHeight = abs((fontMetrics.top - fontMetrics.bottom))// 计算文本高度 + val yHeight = mHeight - textHeight / 2 - QMUIDisplayHelper.dpToPx(3) + val xWith = mWidth - yTxtWith + mValueHeight = yHeight / mMaxYValue + mBarSpace = ((xWith - mBarWidth * size) / size) + + for (i in 0 until size) { + val value = this[i] + if (value <= 0) continue + val left = (mBarSpace * (i + 1) + i * mBarWidth) + yTxtWith + val top = (yHeight - value * mValueHeight) + val right = (mBarSpace * (i + 1) + mBarWidth * (i + 1)) + yTxtWith + + //防止动画从x轴原点以下开始出现 + val newTop = with(top / mAnimatedPercent) { + if (this > yHeight) yHeight + else if (this == 0f || isNaN()) yHeight - yHeight * mAnimatedPercent + else this + } + if (value == mMaxValue) { + canvas.drawRoundRect( + left, newTop, right, yHeight, mRadius, mRadius, mMaxPaint + ) + } else { + canvas.drawRoundRect( + left, newTop, right, yHeight, mRadius, mRadius, mPaint + ) + } + + } + } + } + } + + fun setData(data: MutableList) { + val size = data.size + mMaxValue = 0 + for (i in 0 until size) { + if (data[i] > mMaxValue) { + mMaxValue = data[i] + } + } + if (mMaxValue > 60) { + mMaxYValue = 120 + mYAxis = mutableListOf(20, 40, 60, 80, 100, 120) + } else { + mMaxYValue = 60 + mYAxis = mutableListOf(10, 20, 30, 40, 50, 60) + } + mData = data + + ViewUtil.instance.setValueAnimator(0f, 100f, mAnimatorDuration) { + mAnimatedPercent = it.animatedValue as Float / 100 + postInvalidate() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/BatteryView.kt b/app/src/main/java/com/abbidot/tracker/widget/BatteryView.kt new file mode 100644 index 0000000..c97c4c4 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/BatteryView.kt @@ -0,0 +1,160 @@ +package com.abbidot.tracker.widget + +import android.content.Context +import android.graphics.Canvas +import android.graphics.Paint +import android.util.AttributeSet +import androidx.core.content.ContextCompat +import com.abbidot.baselibrary.util.AppUtils +import com.abbidot.tracker.R +import com.abbidot.tracker.base.BaseView + +/** + *Created by .yzq on 2024/10/11/011. + * @link + * @description:电池图标 + */ +class BatteryView : BaseView { + + private val mMaxValue = 4 + private var mValueWith = 0f + + //圆形矩形的åŠå¾„ + private var mRectCircleRadius = 0f + + //椭圆的åŠå¾„ + private var mHalfCircleRadius = 0f + + constructor(context: Context) : super(context) { + init(context, null) + } + + constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { + init(context, attrs) + } + + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, attrs, defStyleAttr + ) { + init(context, attrs) + } + + override fun init(context: Context, attrs: AttributeSet?) { + super.init(context, attrs) + mWidth = AppUtils.dpToPx(24) + mHeight = AppUtils.dpToPx(13) + mRectCircleRadius = AppUtils.dpToPx(3f) + mHalfCircleRadius = AppUtils.dpToPx(3f) + mValueWith = AppUtils.dpToPx(2f) + + mPaint.apply { + color = ContextCompat.getColor(mContext, R.color.data_black_color) + strokeWidth = mStrokeWidth + strokeCap = Paint.Cap.ROUND + style = Paint.Style.STROKE + //å¼€å¯æŠ—é”¯é½¿ + flags = Paint.ANTI_ALIAS_FLAG + } + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(mWidth, mHeight) + } + + override fun startDraw(canvas: Canvas) { + canvas.apply { + val rectLeft = mStrokeWidth / 2 + val rectRight = mWidth - mStrokeWidth / 2 - mHalfCircleRadius + val rectTop = mStrokeWidth / 2 + val rectBottom = mHeight - mStrokeWidth / 2 + + val arcLeft = mWidth - mStrokeWidth / 2 - mHalfCircleRadius * 2 + val arcTop = mHeight / 4 + mStrokeWidth / 2 + val arcRight = mWidth - mStrokeWidth / 2 + val arcBottom = mHeight / 4 * 3 - mStrokeWidth / 2 + + when (mValue) { + -1 -> { + mPaint.color = ContextCompat.getColor(mContext, R.color.data_black_color) + drawRoundRect( + rectLeft, + rectTop, + rectRight, + rectBottom, + mRectCircleRadius, + mRectCircleRadius, + mPaint + ) + drawArc( + arcLeft, arcTop, arcRight, arcBottom, -90f, 180f, false, mPaint + ) + + val sX = mWidth - mStrokeWidth * 2 - mHalfCircleRadius + val line1StartX = sX / 6 * 2 + mStrokeWidth * 2 + val line1StartY = (mHeight - mStrokeWidth * 2) / 4 + mStrokeWidth + val line1StopX = sX / 6 * 4 + mStrokeWidth + val line1StopY = (mHeight - mStrokeWidth * 2) / 4 * 3 + mStrokeWidth + mPaint.color = ContextCompat.getColor(mContext, R.color.select_color3) + drawLine( + line1StartX, line1StartY, line1StopX, line1StopY, mPaint + ) + drawLine( + line1StartX, line1StopY, line1StopX, line1StartY, mPaint + ) + } + + 0 -> { + mPaint.color = ContextCompat.getColor(mContext, R.color.yellow_red_color2) + drawRoundRect( + rectLeft, + rectTop, + rectRight, + rectBottom, + mRectCircleRadius, + mRectCircleRadius, + mPaint + ) + drawArc( + arcLeft, arcTop, arcRight, arcBottom, -90f, 180f, false, mPaint + ) + } + + else -> { + mPaint.color = ContextCompat.getColor(mContext, R.color.data_black_color) + drawRoundRect( + rectLeft, + rectTop, + rectRight, + rectBottom, + mRectCircleRadius, + mRectCircleRadius, + mPaint + ) + drawArc( + arcLeft, arcTop, arcRight, arcBottom, -90f, 180f, false, mPaint + ) + val valueWidth = mWidth - mStrokeWidth * 2 - mHalfCircleRadius + val valueSpace = (valueWidth - mValueWith * mMaxValue) / (mMaxValue + 3) + mPaint.color = ContextCompat.getColor(mContext, R.color.select_color) + for (i in 0 until mValue) { + val lineX = mStrokeWidth + 3 * valueSpace + mValueWith * i + valueSpace * i + drawLine( + lineX, + mHeight / 4f + mStrokeWidth, + lineX, + mHeight / 4f * 3 - mStrokeWidth, + mPaint + ) + } + } + } + } + } + + fun setValue(value: Int) { + mValue = value + invalidate() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/widget/BrowserView.java b/app/src/main/java/com/abbidot/tracker/widget/BrowserView.java new file mode 100644 index 0000000..13fc333 --- /dev/null +++ b/app/src/main/java/com/abbidot/tracker/widget/BrowserView.java @@ -0,0 +1,411 @@ +package com.abbidot.tracker.widget; + +import android.annotation.SuppressLint; +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.net.http.SslError; +import android.os.Build; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.ViewGroup; +import android.webkit.JsPromptResult; +import android.webkit.JsResult; +import android.webkit.SslErrorHandler; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient; +import android.webkit.WebResourceError; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.view.ContextThemeWrapper; + +import com.abbidot.tracker.R; +import com.abbidot.tracker.base.BaseActivity; +import com.abbidot.tracker.constant.GetResultCallback; +import com.abbidot.tracker.dialog.DialogUtils; +import com.abbidot.tracker.util.Util; +import com.abbidot.tracker.util.ViewUtil; +import com.hjq.permissions.XXPermissions; +import com.hjq.permissions.permission.PermissionLists; + +/** + * desc : 基于 WebView å°è£… + */ +public final class BrowserView extends WebView { + + public BrowserView(Context context) { + this(context, null); + } + + public BrowserView(Context context, AttributeSet attrs) { + this(context, attrs, android.R.attr.webViewStyle); + } + + public BrowserView(Context context, AttributeSet attrs, int defStyleAttr) { + this(getFixedContext(context), attrs, defStyleAttr, 0); + } + + @SuppressLint("SetJavaScriptEnabled") + public BrowserView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + WebSettings settings = getSettings(); + // å…许文件访问 + settings.setAllowFileAccess(true); + // å…è®¸ç½‘é¡µå®šä½ + settings.setGeolocationEnabled(true); + // å…许ä¿å­˜å¯†ç  + //settings.setSavePassword(true); + // å¼€å¯ JavaScript + settings.setJavaScriptEnabled(true); + // å…è®¸ç½‘é¡µå¼¹å¯¹è¯æ¡† + settings.setJavaScriptCanOpenWindowsAutomatically(true); + // 加快网页加载完æˆçš„速度,等页é¢å®Œæˆå†åŠ è½½å›¾ç‰‡ + settings.setLoadsImagesAutomatically(true); + // 本地 DOM 存储(解决加载æŸäº›ç½‘页出现白æ¿çŽ°è±¡ï¼‰ + settings.setDomStorageEnabled(true); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + // 解决 Android 5.0 上 WebView 默认ä¸å…许加载 Http 与 Https æ··åˆå†…容 + settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); + } + + // 䏿˜¾ç¤ºæ»šåŠ¨æ¡ + setVerticalScrollBarEnabled(false); + setHorizontalScrollBarEnabled(false); + } + + /** + * ä¿®å¤åŽŸç”Ÿ WebView å’Œ AndroidX 在 Android 5.x 上é¢å´©æºƒçš„问题 + *