forked from Louvorg/ReaderForSelfoss-multiplatform
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			v122123351
			...
			v122123391
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					7f0ba193ec | ||
| 
						 | 
					87ed5b0fa8 | ||
| 
						 | 
					6947743ac0 | 
@@ -79,8 +79,5 @@
 | 
			
		||||
            android:value="true" />
 | 
			
		||||
 | 
			
		||||
        <meta-data android:name="android.max_aspect" android:value="2.1" />
 | 
			
		||||
        <meta-data
 | 
			
		||||
            android:name="preloaded_fonts"
 | 
			
		||||
            android:resource="@array/preloaded_fonts" />
 | 
			
		||||
    </application>
 | 
			
		||||
</manifest>
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
package bou.amine.apps.readerforselfossv2.android
 | 
			
		||||
 | 
			
		||||
import org.acra.ACRA
 | 
			
		||||
import org.acra.ktx.sendSilentlyWithAcra
 | 
			
		||||
 | 
			
		||||
fun Throwable.sendSilentlyWithAcraWithName(name: String) {
 | 
			
		||||
        ACRA.errorReporter.putCustomData("error_source", name)
 | 
			
		||||
    this.sendSilentlyWithAcra()
 | 
			
		||||
}
 | 
			
		||||
@@ -59,9 +59,6 @@ import com.mikepenz.materialdrawer.util.updateBadge
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import org.acra.ACRA
 | 
			
		||||
import org.acra.ktx.sendSilentlyWithAcra
 | 
			
		||||
import org.acra.ktx.sendWithAcra
 | 
			
		||||
import org.kodein.di.DIAware
 | 
			
		||||
import org.kodein.di.android.closestDI
 | 
			
		||||
import org.kodein.di.instance
 | 
			
		||||
@@ -325,7 +322,6 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
 | 
			
		||||
    private fun handleGDPRDialog(GDPRShown: Boolean) {
 | 
			
		||||
        val messageDigest: MessageDigest = MessageDigest.getInstance("SHA-256")
 | 
			
		||||
        messageDigest.update(appSettingsService.getBaseUrl().toByteArray())
 | 
			
		||||
        ACRA.errorReporter.putCustomData("unique_id", String(messageDigest.digest()))
 | 
			
		||||
        if (!GDPRShown) {
 | 
			
		||||
            val alertDialog = AlertDialog.Builder(this).create()
 | 
			
		||||
            alertDialog.setTitle(getString(R.string.gdpr_dialog_title))
 | 
			
		||||
@@ -513,7 +509,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar
 | 
			
		||||
        val gdColor = try {
 | 
			
		||||
            Color.parseColor(it.color)
 | 
			
		||||
        } catch (e: IllegalArgumentException) {
 | 
			
		||||
            e.sendSilentlyWithAcra()
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("color issue " + it.color)
 | 
			
		||||
            resources.getColor(R.color.colorPrimary)
 | 
			
		||||
        }
 | 
			
		||||
        gd.setColor(gdColor)
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@ import bou.amine.apps.readerforselfossv2.android.databinding.FragmentArticleBind
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.model.ParecelableItem
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.model.toModel
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.model.toParcelable
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.sendSilentlyWithAcraWithName
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.glide.getBitmapInputStream
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.openInBrowserAsNewTask
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.shareLink
 | 
			
		||||
@@ -51,6 +52,7 @@ import org.kodein.di.DIAware
 | 
			
		||||
import org.kodein.di.android.x.closestDI
 | 
			
		||||
import org.kodein.di.instance
 | 
			
		||||
import java.net.MalformedURLException
 | 
			
		||||
import java.net.SocketTimeoutException
 | 
			
		||||
import java.net.URL
 | 
			
		||||
import java.util.*
 | 
			
		||||
import java.util.concurrent.ExecutionException
 | 
			
		||||
@@ -109,17 +111,6 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
            staticBar = appSettingsService.isStaticBarEnabled()
 | 
			
		||||
            font = appSettingsService.getFont()
 | 
			
		||||
 | 
			
		||||
            if (font.isNotEmpty()) {
 | 
			
		||||
                resId = requireContext().resources.getIdentifier(font, "font", requireContext().packageName)
 | 
			
		||||
                typeface = try {
 | 
			
		||||
                    ResourcesCompat.getFont(requireContext(), resId)!!
 | 
			
		||||
                } catch (e: java.lang.Exception) {
 | 
			
		||||
                    e.sendSilentlyWithAcra()
 | 
			
		||||
                    // Just to be sure
 | 
			
		||||
                    null
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            refreshAlignment()
 | 
			
		||||
 | 
			
		||||
            fab = binding.fab
 | 
			
		||||
@@ -220,7 +211,7 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        } catch (e: InflateException) {
 | 
			
		||||
            e.sendSilentlyWithAcra()
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("webview not available")
 | 
			
		||||
            AlertDialog.Builder(requireContext())
 | 
			
		||||
                .setMessage(requireContext().getString(R.string.webview_dialog_issue_message))
 | 
			
		||||
                .setTitle(requireContext().getString(R.string.webview_dialog_issue_title))
 | 
			
		||||
@@ -254,74 +245,69 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
            binding.progressBar.visibility = View.VISIBLE
 | 
			
		||||
 | 
			
		||||
            CoroutineScope(Dispatchers.Main).launch {
 | 
			
		||||
                 val response = mercuryApi.query(url)
 | 
			
		||||
                if (response.success) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        if (response.data != null && response.data!!.content != null && !response.data!!.content.isNullOrEmpty()) {
 | 
			
		||||
                try {
 | 
			
		||||
                    val response = mercuryApi.query(url)
 | 
			
		||||
                    if (response.success && response.data != null && !response.data?.content.isNullOrEmpty()) {
 | 
			
		||||
                        binding.titleView.text = response.data!!.title.orEmpty()
 | 
			
		||||
                        try {
 | 
			
		||||
                            if (typeface != null) {
 | 
			
		||||
                                binding.titleView.typeface = typeface
 | 
			
		||||
                            }
 | 
			
		||||
                        } catch (e: Exception) {
 | 
			
		||||
                            e.sendSilentlyWithAcraWithName("getContentFromMercury > typeface")
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            // Note: Mercury may return relative urls... If it does the url val will not be changed.
 | 
			
		||||
                            URL(response.data!!.url)
 | 
			
		||||
                            url = response.data!!.url
 | 
			
		||||
                        } catch (e: MalformedURLException) {
 | 
			
		||||
                            // Mercury returned a relative url
 | 
			
		||||
                            e.sendSilentlyWithAcraWithName("getContentFromMercury > malformedurlexception")
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            contentText = response.data!!.content.orEmpty()
 | 
			
		||||
                            htmlToWebview()
 | 
			
		||||
                        } catch (e: Exception) {
 | 
			
		||||
                            e.sendSilentlyWithAcraWithName("getContentFromMercury > contenttext or html")
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (!response.data?.lead_image_url.isNullOrEmpty() && context != null) {
 | 
			
		||||
                            try {
 | 
			
		||||
                                binding.titleView.text = response.data!!.title
 | 
			
		||||
                                if (typeface != null) {
 | 
			
		||||
                                    binding.titleView.typeface = typeface
 | 
			
		||||
                                }
 | 
			
		||||
                                binding.imageView.visibility = View.VISIBLE
 | 
			
		||||
                                try {
 | 
			
		||||
                                    // Note: Mercury may return relative urls... If it does the url val will not be changed.
 | 
			
		||||
                                    URL(response.data!!.url)
 | 
			
		||||
                                    url = response.data!!.url
 | 
			
		||||
                                } catch (e: MalformedURLException) {
 | 
			
		||||
                                    // Mercury returned a relative url
 | 
			
		||||
                                    e.sendSilentlyWithAcra()
 | 
			
		||||
                                    Glide
 | 
			
		||||
                                        .with(requireContext())
 | 
			
		||||
                                        .asBitmap()
 | 
			
		||||
                                        .load(
 | 
			
		||||
                                            response.data!!.lead_image_url.orEmpty()
 | 
			
		||||
                                        )
 | 
			
		||||
                                        .apply(RequestOptions.fitCenterTransform())
 | 
			
		||||
                                        .into(binding.imageView)
 | 
			
		||||
                                } catch (e: Exception) {
 | 
			
		||||
                                    e.sendSilentlyWithAcraWithName("getContentFromMercury > glide lead image")
 | 
			
		||||
                                }
 | 
			
		||||
                            } catch (e: Exception) {
 | 
			
		||||
                                e.sendSilentlyWithAcra()
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            try {
 | 
			
		||||
                                contentText = response.data!!.content.orEmpty()
 | 
			
		||||
                                htmlToWebview()
 | 
			
		||||
                            } catch (e: Exception) {
 | 
			
		||||
                                e.sendSilentlyWithAcra()
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            try {
 | 
			
		||||
                                if (response.data!!.lead_image_url != null && !response.data!!.lead_image_url.isNullOrEmpty() && context != null) {
 | 
			
		||||
                                    binding.imageView.visibility = View.VISIBLE
 | 
			
		||||
                                    try {
 | 
			
		||||
                                        Glide
 | 
			
		||||
                                            .with(requireContext())
 | 
			
		||||
                                            .asBitmap()
 | 
			
		||||
                                            .load(
 | 
			
		||||
                                                response.data!!.lead_image_url.orEmpty()
 | 
			
		||||
                                            )
 | 
			
		||||
                                            .apply(RequestOptions.fitCenterTransform())
 | 
			
		||||
                                            .into(binding.imageView)
 | 
			
		||||
                                    } catch (e: Exception) {
 | 
			
		||||
                                        e.sendSilentlyWithAcra()
 | 
			
		||||
                                    }
 | 
			
		||||
                                } else {
 | 
			
		||||
                                    binding.imageView.visibility = View.GONE
 | 
			
		||||
                                }
 | 
			
		||||
                            } catch (e: Exception) {
 | 
			
		||||
                                e.sendSilentlyWithAcra()
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            try {
 | 
			
		||||
                                binding.nestedScrollView.scrollTo(0, 0)
 | 
			
		||||
 | 
			
		||||
                                binding.progressBar.visibility = View.GONE
 | 
			
		||||
                            } catch (e: Exception) {
 | 
			
		||||
                                e.sendSilentlyWithAcra()
 | 
			
		||||
                                e.sendSilentlyWithAcraWithName("getContentFromMercury > outside glide lead image")
 | 
			
		||||
                            }
 | 
			
		||||
                        } else {
 | 
			
		||||
                            try {
 | 
			
		||||
                                openInBrowserAfterFailing()
 | 
			
		||||
                            } catch (e: Exception) {
 | 
			
		||||
                                e.sendSilentlyWithAcra()
 | 
			
		||||
                            }
 | 
			
		||||
                            binding.imageView.visibility = View.GONE
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (e: Exception) {
 | 
			
		||||
                        e.sendSilentlyWithAcra()
 | 
			
		||||
 | 
			
		||||
                        try {
 | 
			
		||||
                            binding.nestedScrollView.scrollTo(0, 0)
 | 
			
		||||
                            binding.progressBar.visibility = View.GONE
 | 
			
		||||
                        } catch (e: Exception) {
 | 
			
		||||
                            e.sendSilentlyWithAcraWithName("getContentFromMercury > scrollview")
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        openInBrowserAfterFailing()
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                } catch (e: SocketTimeoutException) {
 | 
			
		||||
                    openInBrowserAfterFailing()
 | 
			
		||||
                } catch (e: Exception) {
 | 
			
		||||
                    e.sendSilentlyWithAcraWithName("getContentFromMercury > whole thing")
 | 
			
		||||
                    openInBrowserAfterFailing()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -364,7 +350,7 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
                        val image = Glide.with(view).asBitmap().apply(glideOptions).load(url).submit().get()
 | 
			
		||||
                        return WebResourceResponse("image/jpg", "UTF-8", getBitmapInputStream(image, Bitmap.CompressFormat.JPEG))
 | 
			
		||||
                    } catch ( e : ExecutionException) {
 | 
			
		||||
                        e.sendSilentlyWithAcra()
 | 
			
		||||
                        e.sendSilentlyWithAcraWithName("shouldInterceptRequest > jpeg")
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else if (url.lowercase(Locale.US).contains(".png")) {
 | 
			
		||||
@@ -372,7 +358,7 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
                        val image = Glide.with(view).asBitmap().apply(glideOptions).load(url).submit().get()
 | 
			
		||||
                        return WebResourceResponse("image/jpg", "UTF-8", getBitmapInputStream(image, Bitmap.CompressFormat.PNG))
 | 
			
		||||
                    } catch ( e : ExecutionException) {
 | 
			
		||||
                        e.sendSilentlyWithAcra()
 | 
			
		||||
                        e.sendSilentlyWithAcraWithName("shouldInterceptRequest > png")
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                else if (url.lowercase(Locale.US).contains(".webp")) {
 | 
			
		||||
@@ -380,7 +366,7 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
                        val image = Glide.with(view).asBitmap().apply(glideOptions).load(url).submit().get()
 | 
			
		||||
                        return WebResourceResponse("image/jpg", "UTF-8", getBitmapInputStream(image, Bitmap.CompressFormat.WEBP))
 | 
			
		||||
                    } catch ( e : ExecutionException) {
 | 
			
		||||
                        e.sendSilentlyWithAcra()
 | 
			
		||||
                        e.sendSilentlyWithAcraWithName("shouldInterceptRequest > webp")
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@@ -405,7 +391,7 @@ class ArticleFragment : Fragment(), DIAware {
 | 
			
		||||
            val itemUrl = URL(url)
 | 
			
		||||
            baseUrl = itemUrl.protocol + "://" + itemUrl.host
 | 
			
		||||
        } catch (e: MalformedURLException) {
 | 
			
		||||
            e.sendSilentlyWithAcra()
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("htmlToWebview > item url")
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val fontName =  when (font) {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package bou.amine.apps.readerforselfossv2.android.model
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.webkit.URLUtil
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.sendSilentlyWithAcraWithName
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.model.SelfossModel
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.utils.getImages
 | 
			
		||||
import com.bumptech.glide.Glide
 | 
			
		||||
@@ -24,7 +25,7 @@ fun SelfossModel.Item.preloadImages(context: Context) : Boolean {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    } catch (e : Error) {
 | 
			
		||||
        e.sendSilentlyWithAcra()
 | 
			
		||||
        e.sendSilentlyWithAcraWithName("preloadImages")
 | 
			
		||||
        return false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -37,7 +38,7 @@ fun String.toTextDrawableString(): String {
 | 
			
		||||
        try {
 | 
			
		||||
            textDrawable.append(s[0])
 | 
			
		||||
        } catch (e: StringIndexOutOfBoundsException) {
 | 
			
		||||
            e.sendSilentlyWithAcra()
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("toTextDrawableString")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return textDrawable.toString()
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@ import androidx.preference.Preference
 | 
			
		||||
import androidx.preference.PreferenceFragmentCompat
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.R
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.databinding.ActivitySettingsBinding
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.sendSilentlyWithAcraWithName
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
 | 
			
		||||
import org.acra.ktx.sendSilentlyWithAcra
 | 
			
		||||
import org.acra.ktx.sendWithAcra
 | 
			
		||||
@@ -124,7 +125,7 @@ class SettingsActivity : AppCompatActivity(),
 | 
			
		||||
                                val input: Int = (dest.toString() + source.toString()).toInt()
 | 
			
		||||
                                if (input in 1..200) return@InputFilter null
 | 
			
		||||
                            } catch (nfe: NumberFormatException) {
 | 
			
		||||
                                nfe.sendSilentlyWithAcra()
 | 
			
		||||
                                nfe.sendSilentlyWithAcraWithName("GeneralPreferenceFragment")
 | 
			
		||||
                                Toast.makeText(activity, R.string.items_number_should_be_number, Toast.LENGTH_LONG).show()
 | 
			
		||||
                            }
 | 
			
		||||
                            ""
 | 
			
		||||
@@ -148,7 +149,7 @@ class SettingsActivity : AppCompatActivity(),
 | 
			
		||||
                        try {
 | 
			
		||||
                            editText.textSize = editable.toString().toInt().toFloat()
 | 
			
		||||
                        } catch (e: NumberFormatException) {
 | 
			
		||||
                            e.sendSilentlyWithAcra()
 | 
			
		||||
                            e.sendSilentlyWithAcraWithName("ArticleViewerPreferenceFragment > afterTextChanged")
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } }
 | 
			
		||||
@@ -158,7 +159,7 @@ class SettingsActivity : AppCompatActivity(),
 | 
			
		||||
                                val input = (dest.toString() + source.toString()).toInt()
 | 
			
		||||
                                if (input > 0) return@InputFilter null
 | 
			
		||||
                            } catch (nfe: NumberFormatException) {
 | 
			
		||||
                                nfe.sendSilentlyWithAcra()
 | 
			
		||||
                                nfe.sendSilentlyWithAcraWithName("ArticleViewerPreferenceFragment > filters")
 | 
			
		||||
                            }
 | 
			
		||||
                            ""
 | 
			
		||||
                        }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        app:fontProviderAuthority="com.google.android.gms.fonts"
 | 
			
		||||
        app:fontProviderPackage="com.google.android.gms"
 | 
			
		||||
        app:fontProviderQuery="Open Sans"
 | 
			
		||||
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
 | 
			
		||||
</font-family>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        app:fontProviderAuthority="com.google.android.gms.fonts"
 | 
			
		||||
        app:fontProviderPackage="com.google.android.gms"
 | 
			
		||||
        app:fontProviderQuery="Roboto"
 | 
			
		||||
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
 | 
			
		||||
</font-family>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
			
		||||
        app:fontProviderAuthority="com.google.android.gms.fonts"
 | 
			
		||||
        app:fontProviderPackage="com.google.android.gms"
 | 
			
		||||
        app:fontProviderQuery="name=Source Code Pro&weight=500"
 | 
			
		||||
        app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
 | 
			
		||||
</font-family>
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<resources>
 | 
			
		||||
    <array name="com_google_android_gms_fonts_certs">
 | 
			
		||||
        <item>@array/com_google_android_gms_fonts_certs_dev</item>
 | 
			
		||||
        <item>@array/com_google_android_gms_fonts_certs_prod</item>
 | 
			
		||||
    </array>
 | 
			
		||||
    <string-array name="com_google_android_gms_fonts_certs_dev">
 | 
			
		||||
        <item>
 | 
			
		||||
            MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
 | 
			
		||||
        </item>
 | 
			
		||||
    </string-array>
 | 
			
		||||
    <string-array name="com_google_android_gms_fonts_certs_prod">
 | 
			
		||||
        <item>
 | 
			
		||||
            MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
 | 
			
		||||
        </item>
 | 
			
		||||
    </string-array>
 | 
			
		||||
</resources>
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<resources>
 | 
			
		||||
    <array name="preloaded_fonts" translatable="false">
 | 
			
		||||
        <item>@font/open_sans</item>
 | 
			
		||||
        <item>@font/roboto</item>
 | 
			
		||||
        <item>@font/source_code_pro_medium</item>
 | 
			
		||||
    </array>
 | 
			
		||||
</resources>
 | 
			
		||||
		Reference in New Issue
	
	Block a user