Skip to content
Snippets Groups Projects
Commit e895421b authored by clairehurst's avatar clairehurst
Browse files

Bug_43099: 2024 YEC

parent 070534b9
Branches
Tags
1 merge request!121Bug 43099: 2024 YEC 13.5 backport
Showing
with 684 additions and 8 deletions
......@@ -700,7 +700,7 @@ dependencies {
lintChecks project(":mozilla-lint-rules")
// Tor Android Services Dependencies
implementation 'net.freehaven.tor.control:jtorctl:0.2'
implementation files('jtorctl-0.2.jar')
implementation 'org.slf4j:slf4j-api:1.7.25'
implementation 'org.slf4j:slf4j-android:1.7.25'
......
File added
......@@ -17,9 +17,57 @@ import android.view.ViewGroup
import android.widget.Button
import android.widget.LinearLayout
import android.widget.PopupWindow
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.LocalTextStyle
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.draw.scale
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import androidx.core.content.ContextCompat.getColor
import androidx.core.view.children
import androidx.core.view.doOnLayout
import androidx.core.view.isGone
......@@ -64,6 +112,9 @@ import mozilla.components.service.glean.private.NoExtras
import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import mozilla.components.support.locale.LocaleManager
import mozilla.components.ui.colors.PhotonColors
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.GleanMetrics.HomeScreen
import org.mozilla.fenix.GleanMetrics.PrivateBrowsingShortcutCfr
......@@ -113,6 +164,8 @@ import org.mozilla.fenix.perf.MarkersFragmentLifecycleCallbacks
import org.mozilla.fenix.perf.runBlockingIncrement
import org.mozilla.fenix.search.toolbar.DefaultSearchSelectorController
import org.mozilla.fenix.search.toolbar.SearchSelectorMenu
import org.mozilla.fenix.settings.SupportUtils
import org.mozilla.fenix.settings.advanced.getSelectedLocale
import org.mozilla.fenix.tabstray.TabsTrayAccessPoint
import org.mozilla.fenix.tor.TorBootstrapFragmentDirections
import org.mozilla.fenix.tor.TorBootstrapStatus
......@@ -439,6 +492,8 @@ class HomeFragment : Fragment(), UserInteractionHandler {
activity.themeManager.applyStatusBarTheme(activity)
setDonationScreen()
// FxNimbus.features.homescreen.recordExposure()
// DO NOT MOVE ANYTHING BELOW THIS addMarker CALL!
......@@ -450,6 +505,19 @@ class HomeFragment : Fragment(), UserInteractionHandler {
return binding.root
}
private fun setDonationScreen() {
if (homeViewModel.shouldShowDonationScreen()) {
binding.exploreprivately.visibility = View.GONE
binding.onionPatternImage.visibility = View.GONE
binding.composeYec2024.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
DonationScreen()
}
}
}
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
......@@ -1022,4 +1090,311 @@ class HomeFragment : Fragment(), UserInteractionHandler {
requireActivity().finish()
return true
}
@Composable
fun DonationScreen() {
BoxWithConstraints(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
) {
val alternateLayout = this.maxWidth >= 500.dp
YecLayout(
alternateLayout,
maxWidth = this.maxWidth,
getYecStyle(),
modifier = Modifier
.padding(top = 55.dp, bottom = 56.dp),
)
}
}
@Composable
private fun YecLayout(
alternateLayout: Boolean,
maxWidth: Dp,
yecStyle: YecStyle,
modifier: Modifier
) {
Column(
modifier = modifier
.padding(horizontal = 22.dp)
.verticalScroll(rememberScrollState())
.fillMaxWidth(getVariableWidth(maxWidth)),
horizontalAlignment = Alignment.CenterHorizontally,
) {
PurpleYecBox(alternateLayout, yecStyle, horizontalPadding = 16.dp)
AlwaysFreeText()
}
}
private fun getVariableWidth(width: Dp): Float = (500.dp / width).coerceIn(0.75f, 1.0f)
@Composable
private fun PurpleYecBox(
alternateLayout: Boolean,
yecStyle: YecStyle,
horizontalPadding: Dp,
) {
Box(
modifier = Modifier.background(PhotonColors.Ink90, shape = RoundedCornerShape(8.dp)),
) {
ExitIcon()
DynamicYecContent(alternateLayout, yecStyle, horizontalPadding)
}
}
@Composable
private fun AlwaysFreeText() {
Text(
text = getString(
R.string.YEC_2024_tor_browser_for_android_will_always_be_free_no_donation_required,
getString(R.string.app_name),
),
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp),
color = Color(0xFFFBFBFE),
fontSize = 12.5.sp,
textAlign = TextAlign.Center,
lineHeight = 18.75.sp,
)
}
@Composable
private fun ExitIcon() {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.End,
) {
IconButton(
onClick = {
binding.exploreprivately.visibility = View.VISIBLE
binding.onionPatternImage.visibility = View.VISIBLE
binding.composeYec2024.visibility = View.GONE
homeViewModel.yecDismissed = true
},
) {
Icon(
painter = painterResource(id = R.drawable.ic_close),
tint = Color(
getColor(
requireContext(),
R.color.photonWhite,
),
),
contentDescription = getString(R.string.YEC_2024_close),
modifier = Modifier
.size(48.dp)
.padding(8.dp)
.scale(0.65f),
)
}
}
}
@Composable
private fun DynamicYecContent(
alternateLayout: Boolean,
yecStyle: YecStyle,
horizontalPadding: Dp,
) {
Row(verticalAlignment = Alignment.CenterVertically) {
Column(
modifier = Modifier.fillMaxWidth(fraction = if (alternateLayout) .70f else 1f),
horizontalAlignment = if (alternateLayout) Alignment.Start else Alignment.CenterHorizontally,
) {
if (!alternateLayout) {
IlloYecImage(yecStyle, false, horizontalPadding)
}
YecRightsText(yecStyle, alternateLayout, horizontalPadding)
DonationEncouragementText(alternateLayout, horizontalPadding)
DonationMatchText(alternateLayout, horizontalPadding)
DonateNowButton(alternateLayout, horizontalPadding)
}
if (alternateLayout) {
IlloYecImage(yecStyle, true, horizontalPadding)
}
}
}
@Composable
private fun IlloYecImage(yecStyle: YecStyle, alternateLayout: Boolean, horizontalPadding: Dp) {
Image(
painter = painterResource(id = yecStyle.illo),
contentDescription = null,
modifier = Modifier
.fillMaxWidth()
.padding(
top = if (alternateLayout) 0.dp else 41.dp,
bottom = if (alternateLayout) 0.dp else 25.dp,
end = if (alternateLayout) horizontalPadding else 0.dp,
),
)
}
@Composable
private fun YecRightsText(
yecStyle: YecStyle,
alternateLayout: Boolean,
horizontalPadding: Dp,
) {
var textLayoutResult by remember { mutableStateOf<TextLayoutResult?>(null) }
Text(
text = getString(yecStyle.text),
color = PhotonColors.Ink90,
textAlign = if (alternateLayout) TextAlign.Left else TextAlign.Center,
fontFamily = FontFamily(Font(R.font.spacegrotesk_bold, FontWeight.Bold)),
fontSize = 18.sp,
lineHeight = 30.sp,
onTextLayout = { textLayoutResult = it },
modifier = Modifier
.padding(
top = if (alternateLayout) 24.dp else 0.dp,
start = horizontalPadding,
end = if (alternateLayout) 0.dp else horizontalPadding,
bottom = if (alternateLayout) 8.dp else 16.dp,
)
.drawBehind {
textLayoutResult?.let { result ->
for (i in 0 until result.lineCount) {
val endOfLineSpacing = 4.dp
val lineTop = result.getLineTop(i)
val lineBottom = result.getLineBottom(i)
val lineLeft = result.getLineLeft(i) - endOfLineSpacing.toPx()
val lineRight = result.getLineRight(i) + endOfLineSpacing.toPx()
drawRoundRect(
color = Color(getColor(requireContext(), yecStyle.color)),
topLeft = Offset(
lineLeft,
lineTop + 4.dp.toPx(),
),
size = Size(
lineRight - lineLeft,
lineBottom - lineTop - 4.dp.toPx(),
),
cornerRadius = CornerRadius(2.dp.toPx(), 2.dp.toPx()),
)
}
}
},
)
}
@Composable
private fun DonationEncouragementText(alternateLayout: Boolean, horizontalPadding: Dp) {
Text(
text = getString(R.string.YEC_2024_donation_encouragement),
modifier = Modifier
.fillMaxWidth()
.padding(
start = horizontalPadding,
end = if (alternateLayout) 0.dp else horizontalPadding,
bottom = if (alternateLayout) 8.dp else 16.dp,
),
color = Color(0xFFFBFBFE),
textAlign = TextAlign.Left,
)
}
@Composable
private fun DonationMatchText(alternateLayout: Boolean, horizontalPadding: Dp) {
Text(
text = getString(R.string.YEC_2024_donation_match_text),
modifier = Modifier
.fillMaxWidth()
.padding(
start = horizontalPadding,
end = if (alternateLayout) horizontalPadding else 0.dp,
bottom = 16.dp,
),
color = Color(0xFFFBFBFE),
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Left,
)
}
@Composable
private fun DonateNowButton(alternateLayout: Boolean, horizontalPadding: Dp) {
var locale = LocaleManager.getSelectedLocale(requireContext()).language
if (locale.isNotEmpty()) {
locale += '-'
}
Button(
onClick = {
(activity as HomeActivity).openToBrowserAndLoad(
searchTermOrURL = "https://www.torproject.org/donate/donate-${locale}mobile-yec2024",
newTab = true,
from = BrowserDirection.FromHome,
)
},
modifier = Modifier
.padding(bottom = if (alternateLayout) 24.dp else 40.dp)
.padding(horizontal = horizontalPadding),
colors = ButtonDefaults.buttonColors(
backgroundColor = Color(
0xFFFFBD4F,
),
),
shape = RoundedCornerShape(4.dp),
) {
Text(
text = getString(R.string.YEC_2024_donate_now),
color = PhotonColors.DarkGrey80,
modifier = Modifier.padding(
horizontal = if (alternateLayout) 6.dp else 8.dp,
vertical = if (alternateLayout) 3.dp else 6.dp,
),
fontSize = 16.sp,
fontWeight = FontWeight.Bold,
letterSpacing = 0.sp,
)
Icon(
painter = painterResource(R.drawable.heart),
contentDescription = null,
modifier = Modifier.size(20.dp),
)
}
}
private fun getYecStyle(): YecStyle {
if (homeViewModel.firstYecLoad) {
homeViewModel.firstYecLoad = false
homeViewModel.yecStyleIndex = requireContext().settings().yecStyleIndex
requireContext().settings().yecStyleIndex =
(requireContext().settings().yecStyleIndex + 1) % 3
}
return YecStyle.values()[homeViewModel.yecStyleIndex]
}
enum class YecStyle(
@DrawableRes val illo: Int,
@StringRes val text: Int,
@ColorRes val color: Int,
) {
PurpleSpeak(
illo = R.drawable.illo_purple_speak,
text = R.string.YEC_2024_right_to_speak,
color = R.color.YEC_2024_speak_purple,
),
GreenBrowse(
illo = R.drawable.illo_green_browse,
text = R.string.YEC_2024_right_to_BROWSE,
color = R.color.YEC_2024_browse_green,
),
RedSearch(
illo = R.drawable.illo_red_search,
text = R.string.YEC_2024_right_to_SEARCH,
color = R.color.YEC_2024_search_red,
)
}
}
......@@ -4,11 +4,35 @@
package org.mozilla.fenix.home
import android.annotation.SuppressLint
import androidx.annotation.IntRange
import androidx.lifecycle.ViewModel
import org.mozilla.fenix.BuildConfig
import java.text.SimpleDateFormat
import java.util.Date
class HomeScreenViewModel : ViewModel() {
/**
* Used to delete a specific session once the home screen is resumed
*/
var sessionToDelete: String? = null
@IntRange(0, 2)
var yecStyleIndex: Int = 0
var firstYecLoad: Boolean = true
var yecDismissed: Boolean = false
fun shouldShowDonationScreen(): Boolean {
@SuppressLint("SimpleDateFormat")
val dateFormat = SimpleDateFormat("yyyy-MM-dd")
val startDate = dateFormat.parse("2024-10-14") // Change to a date in the past to test
val endDate = dateFormat.parse("2025-1-2")
val currentDate = Date()
@Suppress("KotlinConstantConditions")
return !yecDismissed
&& BuildConfig.BUILD_TYPE == "release" // Comment this line out to test
&& currentDate.after(startDate)
&& currentDate.before(endDate)
}
}
......@@ -335,6 +335,11 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = false
)
var yecStyleIndex by intPreference(
appContext.getPreferenceKey(R.string.pref_key_yec_style_index),
default = 0
)
var defaultSearchEngineName by stringPreference(
appContext.getPreferenceKey(R.string.pref_key_search_engine),
default = "",
......
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="16dp" android:viewportHeight="17" android:viewportWidth="17" android:width="16dp">
<path android:fillColor="#1C1B22" android:pathData="M8.5,6.5C8.5,6.5 8.5,2.5 12,2.5C15.5,2.5 15.5,5.5 15.5,6.5C15.5,11 8.5,15.5 8.5,15.5V6.5Z"/>
<path android:fillColor="#1C1B22" android:pathData="M8.5,6.5C8.5,6.5 8.5,2.5 5,2.5C1.5,2.5 1.5,5.5 1.5,6.5C1.5,11 8.5,15.5 8.5,15.5L9.5,9.5L8.5,6.5Z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="144dp" android:viewportHeight="144" android:viewportWidth="198" android:width="198dp">
<group>
<clip-path android:pathData="M8.49,0L189.97,0A8,8 0,0 1,197.97 8L197.97,136A8,8 0,0 1,189.97 144L8.49,144A8,8 0,0 1,0.49 136L0.49,8A8,8 0,0 1,8.49 0z"/>
<path android:fillColor="#1D1133" android:pathData="M8.49,0L189.97,0A8,8 0,0 1,197.97 8L197.97,136A8,8 0,0 1,189.97 144L8.49,144A8,8 0,0 1,0.49 136L0.49,8A8,8 0,0 1,8.49 0z"/>
<path android:fillAlpha="0.7" android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M41.55,66.09C42.32,66.09 42.94,66.71 42.94,67.47V74.16H90.02C90.79,74.16 91.41,74.78 91.41,75.55V82.24H91.41V90.32H99.27V82.46H99.26V75.55C99.26,74.78 99.88,74.16 100.65,74.16H138.49C138.98,74.16 139.41,74.42 139.66,74.8V74.16H178.88C179.65,74.16 180.27,74.78 180.27,75.55V81.08C180.27,81.57 180.02,82 179.63,82.24H180.27V90.54H179.63C180.02,90.79 180.27,91.22 180.27,91.7V106.49H195.05C195.81,106.49 196.43,107.1 196.43,107.87V113.4C196.43,114.16 195.81,114.78 195.05,114.78H180.27V121.46C180.27,122.22 179.65,122.84 178.89,122.84H164.11V129.54C164.11,130.3 163.49,130.92 162.73,130.92H157.2C156.43,130.92 155.81,130.3 155.81,129.54V122.84H139.88V129.54C139.88,130.3 139.26,130.92 138.49,130.92H132.96C132.2,130.92 131.58,130.3 131.58,129.54V122.84L19.87,122.84C19.1,122.84 18.48,122.22 18.48,121.46V114.54H34.64V106.7H11.79C11.02,106.7 10.4,106.08 10.4,105.31V98.62H3.71C2.94,98.62 2.32,98 2.32,97.24V91.7C2.32,90.94 2.94,90.32 3.71,90.32H10.4V83.63C10.4,82.86 11.02,82.24 11.79,82.24H18.48V75.55C18.48,74.78 19.1,74.16 19.86,74.16H34.64V67.47C34.64,66.71 35.26,66.09 36.02,66.09H41.55ZM36.02,66.31H41.55C42.19,66.31 42.72,66.83 42.72,67.47V74.16H34.86V67.47C34.86,66.83 35.38,66.31 36.02,66.31ZM171.97,122.62V114.78H164.11L164.11,122.62H171.97ZM171.98,114.54V106.71H164.12V114.54H171.98ZM180.05,114.54H172.2V106.71H180.05V114.54ZM172.19,122.62H178.89C179.53,122.62 180.05,122.1 180.05,121.46V114.78H172.19L172.19,122.62ZM163.9,106.71V114.54H156.04V106.71H163.9ZM163.89,114.78V122.62H156.04V114.78H163.89ZM155.82,114.78V122.62H147.96L147.96,114.78H155.82ZM155.82,114.54V106.71H147.96V114.54H155.82ZM139.66,122.62V114.78H131.8L131.8,122.62H139.66ZM139.66,114.54L139.66,114.54V106.71H131.8V114.54L139.66,114.54ZM147.74,114.54H139.88V106.71H147.74V114.54ZM139.88,122.62H147.74V114.78H139.88L139.88,122.62ZM131.58,106.71V114.54H123.72V106.71H131.58ZM131.58,114.78V122.62H123.72L123.72,114.78H131.58ZM123.5,122.62V114.78H115.64L115.64,122.62H123.5ZM123.5,114.54L123.5,114.54V106.71H115.65V114.54L123.5,114.54ZM115.42,114.78V122.62H107.57V114.78L115.42,114.78ZM107.35,114.54L107.35,114.54V106.71H99.49V114.54L107.35,114.54ZM115.43,114.54H107.57V106.71H115.43V114.54ZM107.35,122.62H99.49L99.49,114.78L107.35,114.78V122.62ZM91.41,114.78H99.27V122.62H91.41L91.41,114.78ZM91.19,122.62V114.78H83.33L83.33,122.62H91.19ZM91.19,114.54V106.71H83.33V114.54H91.19ZM99.27,114.54H91.41V106.71H99.27V114.54ZM83.11,106.71V114.54H75.25V106.71H83.11ZM83.11,114.78V122.62H75.25V114.78H83.11ZM75.03,114.54L75.03,114.54V106.71H67.18V114.54L75.03,114.54ZM67.17,114.78V122.62H75.03V114.78H67.17ZM66.96,106.71V114.54H59.1V106.71H66.96ZM66.95,114.78V122.62H59.09V114.78H66.95ZM58.88,114.54V106.71H51.02V114.54H58.88ZM51.02,114.78V122.62H58.87V114.78H51.02ZM50.8,106.71V114.54H42.94V106.71H50.8ZM50.8,114.78V122.62H42.94V114.78L50.8,114.78ZM42.72,114.54V106.71H34.86V114.54H42.72ZM42.72,122.62H34.86L34.86,114.78H42.72V122.62ZM34.64,114.76V122.62H26.78V114.76H34.64ZM188.13,106.71H180.27V114.56H188.13V106.71ZM188.35,114.56H195.05C195.69,114.56 196.21,114.04 196.21,113.4V107.87C196.21,107.23 195.69,106.71 195.05,106.71H188.35V114.56ZM18.7,106.48L18.7,98.62H26.56L26.56,106.48H18.7ZM18.48,98.62H10.62V105.31C10.62,105.96 11.14,106.48 11.79,106.48H18.48L18.48,98.62ZM34.64,106.48H26.78L26.78,98.62H34.64V106.48ZM34.86,106.48H42.72L42.72,98.62L34.86,98.62V106.48ZM50.79,106.48H42.94V98.62H50.79V106.48ZM66.95,106.48H59.09V98.62L66.95,98.62L66.95,106.48ZM58.87,106.48H51.01V98.62L58.87,98.62L58.87,106.48ZM67.17,106.48H75.03L75.03,98.62L67.17,98.62V106.48ZM83.11,106.48H75.25V98.62L83.11,98.62L83.11,106.48ZM83.33,106.48H91.19L91.19,98.62L83.33,98.62V106.48ZM99.26,106.48H91.41V98.62H99.26V106.48ZM115.42,106.48H107.56V98.62L115.42,98.62L115.42,106.48ZM107.34,106.48H99.48V98.62L107.34,98.62L107.34,106.48ZM115.64,106.48H123.5L123.5,98.62L115.64,98.62V106.48ZM131.58,106.48H123.72V98.62L131.58,98.62L131.58,106.48ZM131.8,106.48H139.66V98.62H131.8V106.48ZM147.96,106.48H155.81L155.81,98.62L147.96,98.62V106.48ZM147.73,98.62L139.88,98.62V106.48H147.73L147.73,98.62ZM163.89,106.48H156.03V98.62L163.89,98.62L163.89,106.48ZM164.11,106.48H171.97L171.97,98.62L164.11,98.62V106.48ZM180.05,106.48H172.19V98.62H180.05V106.48ZM18.48,98.4H10.62V90.54H18.48V98.4ZM10.4,98.4V90.54H3.71C3.06,90.54 2.54,91.06 2.54,91.7V97.24C2.54,97.88 3.06,98.4 3.71,98.4H10.4ZM10.62,90.32V83.63C10.62,82.98 11.14,82.46 11.79,82.46H18.48V90.32H10.62ZM18.7,98.4V90.54H26.56V98.4H18.7ZM34.64,98.4H26.78V90.54H34.64L34.64,98.4ZM26.56,82.46V90.32H18.7V82.46H26.56ZM26.78,90.32V82.46H34.64V90.32H26.78ZM34.86,90.54V98.4H42.72L42.72,90.54H34.86ZM50.79,98.4H42.94V90.54H50.79V98.4ZM42.72,82.46V90.32H34.86V82.46H42.72ZM42.94,90.32V82.46L50.79,82.46L50.79,90.32H42.94ZM66.95,98.4H59.09V90.54H66.95L66.95,98.4ZM58.87,82.46L58.87,90.32H51.01V82.46L58.87,82.46ZM51.01,90.54V98.4H58.87L58.87,90.54H51.01ZM59.09,90.32V82.46H66.95V90.32H59.09ZM67.17,98.4H75.03L75.03,90.54H67.17V98.4ZM83.11,98.4H75.25V90.54L75.25,90.54H83.11L83.11,98.4ZM75.03,82.46V90.32L75.03,90.32H67.17V82.46L75.03,82.46ZM75.25,90.32L83.11,90.32L83.11,90.32L83.11,82.46L75.25,82.46V90.32ZM83.33,98.4H91.19L91.19,90.54H83.33L83.33,90.54V98.4ZM99.26,98.4H91.41V90.54L91.41,90.54L99.26,90.54V98.4ZM91.19,82.46V90.32L91.19,90.32L83.33,90.32V82.46H91.19ZM50.79,74.38H42.94V82.24H50.79V74.38ZM51.01,82.24H58.87V74.38H51.01V82.24ZM172.19,74.38H178.88C179.53,74.38 180.05,74.91 180.05,75.55V81.08C180.05,81.72 179.53,82.24 178.88,82.24H172.19V74.38ZM115.42,98.4H107.56V90.54L107.56,90.54H115.42L115.42,98.4ZM107.34,82.46L107.34,90.32L107.34,90.32L99.49,90.32V82.46L107.34,82.46ZM107.34,90.54L99.48,90.54V98.4H107.34L107.34,90.54ZM107.56,90.32L115.42,90.32L115.42,90.32L115.42,82.46L107.56,82.46V90.32ZM115.64,98.4H123.5L123.5,90.54H115.64L115.64,90.54V98.4ZM131.58,98.4H123.72V90.54L123.72,90.54H131.58L131.58,98.4ZM123.5,82.46V90.32L123.5,90.32L115.64,90.32V82.46H123.5ZM123.72,90.32L131.58,90.32L131.58,90.32V82.46L123.72,82.46V90.32ZM131.8,98.4H139.66L139.66,90.54H131.8L131.8,90.54V98.4ZM139.66,82.46V90.32L139.66,90.32L131.8,90.32V82.46H139.66ZM139.88,90.32L147.73,90.32L147.74,90.32L147.74,82.46L139.88,82.46V90.32ZM147.96,98.4H155.81L155.81,90.54H147.96L147.96,90.54V98.4ZM139.88,98.4H147.73L147.73,90.54H139.88L139.88,90.54V98.4ZM163.89,98.4H156.03V90.54L156.03,90.54H163.89L163.89,98.4ZM155.81,82.46L155.81,90.32L155.81,90.32L147.96,90.32V82.46L155.81,82.46ZM156.03,90.32L163.89,90.32L163.89,90.32L163.89,82.46L156.03,82.46V90.32ZM164.11,90.54L164.11,90.54V98.4H171.97L171.97,90.54H164.11ZM180.05,98.4H172.19V90.54L172.19,90.54H178.89C179.53,90.55 180.05,91.07 180.05,91.7V98.4ZM171.97,82.46L171.97,90.32L171.97,90.32L164.11,90.32V82.46L171.97,82.46ZM178.9,90.32L178.88,90.32L172.19,90.32V82.46H180.05V90.32H178.9ZM163.89,82.24L156.03,82.24L156.03,82.24V74.38H163.89V82.24ZM115.42,74.38H107.56V82.24H115.42V74.38ZM107.34,74.38H100.65C100,74.38 99.48,74.91 99.48,75.55V82.24H107.34V74.38ZM123.5,82.24H115.64V74.38H123.5V82.24ZM139.66,82.24H131.8V74.38H138.49C139.13,74.38 139.65,74.9 139.66,75.54L139.66,75.55V82.24ZM123.72,74.38H131.58V82.24H123.72V74.38ZM147.73,74.38H139.88V75.54L139.88,75.55L139.88,82.24H147.73V74.38ZM155.81,82.24H147.96V74.38H155.81V82.24ZM171.97,82.24H164.11V74.38H171.97V82.24ZM83.33,74.38H90.02C90.66,74.38 91.19,74.91 91.19,75.55V82.24H83.33V74.38ZM66.95,82.24H59.09V74.38H66.95V82.24ZM83.11,82.24H75.25V74.38H83.11V82.24ZM67.17,74.38H75.03V82.24H67.17V74.38ZM34.86,74.38H42.72V82.24H34.86V74.38ZM34.64,74.38H26.78V82.24H34.64V74.38ZM19.86,74.38H26.56V82.24H18.7V75.55C18.7,74.91 19.22,74.38 19.86,74.38ZM26.56,122.62H19.87C19.22,122.62 18.7,122.1 18.7,121.46L18.7,114.76H26.56V122.62ZM131.8,122.84V129.54C131.8,130.18 132.32,130.7 132.96,130.7H138.49C139.13,130.7 139.66,130.18 139.66,129.54V122.84H131.8ZM156.03,129.54V122.84H163.89V129.54C163.89,130.18 163.37,130.7 162.73,130.7H157.2C156.55,130.7 156.03,130.18 156.03,129.54Z" android:strokeAlpha="0.7"/>
<path android:fillColor="#ffffff" android:pathData="M28.14,100.94a6.85,23.41 89.68,1 0,46.82 -0.26a6.85,23.41 89.68,1 0,-46.82 0.26z"/>
<path android:fillColor="#ffffff" android:pathData="M121.77,100.94a6.85,23.41 89.68,1 0,46.82 -0.26a6.85,23.41 89.68,1 0,-46.82 0.26z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M144.92,14.5C144.92,15.23 144.33,15.82 143.6,15.82C142.87,15.82 142.27,15.23 142.27,14.5C142.27,13.76 142.87,13.17 143.6,13.17C144.33,13.17 144.92,13.76 144.92,14.5ZM144.4,14.5C144.4,14.94 144.04,15.3 143.6,15.3C143.15,15.3 142.79,14.94 142.79,14.5C142.79,14.05 143.15,13.69 143.6,13.69C144.04,13.69 144.4,14.05 144.4,14.5Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M143.6,16.82C144.88,16.82 145.92,15.78 145.92,14.5C145.92,13.21 144.88,12.17 143.6,12.17C142.32,12.17 141.28,13.21 141.28,14.5C141.28,15.78 142.32,16.82 143.6,16.82ZM143.6,16.3C144.59,16.3 145.4,15.49 145.4,14.5C145.4,13.5 144.59,12.69 143.6,12.69C142.6,12.69 141.8,13.5 141.8,14.5C141.8,15.49 142.6,16.3 143.6,16.3Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M143.6,17.81C145.43,17.81 146.91,16.33 146.91,14.5C146.91,12.66 145.43,11.18 143.6,11.18C141.77,11.18 140.29,12.66 140.29,14.5C140.29,16.33 141.77,17.81 143.6,17.81ZM143.6,17.29C145.14,17.29 146.39,16.04 146.39,14.5C146.39,12.95 145.14,11.7 143.6,11.7C142.05,11.7 140.8,12.95 140.8,14.5C140.8,16.04 142.05,17.29 143.6,17.29Z"/>
<path android:fillColor="#ffffff" android:pathData="M126.45,45.24C127.77,45.93 129.4,45.66 130.28,44.46C130.93,43.58 131.52,42.71 131.98,42C132.62,41 132.59,39.73 131.9,38.77C128.1,33.47 114.83,16.71 98.94,16.71C83.24,16.71 69.93,33.06 65.88,38.57C65.1,39.63 65.15,41.06 65.96,42.11C66.38,42.66 66.89,43.29 67.43,43.95C68.37,45.1 69.99,45.38 71.31,44.71C79.89,40.36 88.77,37.93 98.77,37.93C108.84,37.93 117.82,40.78 126.45,45.24Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M130.04,44.28C130.69,43.41 131.27,42.54 131.73,41.84C132.3,40.94 132.27,39.81 131.65,38.94C129.76,36.3 125.51,30.81 119.76,25.98C114,21.14 106.78,17 98.94,17C91.19,17 84.01,21.04 78.23,25.8C72.46,30.56 68.14,36 66.13,38.74C65.42,39.7 65.46,40.98 66.19,41.92C66.62,42.47 67.12,43.11 67.66,43.76C68.5,44.8 69.97,45.05 71.17,44.44C79.79,40.07 88.72,37.63 98.77,37.63C108.9,37.63 117.93,40.49 126.59,44.98C127.8,45.6 129.26,45.35 130.04,44.28ZM130.28,44.46C129.4,45.66 127.77,45.93 126.45,45.24C117.82,40.78 108.84,37.93 98.77,37.93C88.77,37.93 79.89,40.36 71.31,44.71C69.99,45.38 68.37,45.1 67.43,43.95C66.89,43.29 66.38,42.66 65.96,42.11C65.15,41.06 65.1,39.63 65.88,38.57C69.93,33.06 83.24,16.71 98.94,16.71C114.83,16.71 128.1,33.47 131.9,38.77C132.59,39.73 132.62,41 131.98,42C131.52,42.71 130.93,43.58 130.28,44.46Z"/>
<path android:fillColor="#212529" android:pathData="M107.52,34.94C109.36,34.94 110.94,33.86 111.68,32.3C112.69,34.16 113.31,36.26 113.43,38.49C108.65,37.37 103.71,36.79 98.68,36.79C93.74,36.79 88.88,37.35 84.18,38.43C84.63,30.74 91.01,24.63 98.81,24.63C101.18,24.63 103.42,25.2 105.4,26.21C103.92,26.97 102.9,28.52 102.9,30.31C102.9,32.87 104.96,34.94 107.52,34.94Z"/>
<path android:fillColor="#C1ED75" android:pathData="M132.12,102.6C129.93,102.6 128.16,100.82 128.16,98.63C128.16,82.31 114.9,69.04 98.6,69.04C82.3,69.04 69.04,82.31 69.04,98.63C69.04,100.82 67.27,102.6 65.08,102.6C62.9,102.6 61.12,100.82 61.12,98.63C61.12,77.94 77.93,61.11 98.6,61.11C119.27,61.11 136.08,77.94 136.08,98.63C136.08,100.82 134.31,102.6 132.12,102.6Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M128.46,98.63C128.46,100.65 130.1,102.3 132.12,102.3C134.14,102.3 135.78,100.65 135.78,98.63C135.78,78.11 119.1,61.41 98.6,61.41C78.1,61.41 61.42,78.11 61.42,98.63C61.42,100.65 63.06,102.3 65.08,102.3C67.1,102.3 68.74,100.65 68.74,98.63C68.74,82.15 82.13,68.74 98.6,68.74C115.07,68.74 128.46,82.15 128.46,98.63ZM128.16,98.63C128.16,100.82 129.93,102.6 132.12,102.6C134.31,102.6 136.08,100.82 136.08,98.63C136.08,77.94 119.27,61.11 98.6,61.11C77.93,61.11 61.12,77.94 61.12,98.63C61.12,100.82 62.9,102.6 65.08,102.6C67.27,102.6 69.04,100.82 69.04,98.63C69.04,82.31 82.3,69.04 98.6,69.04C114.9,69.04 128.16,82.31 128.16,98.63Z"/>
<path android:fillColor="#C1ED75" android:pathData="M158.51,102.6C156.33,102.6 154.55,100.82 154.55,98.63C154.55,67.74 129.46,42.61 98.6,42.61C67.75,42.61 42.65,67.74 42.65,98.63C42.65,100.82 40.87,102.6 38.69,102.6C36.5,102.6 34.73,100.82 34.73,98.63C34.73,81.55 41.37,65.49 53.44,53.42C65.5,41.34 81.54,34.69 98.6,34.69C115.66,34.69 131.7,41.34 143.76,53.42C155.83,65.49 162.47,81.55 162.47,98.63C162.47,100.82 160.7,102.6 158.51,102.6Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M154.85,98.63C154.85,100.65 156.49,102.3 158.51,102.3C160.53,102.3 162.18,100.65 162.18,98.63C162.18,81.63 155.56,65.65 143.55,53.63C131.55,41.61 115.58,34.99 98.6,34.99C81.62,34.99 65.66,41.61 53.65,53.63C41.64,65.65 35.03,81.63 35.03,98.63C35.03,100.65 36.67,102.3 38.69,102.3C40.71,102.3 42.35,100.65 42.35,98.63C42.35,67.58 67.58,42.32 98.6,42.32C129.62,42.32 154.85,67.58 154.85,98.63ZM154.55,98.63C154.55,100.82 156.33,102.6 158.51,102.6C160.7,102.6 162.47,100.82 162.47,98.63C162.47,81.55 155.83,65.49 143.76,53.42C131.7,41.34 115.66,34.69 98.6,34.69C81.54,34.69 65.5,41.34 53.44,53.42C41.37,65.49 34.73,81.55 34.73,98.63C34.73,100.82 36.5,102.6 38.69,102.6C40.87,102.6 42.65,100.82 42.65,98.63C42.65,67.74 67.75,42.61 98.6,42.61C129.46,42.61 154.55,67.74 154.55,98.63Z"/>
<path android:fillColor="#C1ED75" android:pathData="M145.32,102.6C143.13,102.6 141.36,100.82 141.36,98.63C141.36,75.03 122.18,55.83 98.6,55.83C75.02,55.83 55.84,75.03 55.84,98.63C55.84,100.82 54.07,102.6 51.88,102.6C49.7,102.6 47.92,100.82 47.92,98.63C47.92,70.66 70.66,47.9 98.6,47.9C126.54,47.9 149.28,70.66 149.28,98.63C149.28,100.82 147.5,102.6 145.32,102.6Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M141.66,98.63C141.66,100.65 143.3,102.3 145.32,102.3C147.34,102.3 148.98,100.65 148.98,98.63C148.98,70.82 126.38,48.2 98.6,48.2C70.82,48.2 48.22,70.82 48.22,98.63C48.22,100.65 49.86,102.3 51.88,102.3C53.9,102.3 55.54,100.65 55.54,98.63C55.54,74.86 74.86,55.53 98.6,55.53C122.34,55.53 141.66,74.86 141.66,98.63ZM141.36,98.63C141.36,100.82 143.13,102.6 145.32,102.6C147.5,102.6 149.28,100.82 149.28,98.63C149.28,70.66 126.54,47.9 98.6,47.9C70.66,47.9 47.92,70.66 47.92,98.63C47.92,100.82 49.7,102.6 51.88,102.6C54.07,102.6 55.84,100.82 55.84,98.63C55.84,75.03 75.02,55.83 98.6,55.83C122.18,55.83 141.36,75.03 141.36,98.63Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M166.69,66.45V55.84H166.99V66.45H166.69Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M171.2,61.3L162.37,61.27L162.37,60.97L171.2,61L171.2,61.3Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M37.89,31.19V7.2H38.19V31.19H37.89Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M47.98,19.45L28.1,19.4L28.1,19.1L47.98,19.15L47.98,19.45Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M42.05,23.48L33.74,15.15L33.95,14.94L42.26,23.26L42.05,23.48Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M33.95,23.48L42.26,15.15L42.05,14.94L33.74,23.26L33.95,23.48Z"/>
<path android:fillColor="#C1ED75" android:pathData="M168.11,43.01C168.11,43.75 167.52,44.34 166.79,44.34C166.05,44.34 165.46,43.75 165.46,43.01C165.46,42.28 166.05,41.69 166.79,41.69C167.52,41.69 168.11,42.28 168.11,43.01Z"/>
<path android:fillColor="#C1ED75" android:fillType="evenOdd" android:pathData="M157.07,51.42C158.41,51.42 159.5,50.33 159.5,48.98C159.5,47.64 158.41,46.55 157.07,46.55C155.73,46.55 154.64,47.64 154.64,48.98C154.64,50.33 155.73,51.42 157.07,51.42ZM157.07,51.12C158.24,51.12 159.2,50.16 159.2,48.98C159.2,47.81 158.24,46.85 157.07,46.85C155.89,46.85 154.94,47.81 154.94,48.98C154.94,50.16 155.89,51.12 157.07,51.12Z"/>
<path android:fillColor="#C1ED75" android:pathData="M33.84,62.47C33.84,63.2 33.25,63.8 32.52,63.8C31.79,63.8 31.19,63.2 31.19,62.47C31.19,61.74 31.79,61.14 32.52,61.14C33.25,61.14 33.84,61.74 33.84,62.47Z"/>
</group>
</vector>
This diff is collapsed.
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="144dp" android:viewportHeight="144" android:viewportWidth="199" android:width="199dp">
<group>
<clip-path android:pathData="M8.97,0L190.46,0A8,8 0,0 1,198.46 8L198.46,136A8,8 0,0 1,190.46 144L8.97,144A8,8 0,0 1,0.97 136L0.97,8A8,8 0,0 1,8.97 0z"/>
<path android:fillColor="#1D1133" android:pathData="M8.97,0L190.46,0A8,8 0,0 1,198.46 8L198.46,136A8,8 0,0 1,190.46 144L8.97,144A8,8 0,0 1,0.97 136L0.97,8A8,8 0,0 1,8.97 0z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M153.93,33.4V22.78H154.22V33.4H153.93Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M158.43,28.24L149.6,28.22L149.6,27.92L158.43,27.94L158.43,28.24Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M40.59,125.46V101.47H40.89V125.46H40.59Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M50.67,113.72L30.8,113.67L30.8,113.37L50.68,113.42L50.67,113.72Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M44.75,117.74L36.44,109.42L36.65,109.21L44.96,117.53L44.75,117.74Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M36.65,117.74L44.96,109.42L44.75,109.21L36.44,117.53L36.65,117.74Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M143.94,17.65C145.08,17.65 146,16.72 146,15.59C146,14.45 145.08,13.53 143.94,13.53C142.81,13.53 141.89,14.45 141.89,15.59C141.89,16.72 142.81,17.65 143.94,17.65ZM143.94,17.35C144.91,17.35 145.7,16.56 145.7,15.59C145.7,14.61 144.91,13.82 143.94,13.82C142.97,13.82 142.18,14.61 142.18,15.59C142.18,16.56 142.97,17.35 143.94,17.35Z"/>
<path android:fillColor="#ffffff" android:pathData="M49.91,96.62C49.91,97.36 49.31,97.95 48.58,97.95C47.85,97.95 47.26,97.36 47.26,96.62C47.26,95.89 47.85,95.3 48.58,95.3C49.31,95.3 49.91,95.89 49.91,96.62Z"/>
<path android:fillColor="#FF6A75" android:pathData="M57.46,51.13C57.46,26.69 77.27,6.88 101.7,6.88C126.14,6.88 145.95,26.69 145.95,51.13V134.61C145.95,135.63 145.12,136.46 144.1,136.46H59.31C58.28,136.46 57.46,135.63 57.46,134.61V51.13Z"/>
<path android:fillColor="#FF6A75" android:fillType="evenOdd" android:pathData="M146.24,51.13V134.61C146.24,135.79 145.28,136.75 144.1,136.75H59.31C58.12,136.75 57.17,135.79 57.17,134.61V51.13C57.17,26.53 77.11,6.59 101.7,6.59C126.3,6.59 146.24,26.53 146.24,51.13ZM101.7,6.88C77.27,6.88 57.46,26.69 57.46,51.13V134.61C57.46,135.63 58.28,136.46 59.31,136.46H144.1C145.12,136.46 145.95,135.63 145.95,134.61V51.13C145.95,26.69 126.14,6.88 101.7,6.88Z"/>
<group>
<clip-path android:pathData="M73.89,38.09h56.95v56.95h-56.95z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M102.37,84.36C108.27,84.36 113.05,79.58 113.05,73.69C113.05,67.79 108.27,63.01 102.37,63.01C96.47,63.01 91.69,67.79 91.69,73.69C91.69,79.58 96.47,84.36 102.37,84.36ZM102.37,87.92C110.23,87.92 116.61,81.55 116.61,73.69C116.61,65.82 110.23,59.45 102.37,59.45C94.5,59.45 88.13,65.82 88.13,73.69C88.13,81.55 94.5,87.92 102.37,87.92Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M102.37,77.24C104.33,77.24 105.93,75.65 105.93,73.69C105.93,71.72 104.33,70.13 102.37,70.13C100.4,70.13 98.81,71.72 98.81,73.69C98.81,75.65 100.4,77.24 102.37,77.24ZM102.37,80.8C106.3,80.8 109.49,77.62 109.49,73.69C109.49,69.75 106.3,66.57 102.37,66.57C98.44,66.57 95.25,69.75 95.25,73.69C95.25,77.62 98.44,80.8 102.37,80.8Z"/>
<path android:fillColor="#ffffff" android:fillType="evenOdd" android:pathData="M116.61,57.77C120.98,61.68 123.73,67.36 123.73,73.69C123.73,85.48 114.16,95.04 102.37,95.04C90.57,95.04 81.01,85.48 81.01,73.69C81.01,67.36 83.76,61.68 88.13,57.77V52.33C88.13,44.46 94.5,38.09 102.37,38.09C110.23,38.09 116.61,44.46 116.61,52.33V57.77ZM92.58,54.7C95.51,53.18 98.84,52.33 102.37,52.33C105.9,52.33 109.22,53.18 112.16,54.7V52.33C112.16,46.92 107.78,42.54 102.37,42.54C96.96,42.54 92.58,46.92 92.58,52.33V54.7ZM120.17,73.69C120.17,83.51 112.2,91.48 102.37,91.48C92.54,91.48 84.57,83.51 84.57,73.69C84.57,63.86 92.54,55.89 102.37,55.89C112.2,55.89 120.17,63.86 120.17,73.69Z"/>
</group>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M115.47,34.1V15.2H115.76V34.1H115.47Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M123.54,24.88L107.69,24.84L107.69,24.55L123.54,24.59L123.54,24.88Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M118.79,28.04L112.17,21.49L112.37,21.28L119,27.84L118.79,28.04Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M112.37,28.04L119,21.49L118.79,21.28L112.17,27.84L112.37,28.04Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M137.74,78.54V65.77H138.03V78.54H137.74Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M143.19,72.3L132.44,72.28L132.44,71.99L143.19,72.01L143.19,72.3Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M66.64,91.05V82.53H66.93V91.05H66.64Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M70.23,86.94L63.24,86.92L63.25,86.63L70.23,86.65L70.23,86.94Z"/>
<path android:fillColor="#212529" android:pathData="M95.76,27.98C95.76,28.85 95.05,29.56 94.16,29.56C93.28,29.56 92.56,28.85 92.56,27.98C92.56,27.11 93.28,26.4 94.16,26.4C95.05,26.4 95.76,27.11 95.76,27.98ZM141.16,53.26C141.16,54.13 140.45,54.84 139.56,54.84C138.68,54.84 137.96,54.13 137.96,53.26C137.96,52.39 138.68,51.68 139.56,51.68C140.45,51.68 141.16,52.39 141.16,53.26ZM75.77,95.18C75.77,96.05 75.06,96.76 74.17,96.76C73.29,96.76 72.58,96.05 72.58,95.18C72.58,94.3 73.29,93.59 74.17,93.59C75.06,93.59 75.77,94.3 75.77,95.18Z" android:strokeColor="#212529" android:strokeWidth="0.563343"/>
<path android:fillColor="#212529" android:pathData="M57.19,118.34H146.21V134.92C146.21,135.95 145.39,136.77 144.36,136.77H59.04C58.02,136.77 57.19,135.95 57.19,134.92V118.34Z"/>
<path android:fillColor="#FF6A75" android:fillType="evenOdd" android:pathData="M145.93,118.63H57.48V134.92C57.48,135.79 58.18,136.49 59.04,136.49H144.36C145.23,136.49 145.93,135.79 145.93,134.92V118.63ZM57.19,118.34V134.92C57.19,135.95 58.02,136.77 59.04,136.77H144.36C145.39,136.77 146.21,135.95 146.21,134.92V118.34H57.19Z"/>
<path android:fillColor="#212529" android:pathData="M73.66,101.33C73.66,100.82 74.07,100.41 74.58,100.41H146.21V118.54H73.66V101.33Z"/>
<path android:fillColor="#FF6A75" android:fillType="evenOdd" android:pathData="M145.93,100.7H74.58C74.23,100.7 73.95,100.98 73.95,101.33V118.25H145.93V100.7ZM74.58,100.41C74.07,100.41 73.66,100.82 73.66,101.33V118.54H146.21V100.41H74.58Z"/>
<path android:fillColor="#212529" android:pathData="M89.42,83.57C89.42,83.06 89.83,82.65 90.35,82.65H146.21V100.66H89.42V83.57Z"/>
<path android:fillColor="#FF6A75" android:fillType="evenOdd" android:pathData="M145.93,82.94H90.35C89.99,82.94 89.71,83.22 89.71,83.57V100.37H145.93V82.94ZM90.35,82.65C89.83,82.65 89.42,83.06 89.42,83.57V100.66H146.21V82.65H90.35Z"/>
<path android:fillColor="#FF6A75" android:pathData="M129.31,83.04H146.21V134.37C146.21,135.72 145.42,136.77 144.1,136.51H95.5V118.33H112.4V100.42H129.31V83.04Z"/>
<path android:fillColor="#212529" android:fillType="evenOdd" android:pathData="M90.6,82.93L146.23,82.8L146.23,83.09L90.6,83.22L90.6,82.93Z"/>
</group>
</vector>
File added
......@@ -53,7 +53,7 @@
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_marginStart="16dp"
android:layout_marginTop="18dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="32dp"
android:clickable="false"
android:focusable="false"
......@@ -128,6 +128,13 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.compose.ui.platform.ComposeView
android:id="@+id/composeYec2024"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/sessionControlRecyclerView"
android:layout_width="match_parent"
......
......@@ -348,4 +348,9 @@
<color name="configure_connection_button_white">#E1E0E7</color>
<color name="warning_yellow">#FFA436</color>
<!-- 2024 YEC -->
<color name="YEC_2024_speak_purple">#D898FA</color>
<color name="YEC_2024_browse_green">#C1ED75</color>
<color name="YEC_2024_search_red">#FF6A75</color>
</resources>
......@@ -394,4 +394,5 @@
<string name="pref_key_tor_network_settings_bridges_enabled">pref_key_tor_network_settings_bridges_enabled</string>
<string name="pref_key_spoof_english" translatable="false">pref_key_spoof_english</string>
<string name="pref_key_yec_style_index" translatable="false">pref_key_yec_style_index</string>
</resources>
......@@ -145,4 +145,26 @@
<string name="connection_assist_final_error_troubleshoot_connection_link">troubleshooting your connection</string>
<!-- Connection assist. -->
<string name="connection_assist_final_error_learn_more_link">Learn more</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_right_to_speak">You have a right to SPEAK without uninvited listeners.</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_right_to_BROWSE">You have a right to BROWSE without being watched.</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_right_to_SEARCH">You have a right to SEARCH without being followed.</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_donation_encouragement">Join the thousands of Tor supporters building an internet powered by privacy. Make a donation today.</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_donation_match_text">Through December 31, your gift will be matched, up to $300,000!</string>
<!-- 2024 YEC. %1$s is the app name "Tor Browser". Since this will only ever show on release, it will always be "Tor Browser" (and not "Tor Browser Alpha" for instance) -->
<string name="YEC_2024_tor_browser_for_android_will_always_be_free_no_donation_required">%1$s for Android will always be free to use—no donation is required to use this app.</string>
<!-- 2024 YEC. Accessible name for the "X" button. -->
<string name="YEC_2024_close">Close</string>
<!-- 2024 YEC. -->
<string name="YEC_2024_donate_now">Donate now</string>
</resources>
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#Thu Sep 26 12:58:11 MDT 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip
# this is the network timeout default value in ms.
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment