Commit 8794ffd4 authored by wanglei's avatar wanglei

...

parent c7f9596a
......@@ -26,7 +26,10 @@ android {
fun Long.toFormatTime3(): String {
return SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.ENGLISH).format(this)
}
setProperty("archivesBaseName", "master_malware_clean-v$versionName($versionCode)-${System.currentTimeMillis().toFormatTime3()}")
setProperty(
"archivesBaseName",
"master_malware_clean-v$versionName($versionCode)-${System.currentTimeMillis().toFormatTime3()}"
)
ndk {
// 设置支持的 ABI 架构
......@@ -115,7 +118,7 @@ gradle.taskGraph.whenReady {
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
......
......@@ -18,6 +18,18 @@
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
</intent>
</queries>
<application
android:name=".MyApplication"
android:allowBackup="true"
......@@ -30,29 +42,30 @@
android:theme="@style/Theme.AppTheme"
tools:targetApi="31">
<activity
android:name=".ui.splash.SplashActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/splash.theme"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.main.MainActivity"
android:exported="true"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".ui.language.LanguageActivity"
......@@ -113,6 +126,11 @@
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.malware.MalwareCleanActivity"
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<provider
android:name="androidx.core.content.FileProvider"
......@@ -188,6 +206,9 @@
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<meta-data
android:name="com.trustlook.ApiKey"
android:value="59d819bc2ebe7ad648beb3ed7da424b1da1a963750e1a163a1ef79c4" />
</application>
</manifest>
\ No newline at end of file
This diff is collapsed.
......@@ -5,7 +5,7 @@ package com.base.appzxhy
*/
object GlobalConfig {
//包名
const val PACKAGE_NAME = "com.dumpster.cleaner.tbt"
const val PACKAGE_NAME = "com.tgv.malware.yhj.clean"
// 域名
/**
......@@ -31,7 +31,7 @@ object GlobalConfig {
/**
* Key Aes 加密key
*/
const val KEY_AES = "d1mnzmn2cs20xpmx"
const val KEY_AES = "zfjlryvsi02nk1q3"
/**
* Key solar 归因key
......
......@@ -13,6 +13,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.animation.LinearInterpolator
import android.widget.LinearLayout
import android.widget.Toast
import androidx.activity.SystemBarStyle
import androidx.activity.addCallback
......@@ -34,6 +35,7 @@ import com.base.appzxhy.SpConstObject.appLanguageCountrySp
import com.base.appzxhy.SpConstObject.appLanguageSp
import com.base.appzxhy.R
import com.base.appzxhy.SpConstObject.cleanedSize
import com.base.appzxhy.bean.FeatureBean.Companion.ANTIVIRUS
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
......@@ -52,6 +54,7 @@ import com.base.appzxhy.ui.clean.JunkCleanActivity
import com.base.appzxhy.ui.dialog.FunctionBackDialog
import com.base.appzxhy.ui.largefile.LargeFileCleanActivity
import com.base.appzxhy.ui.main.MainActivity
import com.base.appzxhy.ui.malware.MalwareCleanActivity
import com.base.appzxhy.ui.photocompression.PhotoCompressionActivity
import com.base.appzxhy.ui.screenshot.ScreenshotCleanActivity
import com.base.appzxhy.ui.similar.SimilarPhotosActivity
......@@ -316,6 +319,7 @@ abstract class BaseActivity<VB : ViewBinding>(
val flAd: NativeParentView? = findViewById(R.id.include_flAd)
var tvProgress: AppCompatTextView? = findViewById(R.id.tv_progress)
val lottie: LottieAnimationView? = findViewById(R.id.lottie_animation)
val llTrustlook: LinearLayout = findViewById(R.id.llTrustlook)
include?.let {
it.visibility = View.VISIBLE
......@@ -346,6 +350,11 @@ abstract class BaseActivity<VB : ViewBinding>(
}
else -> {
if (lottieConfig == LottieEnum.MALWARE_SCAN) {
llTrustlook.visibility = View.VISIBLE
}
lifecycleScope.launch {
val durationTime = Random.Default.nextLong(3000, 4000)
ValueAnimator.ofInt(0, 100).apply {
......@@ -369,11 +378,7 @@ abstract class BaseActivity<VB : ViewBinding>(
}
AdsMgr.showInsert(this, showCallBack = object : AdsShowCallBack() {
override fun next() {
adNext.invoke()
}
})
functionInAd { adNext.invoke() }
}
......@@ -454,6 +459,10 @@ fun Activity.jumpAction(key: String) {
PHOTO_COMPRESSION -> {
goToAc(PhotoCompressionActivity::class.java)
}
ANTIVIRUS -> {
goToAc(MalwareCleanActivity::class.java)
}
}
}
......@@ -465,10 +474,7 @@ enum class LottieEnum(val data: String, val images: String? = null, val isLoop:
SCREENSHOT_LOTTIE("screenshot/scan/data.json", "screenshot/scan/images"),
SIMILAR_PHOTOS_LOTTIE("similar_photos/scan/data.json", "similar_photos/scan/images"),
PHOTO_COMPRESSION_LOTTIE("photo_compression/scan/data.json", "photo_compression/scan/images"),
// WHATSAPP("whatsapp/scan/data.json", "whatsapp/scan/images"),
// WEATHER(""),
// CONSTELLATION("")
MALWARE_SCAN("malware_scan/scan/data.json", "malware_scan/scan/images"),
}
......
......@@ -2,16 +2,19 @@ package com.base.appzxhy.ui.cleanresult
import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.addCallback
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.bean.FeatureBean
import com.base.appzxhy.bean.FeatureBean.Companion.ANTIVIRUS
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.FeatureBean.Companion.LARGE_FILE_CLEAN
......@@ -81,7 +84,15 @@ class CleanResultActivity : BaseActivity<ActivityCleanResultBinding>(ActivityCle
binding.rvResult.layoutManager = LinearLayoutManager(this)
if (titleName.isNotEmpty()) binding.tvTitle.text = titleName
binding.tvCleanedUp.text = "${getString(R.string.cleaned_up)} ${Utils.getSizeFormat(total)}"
if (total != 0L) {
binding.tvCleanedUp.text = "${getString(R.string.cleaned_up)} ${Utils.getSizeFormat(total)}"
total = 0L
}
if (functionKey == ANTIVIRUS) {
binding.tvCleanedUp.updatePadding(bottom = resources.getDimensionPixelSize(R.dimen.dp_20))
binding.tvTip.visibility = View.GONE
binding.tvCleanedUp.text = getString(R.string.no_threats_found)
}
list = getData()
adapter.notifyDataSetChanged()
......@@ -117,6 +128,8 @@ class CleanResultActivity : BaseActivity<ActivityCleanResultBinding>(ActivityCle
)
add(FeatureBean(SCREENSHOT_CLEAN, R.string.screenshot_clean, R.drawable.h_screenshot, R.string.result_screenshot_clean))
add(FeatureBean(SIMILAR_PHOTOS, R.string.similar_photos, R.drawable.h_similar, R.string.result_similar_photos))
}
val filteredList = list.filter { it.key != functionKey }
......
......@@ -9,6 +9,7 @@ import com.base.appzxhy.databinding.DialogFunctionBackBinding
import com.base.appzxhy.ui.batteryinfo.BatteryInfoActivity
import com.base.appzxhy.ui.clean.JunkCleanActivity
import com.base.appzxhy.ui.largefile.LargeFileCleanActivity
import com.base.appzxhy.ui.malware.MalwareCleanActivity
import com.base.appzxhy.ui.photocompression.PhotoCompressionActivity
import com.base.appzxhy.ui.screenshot.ScreenshotCleanActivity
import com.base.appzxhy.ui.similar.SimilarPhotosActivity
......@@ -63,6 +64,11 @@ class FunctionBackDialog(
binding.tvContent.text = activity.getString(R.string.exit_similar_photos_content)
}
is MalwareCleanActivity -> {
binding.tvTitle.text = activity.getString(R.string.exit_malware_clean)
binding.tvContent.text = activity.getString(R.string.exit_malware_clean_content)
}
else -> {
back.invoke()
return
......
......@@ -5,10 +5,10 @@ import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.view.View
import android.view.animation.LinearInterpolator
import androidx.core.animation.doOnEnd
import androidx.core.graphics.toColorInt
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.base.goToAc
import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.bean.FeatureBean
import com.base.appzxhy.bean.FeatureBean.Companion.ANTIVIRUS
......@@ -22,6 +22,8 @@ import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import com.base.appzxhy.databinding.FragmentHomeBinding
import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.malware.MalwareCleanActivity
import com.base.appzxhy.ui.malware.MalwareDialog
import com.base.appzxhy.ui.set.SettingActivity
import com.base.appzxhy.utils.MyAnimationUtils
......@@ -64,21 +66,21 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
SIMILAR_PHOTOS,
R.string.similar_photos,
R.drawable.icon_similar,
R.string.cear_simnilar_pictures_on_the_phone,
R.string.clear_similar_pictures_on_the_phone,
"#FBF7FF".toColorInt()
),
FeatureBean(
PHOTO_COMPRESSION,
R.string.image_compression,
R.drawable.icon_compression,
R.string.coepress_mobile_phone_images,
R.string.compress_mobile_phone_images,
"#FFF7F2".toColorInt()
),
FeatureBean(
BATTERY_INFO,
R.string.battery_info,
R.drawable.icon_battery,
R.string.wiew_battery_information,
R.string.view_battery_information,
"#F2FFF7".toColorInt()
),
FeatureBean(
......@@ -128,6 +130,12 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
ANTIVIRUS -> {
val dialog= MalwareDialog(requireActivity())
dialog.action={
(requireActivity() as MainActivity).permissionStorageJump(it.key)
}
dialog.showDialog()
}
}
......
......@@ -86,8 +86,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
setPrivacyPolicy()
requestNotificationPermission()
viewModel.jumpNext = {
// Log.e(TAG, "Countdown jumpNext")
// jumpNext()
Log.e(TAG, "Countdown jumpNext")
jumpNext()
}
// viewModel.onTick = { s, t ->
// Log.e(TAG, "onTick $s $t")
......@@ -180,7 +180,6 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
val acAction = {
initUMP {
LogEx.logDebug(TAG, "initUMP callBack")
AdsMgr.showOpen(this, showCallBack = object : AdsShowCallBack() {
override fun show() {
viewModel.stopCountdown()
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EDF7FF"/>
<corners android:radius="@dimen/dp_50"/>
</shape>
\ No newline at end of file
......@@ -69,6 +69,7 @@
app:layout_constraintTop_toBottomOf="@id/idLottie" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvTip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_exit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/white_background_24"
android:paddingBottom="24dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
android:includeFontPadding="false"
android:lineSpacingExtra="4dp"
android:text="@string/antivirus_scan_error_occurred_please_try_again"
android:textAlignment="center"
android:textColor="@color/color_1a1a1a"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_sure"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="36dp"
android:layout_marginTop="16dp"
android:background="@drawable/bg_btn_50"
android:paddingVertical="10dp"
android:text="@string/sure"
android:textAlignment="center"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.base.appzxhy.business.ads.NativeParentView
android:id="@+id/flAd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/white_background_24"
android:padding="12dp"
app:layout_constraintTop_toBottomOf="@id/cl_exit">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/zhanwei1" />
</com.base.appzxhy.business.ads.NativeParentView>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -61,11 +61,11 @@
android:layout_marginStart="28dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="4dp"
android:background="@drawable/bg_enable_no_50"
android:background="@drawable/bg_edf7ff_50"
android:paddingVertical="10dp"
android:text="@string/cancel"
android:textAlignment="center"
android:textColor="@color/white"
android:textColor="@color/colorPrimary"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@id/tv_sure"
......@@ -93,12 +93,12 @@
<com.base.appzxhy.business.ads.NativeParentView
android:id="@+id/flAd"
app:layout_constraintTop_toBottomOf="@id/cl_exit"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="10dp">
android:layout_marginTop="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/cl_exit">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="match_parent"
......
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="15dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="12dp"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@mipmap/logo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:layout_weight="1"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/iv_select"
app:layout_constraintStart_toEndOf="@id/iv_icon"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="@string/app_name"
android:textColor="@color/color_181b1f"
android:textSize="16sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:background="@drawable/bg_2dd29e_6ff2a2"
android:backgroundTint="#FFFCF4DE"
android:paddingHorizontal="8dp"
android:paddingVertical="2dp"
android:textColor="#FFC337"
android:textSize="12sp"
tools:text="Risk" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_select"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_40"
android:src="@drawable/antivirus_delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:id="@+id/view_line"
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginTop="12dp"
android:background="@color/color_ebebeb"
app:layout_constraintTop_toBottomOf="@id/ll_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -65,6 +65,44 @@
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/tv_progress" />
<LinearLayout
android:id="@+id/llTrustlook"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@id/include_flAd">
<TextView
android:id="@+id/tv_recommend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="22dp"
android:layout_marginBottom="40dp"
android:gravity="center"
android:text="@string/malware_recommended"
android:textColor="@color/white"
android:textSize="14sp"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@id/tv_hint"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/tv_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_30"
android:text="@string/powered_by_trustlook"
android:textColor="#CEE3FF"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</LinearLayout>
<com.base.appzxhy.business.ads.NativeParentView
android:id="@+id/include_flAd"
android:layout_width="match_parent"
......
......@@ -161,10 +161,23 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="mobile_antivirus_protection">Mobile antivirus protection</string>
<string name="clear_phone_screenshot">Clear phone screenshot</string>
<string name="clear_large_files_on_the_phone">Clear large files on the phone</string>
<string name="cear_simnilar_pictures_on_the_phone">Cear simnilar pictures on the phone</string>
<string name="clear_similar_pictures_on_the_phone">Clear similar pictures on the phone</string>
<string name="image_compression">image Compression</string>
<string name="coepress_mobile_phone_images">Coepress mobile phone images</string>
<string name="wiew_battery_information">Wiew battery information</string>
<string name="compress_mobile_phone_images">Compress mobile phone images</string>
<string name="view_battery_information">View battery information</string>
<string name="show_all_settings">show all settings</string>
<string name="malware_scan">Antivirus Scan</string>
<string name="uninstall">Uninstall</string>
<string name="apps">Apps</string>
<string name="antivirus_scan_error_occurred_please_try_again">Antivirus Scan error occurred,please try again</string>
<string name="exit_malware_clean">Exit Antivirus Scan</string>
<string name="exit_malware_clean_content">Exit Antivirus Scan? Potential threats found! Stay and secure your device immediately.</string>
<string name="no_threats_found">Your phone is completely secure\nno threats found!</string>
<string name="kind_tips">Kind Tips</string>
<string name="trustlook_privacy_policy">https://www.trustlook.com/privacy-policy</string>
<string name="powered_by_trustlook">Powered by Trustlook</string>
<string name="malware_recommended">It is recommended to turn on the network connection for more accurate results</string>
</resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment