Source added

This commit is contained in:
Fr4nz D13trich 2025-11-20 09:26:33 +01:00
parent b2864b500e
commit ba28ca859e
8352 changed files with 1487182 additions and 1 deletions

View file

@ -0,0 +1,17 @@
plugins {
id("signal-sample-app")
alias(libs.plugins.compose.compiler)
}
android {
namespace = "org.signal.donations.app"
defaultConfig {
applicationId = "org.signal.donations.app"
}
}
dependencies {
implementation(project(":donations"))
implementation(project(":core-util"))
}

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.DeviceTransferTest">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
</application>
</manifest>

View file

@ -0,0 +1,93 @@
package org.signal.donations.app;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.wallet.PaymentData;
import com.google.android.gms.wallet.WalletConstants;
import org.signal.core.util.logging.Log;
import org.signal.core.util.money.FiatMoney;
import org.signal.donations.GooglePayApi;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Locale;
import io.reactivex.rxjava3.disposables.Disposable;
public class MainActivity extends AppCompatActivity implements GooglePayApi.PaymentRequestCallback {
private static final String TAG = Log.tag(MainActivity.class);
private View donateButton;
private GooglePayApi payApi;
private Disposable isReadyToPayDisposable;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
donateButton = findViewById(R.id.donate_with_googlepay);
donateButton.setVisibility(View.GONE);
donateButton.setOnClickListener(v -> requestPayment());
payApi = new GooglePayApi(this, TestUtil.INSTANCE, new GooglePayApi.Configuration(WalletConstants.ENVIRONMENT_TEST));
isReadyToPayDisposable = payApi.queryIsReadyToPay().subscribe(this::presentGooglePayButton, this::presentException);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
payApi.onActivityResult(requestCode, resultCode, data, 1, this);
}
@Override
protected void onDestroy() {
isReadyToPayDisposable.dispose();
super.onDestroy();
}
private void presentGooglePayButton() {
Log.d(TAG, "Pay is available, displaying button");
donateButton.setVisibility(View.VISIBLE);
}
private void presentException(@NonNull Throwable throwable) {
Log.w(TAG, "Could not display pay button", throwable);
Toast.makeText(this, "Could not display pay button", Toast.LENGTH_LONG).show();
}
private void requestPayment() {
donateButton.setClickable(false);
payApi.requestPayment(new FiatMoney(BigDecimal.valueOf(4.00), Currency.getInstance(Locale.getDefault())), "Test Purchase", 1);
}
@Override
public void onSuccess(PaymentData paymentData) {
Toast.makeText(this, "SUCCESS", Toast.LENGTH_SHORT).show();
donateButton.setClickable(true);
}
@Override
public void onError(@NonNull GooglePayApi.GooglePayException googlePayException) {
Toast.makeText(this, "ERROR", Toast.LENGTH_SHORT).show();
donateButton.setClickable(true);
}
@Override
public void onCancelled() {
Toast.makeText(this, "CANCELLED", Toast.LENGTH_SHORT).show();
donateButton.setClickable(true);
}
}

View file

@ -0,0 +1,21 @@
package org.signal.donations.app
import org.signal.donations.GooglePayApi
object TestUtil : GooglePayApi.Gateway {
override fun getTokenizationSpecificationParameters(): Map<String, String> {
return mapOf(
"gateway" to "example",
"gatewayMerchantId" to "exampleMerchantId"
)
}
override val allowedCardNetworks: List<String> = listOf(
"AMEX",
"DISCOVER",
"INTERAC",
"JCB",
"MASTERCARD",
"VISA"
)
}

View file

@ -0,0 +1,31 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:fillColor="#FF000000"
android:pathData="M14.7,5.3A6.7,6.7 0,1 0,10 16.7a6.7,6.7 0,0 0,6.4 -5H14.7A5,5 0,1 1,10 5a4.9,4.9 0,0 1,3.5 1.5L10.8,9.2h5.9V3.3Z"/>
</vector>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<include
android:id="@+id/donate_with_googlepay"
layout="@layout/donate_with_googlepay_button" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon
xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.DeviceTransferTest" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>

View file

@ -0,0 +1,3 @@
<resources>
<string name="app_name">DonationsTest</string>
</resources>

View file

@ -0,0 +1,16 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.DeviceTransferTest" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>

View file

@ -0,0 +1,31 @@
plugins {
id("signal-library")
id("kotlin-parcelize")
}
android {
namespace = "org.signal.donations"
buildFeatures {
buildConfig = true
}
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation(project(":core-util"))
implementation(libs.kotlin.reflect)
implementation(libs.jackson.module.kotlin)
implementation(libs.jackson.core)
testImplementation(testLibs.robolectric.robolectric) {
exclude(group = "com.google.protobuf", module = "protobuf-java")
}
api(libs.google.play.services.wallet)
api(libs.square.okhttp3)
}

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
</manifest>

View file

@ -0,0 +1,15 @@
package org.signal.donations
import org.json.JSONObject
/**
* Stripe payment source based off a manually entered credit card.
*/
class CreditCardPaymentSource(
private val payload: JSONObject
) : PaymentSource {
override val type = PaymentSourceType.Stripe.CreditCard
override fun parameterize(): JSONObject = payload
override fun getTokenId(): String = parameterize().getString("id")
override fun email(): String? = null
}

View file

@ -0,0 +1,221 @@
package org.signal.donations
import android.app.Activity
import android.content.Context
import android.content.Intent
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.tasks.Task
import com.google.android.gms.wallet.AutoResolveHelper
import com.google.android.gms.wallet.IsReadyToPayRequest
import com.google.android.gms.wallet.PaymentData
import com.google.android.gms.wallet.PaymentDataRequest
import com.google.android.gms.wallet.PaymentsClient
import com.google.android.gms.wallet.Wallet
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import org.signal.core.util.logging.Log
import org.signal.core.util.money.FiatMoney
import java.util.Locale
/**
* Entrypoint for Google Pay APIs
*
* @param activity The activity the Pay Client will attach itself to
* @param gateway The payment gateway (Such as Stripe)
*/
class GooglePayApi(
private val activity: Activity,
private val gateway: Gateway,
private val configuration: Configuration
) {
private val paymentsClient: PaymentsClient
init {
val walletOptions = Wallet.WalletOptions.Builder()
.setEnvironment(configuration.walletEnvironment)
.build()
paymentsClient = Wallet.getPaymentsClient(activity, walletOptions)
}
fun queryIsReadyToPay(): Completable {
return Companion.queryIsReadyToPay(activity, gateway, configuration)
}
/**
* Launches the Google Pay sheet via an Activity intent. It is up to the caller to pass
* through the activity result to onActivityResult.
*/
fun requestPayment(price: FiatMoney, label: String, requestCode: Int) {
val paymentDataRequest = getPaymentDataRequest(price, label)
val request = PaymentDataRequest.fromJson(paymentDataRequest.toString())
AutoResolveHelper.resolveTask(paymentsClient.loadPaymentData(request), activity, requestCode)
}
/**
* Checks the activity result for payment data and fires off the corresponding callback. Does nothing if
* the request code is not the expected request code.
*/
fun onActivityResult(
requestCode: Int,
resultCode: Int,
data: Intent?,
expectedRequestCode: Int,
paymentRequestCallback: PaymentRequestCallback
) {
if (requestCode != expectedRequestCode) {
return
}
when (resultCode) {
Activity.RESULT_OK -> {
data?.let { intent ->
PaymentData.getFromIntent(intent)?.let { paymentRequestCallback.onSuccess(it) }
} ?: paymentRequestCallback.onError(GooglePayException("No data returned from Google Pay"))
}
Activity.RESULT_CANCELED -> paymentRequestCallback.onCancelled()
AutoResolveHelper.RESULT_ERROR -> {
AutoResolveHelper.getStatusFromIntent(data)?.let {
Log.w(TAG, "loadPaymentData failed with error code ${it.statusCode}: ${it.statusMessage}")
paymentRequestCallback.onError(GooglePayException(it.statusMessage))
}
}
}
}
private fun getPaymentDataRequest(price: FiatMoney, label: String): JSONObject {
return baseRequest.apply {
put("merchantInfo", merchantInfo)
put("allowedPaymentMethods", JSONArray().put(cardPaymentMethod()))
put("transactionInfo", getTransactionInfo(price, label))
// TODO Donation receipts
put("emailRequired", false)
put("shippingAddressRequired", false)
}
}
private fun getTransactionInfo(price: FiatMoney, label: String): JSONObject {
return JSONObject().apply {
put("currencyCode", price.currency.currencyCode)
put("countryCode", "US")
put("totalPriceStatus", "FINAL")
put("totalPrice", price.getDefaultPrecisionString(Locale.US))
put("totalPriceLabel", label)
put("checkoutOption", "COMPLETE_IMMEDIATE_PURCHASE")
}
}
private fun gatewayTokenizationSpecification(): JSONObject {
return JSONObject().apply {
put("type", "PAYMENT_GATEWAY")
put("parameters", JSONObject(gateway.getTokenizationSpecificationParameters()))
}
}
private fun cardPaymentMethod(): JSONObject {
val cardPaymentMethod = baseCardPaymentMethod(gateway)
cardPaymentMethod.put("tokenizationSpecification", gatewayTokenizationSpecification())
return cardPaymentMethod
}
companion object {
private val TAG = Log.tag(GooglePayApi::class.java)
private const val MERCHANT_NAME = "Signal"
private val merchantInfo: JSONObject =
JSONObject().put("merchantName", MERCHANT_NAME)
private val allowedCardAuthMethods = JSONArray(listOf("PAN_ONLY", "CRYPTOGRAM_3DS"))
private val baseRequest = JSONObject().apply {
put("apiVersion", 2)
put("apiVersionMinor", 0)
}
/**
* Query the Google Pay API to determine whether or not the device has Google Pay available and ready.
*
* @return A completable which, when it completes, indicates that Google Pay is available, or when it errors, indicates it is not.
*/
@JvmStatic
fun queryIsReadyToPay(
context: Context,
gateway: Gateway,
configuration: Configuration
): Completable = Completable.create { emitter ->
val walletOptions = Wallet.WalletOptions.Builder()
.setEnvironment(configuration.walletEnvironment)
.build()
val paymentsClient = Wallet.getPaymentsClient(context, walletOptions)
try {
val request: IsReadyToPayRequest = buildIsReadyToPayRequest(gateway)
val task: Task<Boolean> = paymentsClient.isReadyToPay(request)
task.addOnCompleteListener { completedTask ->
if (!emitter.isDisposed) {
try {
val result: Boolean = completedTask.getResult(ApiException::class.java) ?: false
if (result) {
emitter.onComplete()
} else {
emitter.onError(Exception("Google Pay is not available."))
}
} catch (e: ApiException) {
emitter.onError(e)
}
}
}
} catch (e: JSONException) {
emitter.onError(e)
}
}.subscribeOn(Schedulers.io())
private fun buildIsReadyToPayRequest(gateway: Gateway): IsReadyToPayRequest {
val isReadyToPayJson: JSONObject = baseRequest.apply {
put("allowedPaymentMethods", JSONArray().put(baseCardPaymentMethod(gateway)))
}
return IsReadyToPayRequest.fromJson(isReadyToPayJson.toString())
}
private fun baseCardPaymentMethod(gateway: Gateway): JSONObject {
return JSONObject().apply {
val parameters = JSONObject().apply {
put("allowedAuthMethods", allowedCardAuthMethods)
put("allowedCardNetworks", JSONArray(gateway.allowedCardNetworks))
put("billingAddressRequired", false)
}
put("type", "CARD")
put("parameters", parameters)
}
}
}
/**
* @param walletEnvironment From WalletConstants
*/
data class Configuration(
val walletEnvironment: Int
)
interface Gateway {
fun getTokenizationSpecificationParameters(): Map<String, String>
val allowedCardNetworks: List<String>
}
interface PaymentRequestCallback {
fun onSuccess(paymentData: PaymentData)
fun onError(googlePayException: GooglePayException)
fun onCancelled()
}
class GooglePayException(message: String?) : Exception(message)
}

View file

@ -0,0 +1,28 @@
package org.signal.donations
import com.google.android.gms.wallet.PaymentData
import org.json.JSONObject
class GooglePayPaymentSource(private val paymentData: PaymentData) : PaymentSource {
override val type = PaymentSourceType.Stripe.GooglePay
override fun parameterize(): JSONObject {
val jsonData = JSONObject(paymentData.toJson())
val paymentMethodJsonData = jsonData.getJSONObject("paymentMethodData")
return paymentMethodJsonData.getJSONObject("tokenizationData")
}
override fun getTokenId(): String {
val serializedToken = parameterize().getString("token").replace("\n", "")
return JSONObject(serializedToken).getString("id")
}
override fun email(): String? {
val jsonData = JSONObject(paymentData.toJson())
return if (jsonData.has("email")) {
jsonData.getString("email")
} else {
null
}
}
}

View file

@ -0,0 +1,13 @@
/*
* Copyright 2023 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
class IDEALPaymentSource(
val idealData: StripeApi.IDEALData
) : PaymentSource {
override val type: PaymentSourceType = PaymentSourceType.Stripe.IDEAL
override fun email(): String? = null
}

View file

@ -0,0 +1,41 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
import org.signal.core.util.Serializer
enum class InAppPaymentType(val code: Int, val recurring: Boolean) {
/**
* Used explicitly for mapping DonationErrorSource. Writing this value
* into an InAppPayment is an error.
*/
UNKNOWN(-1, false),
/**
* This payment is for a gift badge
*/
ONE_TIME_GIFT(0, false),
/**
* This payment is for a one-time donation
*/
ONE_TIME_DONATION(1, false),
/**
* This payment is for a recurring donation
*/
RECURRING_DONATION(2, true),
/**
* This payment is for a recurring backup payment
*/
RECURRING_BACKUP(3, true);
companion object : Serializer<InAppPaymentType, Int> {
override fun serialize(data: InAppPaymentType): Int = data.code
override fun deserialize(input: Int): InAppPaymentType = entries.first { it.code == input }
}
}

View file

@ -0,0 +1,10 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
class PayPalPaymentSource : PaymentSource {
override val type: PaymentSourceType = PaymentSourceType.PayPal
}

View file

@ -0,0 +1,19 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
import org.json.JSONObject
/**
* A PaymentSource, being something that can be used to perform a
* transaction. See [PaymentSourceType].
*/
interface PaymentSource {
val type: PaymentSourceType
fun parameterize(): JSONObject = error("Unsupported by $type.")
fun getTokenId(): String = error("Unsupported by $type.")
fun email(): String? = error("Unsupported by $type.")
}

View file

@ -0,0 +1,72 @@
package org.signal.donations
sealed class PaymentSourceType {
abstract val code: String
open val isBankTransfer: Boolean = false
data object Unknown : PaymentSourceType() {
override val code: String = Codes.UNKNOWN.code
}
data object GooglePlayBilling : PaymentSourceType() {
override val code: String = Codes.GOOGLE_PLAY_BILLING.code
}
data object PayPal : PaymentSourceType() {
override val code: String = Codes.PAY_PAL.code
}
sealed class Stripe(
override val code: String,
val paymentMethod: String,
override val isBankTransfer: Boolean
) : PaymentSourceType() {
/**
* Credit card should happen instantaneously but can take up to 1 day to process.
*/
data object CreditCard : Stripe(Codes.CREDIT_CARD.code, "CARD", false)
/**
* Google Pay should happen instantaneously but can take up to 1 day to process.
*/
data object GooglePay : Stripe(Codes.GOOGLE_PAY.code, "CARD", false)
/**
* SEPA Debits can take up to 14 bank days to process.
*/
data object SEPADebit : Stripe(Codes.SEPA_DEBIT.code, "SEPA_DEBIT", true)
/**
* iDEAL Bank transfers happen instantaneously for 1:1 transactions, but do not do so for subscriptions, as Stripe
* will utilize SEPA under the hood.
*/
data object IDEAL : Stripe(Codes.IDEAL.code, "IDEAL", true)
fun hasDeclineCodeSupport(): Boolean = !this.isBankTransfer
fun hasFailureCodeSupport(): Boolean = this.isBankTransfer
}
private enum class Codes(val code: String) {
UNKNOWN("unknown"),
PAY_PAL("paypal"),
CREDIT_CARD("credit_card"),
GOOGLE_PAY("google_pay"),
SEPA_DEBIT("sepa_debit"),
IDEAL("ideal"),
GOOGLE_PLAY_BILLING("google_play_billing")
}
companion object {
fun fromCode(code: String?): PaymentSourceType {
return when (Codes.entries.firstOrNull { it.code == code } ?: Codes.UNKNOWN) {
Codes.UNKNOWN -> Unknown
Codes.PAY_PAL -> PayPal
Codes.CREDIT_CARD -> Stripe.CreditCard
Codes.GOOGLE_PAY -> Stripe.GooglePay
Codes.SEPA_DEBIT -> Stripe.SEPADebit
Codes.IDEAL -> Stripe.IDEAL
Codes.GOOGLE_PLAY_BILLING -> GooglePlayBilling
}
}
}
}

View file

@ -0,0 +1,27 @@
package org.signal.donations
import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper
import org.signal.core.util.logging.Log
import java.io.IOException
internal object ResponseFieldLogger {
private val TAG = Log.tag(ResponseFieldLogger::class.java)
fun logFields(objectMapper: ObjectMapper, json: String?) {
if (json == null) {
Log.w(TAG, "Response body was null. No keys to print.")
return
}
try {
val mapType = object : TypeReference<Map<String, Any>>() {}
val map = objectMapper.readValue(json, mapType)
Log.w(TAG, "Map keys (${map.size}): ${map.keys.joinToString()}", true)
} catch (e: IOException) {
Log.w(TAG, "Failed to produce key map.", true)
}
}
}

View file

@ -0,0 +1,13 @@
/*
* Copyright 2023 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
class SEPADebitPaymentSource(
val sepaDebitData: StripeApi.SEPADebitData
) : PaymentSource {
override val type: PaymentSourceType = PaymentSourceType.Stripe.SEPADebit
override fun email(): String? = null
}

View file

@ -0,0 +1,634 @@
package org.signal.donations
import android.net.Uri
import android.os.Parcelable
import androidx.annotation.WorkerThread
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException
import com.fasterxml.jackson.module.kotlin.jsonMapper
import com.fasterxml.jackson.module.kotlin.kotlinModule
import com.fasterxml.jackson.module.kotlin.readValue
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.parcelize.Parcelize
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import okio.ByteString.Companion.encodeUtf8
import org.json.JSONObject
import org.signal.core.util.logging.Log
import org.signal.core.util.money.FiatMoney
import org.signal.donations.json.StripePaymentIntent
import org.signal.donations.json.StripeSetupIntent
import java.math.BigDecimal
import java.util.Locale
class StripeApi(
private val configuration: Configuration,
private val paymentIntentFetcher: PaymentIntentFetcher,
private val setupIntentHelper: SetupIntentHelper,
private val okHttpClient: OkHttpClient
) {
private val objectMapper = jsonMapper {
addModule(kotlinModule())
}
companion object {
private val TAG = Log.tag(StripeApi::class.java)
private val CARD_NUMBER_KEY = "card[number]"
private val CARD_MONTH_KEY = "card[exp_month]"
private val CARD_YEAR_KEY = "card[exp_year]"
private val CARD_CVC_KEY = "card[cvc]"
const val RETURN_URL_SCHEME = "sgnlpay"
private const val RETURN_URL_3DS = "$RETURN_URL_SCHEME://3DS"
const val RETURN_URL_IDEAL = "https://signaldonations.org/stripe/return/ideal"
}
sealed class CreatePaymentIntentResult {
data class AmountIsTooSmall(val amount: FiatMoney) : CreatePaymentIntentResult()
data class AmountIsTooLarge(val amount: FiatMoney) : CreatePaymentIntentResult()
data class CurrencyIsNotSupported(val currencyCode: String) : CreatePaymentIntentResult()
data class Success(val paymentIntent: StripeIntentAccessor) : CreatePaymentIntentResult()
}
data class CreateSetupIntentResult(val setupIntent: StripeIntentAccessor)
sealed class CreatePaymentSourceFromCardDataResult {
data class Success(val paymentSource: PaymentSource) : CreatePaymentSourceFromCardDataResult()
data class Failure(val reason: Throwable) : CreatePaymentSourceFromCardDataResult()
}
@WorkerThread
fun createSetupIntent(inAppPaymentType: InAppPaymentType, sourceType: PaymentSourceType.Stripe): CreateSetupIntentResult {
return setupIntentHelper
.fetchSetupIntent(inAppPaymentType, sourceType)
.let { CreateSetupIntentResult(it) }
}
@WorkerThread
fun confirmSetupIntent(paymentSource: PaymentSource, setupIntent: StripeIntentAccessor): Secure3DSAction {
val paymentMethodId = createPaymentMethodAndParseId(paymentSource)
val parameters = mutableMapOf(
"client_secret" to setupIntent.intentClientSecret,
"payment_method" to paymentMethodId,
"return_url" to if (paymentSource is IDEALPaymentSource) RETURN_URL_IDEAL else RETURN_URL_3DS
)
if (paymentSource.type.isBankTransfer) {
parameters["mandate_data[customer_acceptance][type]"] = "online"
parameters["mandate_data[customer_acceptance][online][infer_from_client]"] = "true"
}
val (nextActionUri, returnUri) = postForm(StripePaths.getSetupIntentConfirmationPath(setupIntent.intentId), parameters).use { response ->
getNextAction(response)
}
return Secure3DSAction.from(nextActionUri, returnUri, setupIntent, paymentMethodId)
}
@WorkerThread
fun createPaymentIntent(price: FiatMoney, level: Long, sourceType: PaymentSourceType.Stripe): CreatePaymentIntentResult {
@Suppress("CascadeIf")
return if (Validation.isAmountTooSmall(price)) {
CreatePaymentIntentResult.AmountIsTooSmall(price)
} else if (Validation.isAmountTooLarge(price)) {
CreatePaymentIntentResult.AmountIsTooLarge(price)
} else {
if (!Validation.supportedCurrencyCodes.contains(price.currency.currencyCode.uppercase(Locale.ROOT))) {
CreatePaymentIntentResult.CurrencyIsNotSupported(price.currency.currencyCode)
} else {
paymentIntentFetcher
.fetchPaymentIntent(price, level, sourceType)
.let { CreatePaymentIntentResult.Success(it) }
}
}
}
/**
* Confirm a PaymentIntent
*
* This method will create a PaymentMethod with the given PaymentSource and then confirm the
* PaymentIntent.
*
* @return A Secure3DSAction
*/
@WorkerThread
fun confirmPaymentIntent(paymentSource: PaymentSource, paymentIntent: StripeIntentAccessor): Secure3DSAction {
val paymentMethodId = createPaymentMethodAndParseId(paymentSource)
val parameters = mutableMapOf(
"client_secret" to paymentIntent.intentClientSecret,
"payment_method" to paymentMethodId,
"return_url" to if (paymentSource is IDEALPaymentSource) RETURN_URL_IDEAL else RETURN_URL_3DS
)
if (paymentSource.type.isBankTransfer) {
parameters["mandate_data[customer_acceptance][type]"] = "online"
parameters["mandate_data[customer_acceptance][online][infer_from_client]"] = "true"
}
val (nextActionUri, returnUri) = postForm(StripePaths.getPaymentIntentConfirmationPath(paymentIntent.intentId), parameters).use { response ->
getNextAction(response)
}
return Secure3DSAction.from(nextActionUri, returnUri, paymentIntent)
}
/**
* Retrieve the setup intent pointed to by the given accessor.
*/
fun getSetupIntent(stripeIntentAccessor: StripeIntentAccessor): StripeSetupIntent {
return when (stripeIntentAccessor.objectType) {
StripeIntentAccessor.ObjectType.SETUP_INTENT -> get(StripePaths.getSetupIntentPath(stripeIntentAccessor.intentId, stripeIntentAccessor.intentClientSecret)).use {
val body = it.body?.string()
try {
objectMapper.readValue(body!!)
} catch (e: InvalidDefinitionException) {
Log.w(TAG, "Failed to parse JSON for StripeSetupIntent.")
ResponseFieldLogger.logFields(objectMapper, body)
throw StripeError.FailedToParseSetupIntentResponseError(e)
} catch (e: Exception) {
Log.w(TAG, "Failed to read value from JSON.", e, true)
throw StripeError.FailedToParseSetupIntentResponseError(null)
}
}
else -> error("Unsupported type")
}
}
/**
* Retrieve the payment intent pointed to by the given accessor.
*/
fun getPaymentIntent(stripeIntentAccessor: StripeIntentAccessor): StripePaymentIntent {
return when (stripeIntentAccessor.objectType) {
StripeIntentAccessor.ObjectType.PAYMENT_INTENT -> get(StripePaths.getPaymentIntentPath(stripeIntentAccessor.intentId, stripeIntentAccessor.intentClientSecret)).use {
val body = it.body?.string()
try {
Log.d(TAG, "Reading StripePaymentIntent from JSON")
objectMapper.readValue(body!!)
} catch (e: InvalidDefinitionException) {
Log.w(TAG, "Failed to parse JSON for StripePaymentIntent.")
ResponseFieldLogger.logFields(objectMapper, body)
throw StripeError.FailedToParsePaymentIntentResponseError(e)
} catch (e: Exception) {
Log.w(TAG, "Failed to read value from JSON.", e, true)
throw StripeError.FailedToParsePaymentIntentResponseError(null)
}
}
else -> error("Unsupported type")
}
}
private fun getNextAction(response: Response): Pair<Uri, Uri> {
val responseBody = response.body?.string()
val bodyJson = responseBody?.let { JSONObject(it) }
return if (bodyJson?.has("next_action") == true && !bodyJson.isNull("next_action")) {
val nextAction = bodyJson.getJSONObject("next_action")
if (BuildConfig.DEBUG) {
Log.d(TAG, "[getNextAction] Next Action found:\n$nextAction")
}
val redirectToUrl = nextAction.getJSONObject("redirect_to_url")
val nextActionUri = redirectToUrl.getString("url")
val returnUri = redirectToUrl.getString("return_url")
Uri.parse(nextActionUri) to Uri.parse(returnUri)
} else {
Uri.EMPTY to Uri.EMPTY
}
}
fun createPaymentSourceFromCardData(cardData: CardData): Single<CreatePaymentSourceFromCardDataResult> {
return Single.fromCallable<CreatePaymentSourceFromCardDataResult> {
CreatePaymentSourceFromCardDataResult.Success(createPaymentSourceFromCardDataSync(cardData))
}.onErrorReturn {
CreatePaymentSourceFromCardDataResult.Failure(it)
}.subscribeOn(Schedulers.io())
}
fun createPaymentSourceFromSEPADebitData(sepaDebitData: SEPADebitData): Single<PaymentSource> {
return Single.just(SEPADebitPaymentSource(sepaDebitData))
}
fun createPaymentSourceFromIDEALData(idealData: IDEALData): Single<PaymentSource> {
return Single.just(IDEALPaymentSource(idealData))
}
@WorkerThread
private fun createPaymentSourceFromCardDataSync(cardData: CardData): PaymentSource {
val parameters: Map<String, String> = mutableMapOf(
CARD_NUMBER_KEY to cardData.number,
CARD_MONTH_KEY to cardData.month.toString(),
CARD_YEAR_KEY to cardData.year.toString(),
CARD_CVC_KEY to cardData.cvc
)
postForm(StripePaths.getTokensPath(), parameters).use { response ->
val body = response.body ?: throw StripeError.FailedToCreatePaymentSourceFromCardData
return CreditCardPaymentSource(JSONObject(body.string()))
}
}
private fun createPaymentMethodAndParseId(paymentSource: PaymentSource): String {
val paymentMethodResponse = when (paymentSource) {
is SEPADebitPaymentSource -> createPaymentMethodForSEPADebit(paymentSource)
is IDEALPaymentSource -> createPaymentMethodForIDEAL(paymentSource)
is PayPalPaymentSource -> error("Stripe cannot interact with PayPal payment source.")
else -> createPaymentMethodForToken(paymentSource)
}
return paymentMethodResponse.use { response ->
val body = response.body ?: throw StripeError.FailedToParsePaymentMethodResponseError
val paymentMethodObject = body.string().replace("\n", "").let { JSONObject(it) }
paymentMethodObject.getString("id")
}
}
private fun createPaymentMethodForSEPADebit(paymentSource: SEPADebitPaymentSource): Response {
val parameters = mutableMapOf(
"type" to "sepa_debit",
"sepa_debit[iban]" to paymentSource.sepaDebitData.iban,
"billing_details[email]" to paymentSource.sepaDebitData.email,
"billing_details[name]" to paymentSource.sepaDebitData.name
)
return postForm(StripePaths.getPaymentMethodsPath(), parameters)
}
private fun createPaymentMethodForIDEAL(paymentSource: IDEALPaymentSource): Response {
val parameters = mutableMapOf(
"type" to "ideal",
"billing_details[email]" to paymentSource.idealData.email,
"billing_details[name]" to paymentSource.idealData.name
)
return postForm(StripePaths.getPaymentMethodsPath(), parameters)
}
private fun createPaymentMethodForToken(paymentSource: PaymentSource): Response {
val tokenId = paymentSource.getTokenId()
val parameters = mutableMapOf(
"card[token]" to tokenId,
"type" to "card"
)
return postForm(StripePaths.getPaymentMethodsPath(), parameters)
}
private fun get(endpoint: String): Response {
val request = getRequestBuilder(endpoint).get().build()
val response = okHttpClient.newCall(request).execute()
return checkResponseForErrors(response)
}
private fun postForm(endpoint: String, parameters: Map<String, String>): Response {
val formBodyBuilder = FormBody.Builder()
parameters.forEach { (k, v) ->
formBodyBuilder.add(k, v)
}
val request = getRequestBuilder(endpoint)
.post(formBodyBuilder.build())
.build()
val response = okHttpClient.newCall(request).execute()
return checkResponseForErrors(response)
}
private fun getRequestBuilder(endpoint: String): Request.Builder {
return Request.Builder()
.url("${configuration.baseUrl}/$endpoint")
.addHeader("Authorization", "Basic ${"${configuration.publishableKey}:".encodeUtf8().base64()}")
}
private fun checkResponseForErrors(response: Response): Response {
if (response.isSuccessful) {
return response
} else {
val body = response.body?.string()
val errorCode = parseErrorCode(body)
val declineCode = parseDeclineCode(body) ?: StripeDeclineCode.getFromCode(errorCode)
val failureCode = parseFailureCode(body) ?: StripeFailureCode.getFromCode(errorCode)
if (failureCode is StripeFailureCode.Known) {
throw StripeError.PostError.Failed(response.code, failureCode)
} else if (declineCode is StripeDeclineCode.Known) {
throw StripeError.PostError.Declined(response.code, declineCode)
} else {
throw StripeError.PostError.Generic(response.code, errorCode)
}
}
}
private fun parseErrorCode(body: String?): String? {
if (body == null) {
Log.d(TAG, "parseErrorCode: No body.", true)
return null
}
return try {
JSONObject(body).getJSONObject("error").getString("code")
} catch (e: Exception) {
Log.d(TAG, "parseErrorCode: Failed to parse error.", e, true)
null
}
}
private fun parseDeclineCode(body: String?): StripeDeclineCode? {
if (body == null) {
Log.d(TAG, "parseDeclineCode: No body.", true)
return null
}
return try {
StripeDeclineCode.getFromCode(JSONObject(body).getJSONObject("error").getString("decline_code"))
} catch (e: Exception) {
Log.d(TAG, "parseDeclineCode: Failed to parse decline code.", null, true)
null
}
}
private fun parseFailureCode(body: String?): StripeFailureCode? {
if (body == null) {
Log.d(TAG, "parseFailureCode: No body.", true)
return null
}
return try {
StripeFailureCode.getFromCode(JSONObject(body).getJSONObject("error").getString("failure_code"))
} catch (e: Exception) {
Log.d(TAG, "parseFailureCode: Failed to parse failure code.", null, true)
null
}
}
object Validation {
private val MAX_AMOUNT = BigDecimal(99_999_999)
fun isAmountTooLarge(fiatMoney: FiatMoney): Boolean {
return fiatMoney.minimumUnitPrecisionString.toBigDecimal() > MAX_AMOUNT
}
fun isAmountTooSmall(fiatMoney: FiatMoney): Boolean {
return fiatMoney.minimumUnitPrecisionString.toBigDecimal() < BigDecimal(minimumIntegralChargePerCurrencyCode[fiatMoney.currency.currencyCode] ?: 50)
}
private val minimumIntegralChargePerCurrencyCode: Map<String, Int> = mapOf(
"USD" to 50,
"AED" to 200,
"AUD" to 50,
"BGN" to 100,
"BRL" to 50,
"CAD" to 50,
"CHF" to 50,
"CZK" to 1500,
"DKK" to 250,
"EUR" to 50,
"GBP" to 30,
"HKD" to 400,
"HUF" to 17500,
"INR" to 50,
"JPY" to 50,
"MXN" to 10,
"MYR" to 2,
"NOK" to 300,
"NZD" to 50,
"PLN" to 200,
"RON" to 200,
"SEK" to 300,
"SGD" to 50
)
val supportedCurrencyCodes: List<String> = listOf(
"USD",
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BWP",
"BZD",
"CAD",
"CDF",
"CHF",
"CLP",
"CNY",
"COP",
"CRC",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EGP",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HRK",
"HTG",
"HUF",
"IDR",
"ILS",
"INR",
"ISK",
"JMD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KRW",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRO",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SEK",
"SGD",
"SHP",
"SLL",
"SOS",
"SRD",
"STD",
"SZL",
"THB",
"TJS",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"UYU",
"UZS",
"VND",
"VUV",
"WST",
"XAF",
"XCD",
"XOF",
"XPF",
"YER",
"ZAR",
"ZMW"
)
}
class Gateway(private val configuration: Configuration) : GooglePayApi.Gateway {
override fun getTokenizationSpecificationParameters(): Map<String, String> {
return mapOf(
"gateway" to "stripe",
"stripe:version" to configuration.version,
"stripe:publishableKey" to configuration.publishableKey
)
}
override val allowedCardNetworks: List<String> = listOf(
"AMEX",
"DISCOVER",
"JCB",
"MASTERCARD",
"VISA"
)
}
data class Configuration(
val publishableKey: String,
val baseUrl: String = "https://api.stripe.com/v1",
val version: String = "2018-10-31"
)
interface PaymentIntentFetcher {
@WorkerThread
fun fetchPaymentIntent(
price: FiatMoney,
level: Long,
sourceType: PaymentSourceType.Stripe
): StripeIntentAccessor
}
interface SetupIntentHelper {
@WorkerThread
fun fetchSetupIntent(
inAppPaymentType: InAppPaymentType,
sourceType: PaymentSourceType.Stripe
): StripeIntentAccessor
}
@Parcelize
data class CardData(
val number: String,
val month: Int,
val year: Int,
val cvc: String
) : Parcelable
@Parcelize
data class SEPADebitData(
val iban: String,
val name: String,
val email: String
) : Parcelable
@Parcelize
data class IDEALData(
val name: String,
val email: String
) : Parcelable
sealed interface Secure3DSAction {
data class ConfirmRequired(val uri: Uri, val returnUri: Uri, override val stripeIntentAccessor: StripeIntentAccessor, override val paymentMethodId: String?) : Secure3DSAction
data class NotNeeded(override val paymentMethodId: String?, override val stripeIntentAccessor: StripeIntentAccessor) : Secure3DSAction
val paymentMethodId: String?
val stripeIntentAccessor: StripeIntentAccessor
companion object {
fun from(
uri: Uri,
returnUri: Uri,
stripeIntentAccessor: StripeIntentAccessor,
paymentMethodId: String? = null
): Secure3DSAction {
return if (uri == Uri.EMPTY) {
NotNeeded(paymentMethodId, stripeIntentAccessor)
} else {
ConfirmRequired(uri, returnUri, stripeIntentAccessor, paymentMethodId)
}
}
}
}
}

View file

@ -0,0 +1,65 @@
package org.signal.donations
/**
* Stripe Payment Processor decline codes
*/
sealed class StripeDeclineCode(val rawCode: String) {
data class Known(val code: Code) : StripeDeclineCode(code.code)
data class Unknown(val code: String) : StripeDeclineCode(code)
fun isKnown(): Boolean = this is Known
enum class Code(val code: String) {
AUTHENTICATION_REQUIRED("authentication_required"),
APPROVE_WITH_ID("approve_with_id"),
CALL_ISSUER("call_issuer"),
CARD_NOT_SUPPORTED("card_not_supported"),
CARD_VELOCITY_EXCEEDED("card_velocity_exceeded"),
CURRENCY_NOT_SUPPORTED("currency_not_supported"),
DO_NOT_HONOR("do_not_honor"),
DO_NOT_TRY_AGAIN("do_not_try_again"),
DUPLICATE_TRANSACTION("duplicate_transaction"),
EXPIRED_CARD("expired_card"),
FRAUDULENT("fraudulent"),
GENERIC_DECLINE("generic_decline"),
INCORRECT_NUMBER("incorrect_number"),
INCORRECT_CVC("incorrect_cvc"),
INSUFFICIENT_FUNDS("insufficient_funds"),
INVALID_ACCOUNT("invalid_account"),
INVALID_AMOUNT("invalid_amount"),
INVALID_CVC("invalid_cvc"),
INVALID_EXPIRY_MONTH("invalid_expiry_month"),
INVALID_EXPIRY_YEAR("invalid_expiry_year"),
INVALID_NUMBER("invalid_number"),
ISSUER_NOT_AVAILABLE("issuer_not_available"),
LOST_CARD("lost_card"),
MERCHANT_BLACKLIST("merchant_blacklist"),
NEW_ACCOUNT_INFORMATION_AVAILABLE("new_account_information_available"),
NO_ACTION_TAKEN("no_action_taken"),
NOT_PERMITTED("not_permitted"),
PROCESSING_ERROR("processing_error"),
REENTER_TRANSACTION("reenter_transaction"),
RESTRICTED_CARD("restricted_card"),
REVOCATION_OF_ALL_AUTHORIZATIONS("revocation_of_all_authorizations"),
REVOCATION_OF_AUTHORIZATION("revocation_of_authorization"),
SECURITY_VIOLATION("security_violation"),
SERVICE_NOT_ALLOWED("service_not_allowed"),
STOLEN_CARD("stolen_card"),
STOP_PAYMENT_ORDER("stop_payment_order"),
TRANSACTION_NOT_ALLOWED("transaction_not_allowed"),
TRY_AGAIN_LATER("try_again_later"),
WITHDRAWAL_COUNT_LIMIT_EXCEEDED("withdrawal_count_limit_exceeded")
}
companion object {
fun getFromCode(code: String?): StripeDeclineCode {
if (code == null) {
return Unknown("null")
}
val typedCode: Code? = Code.entries.firstOrNull { it.code == code }
return typedCode?.let { Known(typedCode) } ?: Unknown(code)
}
}
}

View file

@ -0,0 +1,17 @@
package org.signal.donations
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException
sealed class StripeError(message: String) : Exception(message) {
class FailedToParsePaymentIntentResponseError(invalidDefCause: InvalidDefinitionException?) : StripeError("Failed to parse payment intent response: ${invalidDefCause?.type} ${invalidDefCause?.property} ${invalidDefCause?.beanDescription}")
class FailedToParseSetupIntentResponseError(invalidDefCause: InvalidDefinitionException?) : StripeError("Failed to parse setup intent response: ${invalidDefCause?.type} ${invalidDefCause?.property} ${invalidDefCause?.beanDescription}")
object FailedToParsePaymentMethodResponseError : StripeError("Failed to parse payment method response")
object FailedToCreatePaymentSourceFromCardData : StripeError("Failed to create payment source from card data")
sealed class PostError(
override val message: String
) : StripeError(message) {
class Generic(statusCode: Int, val errorCode: String?) : PostError("postForm failed with code: $statusCode errorCode: $errorCode")
class Declined(statusCode: Int, val declineCode: StripeDeclineCode) : PostError("postForm failed with code: $statusCode declineCode: $declineCode")
class Failed(statusCode: Int, val failureCode: StripeFailureCode) : PostError("postForm failed with code: $statusCode failureCode: $failureCode")
}
}

View file

@ -0,0 +1,43 @@
/*
* Copyright 2023 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
/**
* Bank Transfer failure codes, as detailed here:
* https://stripe.com/docs/payments/sepa-debit#failed-payments
*/
sealed class StripeFailureCode(val rawCode: String) {
data class Known(val code: Code) : StripeFailureCode(code.code)
data class Unknown(val code: String) : StripeFailureCode(code)
val isKnown get() = this is Known
enum class Code(val code: String) {
REFER_TO_CUSTOMER("refer_to_customer"),
INSUFFICIENT_FUNDS("insufficient_funds"),
DEBIT_DISPUTED("debit_disputed"),
AUTHORIZATION_REVOKED("authorization_revoked"),
DEBIT_NOT_AUTHORIZED("debit_not_authorized"),
ACCOUNT_CLOSED("account_closed"),
BANK_ACCOUNT_RESTRICTED("bank_account_restricted"),
DEBIT_AUTHORIZATION_NOT_MATCH("debit_authorization_not_match"),
RECIPIENT_DECEASED("recipient_deceased"),
BRANCH_DOES_NOT_EXIST("branch_does_not_exist"),
INCORRECT_ACCOUNT_HOLDER_NAME("incorrect_account_holder_name"),
INVALID_ACCOUNT_NUMBER("invalid_account_number"),
GENERIC_COULD_NOT_PROCESS("generic_could_not_process")
}
companion object {
fun getFromCode(code: String?): StripeFailureCode {
if (code == null) {
return Unknown("null")
}
val typedCode: Code? = Code.entries.firstOrNull { it.code == code }
return typedCode?.let { Known(typedCode) } ?: Unknown(code)
}
}
}

View file

@ -0,0 +1,54 @@
package org.signal.donations
import android.net.Uri
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
* An object which wraps the necessary information to access a SetupIntent or PaymentIntent
* from the Stripe API
*/
@Parcelize
data class StripeIntentAccessor(
val objectType: ObjectType,
val intentId: String,
val intentClientSecret: String
) : Parcelable {
enum class ObjectType {
NONE,
PAYMENT_INTENT,
SETUP_INTENT
}
companion object {
/**
* noActionRequired is a safe default for when there was no 3DS required,
* in order to continue a reactive payment chain.
*/
val NO_ACTION_REQUIRED = StripeIntentAccessor(ObjectType.NONE, "", "")
private const val KEY_PAYMENT_INTENT = "payment_intent"
private const val KEY_PAYMENT_INTENT_CLIENT_SECRET = "payment_intent_client_secret"
private const val KEY_SETUP_INTENT = "setup_intent"
private const val KEY_SETUP_INTENT_CLIENT_SECRET = "setup_intent_client_secret"
fun fromUri(uri: String): StripeIntentAccessor {
val parsedUri = Uri.parse(uri)
return if (parsedUri.queryParameterNames.contains(KEY_PAYMENT_INTENT)) {
StripeIntentAccessor(
ObjectType.PAYMENT_INTENT,
parsedUri.getQueryParameter(KEY_PAYMENT_INTENT)!!,
parsedUri.getQueryParameter(KEY_PAYMENT_INTENT_CLIENT_SECRET)!!
)
} else {
StripeIntentAccessor(
ObjectType.SETUP_INTENT,
parsedUri.getQueryParameter(KEY_SETUP_INTENT)!!,
parsedUri.getQueryParameter(KEY_SETUP_INTENT_CLIENT_SECRET)!!
)
}
}
}
}

View file

@ -0,0 +1,51 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
/**
* Endpoint generation class that assists in ensuring test code utilizes the same
* paths for data access as production code.
*/
object StripePaths {
/**
* Endpoint to retrieve data on the given payment intent
*/
fun getPaymentIntentPath(paymentIntentId: String, clientSecret: String): String {
return "payment_intents/$paymentIntentId?client_secret=$clientSecret"
}
/**
* Endpoint to confirm the given payment intent
*/
fun getPaymentIntentConfirmationPath(paymentIntentId: String): String {
return "payment_intents/$paymentIntentId/confirm"
}
/**
* Endpoint to retrieve data on the given setup intent
*/
fun getSetupIntentPath(setupIntentId: String, clientSecret: String): String {
return "setup_intents/$setupIntentId?client_secret=$clientSecret&expand[0]=latest_attempt"
}
/**
* Endpoint to confirm the given setup intent
*/
fun getSetupIntentConfirmationPath(setupIntentId: String): String {
return "setup_intents/$setupIntentId/confirm"
}
/**
* Endpoint to interact with payment methods
*/
fun getPaymentMethodsPath() = "payment_methods"
/**
* Endpoint to interact with tokens
*/
fun getTokensPath() = "tokens"
}

View file

@ -0,0 +1,22 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.signal.donations
import org.json.JSONObject
class TokenPaymentSource(
override val type: PaymentSourceType,
val parameters: String,
val token: String,
val email: String?
) : PaymentSource {
override fun parameterize(): JSONObject = JSONObject(parameters)
override fun getTokenId(): String = token
override fun email(): String? = email
}

View file

@ -0,0 +1,37 @@
package org.signal.donations.json
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonValue
/**
* Stripe intent status, from:
*
* https://stripe.com/docs/api/setup_intents/object?lang=curl#setup_intent_object-status
* https://stripe.com/docs/api/payment_intents/object?lang=curl#payment_intent_object-status
*
* Note: REQUIRES_CAPTURE is only ever valid for a SetupIntent
*/
enum class StripeIntentStatus(private val code: String) {
REQUIRES_PAYMENT_METHOD("requires_payment_method"),
REQUIRES_CONFIRMATION("requires_confirmation"),
REQUIRES_ACTION("requires_action"),
REQUIRES_CAPTURE("requires_capture"),
PROCESSING("processing"),
CANCELED("canceled"),
SUCCEEDED("succeeded");
companion object {
@JvmStatic
@JsonCreator
fun fromCode(code: String): StripeIntentStatus = entries.first { it.code == code }
}
fun canProceed(): Boolean {
return this == PROCESSING || this == SUCCEEDED
}
@JsonValue
fun toValue(): String {
return code
}
}

View file

@ -0,0 +1,18 @@
package org.signal.donations.json
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
/**
* Represents a Stripe API PaymentIntent object.
*
* See: https://stripe.com/docs/api/payment_intents/object
*/
@JsonIgnoreProperties(ignoreUnknown = true)
data class StripePaymentIntent @JsonCreator constructor(
@JsonProperty("id") val id: String,
@JsonProperty("client_secret") val clientSecret: String,
@JsonProperty("status") val status: StripeIntentStatus?,
@JsonProperty("payment_method") val paymentMethod: String?
)

View file

@ -0,0 +1,19 @@
package org.signal.donations.json
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
/**
* Represents a Stripe API SetupIntent object.
*
* See: https://stripe.com/docs/api/setup_intents/object
*/
@JsonIgnoreProperties(ignoreUnknown = true)
data class StripeSetupIntent @JsonCreator constructor(
@JsonProperty("id") val id: String,
@JsonProperty("client_secret") val clientSecret: String,
@JsonProperty("status") val status: StripeIntentStatus,
@JsonProperty("payment_method") val paymentMethodId: String?,
@JsonProperty("customer") val customer: String?
)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
<vector android:width="228dp" android:height="38dp" android:viewportWidth="228" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M2.31643 30V9.952h6.412c2.10937 0 3.91997.4293 5.43197 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3226 1.26-5.43197 1.26h-6.412zm3.08-2.912h3.248c2.27737 0 4.04137-.6347 5.29197-1.904 1.2694-1.2693 1.904-3.0053 1.904-5.208s-.6346-3.9387-1.904-5.208c-1.2506-1.2693-3.0146-1.904-5.29197-1.904h-3.248v14.224zm23.17817 3.36c-1.4746 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6346-1.1387-.952-2.4267-.952-3.864 0-1.4187.3174-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4174-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9974 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6346 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2134-.9427 1.624-1.652.4294-.728.644-1.596.644-2.604s-.2146-1.8667-.644-2.576c-.4106-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2226.924-1.652 1.652-.4106.7093-.616 1.568-.616 2.576s.2054 1.876.616 2.604c.4294.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM38.8343 30V15.72h2.856v1.96h.168c.4107-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5413.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8855.448c-1.0267 0-1.9414-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6906.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6534.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0266-.504 2.1466-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3734.5787-.9334 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4746-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3546-.616.532-1.2787.532-1.988-.4294-.2427-.9334-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1094.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm21.8883 2.464c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM93.2452 30V15.72h2.856v1.96h.168c.4107-.6907 1.008-1.26 1.792-1.708.784-.4667 1.652-.7 2.6038-.7 1.064 0 1.97.252 2.716.756.747.504 1.279 1.1387 1.596 1.904.467-.7467 1.102-1.372 1.904-1.876.803-.5227 1.783-.784 2.94-.784 1.68 0 2.931.5133 3.752 1.54.822 1.008 1.232 2.352 1.232 4.032V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.485-.5413-1.166-.812-2.044-.812-.69 0-1.297.196-1.82.588-.522.3733-.933.8867-1.232 1.54-.28.6533-.42 1.3813-.42 2.184V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.504-.5413-1.213-.812-2.1278-.812-.672 0-1.26.196-1.764.588-.504.392-.9053.9147-1.204 1.568-.28.6533-.42 1.3813-.42 2.184V30h-3.024zm32.8808.448c-1.101 0-2.053-.2333-2.856-.7-.784-.4853-1.363-1.036-1.736-1.652h-.168V30h-2.856V9.952h3.024v5.712l-.168 1.988h.168c.373-.616.952-1.1667 1.736-1.652.803-.4853 1.755-.728 2.856-.728 1.307 0 2.473.3267 3.5.98 1.027.6533 1.839 1.5493 2.436 2.688.616 1.1387.924 2.4453.924 3.92s-.308 2.7907-.924 3.948c-.597 1.1387-1.409 2.0347-2.436 2.688-1.027.6347-2.193.952-3.5.952zm-.448-2.772c.747 0 1.447-.196 2.1-.588.653-.392 1.185-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.411-.728-.943-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.747 0-1.447.196-2.1.588-.653.392-1.185.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.653.392 1.353.588 2.1.588z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M184.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM199.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM227.463 13.9543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M172.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M159.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M151.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M159.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C166.123 6.03271 163.082 4.7 159.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="228dp" android:height="38dp" android:viewportWidth="228" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M2.31643 30V9.952h6.412c2.10937 0 3.91997.4293 5.43197 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3226 1.26-5.43197 1.26h-6.412zm3.08-2.912h3.248c2.27737 0 4.04137-.6347 5.29197-1.904 1.2694-1.2693 1.904-3.0053 1.904-5.208s-.6346-3.9387-1.904-5.208c-1.2506-1.2693-3.0146-1.904-5.29197-1.904h-3.248v14.224zm23.17817 3.36c-1.4746 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6346-1.1387-.952-2.4267-.952-3.864 0-1.4187.3174-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4174-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9974 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6346 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2134-.9427 1.624-1.652.4294-.728.644-1.596.644-2.604s-.2146-1.8667-.644-2.576c-.4106-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2226.924-1.652 1.652-.4106.7093-.616 1.568-.616 2.576s.2054 1.876.616 2.604c.4294.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM38.8343 30V15.72h2.856v1.96h.168c.4107-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5413.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8855.448c-1.0267 0-1.9414-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6906.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6534.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0266-.504 2.1466-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3734.5787-.9334 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4746-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3546-.616.532-1.2787.532-1.988-.4294-.2427-.9334-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1094.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm21.8883 2.464c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM93.2452 30V15.72h2.856v1.96h.168c.4107-.6907 1.008-1.26 1.792-1.708.784-.4667 1.652-.7 2.6038-.7 1.064 0 1.97.252 2.716.756.747.504 1.279 1.1387 1.596 1.904.467-.7467 1.102-1.372 1.904-1.876.803-.5227 1.783-.784 2.94-.784 1.68 0 2.931.5133 3.752 1.54.822 1.008 1.232 2.352 1.232 4.032V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.485-.5413-1.166-.812-2.044-.812-.69 0-1.297.196-1.82.588-.522.3733-.933.8867-1.232 1.54-.28.6533-.42 1.3813-.42 2.184V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.504-.5413-1.213-.812-2.1278-.812-.672 0-1.26.196-1.764.588-.504.392-.9053.9147-1.204 1.568-.28.6533-.42 1.3813-.42 2.184V30h-3.024zm32.8808.448c-1.101 0-2.053-.2333-2.856-.7-.784-.4853-1.363-1.036-1.736-1.652h-.168V30h-2.856V9.952h3.024v5.712l-.168 1.988h.168c.373-.616.952-1.1667 1.736-1.652.803-.4853 1.755-.728 2.856-.728 1.307 0 2.473.3267 3.5.98 1.027.6533 1.839 1.5493 2.436 2.688.616 1.1387.924 2.4453.924 3.92s-.308 2.7907-.924 3.948c-.597 1.1387-1.409 2.0347-2.436 2.688-1.027.6347-2.193.952-3.5.952zm-.448-2.772c.747 0 1.447-.196 2.1-.588.653-.392 1.185-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.411-.728-.943-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.747 0-1.447.196-2.1.588-.653.392-1.185.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.653.392 1.353.588 2.1.588z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M184.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM199.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM227.463 13.8543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M172.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M159.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M151.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M159.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
<vector android:width="242dp" android:height="38dp" android:viewportWidth="242" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M2.8641 30V9.952h6.412c2.1093 0 3.92.4293 5.432 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.432 1.26h-6.412zm3.08-2.912h3.248c2.2773 0 4.0413-.6347 5.292-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.292-1.904h-3.248v14.224zm23.1782 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM39.382 30V15.72h2.856v1.96h.168c.4106-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7546 0 3.0706.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2894-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5414.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm23.0662.448c-1.4 0-2.6507-.3267-3.752-.98-1.1014-.6533-1.9694-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.2986-2.6227.896-3.78.5973-1.1573 1.428-2.0813 2.492-2.772 1.0826-.7093 2.324-1.064 3.724-1.064 1.4746 0 2.7253.3173 3.752.952 1.0453.6347 1.8386 1.5027 2.38 2.604.5413 1.1013.812 2.3427.812 3.724 0 .2053-.0094.392-.028.56 0 .168-.0094.2987-.028.392h-11.032c.1493 1.4187.644 2.4827 1.484 3.192.8586.7093 1.8293 1.064 2.912 1.064.9706 0 1.7733-.2147 2.408-.644.6346-.448 1.1386-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.3894 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.8667.308-2.576.924-.7094.616-1.1854 1.4373-1.428 2.464h7.924c-.0374-.4853-.196-.9893-.476-1.512-.28-.5227-.7094-.9613-1.288-1.316-.56-.3733-1.2787-.56-2.156-.56zm-1.26-4.872l1.316-3.584h3.416l-2.24 3.584h-2.492zM72.3296 30V15.72h2.856v2.1h.168c.3174-.728.8587-1.3253 1.624-1.792.784-.4853 1.624-.728 2.52-.728.392 0 .7187.028.98.084.28.056.532.1213.756.196v3.136c-.3546-.1493-.7186-.2707-1.092-.364-.3546-.0933-.728-.14-1.12-.14-.7093 0-1.344.196-1.904.588-.5413.3733-.9706.8867-1.288 1.54-.3173.6347-.476 1.3347-.476 2.1V30h-3.024zm18.3735 0V15.72h2.856v1.96h.168c.4106-.6907 1.008-1.26 1.792-1.708.784-.4667 1.652-.7 2.604-.7 1.064 0 1.9689.252 2.7159.756.747.504 1.279 1.1387 1.596 1.904.467-.7467 1.101-1.372 1.904-1.876.803-.5227 1.783-.784 2.94-.784 1.68 0 2.931.5133 3.752 1.54.821 1.008 1.232 2.352 1.232 4.032V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.485-.5413-1.167-.812-2.044-.812-.691 0-1.297.196-1.82.588-.523.3733-.933.8867-1.232 1.54-.28.6533-.42 1.3813-.42 2.184V30h-2.9959v-8.652c0-1.1387-.252-1.9693-.756-2.492-.504-.5413-1.2134-.812-2.128-.812-.672 0-1.26.196-1.764.588-.504.392-.9054.9147-1.204 1.568-.28.6533-.42 1.3813-.42 2.184V30h-3.024zm31.7889.448c-1.4 0-2.651-.3267-3.752-.98s-1.969-1.5493-2.604-2.688c-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.299-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.083-.7093 2.324-1.064 3.724-1.064 1.475 0 2.725.3173 3.752.952 1.045.6347 1.839 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.009.392-.028.56 0 .168-.009.2987-.028.392H118.18c.149 1.4187.644 2.4827 1.484 3.192.859.7093 1.829 1.064 2.912 1.064.971 0 1.773-.2147 2.408-.644.635-.448 1.139-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.389 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.709.616-1.185 1.4373-1.428 2.464h7.924c-.037-.4853-.196-.9893-.476-1.512-.28-.5227-.709-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zm16.262 12.6c-1.288 0-2.455-.3173-3.5-.952-1.027-.6533-1.848-1.5493-2.464-2.688-.597-1.1573-.896-2.4733-.896-3.948s.299-2.7813.896-3.92c.616-1.1387 1.437-2.0347 2.464-2.688 1.045-.6533 2.212-.98 3.5-.98 1.101 0 2.044.2427 2.828.728.803.4853 1.391 1.036 1.764 1.652h.168l-.168-1.988V9.952h2.996V30h-2.828v-1.904h-.168c-.373.616-.961 1.1667-1.764 1.652-.784.4667-1.727.7-2.828.7zm.448-2.772c.747 0 1.447-.196 2.1-.588.672-.392 1.204-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.392-.728-.924-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.747 0-1.447.196-2.1.588-.653.392-1.185.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.653.392 1.353.588 2.1.588z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M198.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM213.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM241.463 13.9543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M186.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M173.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M165.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M173.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C180.123 6.03271 177.082 4.7 173.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="242dp" android:height="38dp" android:viewportWidth="242" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M2.8641 30V9.952h6.412c2.1093 0 3.92.4293 5.432 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.432 1.26h-6.412zm3.08-2.912h3.248c2.2773 0 4.0413-.6347 5.292-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.292-1.904h-3.248v14.224zm23.1782 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM39.382 30V15.72h2.856v1.96h.168c.4106-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7546 0 3.0706.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2894-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5414.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm23.0662.448c-1.4 0-2.6507-.3267-3.752-.98-1.1014-.6533-1.9694-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.2986-2.6227.896-3.78.5973-1.1573 1.428-2.0813 2.492-2.772 1.0826-.7093 2.324-1.064 3.724-1.064 1.4746 0 2.7253.3173 3.752.952 1.0453.6347 1.8386 1.5027 2.38 2.604.5413 1.1013.812 2.3427.812 3.724 0 .2053-.0094.392-.028.56 0 .168-.0094.2987-.028.392h-11.032c.1493 1.4187.644 2.4827 1.484 3.192.8586.7093 1.8293 1.064 2.912 1.064.9706 0 1.7733-.2147 2.408-.644.6346-.448 1.1386-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.3894 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.8667.308-2.576.924-.7094.616-1.1854 1.4373-1.428 2.464h7.924c-.0374-.4853-.196-.9893-.476-1.512-.28-.5227-.7094-.9613-1.288-1.316-.56-.3733-1.2787-.56-2.156-.56zm-1.26-4.872l1.316-3.584h3.416l-2.24 3.584h-2.492zM72.3296 30V15.72h2.856v2.1h.168c.3174-.728.8587-1.3253 1.624-1.792.784-.4853 1.624-.728 2.52-.728.392 0 .7187.028.98.084.28.056.532.1213.756.196v3.136c-.3546-.1493-.7186-.2707-1.092-.364-.3546-.0933-.728-.14-1.12-.14-.7093 0-1.344.196-1.904.588-.5413.3733-.9706.8867-1.288 1.54-.3173.6347-.476 1.3347-.476 2.1V30h-3.024zm18.3735 0V15.72h2.856v1.96h.168c.4106-.6907 1.008-1.26 1.792-1.708.784-.4667 1.652-.7 2.604-.7 1.064 0 1.9689.252 2.7159.756.747.504 1.279 1.1387 1.596 1.904.467-.7467 1.101-1.372 1.904-1.876.803-.5227 1.783-.784 2.94-.784 1.68 0 2.931.5133 3.752 1.54.821 1.008 1.232 2.352 1.232 4.032V30h-2.996v-8.652c0-1.1387-.252-1.9693-.756-2.492-.485-.5413-1.167-.812-2.044-.812-.691 0-1.297.196-1.82.588-.523.3733-.933.8867-1.232 1.54-.28.6533-.42 1.3813-.42 2.184V30h-2.9959v-8.652c0-1.1387-.252-1.9693-.756-2.492-.504-.5413-1.2134-.812-2.128-.812-.672 0-1.26.196-1.764.588-.504.392-.9054.9147-1.204 1.568-.28.6533-.42 1.3813-.42 2.184V30h-3.024zm31.7889.448c-1.4 0-2.651-.3267-3.752-.98s-1.969-1.5493-2.604-2.688c-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.299-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.083-.7093 2.324-1.064 3.724-1.064 1.475 0 2.725.3173 3.752.952 1.045.6347 1.839 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.009.392-.028.56 0 .168-.009.2987-.028.392H118.18c.149 1.4187.644 2.4827 1.484 3.192.859.7093 1.829 1.064 2.912 1.064.971 0 1.773-.2147 2.408-.644.635-.448 1.139-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.389 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.709.616-1.185 1.4373-1.428 2.464h7.924c-.037-.4853-.196-.9893-.476-1.512-.28-.5227-.709-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zm16.262 12.6c-1.288 0-2.455-.3173-3.5-.952-1.027-.6533-1.848-1.5493-2.464-2.688-.597-1.1573-.896-2.4733-.896-3.948s.299-2.7813.896-3.92c.616-1.1387 1.437-2.0347 2.464-2.688 1.045-.6533 2.212-.98 3.5-.98 1.101 0 2.044.2427 2.828.728.803.4853 1.391 1.036 1.764 1.652h.168l-.168-1.988V9.952h2.996V30h-2.828v-1.904h-.168c-.373.616-.961 1.1667-1.764 1.652-.784.4667-1.727.7-2.828.7zm.448-2.772c.747 0 1.447-.196 2.1-.588.672-.392 1.204-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.392-.728-.924-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.747 0-1.447.196-2.1.588-.653.392-1.185.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.653.392 1.353.588 2.1.588z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M198.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM213.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM241.463 13.8543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M186.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M173.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M165.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M173.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,15 @@
<vector android:width="266dp" android:height="38dp" android:viewportWidth="266" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.14847 30V9.952h4.144l5.85203 15.26h.168l5.88-15.26h4.144V30h-3.024V18.66l.168-3.556h-.168L14.4605 30h-2.436L6.17247 15.104h-.168l.168 3.556V30h-3.024zM29.3992 13.62c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zM27.8872 30V15.72h3.024V30h-3.024zm8.4513-4.144v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7933.56 1.484.56.3547 0 .6533-.0467.896-.14.2613-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3547.0747-.7747.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M94.5289 9.44664v8.16616h5.036c1.2001 0 2.1921-.4032 2.9761-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.9761-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.0084V6.57217h7.9788c2.0277 0 3.7487.67569 5.1667 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.1667 1.9916h-4.9704v.0018zM109.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM137.463 13.9543l-10.04 23.0611h-3.105l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M82.3729 18.4452c0-.9463-.0803-1.8591-.2317-2.7326H69.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M69.4536 31.5782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.5092 0-6.4877-2.363-7.5527-5.5473h-4.4678v3.4624c2.2143 4.3901 6.7642 7.4046 12.0205 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M61.9009 20.7111c-.2728-.8119-.4222-1.678-.4222-2.5721 0-.894.1494-1.7601.4222-2.572v-3.4625h-4.4677C56.5176 13.9188 56 15.9683 56 18.139c0 2.1708.5176 4.2205 1.4332 6.0346l4.4677-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M69.4536 10.0196c1.9826 0 3.7596.6813 5.161 2.0159v.0019l3.8399-3.83578C76.1226 6.03271 73.0824 4.7 69.4536 4.7c-5.2563 0-9.8062 3.01446-12.0205 7.4046l4.4678 3.4624c1.065-3.1843 4.0435-5.5474 7.5527-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M155.972 30.448c-1.717 0-3.089-.3733-4.116-1.12-1.027-.7653-1.736-1.6707-2.128-2.716l2.716-1.176c.336.7653.821 1.3533 1.456 1.764.635.392 1.353.588 2.156.588.747 0 1.391-.1307 1.932-.392.541-.28.812-.728.812-1.344 0-.5973-.271-1.036-.812-1.316s-1.213-.5227-2.016-.728l-1.708-.392c-.691-.168-1.335-.4293-1.932-.784s-1.083-.812-1.456-1.372c-.373-.5787-.56-1.2507-.56-2.016 0-.84.252-1.568.756-2.184.504-.6347 1.167-1.12 1.988-1.456.84-.3547 1.745-.532 2.716-.532 1.325 0 2.483.2613 3.472.784 1.008.504 1.745 1.2693 2.212 2.296l-2.604 1.176c-.336-.6347-.775-1.0733-1.316-1.316-.523-.2613-1.101-.392-1.736-.392-.709 0-1.307.1493-1.792.448-.467.2987-.7.672-.7 1.12 0 .4853.205.868.616 1.148.429.28.952.504 1.568.672l2.072.504c1.419.3547 2.483.896 3.192 1.624.709.7093 1.064 1.5773 1.064 2.604 0 .9147-.261 1.7173-.784 2.408-.523.672-1.232 1.1947-2.128 1.568-.877.3547-1.857.532-2.94.532zm8.627 5.6V15.72h2.828v1.932h.168c.373-.616.952-1.1667 1.736-1.652.802-.4853 1.754-.728 2.856-.728 1.306 0 2.473.3267 3.5.98 1.026.6533 1.838 1.5493 2.436 2.688.616 1.1387.924 2.4453.924 3.92s-.308 2.7907-.924 3.948c-.598 1.1387-1.41 2.0347-2.436 2.688-1.027.6347-2.194.952-3.5.952-1.102 0-2.054-.2333-2.856-.7-.784-.4853-1.363-1.036-1.736-1.652h-.168l.168 1.988v5.964h-2.996zm7.14-8.372c.746 0 1.446-.196 2.1-.588.653-.392 1.185-.9427 1.596-1.652.41-.728.616-1.5867.616-2.576 0-.9893-.206-1.8387-.616-2.548-.411-.728-.943-1.288-1.596-1.68-.654-.392-1.354-.588-2.1-.588-.747 0-1.447.196-2.1.588-.654.392-1.186.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.41.7093.942 1.26 1.596 1.652.653.392 1.353.588 2.1.588zm16.911 2.772c-1.4 0-2.651-.3267-3.752-.98-1.102-.6533-1.97-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.298-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.082-.7093 2.324-1.064 3.724-1.064 1.474 0 2.725.3173 3.752.952 1.045.6347 1.838 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.01.392-.028.56 0 .168-.01.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.858.7093 1.829 1.064 2.912 1.064.97 0 1.773-.2147 2.408-.644.634-.448 1.138-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.39 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.71.616-1.186 1.4373-1.428 2.464h7.924c-.038-.4853-.196-.9893-.476-1.512-.28-.5227-.71-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zM198.531 30V15.72h2.856v1.96h.168c.411-.6907 1.018-1.26 1.82-1.708.822-.4667 1.718-.7 2.688-.7 1.755 0 3.071.5227 3.948 1.568.878 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.289-1.9973-.868-2.52-.578-.5413-1.334-.812-2.268-.812-.728 0-1.362.2053-1.904.616-.541.392-.97.9147-1.288 1.568-.298.6533-.448 1.3533-.448 2.1V30h-3.024zm22.646.448c-1.288 0-2.454-.3173-3.5-.952-1.026-.6533-1.848-1.5493-2.464-2.688-.597-1.1573-.896-2.4733-.896-3.948s.299-2.7813.896-3.92c.616-1.1387 1.438-2.0347 2.464-2.688 1.046-.6533 2.212-.98 3.5-.98 1.102 0 2.044.2427 2.828.728.803.4853 1.391 1.036 1.764 1.652h.168l-.168-1.988V9.952h2.996V30h-2.828v-1.904h-.168c-.373.616-.961 1.1667-1.764 1.652-.784.4667-1.726.7-2.828.7zm.448-2.772c.747 0 1.447-.196 2.1-.588.672-.392 1.204-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.392-.728-.924-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.746 0-1.446.196-2.1.588-.653.392-1.185.952-1.596 1.68-.41.7093-.616 1.5587-.616 2.548 0 .9893.206 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.654.392 1.354.588 2.1.588zm17.39 2.772c-1.4 0-2.651-.3267-3.752-.98-1.102-.6533-1.97-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.298-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.082-.7093 2.324-1.064 3.724-1.064 1.474 0 2.725.3173 3.752.952 1.045.6347 1.838 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.01.392-.028.56 0 .168-.01.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.858.7093 1.829 1.064 2.912 1.064.97 0 1.773-.2147 2.408-.644.634-.448 1.138-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.39 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.71.616-1.186 1.4373-1.428 2.464h7.924c-.038-.4853-.196-.9893-.476-1.512-.28-.5227-.71-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zM248.896 30V15.72h2.856v1.96h.168c.411-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.755 0 3.071.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.289-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.541.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#3c4043"/>
</vector>

View file

@ -0,0 +1,15 @@
<vector android:width="266dp" android:height="38dp" android:viewportWidth="266" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.14847 30V9.952h4.144l5.85203 15.26h.168l5.88-15.26h4.144V30h-3.024V18.66l.168-3.556h-.168L14.4605 30h-2.436L6.17247 15.104h-.168l.168 3.556V30h-3.024zM29.3992 13.62c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zM27.8872 30V15.72h3.024V30h-3.024zm8.4513-4.144v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7933.56 1.484.56.3547 0 .6533-.0467.896-.14.2613-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3547.0747-.7747.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M94.5289 9.34665v8.16615h5.036c1.2001 0 2.1921-.4032 2.9761-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.9761-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.0084V6.47218h7.9788c2.0277 0 3.7487.67569 5.1667 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.1667 1.9916h-4.9704v.0018zM109.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM137.463 13.8543l-10.04 23.0611h-3.105l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M82.3729 18.3452c0-.9463-.0803-1.8591-.2317-2.7326H69.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M69.4536 31.4782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.5092 0-6.4877-2.363-7.5527-5.5473h-4.4678v3.4624c2.2143 4.3901 6.7642 7.4046 12.0205 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M61.9009 20.6111c-.2728-.8119-.4222-1.678-.4222-2.572 0-.8941.1494-1.7602.4222-2.5721v-3.4625h-4.4677C56.5176 13.8188 56 15.8683 56 18.0391c0 2.1707.5176 4.2204 1.4332 6.0345l4.4677-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M69.4536 9.91964c1.9826 0 3.7596.68126 5.161 2.01586v.0019l3.8399-3.83577c-2.3319-2.16891-5.3721-3.50162-9.0009-3.50162-5.2563 0-9.8062 3.01446-12.0205 7.40459l4.4678 3.4624c1.065-3.1843 4.0435-5.54736 7.5527-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M155.972 30.448c-1.717 0-3.089-.3733-4.116-1.12-1.027-.7653-1.736-1.6707-2.128-2.716l2.716-1.176c.336.7653.821 1.3533 1.456 1.764.635.392 1.353.588 2.156.588.747 0 1.391-.1307 1.932-.392.541-.28.812-.728.812-1.344 0-.5973-.271-1.036-.812-1.316s-1.213-.5227-2.016-.728l-1.708-.392c-.691-.168-1.335-.4293-1.932-.784s-1.083-.812-1.456-1.372c-.373-.5787-.56-1.2507-.56-2.016 0-.84.252-1.568.756-2.184.504-.6347 1.167-1.12 1.988-1.456.84-.3547 1.745-.532 2.716-.532 1.325 0 2.483.2613 3.472.784 1.008.504 1.745 1.2693 2.212 2.296l-2.604 1.176c-.336-.6347-.775-1.0733-1.316-1.316-.523-.2613-1.101-.392-1.736-.392-.709 0-1.307.1493-1.792.448-.467.2987-.7.672-.7 1.12 0 .4853.205.868.616 1.148.429.28.952.504 1.568.672l2.072.504c1.419.3547 2.483.896 3.192 1.624.709.7093 1.064 1.5773 1.064 2.604 0 .9147-.261 1.7173-.784 2.408-.523.672-1.232 1.1947-2.128 1.568-.877.3547-1.857.532-2.94.532zm8.627 5.6V15.72h2.828v1.932h.168c.373-.616.952-1.1667 1.736-1.652.802-.4853 1.754-.728 2.856-.728 1.306 0 2.473.3267 3.5.98 1.026.6533 1.838 1.5493 2.436 2.688.616 1.1387.924 2.4453.924 3.92s-.308 2.7907-.924 3.948c-.598 1.1387-1.41 2.0347-2.436 2.688-1.027.6347-2.194.952-3.5.952-1.102 0-2.054-.2333-2.856-.7-.784-.4853-1.363-1.036-1.736-1.652h-.168l.168 1.988v5.964h-2.996zm7.14-8.372c.746 0 1.446-.196 2.1-.588.653-.392 1.185-.9427 1.596-1.652.41-.728.616-1.5867.616-2.576 0-.9893-.206-1.8387-.616-2.548-.411-.728-.943-1.288-1.596-1.68-.654-.392-1.354-.588-2.1-.588-.747 0-1.447.196-2.1.588-.654.392-1.186.952-1.596 1.68-.411.7093-.616 1.5587-.616 2.548 0 .9893.205 1.848.616 2.576.41.7093.942 1.26 1.596 1.652.653.392 1.353.588 2.1.588zm16.911 2.772c-1.4 0-2.651-.3267-3.752-.98-1.102-.6533-1.97-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.298-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.082-.7093 2.324-1.064 3.724-1.064 1.474 0 2.725.3173 3.752.952 1.045.6347 1.838 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.01.392-.028.56 0 .168-.01.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.858.7093 1.829 1.064 2.912 1.064.97 0 1.773-.2147 2.408-.644.634-.448 1.138-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.39 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.71.616-1.186 1.4373-1.428 2.464h7.924c-.038-.4853-.196-.9893-.476-1.512-.28-.5227-.71-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zM198.531 30V15.72h2.856v1.96h.168c.411-.6907 1.018-1.26 1.82-1.708.822-.4667 1.718-.7 2.688-.7 1.755 0 3.071.5227 3.948 1.568.878 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.289-1.9973-.868-2.52-.578-.5413-1.334-.812-2.268-.812-.728 0-1.362.2053-1.904.616-.541.392-.97.9147-1.288 1.568-.298.6533-.448 1.3533-.448 2.1V30h-3.024zm22.646.448c-1.288 0-2.454-.3173-3.5-.952-1.026-.6533-1.848-1.5493-2.464-2.688-.597-1.1573-.896-2.4733-.896-3.948s.299-2.7813.896-3.92c.616-1.1387 1.438-2.0347 2.464-2.688 1.046-.6533 2.212-.98 3.5-.98 1.102 0 2.044.2427 2.828.728.803.4853 1.391 1.036 1.764 1.652h.168l-.168-1.988V9.952h2.996V30h-2.828v-1.904h-.168c-.373.616-.961 1.1667-1.764 1.652-.784.4667-1.726.7-2.828.7zm.448-2.772c.747 0 1.447-.196 2.1-.588.672-.392 1.204-.9427 1.596-1.652.411-.728.616-1.5867.616-2.576 0-.9893-.205-1.8387-.616-2.548-.392-.728-.924-1.288-1.596-1.68-.653-.392-1.353-.588-2.1-.588-.746 0-1.446.196-2.1.588-.653.392-1.185.952-1.596 1.68-.41.7093-.616 1.5587-.616 2.548 0 .9893.206 1.848.616 2.576.411.7093.943 1.26 1.596 1.652.654.392 1.354.588 2.1.588zm17.39 2.772c-1.4 0-2.651-.3267-3.752-.98-1.102-.6533-1.97-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.298-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.082-.7093 2.324-1.064 3.724-1.064 1.474 0 2.725.3173 3.752.952 1.045.6347 1.838 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.01.392-.028.56 0 .168-.01.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.858.7093 1.829 1.064 2.912 1.064.97 0 1.773-.2147 2.408-.644.634-.448 1.138-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.39 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.71.616-1.186 1.4373-1.428 2.464h7.924c-.038-.4853-.196-.9893-.476-1.512-.28-.5227-.71-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zM248.896 30V15.72h2.856v1.96h.168c.411-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.755 0 3.071.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.289-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.541.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#ffffff"/>
</vector>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
<vector android:width="232dp" android:height="38dp" android:viewportWidth="232" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.85629 30V9.952h6.41201c2.1093 0 3.92.4293 5.432 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.432 1.26H3.85629zm3.08-2.912h3.24801c2.2773 0 4.0413-.6347 5.292-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.292-1.904H6.93629v14.224zm23.17821 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9974-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6346-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6346 1.1387.952 2.4173.952 3.836 0 1.4373-.3174 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5214.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6906.3733 1.428.56 2.212.56zM40.3742 30V15.72h2.856v1.96h.168c.4106-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7546 0 3.0706.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2894-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5414.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8854.448c-1.0266 0-1.9413-.196-2.744-.588-.8026-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2614-1.8667.784-2.576.5414-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8854-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2134.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4186.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7466.448-1.6426.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5974-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5786-.168-1.1946-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5226.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM72.3648 30V15.72h2.856v2.1h.168c.3173-.728.8587-1.3253 1.624-1.792.784-.4853 1.624-.728 2.52-.728.392 0 .7187.028.98.084.28.056.532.1213.756.196v3.136c-.3547-.1493-.7187-.2707-1.092-.364-.3547-.0933-.728-.14-1.12-.14-.7093 0-1.344.196-1.904.588-.5413.3733-.9707.8867-1.288 1.54-.3173.6347-.476 1.3347-.476 2.1V30h-3.024zm24.9814.448c-1.4373 0-2.7066-.3267-3.808-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.6346-1.1573-.952-2.464-.952-3.92s.3174-2.7533.952-3.892c.6347-1.1573 1.5027-2.0627 2.604-2.716 1.1014-.6533 2.3707-.98 3.808-.98 1.5867 0 2.9218.3547 4.0038 1.064 1.102.7093 1.886 1.6707 2.352 2.884l-2.744 1.12c-.653-1.5307-1.8758-2.296-3.6678-2.296-.784 0-1.5026.2053-2.156.616-.6533.392-1.176.952-1.568 1.68-.392.7093-.588 1.5493-.588 2.52 0 .9707.196 1.82.588 2.548.392.728.9147 1.288 1.568 1.68.6534.392 1.372.588 2.156.588.9147 0 1.6894-.2053 2.324-.616.6348-.4293 1.1298-1.008 1.4838-1.736l2.688 1.176c-.504 1.1387-1.306 2.0813-2.408 2.828-1.101.7467-2.4451 1.12-4.0318 1.12zm15.9158 0c-1.475 0-2.772-.336-3.892-1.008-1.12-.672-1.997-1.5773-2.632-2.716-.635-1.1387-.952-2.4267-.952-3.864 0-1.4187.317-2.6973.952-3.836.635-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.417-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.997 1.5867 2.632 2.744.635 1.1387.952 2.4173.952 3.836 0 1.4373-.317 2.7253-.952 3.864s-1.512 2.044-2.632 2.716c-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.213-.9427 1.624-1.652.429-.728.644-1.596.644-2.604s-.215-1.8667-.644-2.576c-.411-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.521.196-2.212.588-.672.3733-1.223.924-1.652 1.652-.411.7093-.616 1.568-.616 2.576s.205 1.876.616 2.604c.429.7093.98 1.26 1.652 1.652.691.3733 1.428.56 2.212.56zM123.522 30V15.72h2.856v1.96h.168c.41-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.754 0 3.07.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.29-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.542.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M188.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM203.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM231.463 13.9543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M176.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M163.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M155.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M163.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C170.123 6.03271 167.082 4.7 163.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="232dp" android:height="38dp" android:viewportWidth="232" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.85629 30V9.952h6.41201c2.1093 0 3.92.4293 5.432 1.288 1.5307.84 2.7067 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8213 1.4933-1.9973 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.432 1.26H3.85629zm3.08-2.912h3.24801c2.2773 0 4.0413-.6347 5.292-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.292-1.904H6.93629v14.224zm23.17821 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9974-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6346-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6346 1.1387.952 2.4173.952 3.836 0 1.4373-.3174 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5214.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6906.3733 1.428.56 2.212.56zM40.3742 30V15.72h2.856v1.96h.168c.4106-.6907 1.0173-1.26 1.82-1.708.8213-.4667 1.7173-.7 2.688-.7 1.7546 0 3.0706.5227 3.948 1.568.8773 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2894-1.9973-.868-2.52-.5787-.5413-1.3347-.812-2.268-.812-.728 0-1.3627.2053-1.904.616-.5414.392-.9707.9147-1.288 1.568-.2987.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8854.448c-1.0266 0-1.9413-.196-2.744-.588-.8026-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2614-1.8667.784-2.576.5414-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8854-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2134.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4186.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7466.448-1.6426.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5974-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5786-.168-1.1946-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5226.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM72.3648 30V15.72h2.856v2.1h.168c.3173-.728.8587-1.3253 1.624-1.792.784-.4853 1.624-.728 2.52-.728.392 0 .7187.028.98.084.28.056.532.1213.756.196v3.136c-.3547-.1493-.7187-.2707-1.092-.364-.3547-.0933-.728-.14-1.12-.14-.7093 0-1.344.196-1.904.588-.5413.3733-.9707.8867-1.288 1.54-.3173.6347-.476 1.3347-.476 2.1V30h-3.024zm24.9814.448c-1.4373 0-2.7066-.3267-3.808-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.6346-1.1573-.952-2.464-.952-3.92s.3174-2.7533.952-3.892c.6347-1.1573 1.5027-2.0627 2.604-2.716 1.1014-.6533 2.3707-.98 3.808-.98 1.5867 0 2.9218.3547 4.0038 1.064 1.102.7093 1.886 1.6707 2.352 2.884l-2.744 1.12c-.653-1.5307-1.8758-2.296-3.6678-2.296-.784 0-1.5026.2053-2.156.616-.6533.392-1.176.952-1.568 1.68-.392.7093-.588 1.5493-.588 2.52 0 .9707.196 1.82.588 2.548.392.728.9147 1.288 1.568 1.68.6534.392 1.372.588 2.156.588.9147 0 1.6894-.2053 2.324-.616.6348-.4293 1.1298-1.008 1.4838-1.736l2.688 1.176c-.504 1.1387-1.306 2.0813-2.408 2.828-1.101.7467-2.4451 1.12-4.0318 1.12zm15.9158 0c-1.475 0-2.772-.336-3.892-1.008-1.12-.672-1.997-1.5773-2.632-2.716-.635-1.1387-.952-2.4267-.952-3.864 0-1.4187.317-2.6973.952-3.836.635-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.417-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.997 1.5867 2.632 2.744.635 1.1387.952 2.4173.952 3.836 0 1.4373-.317 2.7253-.952 3.864s-1.512 2.044-2.632 2.716c-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.213-.9427 1.624-1.652.429-.728.644-1.596.644-2.604s-.215-1.8667-.644-2.576c-.411-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.521.196-2.212.588-.672.3733-1.223.924-1.652 1.652-.411.7093-.616 1.568-.616 2.576s.205 1.876.616 2.604c.429.7093.98 1.26 1.652 1.652.691.3733 1.428.56 2.212.56zM123.522 30V15.72h2.856v1.96h.168c.41-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.754 0 3.07.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.29-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.542.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M188.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM203.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM231.463 13.8543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M176.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M163.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M155.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M163.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="248dp" android:height="38dp" android:viewportWidth="248" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M1.49344 30l7.56-20.048h3.49996L20.1414 30h-3.388l-1.848-5.152H6.72944L4.88144 30h-3.388zm8.484-14.14l-2.212 6.132h6.10396l-2.212-6.132-.756-2.296h-.168l-.75596 2.296zM22.6335 30V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm16.5422 0V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm23.0662.448c-1.4 0-2.6507-.3267-3.752-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.2987-2.6227.896-3.78.5973-1.1573 1.428-2.0813 2.492-2.772 1.0827-.7093 2.324-1.064 3.724-1.064 1.4747 0 2.7253.3173 3.752.952 1.0453.6347 1.8387 1.5027 2.38 2.604.5413 1.1013.812 2.3427.812 3.724 0 .2053-.0093.392-.028.56 0 .168-.0093.2987-.028.392h-11.032c.1493 1.4187.644 2.4827 1.484 3.192.8587.7093 1.8293 1.064 2.912 1.064.9707 0 1.7733-.2147 2.408-.644.6347-.448 1.1387-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.3893 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.8667.308-2.576.924-.7093.616-1.1853 1.4373-1.428 2.464h7.924c-.0373-.4853-.196-.9893-.476-1.512-.28-.5227-.7093-.9613-1.288-1.316-.56-.3733-1.2787-.56-2.156-.56zm11.1233 8.008v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7934.56 1.484.56.3547 0 .6534-.0467.896-.14.2614-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3546.0747-.7746.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22zm13.9321 4.592c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm16.8767 8.512c-1.251 0-2.334-.2053-3.248-.616-.896-.392-1.6243-.9053-2.1843-1.54-.56-.616-.9613-1.2507-1.204-1.904l2.8003-1.176c.298.7467.774 1.3533 1.428 1.82.672.4853 1.474.728 2.408.728 1.306 0 2.333-.392 3.08-1.176.765-.784 1.148-1.8947 1.148-3.332v-1.372h-.168c-.448.672-1.074 1.2133-1.876 1.624-.784.392-1.68.588-2.688.588-1.214 0-2.324-.308-3.332-.924-1.0083-.616-1.8203-1.4747-2.4363-2.576-.616-1.12-.924-2.4267-.924-3.92 0-1.512.308-2.8187.924-3.92.616-1.12 1.428-1.988 2.4363-2.604 1.008-.616 2.118-.924 3.332-.924 1.008 0 1.904.2053 2.688.616.802.4107 1.428.952 1.876 1.624h.168V15.72h2.884v13.524c0 1.5493-.308 2.8653-.924 3.948-.598 1.0827-1.428 1.904-2.492 2.464s-2.296.84-3.696.84zm.028-9.1c.746 0 1.437-.1773 2.072-.532.634-.3733 1.148-.9053 1.54-1.596.392-.7093.588-1.5587.588-2.548 0-1.0267-.196-1.8853-.588-2.576-.392-.7093-.906-1.2413-1.54-1.596-.635-.3547-1.326-.532-2.072-.532-.747 0-1.447.1867-2.1.56-.635.3547-1.148.8773-1.54 1.568-.392.6907-.588 1.5493-.588 2.576 0 1.008.196 1.8667.588 2.576.392.6907.905 1.2133 1.54 1.568.653.3547 1.353.532 2.1.532zm17.309 3.052c-1.4 0-2.651-.3267-3.752-.98s-1.969-1.5493-2.604-2.688c-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.299-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.083-.7093 2.324-1.064 3.724-1.064 1.475 0 2.725.3173 3.752.952 1.045.6347 1.839 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.009.392-.028.56 0 .168-.009.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.859.7093 1.829 1.064 2.912 1.064.971 0 1.773-.2147 2.408-.644.635-.448 1.139-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.389 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.709.616-1.185 1.4373-1.428 2.464h7.924c-.037-.4853-.196-.9893-.476-1.512-.28-.5227-.709-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zm16.828 4.76v-2.576h13.664v2.576h-13.664z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M204.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM219.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM247.463 13.9543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M192.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M179.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M171.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M179.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C186.123 6.03271 183.082 4.7 179.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="248dp" android:height="38dp" android:viewportWidth="248" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M1.49344 30l7.56-20.048h3.49996L20.1414 30h-3.388l-1.848-5.152H6.72944L4.88144 30h-3.388zm8.484-14.14l-2.212 6.132h6.10396l-2.212-6.132-.756-2.296h-.168l-.75596 2.296zM22.6335 30V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm16.5422 0V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm23.0662.448c-1.4 0-2.6507-.3267-3.752-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.2987-2.6227.896-3.78.5973-1.1573 1.428-2.0813 2.492-2.772 1.0827-.7093 2.324-1.064 3.724-1.064 1.4747 0 2.7253.3173 3.752.952 1.0453.6347 1.8387 1.5027 2.38 2.604.5413 1.1013.812 2.3427.812 3.724 0 .2053-.0093.392-.028.56 0 .168-.0093.2987-.028.392h-11.032c.1493 1.4187.644 2.4827 1.484 3.192.8587.7093 1.8293 1.064 2.912 1.064.9707 0 1.7733-.2147 2.408-.644.6347-.448 1.1387-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.3893 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.8667.308-2.576.924-.7093.616-1.1853 1.4373-1.428 2.464h7.924c-.0373-.4853-.196-.9893-.476-1.512-.28-.5227-.7093-.9613-1.288-1.316-.56-.3733-1.2787-.56-2.156-.56zm11.1233 8.008v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7934.56 1.484.56.3547 0 .6534-.0467.896-.14.2614-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3546.0747-.7746.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22zm13.9321 4.592c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm16.8767 8.512c-1.251 0-2.334-.2053-3.248-.616-.896-.392-1.6243-.9053-2.1843-1.54-.56-.616-.9613-1.2507-1.204-1.904l2.8003-1.176c.298.7467.774 1.3533 1.428 1.82.672.4853 1.474.728 2.408.728 1.306 0 2.333-.392 3.08-1.176.765-.784 1.148-1.8947 1.148-3.332v-1.372h-.168c-.448.672-1.074 1.2133-1.876 1.624-.784.392-1.68.588-2.688.588-1.214 0-2.324-.308-3.332-.924-1.0083-.616-1.8203-1.4747-2.4363-2.576-.616-1.12-.924-2.4267-.924-3.92 0-1.512.308-2.8187.924-3.92.616-1.12 1.428-1.988 2.4363-2.604 1.008-.616 2.118-.924 3.332-.924 1.008 0 1.904.2053 2.688.616.802.4107 1.428.952 1.876 1.624h.168V15.72h2.884v13.524c0 1.5493-.308 2.8653-.924 3.948-.598 1.0827-1.428 1.904-2.492 2.464s-2.296.84-3.696.84zm.028-9.1c.746 0 1.437-.1773 2.072-.532.634-.3733 1.148-.9053 1.54-1.596.392-.7093.588-1.5587.588-2.548 0-1.0267-.196-1.8853-.588-2.576-.392-.7093-.906-1.2413-1.54-1.596-.635-.3547-1.326-.532-2.072-.532-.747 0-1.447.1867-2.1.56-.635.3547-1.148.8773-1.54 1.568-.392.6907-.588 1.5493-.588 2.576 0 1.008.196 1.8667.588 2.576.392.6907.905 1.2133 1.54 1.568.653.3547 1.353.532 2.1.532zm17.309 3.052c-1.4 0-2.651-.3267-3.752-.98s-1.969-1.5493-2.604-2.688c-.616-1.1387-.924-2.436-.924-3.892 0-1.3627.299-2.6227.896-3.78.597-1.1573 1.428-2.0813 2.492-2.772 1.083-.7093 2.324-1.064 3.724-1.064 1.475 0 2.725.3173 3.752.952 1.045.6347 1.839 1.5027 2.38 2.604.541 1.1013.812 2.3427.812 3.724 0 .2053-.009.392-.028.56 0 .168-.009.2987-.028.392h-11.032c.149 1.4187.644 2.4827 1.484 3.192.859.7093 1.829 1.064 2.912 1.064.971 0 1.773-.2147 2.408-.644.635-.448 1.139-.9987 1.512-1.652l2.492 1.204c-.616 1.12-1.456 2.0347-2.52 2.744-1.064.6907-2.389 1.036-3.976 1.036zm-.14-12.6c-1.008 0-1.867.308-2.576.924-.709.616-1.185 1.4373-1.428 2.464h7.924c-.037-.4853-.196-.9893-.476-1.512-.28-.5227-.709-.9613-1.288-1.316-.56-.3733-1.279-.56-2.156-.56zm16.828 4.76v-2.576h13.664v2.576h-13.664z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M204.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM219.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM247.463 13.8543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M192.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M179.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M171.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M179.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,15 @@
<vector android:width="242dp" android:height="38dp" android:viewportWidth="242" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.3555 30V9.952h3.08v17.136h8.624V30H3.3555zm19.1237.448c-1.0267 0-1.9414-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6906.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6534.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0266-.504 2.1466-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3734.5787-.9334 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4746-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3546-.616.532-1.2787.532-1.988-.4294-.2427-.9334-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1094.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM33.5843 30V9.952h3.024v5.488l-.168 2.24h.168c.392-.6907.9893-1.26 1.792-1.708.8213-.4667 1.7267-.7 2.716-.7 1.7733 0 3.108.532 4.004 1.596.896 1.0453 1.344 2.4173 1.344 4.116V30h-2.996v-8.624c0-1.1573-.308-1.9973-.924-2.52-.5973-.5413-1.3347-.812-2.212-.812-.728 0-1.372.2053-1.932.616-.56.4107-.9987.952-1.316 1.624-.3173.6533-.476 1.3533-.476 2.1V30h-3.024zm18.3602-16.38c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zm-2.716 22.708c-.5786 0-1.1013-.0653-1.568-.196V33.22c.1867.112.4014.196.644.252.224.0747.448.112.672.112.5414 0 .9147-.168 1.12-.504.224-.3173.336-.784.336-1.4V15.72h3.024v15.988c0 1.6427-.4013 2.8187-1.204 3.528-.8026.728-1.8106 1.092-3.024 1.092zm14.8633-5.88c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM76.0875 13.62c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zM74.5755 30V15.72h3.024V30h-3.024zm8.4513-4.144v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7933.56 1.484.56.3547 0 .6533-.0467.896-.14.2613-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3547.0747-.7747.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22zm13.932 4.592c-1.0266 0-1.9413-.196-2.744-.588-.8026-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2614-1.8667.784-2.576.5414-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8854-.56 2.968-.56.896 0 1.68.084 2.352.252.6912.168 1.2132.3453 1.5682.532V20.9c0-.9333-.336-1.68-1.008-2.24-.6722-.56-1.5402-.84-2.6042-.84-.728 0-1.4186.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.0722 0 3.6682.5133 4.7882 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.373.5787-.933 1.092-1.6802 1.54-.7466.448-1.6426.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5972-.3733 1.0642-.8587 1.4002-1.456.355-.616.532-1.2787.532-1.988-.429-.2427-.933-.4387-1.5122-.588-.5786-.168-1.1946-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5226.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M156.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM171.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM199.463 13.9543l-10.04 23.0611h-3.105l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M144.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M131.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M123.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M131.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C138.123 6.03271 135.082 4.7 131.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M212.792 30V9.952h3.024V30h-3.024zm6.917 0V9.952h3.024V30h-3.024zm11.233.448c-1.027 0-1.942-.196-2.744-.588-.803-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.261-1.8667.784-2.576.541-.728 1.26-1.2787 2.156-1.652.896-.3733 1.885-.56 2.968-.56.896 0 1.68.084 2.352.252.69.168 1.213.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.419.168-2.072.504-.654.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.026-.504 2.146-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.374.5787-.934 1.092-1.68 1.54-.747.448-1.643.672-2.688.672zm.532-2.464c.784 0 1.474-.1867 2.072-.56.597-.3733 1.064-.8587 1.4-1.456.354-.616.532-1.2787.532-1.988-.43-.2427-.934-.4387-1.512-.588-.579-.168-1.195-.252-1.848-.252-1.232 0-2.11.252-2.632.756-.523.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644z" android:fillColor="#3c4043"/>
</vector>

View file

@ -0,0 +1,15 @@
<vector android:width="242dp" android:height="38dp" android:viewportWidth="242" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.3555 30V9.952h3.08v17.136h8.624V30H3.3555zm19.1237.448c-1.0267 0-1.9414-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6906.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6534.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0266-.504 2.1466-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3734.5787-.9334 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4746-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3546-.616.532-1.2787.532-1.988-.4294-.2427-.9334-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1094.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zM33.5843 30V9.952h3.024v5.488l-.168 2.24h.168c.392-.6907.9893-1.26 1.792-1.708.8213-.4667 1.7267-.7 2.716-.7 1.7733 0 3.108.532 4.004 1.596.896 1.0453 1.344 2.4173 1.344 4.116V30h-2.996v-8.624c0-1.1573-.308-1.9973-.924-2.52-.5973-.5413-1.3347-.812-2.212-.812-.728 0-1.372.2053-1.932.616-.56.4107-.9987.952-1.316 1.624-.3173.6533-.476 1.3533-.476 2.1V30h-3.024zm18.3602-16.38c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zm-2.716 22.708c-.5786 0-1.1013-.0653-1.568-.196V33.22c.1867.112.4014.196.644.252.224.0747.448.112.672.112.5414 0 .9147-.168 1.12-.504.224-.3173.336-.784.336-1.4V15.72h3.024v15.988c0 1.6427-.4013 2.8187-1.204 3.528-.8026.728-1.8106 1.092-3.024 1.092zm14.8633-5.88c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6347 1.1387.952 2.4173.952 3.836 0 1.4373-.3173 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5213.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6907.3733 1.428.56 2.212.56zM76.0875 13.62c-.56 0-1.0453-.196-1.456-.588-.392-.4107-.588-.896-.588-1.456 0-.56.196-1.036.588-1.428.4107-.392.896-.588 1.456-.588.56 0 1.036.196 1.428.588.4107.392.616.868.616 1.428 0 .56-.2053 1.0453-.616 1.456-.392.392-.868.588-1.428.588zM74.5755 30V15.72h3.024V30h-3.024zm8.4513-4.144v-7.504h-2.492V15.72h2.492v-4.032h3.024v4.032h3.5v2.632h-3.5v6.86c0 .7093.14 1.2507.42 1.624.2987.3733.7933.56 1.484.56.3547 0 .6533-.0467.896-.14.2613-.0933.5227-.224.784-.392v2.94c-.3173.1307-.6533.2333-1.008.308-.3547.0747-.7747.112-1.26.112-1.3253 0-2.38-.3827-3.164-1.148-.784-.784-1.176-1.8573-1.176-3.22zm13.932 4.592c-1.0266 0-1.9413-.196-2.744-.588-.8026-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2614-1.8667.784-2.576.5414-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8854-.56 2.968-.56.896 0 1.68.084 2.352.252.6912.168 1.2132.3453 1.5682.532V20.9c0-.9333-.336-1.68-1.008-2.24-.6722-.56-1.5402-.84-2.6042-.84-.728 0-1.4186.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.0722 0 3.6682.5133 4.7882 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.373.5787-.933 1.092-1.6802 1.54-.7466.448-1.6426.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5972-.3733 1.0642-.8587 1.4002-1.456.355-.616.532-1.2787.532-1.988-.429-.2427-.933-.4387-1.5122-.588-.5786-.168-1.1946-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5226.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M156.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM171.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM199.463 13.8543l-10.04 23.0611h-3.105l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M144.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M131.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M123.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M131.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M212.792 30V9.952h3.024V30h-3.024zm6.917 0V9.952h3.024V30h-3.024zm11.233.448c-1.027 0-1.942-.196-2.744-.588-.803-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.261-1.8667.784-2.576.541-.728 1.26-1.2787 2.156-1.652.896-.3733 1.885-.56 2.968-.56.896 0 1.68.084 2.352.252.69.168 1.213.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.419.168-2.072.504-.654.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.026-.504 2.146-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.374.5787-.934 1.092-1.68 1.54-.747.448-1.643.672-2.688.672zm.532-2.464c.784 0 1.474-.1867 2.072-.56.597-.3733 1.064-.8587 1.4-1.456.354-.616.532-1.2787.532-1.988-.43-.2427-.934-.4387-1.512-.588-.579-.168-1.195-.252-1.848-.252-1.232 0-2.11.252-2.632.756-.523.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644z" android:fillColor="#ffffff"/>
</vector>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,14 @@
<vector android:width="220dp" android:height="38dp" android:viewportWidth="220" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.39456 30V9.952h6.412c2.10934 0 3.92004.4293 5.43204 1.288 1.5306.84 2.7066 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8214 1.4933-1.9974 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.43204 1.26h-6.412zm3.08-2.912h3.248c2.27734 0 4.04134-.6347 5.29204-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.29204-1.904h-3.248v14.224zm23.17824 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9974-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6346-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6346 1.1387.952 2.4173.952 3.836 0 1.4373-.3174 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5214.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6906.3733 1.428.56 2.212.56zM39.9124 30V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8855.448c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm24.0163 2.464c-1.4373 0-2.7066-.3267-3.808-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.6346-1.1573-.952-2.464-.952-3.92s.3174-2.7533.952-3.892c.6347-1.1573 1.5027-2.0627 2.604-2.716 1.1014-.6533 2.3707-.98 3.808-.98 1.5867 0 2.9214.3547 4.004 1.064 1.1014.7093 1.8854 1.6707 2.352 2.884l-2.744 1.12c-.6533-1.5307-1.876-2.296-3.668-2.296-.784 0-1.5026.2053-2.156.616-.6533.392-1.176.952-1.568 1.68-.392.7093-.588 1.5493-.588 2.52 0 .9707.196 1.82.588 2.548.392.728.9147 1.288 1.568 1.68.6534.392 1.372.588 2.156.588.9147 0 1.6894-.2053 2.324-.616.6347-.4293 1.1294-1.008 1.484-1.736l2.688 1.176c-.504 1.1387-1.3066 2.0813-2.408 2.828-1.1013.7467-2.4453 1.12-4.032 1.12zm15.9158 0c-1.4745 0-2.7719-.336-3.8919-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6346-1.1387-.952-2.4267-.952-3.864 0-1.4187.3174-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4174-1.008 3.8919-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.997 1.5867 2.632 2.744.635 1.1387.952 2.4173.952 3.836 0 1.4373-.317 2.7253-.952 3.864s-1.512 2.044-2.632 2.716c-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.213-.9427 1.624-1.652.429-.728.644-1.596.644-2.604s-.215-1.8667-.644-2.576c-.411-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5212.196-2.2119.588-.672.3733-1.2226.924-1.652 1.652-.4106.7093-.616 1.568-.616 2.576s.2054 1.876.616 2.604c.4294.7093.98 1.26 1.652 1.652.6907.3733 1.4279.56 2.2119.56zM111.522 30V15.72h2.856v1.96h.168c.41-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.754 0 3.07.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.29-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.542.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#3c4043"/>
<group>
<group>
<path android:pathData="M176.529 9.44664v8.16616h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82685-1.776-1.24122-2.976-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.008V6.57217h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.34951 2.158 2.99393 2.158 4.93143 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM191.864 25.0602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.2949-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5935 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3266 4.413.9799v-.6869c0-1.0452-.415-1.9318-1.242-2.6616-.83-.7299-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0906 3.619-3.1358 6.476-3.1358zM219.463 13.9543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M164.373 18.4452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M151.454 31.5782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M143.901 20.7111c-.273-.8119-.422-1.678-.422-2.5721 0-.894.149-1.7601.422-2.572v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0345 0 2.1708.518 4.2205 1.433 6.0346l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M151.454 10.0196c1.982 0 3.759.6813 5.161 2.0159v.0019l3.84-3.83578C158.123 6.03271 155.082 4.7 151.454 4.7c-5.257 0-9.807 3.01446-12.021 7.4046l4.468 3.4624c1.065-3.1843 4.043-5.5474 7.553-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="220dp" android:height="38dp" android:viewportWidth="220" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:pathData="M3.39456 30V9.952h6.412c2.10934 0 3.92004.4293 5.43204 1.288 1.5306.84 2.7066 2.016 3.528 3.528.84 1.512 1.26 3.248 1.26 5.208 0 1.9787-.42 3.724-1.26 5.236-.8214 1.4933-1.9974 2.6693-3.528 3.528-1.512.84-3.3227 1.26-5.43204 1.26h-6.412zm3.08-2.912h3.248c2.27734 0 4.04134-.6347 5.29204-1.904 1.2693-1.2693 1.904-3.0053 1.904-5.208s-.6347-3.9387-1.904-5.208c-1.2507-1.2693-3.0147-1.904-5.29204-1.904h-3.248v14.224zm23.17824 3.36c-1.4747 0-2.772-.336-3.892-1.008-1.12-.672-1.9974-1.5773-2.632-2.716-.6347-1.1387-.952-2.4267-.952-3.864 0-1.4187.3173-2.6973.952-3.836.6346-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4173-1.008 3.892-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.9973 1.5867 2.632 2.744.6346 1.1387.952 2.4173.952 3.836 0 1.4373-.3174 2.7253-.952 3.864-.6347 1.1387-1.512 2.044-2.632 2.716-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.2133-.9427 1.624-1.652.4293-.728.644-1.596.644-2.604s-.2147-1.8667-.644-2.576c-.4107-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5214.196-2.212.588-.672.3733-1.2227.924-1.652 1.652-.4107.7093-.616 1.568-.616 2.576s.2053 1.876.616 2.604c.4293.7093.98 1.26 1.652 1.652.6906.3733 1.428.56 2.212.56zM39.9124 30V15.72h2.856v1.96h.168c.4107-.6907 1.0174-1.26 1.82-1.708.8214-.4667 1.7174-.7 2.688-.7 1.7547 0 3.0707.5227 3.948 1.568.8774 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.2893-1.9973-.868-2.52-.5786-.5413-1.3346-.812-2.268-.812-.728 0-1.3626.2053-1.904.616-.5413.392-.9706.9147-1.288 1.568-.2986.6533-.448 1.3533-.448 2.1V30h-3.024zm20.8855.448c-1.0267 0-1.9413-.196-2.744-.588-.8027-.4107-1.428-.98-1.876-1.708-.448-.728-.672-1.5587-.672-2.492 0-1.008.2613-1.8667.784-2.576.5413-.728 1.26-1.2787 2.156-1.652.896-.3733 1.8853-.56 2.968-.56.896 0 1.68.084 2.352.252.6907.168 1.2133.3453 1.568.532V20.9c0-.9333-.336-1.68-1.008-2.24-.672-.56-1.54-.84-2.604-.84-.728 0-1.4187.168-2.072.504-.6533.3173-1.176.756-1.568 1.316l-2.072-1.596c.616-.8587 1.428-1.5307 2.436-2.016 1.0267-.504 2.1467-.756 3.36-.756 2.072 0 3.668.5133 4.788 1.54 1.12 1.008 1.68 2.4267 1.68 4.256V30h-2.94v-1.764h-.168c-.3733.5787-.9333 1.092-1.68 1.54-.7467.448-1.6427.672-2.688.672zm.532-2.464c.784 0 1.4747-.1867 2.072-.56.5973-.3733 1.064-.8587 1.4-1.456.3547-.616.532-1.2787.532-1.988-.4293-.2427-.9333-.4387-1.512-.588-.5787-.168-1.1947-.252-1.848-.252-1.232 0-2.1093.252-2.632.756-.5227.4853-.784 1.0827-.784 1.792 0 .672.252 1.2227.756 1.652s1.176.644 2.016.644zm24.0163 2.464c-1.4373 0-2.7066-.3267-3.808-.98-1.1013-.6533-1.9693-1.5493-2.604-2.688-.6346-1.1573-.952-2.464-.952-3.92s.3174-2.7533.952-3.892c.6347-1.1573 1.5027-2.0627 2.604-2.716 1.1014-.6533 2.3707-.98 3.808-.98 1.5867 0 2.9214.3547 4.004 1.064 1.1014.7093 1.8854 1.6707 2.352 2.884l-2.744 1.12c-.6533-1.5307-1.876-2.296-3.668-2.296-.784 0-1.5026.2053-2.156.616-.6533.392-1.176.952-1.568 1.68-.392.7093-.588 1.5493-.588 2.52 0 .9707.196 1.82.588 2.548.392.728.9147 1.288 1.568 1.68.6534.392 1.372.588 2.156.588.9147 0 1.6894-.2053 2.324-.616.6347-.4293 1.1294-1.008 1.484-1.736l2.688 1.176c-.504 1.1387-1.3066 2.0813-2.408 2.828-1.1013.7467-2.4453 1.12-4.032 1.12zm15.9158 0c-1.4745 0-2.7719-.336-3.8919-1.008-1.12-.672-1.9973-1.5773-2.632-2.716-.6346-1.1387-.952-2.4267-.952-3.864 0-1.4187.3174-2.6973.952-3.836.6347-1.1573 1.512-2.072 2.632-2.744 1.12-.672 2.4174-1.008 3.8919-1.008 1.456 0 2.744.336 3.864 1.008 1.12.672 1.997 1.5867 2.632 2.744.635 1.1387.952 2.4173.952 3.836 0 1.4373-.317 2.7253-.952 3.864s-1.512 2.044-2.632 2.716c-1.12.672-2.408 1.008-3.864 1.008zm0-2.772c.784 0 1.512-.1867 2.184-.56.672-.392 1.213-.9427 1.624-1.652.429-.728.644-1.596.644-2.604s-.215-1.8667-.644-2.576c-.411-.728-.952-1.2787-1.624-1.652-.672-.392-1.4-.588-2.184-.588-.784 0-1.5212.196-2.2119.588-.672.3733-1.2226.924-1.652 1.652-.4106.7093-.616 1.568-.616 2.576s.2054 1.876.616 2.604c.4294.7093.98 1.26 1.652 1.652.6907.3733 1.4279.56 2.2119.56zM111.522 30V15.72h2.856v1.96h.168c.41-.6907 1.017-1.26 1.82-1.708.821-.4667 1.717-.7 2.688-.7 1.754 0 3.07.5227 3.948 1.568.877 1.0453 1.316 2.4267 1.316 4.144V30h-2.996v-8.624c0-1.1573-.29-1.9973-.868-2.52-.579-.5413-1.335-.812-2.268-.812-.728 0-1.363.2053-1.904.616-.542.392-.971.9147-1.288 1.568-.299.6533-.448 1.3533-.448 2.1V30h-3.024z" android:fillColor="#ffffff"/>
<group>
<group>
<path android:pathData="M176.529 9.34665v8.16615h5.036c1.2 0 2.192-.4032 2.976-1.2096.806-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.403-2.0364-1.209-2.8428-.784-.82684-1.776-1.24121-2.976-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.008V6.47218h7.978c2.028 0 3.749.67569 5.167 2.0252 1.439 1.3495 2.158 2.99392 2.158 4.93142 0 1.9822-.719 3.6379-2.158 4.965-1.396 1.3289-3.119 1.9916-5.167 1.9916h-4.97v.0018zM191.864 24.9602c0 .784.333 1.4373.998 1.9599s1.444.7839 2.338.7839c1.265 0 2.391-.4686 3.384-1.4036.992-.937 1.487-2.0364 1.487-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.222 0-2.24.295-3.057.8829-.817.5878-1.226 1.3141-1.226 2.1857zm3.892-11.6285c2.224 0 3.979.5936 5.266 1.7807 1.286 1.1871 1.928 2.8147 1.928 4.8828v9.8647h-2.877v-2.2212h-.131c-1.243 1.829-2.9 2.7438-4.97 2.7438-1.766 0-3.244-.5226-4.431-1.5679-1.188-1.0452-1.782-2.3518-1.782-3.9197 0-1.6556.626-2.9717 1.879-3.9515 1.254-.9799 2.927-1.4708 5.02-1.4708 1.786 0 3.258.3267 4.413.9799v-.6868c0-1.0453-.415-1.9319-1.242-2.6617-.83-.7298-1.798-1.0938-2.91-1.0938-1.68 0-3.008.7074-3.989 2.1241l-2.65-1.6668c1.461-2.0905 3.619-3.1358 6.476-3.1358zM219.463 13.8543l-10.039 23.0611h-3.106l3.728-8.069-6.606-14.9921h3.27l4.774 11.4979h.066l4.643-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M164.373 18.3452c0-.9463-.08-1.8591-.232-2.7326h-12.687v5.1759h7.266c-.312 1.6872-1.255 3.1227-2.687 4.084v3.3616h4.337c2.54-2.3406 4.003-5.7993 4.003-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M151.454 31.4782c3.63 0 6.687-1.1909 8.916-3.2441l-4.337-3.3616c-1.207.8119-2.761 1.286-4.579 1.286-3.51 0-6.488-2.363-7.553-5.5473h-4.468v3.4624c2.214 4.3901 6.764 7.4046 12.021 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M143.901 20.6111c-.273-.8119-.422-1.678-.422-2.572 0-.8941.149-1.7602.422-2.5721v-3.4625h-4.468c-.915 1.8143-1.433 3.8638-1.433 6.0346 0 2.1707.518 4.2204 1.433 6.0345l4.468-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M151.454 9.91964c1.982 0 3.759.68126 5.161 2.01586v.0019l3.84-3.83577c-2.332-2.16891-5.373-3.50162-9.001-3.50162-5.257 0-9.807 3.01446-12.021 7.40459l4.468 3.4624c1.065-3.1843 4.043-5.54736 7.553-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="236dp" android:height="38dp" android:viewportWidth="236" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<group>
<path android:pathData="M38.5289 9.44664v8.16616h5.036c1.1996 0 2.1916-.4032 2.9764-1.2096.8054-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.4036-2.0364-1.209-2.8428-.7848-.82685-1.7768-1.24122-2.9764-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.0084V6.57217h7.9788c2.0276 0 3.7485.67569 5.1666 2.0252 1.439 1.34951 2.1582 2.99393 2.1582 4.93143 0 1.9822-.7194 3.6379-2.1582 4.965-1.3958 1.3289-3.1186 1.9916-5.1666 1.9916h-4.9704v.0018zM53.8642 25.0602c0 .784.3326 1.4373.998 1.9599.665.5226 1.4442.7839 2.3376.7839 1.2648 0 2.3915-.4686 3.3837-1.4036.9924-.937 1.4874-2.0364 1.4874-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.2218 0-2.2402.2949-3.0568.8829-.8167.5878-1.2259 1.3141-1.2259 2.1857zm3.8922-11.6285c2.2236 0 3.9782.5935 5.2658 1.7807 1.2856 1.1871 1.9282 2.8147 1.9282 4.8828v9.8647H62.073v-2.2212h-.131c-1.2426 1.829-2.9 2.7438-4.9702 2.7438-1.7658 0-3.2439-.5226-4.4306-1.5679-1.1882-1.0452-1.7824-2.3518-1.7824-3.9197 0-1.6556.6258-2.9717 1.8796-3.9515 1.2538-.9799 2.9264-1.4708 5.0192-1.4708 1.7861 0 3.2586.3266 4.4133.9799v-.6869c0-1.0452-.4148-1.9318-1.2424-2.6616-.8298-.7299-1.7977-1.0938-2.9095-1.0938-1.6799 0-3.0082.7074-3.9892 2.1241l-2.6499-1.6668c1.4613-2.0906 3.6195-3.1358 6.4765-3.1358zM81.4629 13.9543L71.4233 37.0154h-3.1058l3.728-8.069-6.6056-14.9921h3.27l4.7742 11.4979h.0654l4.6434-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M26.3729 18.4452c0-.9463-.0803-1.8591-.2317-2.7326H13.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 31.5782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.50915 0-6.48766-2.363-7.55274-5.5473H1.43311v3.4624c2.21425 4.3901 6.76422 7.4046 12.02049 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M5.90095 20.7111c-.27281-.8119-.4223-1.678-.4223-2.5721 0-.894.14949-1.7601.4223-2.572v-3.4625H1.43319C.517594 13.9188 0 15.9683 0 18.139c0 2.1708.517594 4.2205 1.43319 6.0346l4.46776-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 10.0196c1.9826 0 3.7596.6813 5.161 2.0159v.0019l3.8399-3.83578C20.1226 6.03271 17.0824 4.7 13.4536 4.7c-5.25627 0-9.80624 3.01446-12.02049 7.4046l4.46775 3.4624c1.06508-3.1843 4.04359-5.5474 7.55274-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M95.212 11.576l.252 2.436c3.024-.644 10.164-1.316 13.16-1.652-2.576 1.54-5.236 5.096-5.236 9.464 0 6.244 5.908 9.016 11.088 9.212l.812-2.324c-4.564-.168-9.66-1.904-9.66-7.364 0-3.332 2.436-7.588 6.412-8.876 1.428-.42 3.892-.448 5.488-.448v-2.24c-1.876.084-4.508.252-7.56.504-5.152.42-10.444.952-12.264 1.148-.532.056-1.428.112-2.492.14zm18.284 3.892l-1.428.616c.84 1.148 1.652 2.604 2.296 3.948l1.428-.672c-.588-1.232-1.652-2.968-2.296-3.892zm3.052-1.176l-1.372.644c.868 1.176 1.68 2.548 2.352 3.92l1.456-.7c-.644-1.232-1.764-2.94-2.436-3.864zm8.84-3.668h19.768v3.108h1.988V8.804H136.28v-2.24h-2.044v2.24h-10.78v4.928h1.932v-3.108zm10.248 14.14v2.856h-7.056v-2.856h7.056zm1.932 4.48V23.14H126.62v7.504h1.96v-1.4h8.988zm10.052-9.716h-4.172l.84-1.176c-2.1-1.12-5.908-2.492-9.072-3.304l.252-.504h8.68v-1.68H136c.14-.588.224-1.204.308-1.876h-1.932c-.084.7-.196 1.316-.336 1.876h-7.588v1.68h6.86c-1.148 1.82-3.388 2.828-7.98 3.444.336.364.812 1.092.952 1.54 4.088-.616 6.524-1.568 7.98-3.136 2.884.784 6.244 2.044 8.344 3.136h-19.6v1.876h18.508v8.344c0 .392-.084.476-.532.532-.476 0-2.016 0-3.696-.056.224.56.532 1.344.644 1.876 2.156 0 3.612.028 4.508-.28.896-.308 1.148-.868 1.148-2.016v-8.4h4.032v-1.876zM157.888 6.76c-1.596 4.34-4.256 8.596-7.112 11.312.392.476 1.036 1.568 1.288 2.044.952-.98 1.932-2.128 2.828-3.388v15.344h2.072V13.508c1.148-1.932 2.128-4.004 2.968-6.104l-2.044-.644zm18.34 6.02h-3.556V6.9h-2.1v5.88h-11.284v2.072h11.284V29.3c0 .644-.252.812-.868.868-.672.028-2.968.028-5.32-.056.308.56.7 1.512.812 2.044 3.024.028 4.9 0 5.992-.336 1.036-.308 1.484-.952 1.484-2.52V14.852h3.556V12.78zm-9.184 11.788c-.896-1.708-2.744-4.62-4.2-6.776l-1.792.84c1.428 2.24 3.22 5.236 4.06 6.972l1.932-1.036zm28.412-16.744h-2.548c.028.224.14 1.036.168 1.764.028.392.056 1.064.056 1.848-4.172.056-9.436.224-12.544.28l.056 2.156c3.5-.252 8.26-.448 12.516-.476.028.98.028 1.988.028 2.828-.56-.196-1.176-.308-1.876-.308-2.66 0-4.928 2.1-4.928 4.872 0 3.052 2.24 4.676 4.592 4.676.952 0 1.764-.252 2.436-.756-1.12 2.548-3.696 4.116-7.42 4.956l1.876 1.848c6.524-1.96 8.372-6.16 8.372-9.94 0-1.4-.308-2.632-.896-3.584-.028-1.288-.056-3.024-.056-4.62h.392c4.088 0 6.636.056 8.204.14l.028-2.072c-1.344 0-4.788-.028-8.204-.028h-.42c0-.756.028-1.4.028-1.82.028-.364.084-1.456.14-1.764zm-6.972 12.936c0-1.82 1.372-2.968 2.828-2.968 1.092 0 2.044.532 2.492 1.764.252 2.66-.812 3.976-2.464 3.976-1.568 0-2.856-1.036-2.856-2.772zm27.964 6.3c0-.98.98-1.792 2.24-1.792 2.128 0 3.528 1.596 3.752 3.808-.7.112-1.456.168-2.268.168-2.184 0-3.724-.84-3.724-2.184zm-3.584-17.696l.084 2.324c.588-.084 1.232-.14 1.848-.168 1.484-.084 7.084-.336 8.568-.392-1.428 1.26-4.928 4.2-6.496 5.488-1.624 1.372-5.208 4.368-7.532 6.272l1.596 1.652c3.556-3.612 6.048-5.6 10.724-5.6 3.64 0 6.272 2.072 6.272 4.816 0 2.296-1.26 3.92-3.5 4.788-.336-2.66-2.212-4.956-5.712-4.956-2.604 0-4.312 1.708-4.312 3.64 0 2.324 2.324 3.976 6.132 3.976 5.936 0 9.632-2.912 9.632-7.42 0-3.78-3.332-6.58-7.98-6.58-1.26 0-2.604.14-3.892.588 2.184-1.82 5.992-5.068 7.392-6.132.504-.42 1.064-.784 1.568-1.148l-1.288-1.624c-.28.084-.672.168-1.512.224-1.484.14-8.148.364-9.604.364-.56 0-1.344-.028-1.988-.112z" android:fillColor="#3c4043"/>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="236dp" android:height="38dp" android:viewportWidth="236" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<group>
<path android:pathData="M38.5289 9.34665v8.16615h5.036c1.1996 0 2.1916-.4032 2.9764-1.2096.8054-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.4036-2.0364-1.209-2.8428-.7848-.82684-1.7768-1.24121-2.9764-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.0084V6.47218h7.9788c2.0276 0 3.7485.67569 5.1666 2.0252 1.439 1.3495 2.1582 2.99392 2.1582 4.93142 0 1.9822-.7194 3.6379-2.1582 4.965-1.3958 1.3289-3.1186 1.9916-5.1666 1.9916h-4.9704v.0018zM53.8642 24.9602c0 .784.3326 1.4373.998 1.9599.665.5226 1.4442.7839 2.3376.7839 1.2648 0 2.3915-.4686 3.3837-1.4036.9924-.937 1.4874-2.0364 1.4874-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.2218 0-2.2402.295-3.0568.8829-.8167.5878-1.2259 1.3141-1.2259 2.1857zm3.8922-11.6285c2.2236 0 3.9782.5936 5.2658 1.7807 1.2856 1.1871 1.9282 2.8147 1.9282 4.8828v9.8647H62.073v-2.2212h-.131c-1.2426 1.829-2.9 2.7438-4.9702 2.7438-1.7658 0-3.2439-.5226-4.4306-1.5679-1.1882-1.0452-1.7824-2.3518-1.7824-3.9197 0-1.6556.6258-2.9717 1.8796-3.9515 1.2538-.9799 2.9264-1.4708 5.0192-1.4708 1.7861 0 3.2586.3267 4.4133.9799v-.6868c0-1.0453-.4148-1.9319-1.2424-2.6617-.8298-.7298-1.7977-1.0938-2.9095-1.0938-1.6799 0-3.0082.7074-3.9892 2.1241l-2.6499-1.6668c1.4613-2.0905 3.6195-3.1358 6.4765-3.1358zM81.4629 13.8543L71.4233 36.9154h-3.1058l3.728-8.069-6.6056-14.9921h3.27l4.7742 11.4979h.0654l4.6434-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M26.3729 18.3452c0-.9463-.0803-1.8591-.2317-2.7326H13.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 31.4782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.50915 0-6.48766-2.363-7.55274-5.5473H1.43311v3.4624c2.21425 4.3901 6.76422 7.4046 12.02049 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M5.90095 20.6111c-.27281-.8119-.4223-1.678-.4223-2.572 0-.8941.14949-1.7602.4223-2.5721v-3.4625H1.43319C.517594 13.8188 0 15.8683 0 18.0391c0 2.1707.517594 4.2204 1.43319 6.0345l4.46776-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 9.91964c1.9826 0 3.7596.68126 5.161 2.01586v.0019l3.8399-3.83577c-2.3319-2.16891-5.3721-3.50162-9.0009-3.50162-5.25627 0-9.80624 3.01446-12.02049 7.40459l4.46775 3.4624c1.06508-3.1843 4.04359-5.54736 7.55274-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M95.212 11.576l.252 2.436c3.024-.644 10.164-1.316 13.16-1.652-2.576 1.54-5.236 5.096-5.236 9.464 0 6.244 5.908 9.016 11.088 9.212l.812-2.324c-4.564-.168-9.66-1.904-9.66-7.364 0-3.332 2.436-7.588 6.412-8.876 1.428-.42 3.892-.448 5.488-.448v-2.24c-1.876.084-4.508.252-7.56.504-5.152.42-10.444.952-12.264 1.148-.532.056-1.428.112-2.492.14zm18.284 3.892l-1.428.616c.84 1.148 1.652 2.604 2.296 3.948l1.428-.672c-.588-1.232-1.652-2.968-2.296-3.892zm3.052-1.176l-1.372.644c.868 1.176 1.68 2.548 2.352 3.92l1.456-.7c-.644-1.232-1.764-2.94-2.436-3.864zm8.84-3.668h19.768v3.108h1.988V8.804H136.28v-2.24h-2.044v2.24h-10.78v4.928h1.932v-3.108zm10.248 14.14v2.856h-7.056v-2.856h7.056zm1.932 4.48V23.14H126.62v7.504h1.96v-1.4h8.988zm10.052-9.716h-4.172l.84-1.176c-2.1-1.12-5.908-2.492-9.072-3.304l.252-.504h8.68v-1.68H136c.14-.588.224-1.204.308-1.876h-1.932c-.084.7-.196 1.316-.336 1.876h-7.588v1.68h6.86c-1.148 1.82-3.388 2.828-7.98 3.444.336.364.812 1.092.952 1.54 4.088-.616 6.524-1.568 7.98-3.136 2.884.784 6.244 2.044 8.344 3.136h-19.6v1.876h18.508v8.344c0 .392-.084.476-.532.532-.476 0-2.016 0-3.696-.056.224.56.532 1.344.644 1.876 2.156 0 3.612.028 4.508-.28.896-.308 1.148-.868 1.148-2.016v-8.4h4.032v-1.876zM157.888 6.76c-1.596 4.34-4.256 8.596-7.112 11.312.392.476 1.036 1.568 1.288 2.044.952-.98 1.932-2.128 2.828-3.388v15.344h2.072V13.508c1.148-1.932 2.128-4.004 2.968-6.104l-2.044-.644zm18.34 6.02h-3.556V6.9h-2.1v5.88h-11.284v2.072h11.284V29.3c0 .644-.252.812-.868.868-.672.028-2.968.028-5.32-.056.308.56.7 1.512.812 2.044 3.024.028 4.9 0 5.992-.336 1.036-.308 1.484-.952 1.484-2.52V14.852h3.556V12.78zm-9.184 11.788c-.896-1.708-2.744-4.62-4.2-6.776l-1.792.84c1.428 2.24 3.22 5.236 4.06 6.972l1.932-1.036zm28.412-16.744h-2.548c.028.224.14 1.036.168 1.764.028.392.056 1.064.056 1.848-4.172.056-9.436.224-12.544.28l.056 2.156c3.5-.252 8.26-.448 12.516-.476.028.98.028 1.988.028 2.828-.56-.196-1.176-.308-1.876-.308-2.66 0-4.928 2.1-4.928 4.872 0 3.052 2.24 4.676 4.592 4.676.952 0 1.764-.252 2.436-.756-1.12 2.548-3.696 4.116-7.42 4.956l1.876 1.848c6.524-1.96 8.372-6.16 8.372-9.94 0-1.4-.308-2.632-.896-3.584-.028-1.288-.056-3.024-.056-4.62h.392c4.088 0 6.636.056 8.204.14l.028-2.072c-1.344 0-4.788-.028-8.204-.028h-.42c0-.756.028-1.4.028-1.82.028-.364.084-1.456.14-1.764zm-6.972 12.936c0-1.82 1.372-2.968 2.828-2.968 1.092 0 2.044.532 2.492 1.764.252 2.66-.812 3.976-2.464 3.976-1.568 0-2.856-1.036-2.856-2.772zm27.964 6.3c0-.98.98-1.792 2.24-1.792 2.128 0 3.528 1.596 3.752 3.808-.7.112-1.456.168-2.268.168-2.184 0-3.724-.84-3.724-2.184zm-3.584-17.696l.084 2.324c.588-.084 1.232-.14 1.848-.168 1.484-.084 7.084-.336 8.568-.392-1.428 1.26-4.928 4.2-6.496 5.488-1.624 1.372-5.208 4.368-7.532 6.272l1.596 1.652c3.556-3.612 6.048-5.6 10.724-5.6 3.64 0 6.272 2.072 6.272 4.816 0 2.296-1.26 3.92-3.5 4.788-.336-2.66-2.212-4.956-5.712-4.956-2.604 0-4.312 1.708-4.312 3.64 0 2.324 2.324 3.976 6.132 3.976 5.936 0 9.632-2.912 9.632-7.42 0-3.78-3.332-6.58-7.98-6.58-1.26 0-2.604.14-3.892.588 2.184-1.82 5.992-5.068 7.392-6.132.504-.42 1.064-.784 1.568-1.148l-1.288-1.624c-.28.084-.672.168-1.512.224-1.484.14-8.148.364-9.604.364-.56 0-1.344-.028-1.988-.112z" android:fillColor="#ffffff"/>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="180dp" android:height="38dp" android:viewportWidth="180" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<group>
<path android:pathData="M38.5289 9.44664v8.16616h5.036c1.1996 0 2.1916-.4032 2.9764-1.2096.8054-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.4036-2.0364-1.209-2.8428-.7848-.82685-1.7768-1.24122-2.9764-1.24122h-5.036v.00186zm0 11.04056v9.4727h-3.0084V6.57217h7.9788c2.0276 0 3.7485.67569 5.1666 2.0252 1.439 1.34951 2.1582 2.99393 2.1582 4.93143 0 1.9822-.7194 3.6379-2.1582 4.965-1.3958 1.3289-3.1186 1.9916-5.1666 1.9916h-4.9704v.0018zM53.8642 25.0602c0 .784.3326 1.4373.998 1.9599.665.5226 1.4442.7839 2.3376.7839 1.2648 0 2.3915-.4686 3.3837-1.4036.9924-.937 1.4874-2.0364 1.4874-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.2218 0-2.2402.2949-3.0568.8829-.8167.5878-1.2259 1.3141-1.2259 2.1857zm3.8922-11.6285c2.2236 0 3.9782.5935 5.2658 1.7807 1.2856 1.1871 1.9282 2.8147 1.9282 4.8828v9.8647H62.073v-2.2212h-.131c-1.2426 1.829-2.9 2.7438-4.9702 2.7438-1.7658 0-3.2439-.5226-4.4306-1.5679-1.1882-1.0452-1.7824-2.3518-1.7824-3.9197 0-1.6556.6258-2.9717 1.8796-3.9515 1.2538-.9799 2.9264-1.4708 5.0192-1.4708 1.7861 0 3.2586.3266 4.4133.9799v-.6869c0-1.0452-.4148-1.9318-1.2424-2.6616-.8298-.7299-1.7977-1.0938-2.9095-1.0938-1.6799 0-3.0082.7074-3.9892 2.1241l-2.6499-1.6668c1.4613-2.0906 3.6195-3.1358 6.4765-3.1358zM81.4629 13.9543L71.4233 37.0154h-3.1058l3.728-8.069-6.6056-14.9921h3.27l4.7742 11.4979h.0654l4.6434-11.4979h3.27z" android:fillColor="#5f6368" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M26.3729 18.4452c0-.9463-.0803-1.8591-.2317-2.7326H13.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 31.5782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.50915 0-6.48766-2.363-7.55274-5.5473H1.43311v3.4624c2.21425 4.3901 6.76422 7.4046 12.02049 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M5.90095 20.7111c-.27281-.8119-.4223-1.678-.4223-2.5721 0-.894.14949-1.7601.4223-2.572v-3.4625H1.43319C.517594 13.9188 0 15.9683 0 18.139c0 2.1708.517594 4.2205 1.43319 6.0346l4.46776-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 10.0196c1.9826 0 3.7596.6813 5.161 2.0159v.0019l3.8399-3.83578C20.1226 6.03271 17.0824 4.7 13.4536 4.7c-5.25627 0-9.80624 3.01446-12.02049 7.4046l4.46775 3.4624c1.06508-3.1843 4.04359-5.5474 7.55274-5.5474z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M107 27.088v-4.732h8.036v-1.848H99.58v-4.06h14.868V8.804H97.256v1.876h14.952v3.92H97.312v7.756h7.364v4.732h-10.22v1.876h22.82v-1.876H107zm21.861-17.416v1.848h9.436c-.476 5.964-3.836 10.78-10.584 14l1.232 1.876c8.344-4.088 11.676-10.472 11.676-17.724h-11.76zm16.828-2.716v25.116h2.296V6.956h-2.296zm25.33 9.996h-12.46v-3.696h12.46v3.696zm2.296-8.988h-2.296v3.444h-12.46V7.964h-2.268v10.864h17.024V7.964zm2.884 13.888h-22.792V23.7h10.192v8.4h2.296v-8.4h10.304v-1.848z" android:fillColor="#3c4043"/>
</vector>

View file

@ -0,0 +1,14 @@
<vector android:width="180dp" android:height="38dp" android:viewportWidth="180" android:viewportHeight="38" xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<group>
<path android:pathData="M38.5289 9.34665v8.16615h5.036c1.1996 0 2.1916-.4032 2.9764-1.2096.8054-.8044 1.209-1.7638 1.209-2.8744 0-1.0882-.4036-2.0364-1.209-2.8428-.7848-.82684-1.7768-1.24121-2.9764-1.24121h-5.036v.00186zm0 11.04055v9.4727h-3.0084V6.47218h7.9788c2.0276 0 3.7485.67569 5.1666 2.0252 1.439 1.3495 2.1582 2.99392 2.1582 4.93142 0 1.9822-.7194 3.6379-2.1582 4.965-1.3958 1.3289-3.1186 1.9916-5.1666 1.9916h-4.9704v.0018zM53.8642 24.9602c0 .784.3326 1.4373.998 1.9599.665.5226 1.4442.7839 2.3376.7839 1.2648 0 2.3915-.4686 3.3837-1.4036.9924-.937 1.4874-2.0364 1.4874-3.2982-.938-.741-2.246-1.1106-3.924-1.1106-1.2218 0-2.2402.295-3.0568.8829-.8167.5878-1.2259 1.3141-1.2259 2.1857zm3.8922-11.6285c2.2236 0 3.9782.5936 5.2658 1.7807 1.2856 1.1871 1.9282 2.8147 1.9282 4.8828v9.8647H62.073v-2.2212h-.131c-1.2426 1.829-2.9 2.7438-4.9702 2.7438-1.7658 0-3.2439-.5226-4.4306-1.5679-1.1882-1.0452-1.7824-2.3518-1.7824-3.9197 0-1.6556.6258-2.9717 1.8796-3.9515 1.2538-.9799 2.9264-1.4708 5.0192-1.4708 1.7861 0 3.2586.3267 4.4133.9799v-.6868c0-1.0453-.4148-1.9319-1.2424-2.6617-.8298-.7298-1.7977-1.0938-2.9095-1.0938-1.6799 0-3.0082.7074-3.9892 2.1241l-2.6499-1.6668c1.4613-2.0905 3.6195-3.1358 6.4765-3.1358zM81.4629 13.8543L71.4233 36.9154h-3.1058l3.728-8.069-6.6056-14.9921h3.27l4.7742 11.4979h.0654l4.6434-11.4979h3.27z" android:fillColor="#ffffff" android:fillType="evenOdd"/>
</group>
<group>
<path android:pathData="M26.3729 18.3452c0-.9463-.0803-1.8591-.2317-2.7326H13.4536v5.1759h7.2669c-.3121 1.6872-1.2557 3.1227-2.687 4.084v3.3616h4.3369c2.5394-2.3406 4.0025-5.7993 4.0025-9.8889z" android:fillColor="#4285f4" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 31.4782c3.6307 0 6.6876-1.1909 8.9168-3.2441l-4.3369-3.3616c-1.2071.8119-2.7618 1.286-4.5799 1.286-3.50915 0-6.48766-2.363-7.55274-5.5473H1.43311v3.4624c2.21425 4.3901 6.76422 7.4046 12.02049 7.4046z" android:fillColor="#34a853" android:fillType="evenOdd"/>
<path android:pathData="M5.90095 20.6111c-.27281-.8119-.4223-1.678-.4223-2.572 0-.8941.14949-1.7602.4223-2.5721v-3.4625H1.43319C.517594 13.8188 0 15.8683 0 18.0391c0 2.1707.517594 4.2204 1.43319 6.0345l4.46776-3.4625z" android:fillColor="#fabb05" android:fillType="evenOdd"/>
<path android:pathData="M13.4536 9.91964c1.9826 0 3.7596.68126 5.161 2.01586v.0019l3.8399-3.83577c-2.3319-2.16891-5.3721-3.50162-9.0009-3.50162-5.25627 0-9.80624 3.01446-12.02049 7.40459l4.46775 3.4624c1.06508-3.1843 4.04359-5.54736 7.55274-5.54736z" android:fillColor="#e94235" android:fillType="evenOdd"/>
</group>
</group>
<path android:pathData="M107 27.088v-4.732h8.036v-1.848H99.58v-4.06h14.868V8.804H97.256v1.876h14.952v3.92H97.312v7.756h7.364v4.732h-10.22v1.876h22.82v-1.876H107zm21.861-17.416v1.848h9.436c-.476 5.964-3.836 10.78-10.584 14l1.232 1.876c8.344-4.088 11.676-10.472 11.676-17.724h-11.76zm16.828-2.716v25.116h2.296V6.956h-2.296zm25.33 9.996h-12.46v-3.696h12.46v3.696zm2.296-8.988h-2.296v3.444h-12.46V7.964h-2.268v10.864h17.024V7.964zm2.884 13.888h-22.792V23.7h10.192v8.4h2.296v-8.4h10.304v-1.848z" android:fillColor="#ffffff"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#1f000000">
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_enabled="false"
android:state_focused="true"
android:drawable="@drawable/googlepay_button_background_image_focused" />
<item
android:state_enabled="false"
android:drawable="@drawable/googlepay_button_background_image" />
<!-- Skipping state_pressed="true" because the ripple effect is sufficient feedback -->
<item
android:state_focused="true"
android:drawable="@drawable/googlepay_button_background_image_focused" />
<item
android:drawable="@drawable/googlepay_button_background_image" />
</selector>
</item>
</ripple>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#1f000000">
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_enabled="false"
android:state_focused="true"
android:drawable="@drawable/googlepay_button_no_shadow_background_image_focused" />
<item
android:state_enabled="false"
android:drawable="@drawable/googlepay_button_no_shadow_background_image" />
<!-- Skipping state_pressed="true" because the ripple effect is sufficient feedback -->
<item
android:state_focused="true"
android:drawable="@drawable/googlepay_button_no_shadow_background_image_focused" />
<item
android:drawable="@drawable/googlepay_button_no_shadow_background_image" />
</selector>
</item>
</ripple>

Some files were not shown because too many files have changed in this diff Show more