Merge branch 'dev' into objectives

This commit is contained in:
Milos Kozak 2020-12-28 18:40:10 +01:00
commit 52c6d762f5
202 changed files with 5662 additions and 1858 deletions

View file

@ -120,7 +120,7 @@ android {
targetSdkVersion 28
multiDexEnabled true
versionCode 1500
version "2.7.2-dev"
version "2.7.3-dev"
buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
@ -135,6 +135,9 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
lintOptions {
checkReleaseBuilds false
disable 'MissingTranslation'
@ -243,7 +246,7 @@ dependencies {
testImplementation "junit:junit:$junit_version"
testImplementation 'org.json:json:20200518'
testImplementation "org.mockito:mockito-core:2.8.47"
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
testImplementation "org.powermock:powermock-api-mockito2:${powermockVersion}"
testImplementation "org.powermock:powermock-module-junit4-rule-agent:${powermockVersion}"
testImplementation "org.powermock:powermock-module-junit4-rule:${powermockVersion}"

View file

@ -95,6 +95,7 @@ class MainActivity : NoSplashAppCompatActivity() {
private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
private var pluginPreferencesMenuItem: MenuItem? = null
private var menu: Menu? = null
val callForPrefFile = registerForActivityResult(PrefsFileContract()) {
it?.let {
@ -122,6 +123,7 @@ class MainActivity : NoSplashAppCompatActivity() {
override fun onPageScrollStateChanged(state: Int) {}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
override fun onPageSelected(position: Int) {
setPluginPreferenceMenuName()
checkPluginPreferences(main_pager)
}
})
@ -200,6 +202,12 @@ class MainActivity : NoSplashAppCompatActivity() {
if (p.isEnabled() && p.hasFragment() && !p.isFragmentVisible() && !p.pluginDescription.neverVisible) {
val menuItem = menu.add(p.name)
menuItem.isCheckable = true
if(p.menuIcon != -1) {
menuItem.setIcon(p.menuIcon)
} else
{
menuItem.setIcon(R.drawable.ic_settings)
}
menuItem.setOnMenuItemClickListener {
val intent = Intent(this, SingleFragmentActivity::class.java)
intent.putExtra("plugin", activePlugin.getPluginsList().indexOf(p))
@ -266,9 +274,16 @@ class MainActivity : NoSplashAppCompatActivity() {
return super.dispatchTouchEvent(event)
}
private fun setPluginPreferenceMenuName() {
val plugin = (main_pager.adapter as TabPageAdapter).getPluginAt(main_pager.currentItem)
this.menu?.findItem(R.id.nav_plugin_preferences)?.title = resourceHelper.gs(R.string.nav_preferences_plugin, plugin.name)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
this.menu = menu
menuInflater.inflate(R.menu.menu_main, menu)
pluginPreferencesMenuItem = menu.findItem(R.id.nav_plugin_preferences)
setPluginPreferenceMenuName()
checkPluginPreferences(main_pager)
return true
}

View file

@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.general.maintenance.activities.PrefImp
import info.nightscout.androidaps.plugins.general.openhumans.OpenHumansLoginActivity
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity
import info.nightscout.androidaps.plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEScanActivity
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEConfigActivity
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusActivity
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightAlertActivity
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingActivity
@ -33,7 +33,7 @@ abstract class ActivitiesModule {
@ContributesAndroidInjector abstract fun contributesQuickWizardListActivity(): QuickWizardListActivity
@ContributesAndroidInjector abstract fun contributesRequestDexcomPermissionActivity(): RequestDexcomPermissionActivity
@ContributesAndroidInjector abstract fun contributesRileyLinkStatusActivity(): RileyLinkStatusActivity
@ContributesAndroidInjector abstract fun contributesRileyLinkBLEScanActivity(): RileyLinkBLEScanActivity
@ContributesAndroidInjector abstract fun contributesRileyLinkBLEConfigActivity(): RileyLinkBLEConfigActivity
@ContributesAndroidInjector abstract fun contributesSetupWizardActivity(): SetupWizardActivity
@ContributesAndroidInjector abstract fun contributesSingleFragmentActivity(): SingleFragmentActivity
@ContributesAndroidInjector abstract fun contributesSmsCommunicatorOtpActivity(): SmsCommunicatorOtpActivity

View file

@ -39,6 +39,7 @@ abstract class AutomationModule {
@ContributesAndroidInjector abstract fun actionLoopResumeInjector(): ActionLoopResume
@ContributesAndroidInjector abstract fun actionLoopSuspendInjector(): ActionLoopSuspend
@ContributesAndroidInjector abstract fun actionNotificationInjector(): ActionNotification
@ContributesAndroidInjector abstract fun actionAlarmInjector(): ActionAlarm
@ContributesAndroidInjector abstract fun actionProfileSwitchInjector(): ActionProfileSwitch
@ContributesAndroidInjector abstract fun actionProfileSwitchPercentInjector(): ActionProfileSwitchPercent
@ContributesAndroidInjector abstract fun actionSendSMSInjector(): ActionSendSMS

View file

@ -109,6 +109,7 @@ abstract class FragmentsModule {
@ContributesAndroidInjector abstract fun contributesChooseActionDialog(): ChooseActionDialog
@ContributesAndroidInjector abstract fun contributesChooseTriggerDialog(): ChooseTriggerDialog
@ContributesAndroidInjector abstract fun contributesInsulinDialog(): InsulinDialog
@ContributesAndroidInjector abstract fun contributesLoopDialog(): LoopDialog
@ContributesAndroidInjector abstract fun contributesObjectivesExamDialog(): ObjectivesExamDialog
@ContributesAndroidInjector abstract fun contributesProfileSwitchDialog(): ProfileSwitchDialog
@ContributesAndroidInjector abstract fun contributesTempBasalDialog(): TempBasalDialog

View file

@ -0,0 +1,374 @@
package info.nightscout.androidaps.dialogs
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
import androidx.fragment.app.FragmentManager
import dagger.android.support.DaggerDialogFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.databinding.DialogLoopBinding
import info.nightscout.androidaps.events.EventPreferenceChange
import info.nightscout.androidaps.events.EventRefreshOverview
import info.nightscout.androidaps.interfaces.*
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.extensions.toVisibility
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import javax.inject.Inject
class LoopDialog : DaggerDialogFragment() {
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var mainApp: MainApp
@Inject lateinit var sp: SP
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var loopPlugin: LoopPlugin
@Inject lateinit var objectivesPlugin: ObjectivesPlugin
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
private var disposable: CompositeDisposable = CompositeDisposable()
private var showOkCancel: Boolean = true
private var _binding: DialogLoopBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onStart() {
super.onStart()
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
savedInstanceState.putInt("showOkCancel", if (showOkCancel) 1 else 0)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View {
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
showOkCancel = bundle.getInt("showOkCancel", 1) == 1
}
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
isCancelable = true
dialog?.setCanceledOnTouchOutside(false)
_binding = DialogLoopBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
updateGUI("LoopDialogOnViewCreated")
binding.overviewCloseloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewLgsloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewOpenloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewEnable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewResume.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewReconnect.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewSuspend10h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect15m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect30m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
binding.overviewDisconnect3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
// cancel button
binding.cancel.setOnClickListener { dismiss() }
// bus
disposable.add(rxBus
.toObservable(EventNewOpenLoopNotification::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
activity?.runOnUiThread { updateGUI("EventNewOpenLoopNotification") }
}, fabricPrivacy::logException)
)
}
@Synchronized
override fun onDestroyView() {
super.onDestroyView()
disposable.clear()
_binding = null
}
@Synchronized
fun updateGUI(from: String) {
if (_binding == null) return
aapsLogger.debug("UpdateGUI from $from")
val pumpDescription: PumpDescription = activePlugin.activePump.pumpDescription
val closedLoopAllowed = objectivesPlugin.isClosedLoopAllowed(Constraint(true))
val lgsEnabled = objectivesPlugin.isLgsAllowed(Constraint(true))
val apsMode = sp.getString(R.string.key_aps_mode, "open")
if (profileFunction.isProfileValid("LoopDialogUpdateGUI")) {
if (loopPlugin.isEnabled(PluginType.LOOP)) {
when {
closedLoopAllowed.value() -> {
binding.overviewCloseloop.visibility = (apsMode != "closed").toVisibility()
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
}
lgsEnabled.value() -> {
binding.overviewCloseloop.visibility = View.GONE
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
}
else -> {
binding.overviewCloseloop.visibility = View.GONE
binding.overviewLgsloop.visibility = View.GONE
binding.overviewOpenloop.visibility = View.GONE
}
}
binding.overviewEnable.visibility = View.GONE
binding.overviewDisable.visibility = View.VISIBLE
if (!loopPlugin.isSuspended) {
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.suspendloop)
binding.overviewResume.visibility = View.GONE
binding.overviewSuspendButtons.visibility = View.VISIBLE
binding.overviewSuspend.visibility = View.VISIBLE
} else {
if (!loopPlugin.isDisconnected) {
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.resumeloop)
binding.overviewResume.visibility = View.VISIBLE
binding.overviewSuspendButtons.visibility = View.GONE
binding.overviewSuspend.visibility = View.VISIBLE
} else
binding.overviewSuspend.visibility = View.GONE
}
} else {
binding.overviewEnable.visibility = View.VISIBLE
binding.overviewDisable.visibility = View.GONE
binding.overviewSuspend.visibility = View.GONE
}
if (!loopPlugin.isDisconnected) {
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.disconnectpump)
binding.overviewDisconnect15m.visibility = pumpDescription.tempDurationStep15mAllowed.toVisibility()
binding.overviewDisconnect30m.visibility = pumpDescription.tempDurationStep30mAllowed.toVisibility()
binding.overviewDisconnectButtons.visibility = View.VISIBLE
binding.overviewReconnect.visibility = View.GONE
} else {
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.reconnect)
binding.overviewDisconnectButtons.visibility = View.GONE
binding.overviewReconnect.visibility = View.VISIBLE
}
}
val profile = profileFunction.getProfile()
val profileStore = activePlugin.activeProfileInterface.profile
if (profile == null || profileStore == null) {
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.noprofile))
dismiss()
return
}
}
fun onClickOkCancelEnabled(v: View): Boolean {
var description = ""
when (v.id) {
R.id.overview_closeloop -> description = resourceHelper.gs(R.string.closedloop)
R.id.overview_lgsloop -> description = resourceHelper.gs(R.string.lowglucosesuspend)
R.id.overview_openloop -> description = resourceHelper.gs(R.string.openloop)
R.id.overview_disable -> description = resourceHelper.gs(R.string.disableloop)
R.id.overview_enable -> description = resourceHelper.gs(R.string.enableloop)
R.id.overview_resume -> description = resourceHelper.gs(R.string.resume)
R.id.overview_reconnect -> description = resourceHelper.gs(R.string.reconnect)
R.id.overview_suspend_1h -> description = resourceHelper.gs(R.string.suspendloopfor1h)
R.id.overview_suspend_2h -> description = resourceHelper.gs(R.string.suspendloopfor2h)
R.id.overview_suspend_3h -> description = resourceHelper.gs(R.string.suspendloopfor3h)
R.id.overview_suspend_10h -> description = resourceHelper.gs(R.string.suspendloopfor10h)
R.id.overview_disconnect_15m -> description = resourceHelper.gs(R.string.disconnectpumpfor15m)
R.id.overview_disconnect_30m -> description = resourceHelper.gs(R.string.disconnectpumpfor30m)
R.id.overview_disconnect_1h -> description = resourceHelper.gs(R.string.disconnectpumpfor1h)
R.id.overview_disconnect_2h -> description = resourceHelper.gs(R.string.disconnectpumpfor2h)
R.id.overview_disconnect_3h -> description = resourceHelper.gs(R.string.disconnectpumpfor3h)
}
activity?.let { activity ->
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.confirm), description, Runnable {
onClick(v)
})
}
return true
}
fun onClick(v: View): Boolean {
val profile = profileFunction.getProfile() ?: return true
when (v.id) {
R.id.overview_closeloop -> {
sp.putString(R.string.key_aps_mode, "closed")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop)))
return true
}
R.id.overview_lgsloop -> {
sp.putString(R.string.key_aps_mode, "lgs")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
return true
}
R.id.overview_openloop -> {
sp.putString(R.string.key_aps_mode, "open")
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
return true
}
R.id.overview_disable -> {
aapsLogger.debug("USER ENTRY: LOOP DISABLED")
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
loopPlugin.setFragmentVisible(PluginType.LOOP, false)
configBuilderPlugin.storeSettings("DisablingLoop")
rxBus.send(EventRefreshOverview("suspendmenu"))
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
ToastUtils.showToastInUiThread(context, resourceHelper.gs(R.string.tempbasaldeliveryerror))
}
}
})
loopPlugin.createOfflineEvent(24 * 60) // upload 24h, we don't know real duration
return true
}
R.id.overview_enable -> {
aapsLogger.debug("USER ENTRY: LOOP ENABLED")
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
configBuilderPlugin.storeSettings("EnablingLoop")
rxBus.send(EventRefreshOverview("suspendmenu"))
loopPlugin.createOfflineEvent(0)
return true
}
R.id.overview_resume, R.id.overview_reconnect -> {
aapsLogger.debug("USER ENTRY: RESUME")
loopPlugin.suspendTo(0L)
rxBus.send(EventRefreshOverview("suspendmenu"))
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(i)
}
}
})
sp.putBoolean(R.string.key_objectiveusereconnect, true)
loopPlugin.createOfflineEvent(0)
return true
}
R.id.overview_suspend_1h -> {
aapsLogger.debug("USER ENTRY: SUSPEND 1h")
loopPlugin.suspendLoop(60)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_suspend_2h -> {
aapsLogger.debug("USER ENTRY: SUSPEND 2h")
loopPlugin.suspendLoop(120)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_suspend_3h -> {
aapsLogger.debug("USER ENTRY: SUSPEND 3h")
loopPlugin.suspendLoop(180)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_suspend_10h -> {
aapsLogger.debug("USER ENTRY: SUSPEND 10h")
loopPlugin.suspendLoop(600)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_disconnect_15m -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 15m")
loopPlugin.disconnectPump(15, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_disconnect_30m -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 30m")
loopPlugin.disconnectPump(30, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_disconnect_1h -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 1h")
loopPlugin.disconnectPump(60, profile)
sp.putBoolean(R.string.key_objectiveusedisconnect, true)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_disconnect_2h -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 2h")
loopPlugin.disconnectPump(120, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
R.id.overview_disconnect_3h -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 3h")
loopPlugin.disconnectPump(180, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
}
return false
}
override fun show(manager: FragmentManager, tag: String?) {
try {
manager.beginTransaction().let {
it.add(this, tag)
it.commitAllowingStateLoss()
}
} catch (e: IllegalStateException) {
aapsLogger.debug(e.localizedMessage)
}
}
}

View file

@ -13,6 +13,7 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.db.TempTarget
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
@ -32,6 +33,9 @@ class TempTargetDialog : DialogFragmentWithDate() {
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var defaultValueHelper: DefaultValueHelper
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin
@Inject lateinit var activePlugin: ActivePluginProvider
lateinit var reasonList: List<String>
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
@ -64,52 +68,64 @@ class TempTargetDialog : DialogFragmentWithDate() {
val units = profileFunction.getUnits()
overview_temptarget_units.text = if (units == Constants.MMOL) resourceHelper.gs(R.string.mmol) else resourceHelper.gs(R.string.mgdl)
// temp target
context?.let { context ->
val reasonList: List<String> = Lists.newArrayList(
if (activePlugin.activeTreatments.tempTargetFromHistory != null)
overview_temptarget_cancel?.visibility = View.VISIBLE
else
overview_temptarget_cancel?.visibility = View.GONE
reasonList = Lists.newArrayList(
resourceHelper.gs(R.string.manual),
resourceHelper.gs(R.string.cancel),
resourceHelper.gs(R.string.eatingsoon),
resourceHelper.gs(R.string.activity),
resourceHelper.gs(R.string.hypo)
)
val adapterReason = ArrayAdapter(context, R.layout.spinner_centered, reasonList)
overview_temptarget_reason.adapter = adapterReason
overview_temptarget_reason.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
val defaultDuration: Double
val defaultTarget: Double
when (reasonList[position]) {
resourceHelper.gs(R.string.eatingsoon) -> {
defaultDuration = defaultValueHelper.determineEatingSoonTTDuration().toDouble()
defaultTarget = defaultValueHelper.determineEatingSoonTT()
}
resourceHelper.gs(R.string.activity) -> {
defaultDuration = defaultValueHelper.determineActivityTTDuration().toDouble()
defaultTarget = defaultValueHelper.determineActivityTT()
}
overview_temptarget_cancel?.setOnClickListener { shortClick(it) }
overview_temptarget_eating_soon?.setOnClickListener { shortClick(it) }
overview_temptarget_activity?.setOnClickListener { shortClick(it) }
overview_temptarget_hypo?.setOnClickListener { shortClick(it) }
resourceHelper.gs(R.string.hypo) -> {
defaultDuration = defaultValueHelper.determineHypoTTDuration().toDouble()
defaultTarget = defaultValueHelper.determineHypoTT()
}
overview_temptarget_eating_soon?.setOnLongClickListener {
longClick(it)
return@setOnLongClickListener true
}
overview_temptarget_activity?.setOnLongClickListener {
longClick(it)
return@setOnLongClickListener true
}
overview_temptarget_hypo?.setOnLongClickListener {
longClick(it)
return@setOnLongClickListener true
}
}
}
resourceHelper.gs(R.string.cancel) -> {
defaultDuration = 0.0
defaultTarget = 0.0
}
private fun shortClick(v:View){
v.performLongClick()
if (submit()) dismiss()
}
else -> {
defaultDuration = overview_temptarget_duration.value
defaultTarget = overview_temptarget_temptarget.value
}
}
overview_temptarget_temptarget.value = defaultTarget
overview_temptarget_duration.value = defaultDuration
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
private fun longClick(v:View) {
when (v.id) {
R.id.overview_temptarget_eating_soon -> {
overview_temptarget_temptarget.value = defaultValueHelper.determineEatingSoonTT()
overview_temptarget_duration.value = defaultValueHelper.determineEatingSoonTTDuration().toDouble()
overview_temptarget_reason.setSelection(reasonList.indexOf( resourceHelper.gs(R.string.eatingsoon)))
}
R.id.overview_temptarget_activity -> {
overview_temptarget_temptarget.value = defaultValueHelper.determineActivityTT()
overview_temptarget_duration.value = defaultValueHelper.determineActivityTTDuration().toDouble()
overview_temptarget_reason.setSelection(reasonList.indexOf(resourceHelper.gs(R.string.activity)))
}
R.id.overview_temptarget_hypo -> {
overview_temptarget_temptarget.value = defaultValueHelper.determineHypoTT()
overview_temptarget_duration.value = defaultValueHelper.determineHypoTTDuration().toDouble()
overview_temptarget_reason.setSelection(reasonList.indexOf(resourceHelper.gs(R.string.hypo)))
}
}
}

View file

@ -18,6 +18,7 @@ import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.databinding.DialogWizardBinding
import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.Constraint
@ -39,7 +40,6 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.wizard.BolusWizard
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.dialog_wizard.*
import java.text.DecimalFormat
import java.util.*
import javax.inject.Inject
@ -72,8 +72,23 @@ class WizardDialog : DaggerDialogFragment() {
}
}
private val timeTextWatcher = object : TextWatcher {
override fun afterTextChanged(s: Editable) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
calculateInsulin()
binding.alarm.isChecked = binding.carbTimeInput.value > 0
}
}
private var disposable: CompositeDisposable = CompositeDisposable()
private var _binding: DialogWizardBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onStart() {
super.onStart()
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
@ -81,49 +96,50 @@ class WizardDialog : DaggerDialogFragment() {
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
savedInstanceState.putDouble("treatments_wizard_bg_input", treatments_wizard_bg_input.value)
savedInstanceState.putDouble("treatments_wizard_carbs_input", treatments_wizard_carbs_input.value)
savedInstanceState.putDouble("treatments_wizard_correction_input", treatments_wizard_correction_input.value)
savedInstanceState.putDouble("treatments_wizard_carb_time_input", treatments_wizard_carb_time_input.value)
savedInstanceState.putDouble("bg_input", binding.bgInput.value)
savedInstanceState.putDouble("carbs_input", binding.carbsInput.value)
savedInstanceState.putDouble("correction_input", binding.correctionInput.value)
savedInstanceState.putDouble("carb_time_input", binding.carbTimeInput.value)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
savedInstanceState: Bundle?): View {
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
isCancelable = true
dialog?.setCanceledOnTouchOutside(false)
return inflater.inflate(R.layout.dialog_wizard, container, false)
_binding = DialogWizardBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
loadCheckedStates()
processCobCheckBox()
treatments_wizard_sbcheckbox.visibility = sp.getBoolean(R.string.key_usesuperbolus, false).toVisibility()
treatments_wizard_notes_layout.visibility = sp.getBoolean(R.string.key_show_notes_entry_dialogs, false).toVisibility()
binding.sbcheckbox.visibility = sp.getBoolean(R.string.key_usesuperbolus, false).toVisibility()
binding.notesLayout.visibility = sp.getBoolean(R.string.key_show_notes_entry_dialogs, false).toVisibility()
val maxCarbs = constraintChecker.getMaxCarbsAllowed().value()
val maxCorrection = constraintChecker.getMaxBolusAllowed().value()
if (profileFunction.getUnits() == Constants.MGDL)
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0"), false, ok, textWatcher)
binding.bgInput.setParams(savedInstanceState?.getDouble("bg_input")
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0"), false, binding.ok, timeTextWatcher)
else
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
?: 0.0, 0.0, 30.0, 0.1, DecimalFormat("0.0"), false, ok, textWatcher)
treatments_wizard_carbs_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carbs_input")
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, ok, textWatcher)
binding.bgInput.setParams(savedInstanceState?.getDouble("bg_input")
?: 0.0, 0.0, 30.0, 0.1, DecimalFormat("0.0"), false, binding.ok, textWatcher)
binding.carbsInput.setParams(savedInstanceState?.getDouble("carbs_input")
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, binding.ok, textWatcher)
val bolusStep = activePlugin.activePump.pumpDescription.bolusStep
treatments_wizard_correction_input.setParams(savedInstanceState?.getDouble("treatments_wizard_correction_input")
?: 0.0, -maxCorrection, maxCorrection, bolusStep, DecimalFormatter.pumpSupportedBolusFormat(activePlugin.activePump), false, ok, textWatcher)
treatments_wizard_carb_time_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carb_time_input")
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, ok, textWatcher)
binding.correctionInput.setParams(savedInstanceState?.getDouble("correction_input")
?: 0.0, -maxCorrection, maxCorrection, bolusStep, DecimalFormatter.pumpSupportedBolusFormat(activePlugin.activePump), false, binding.ok, textWatcher)
binding.carbTimeInput.setParams(savedInstanceState?.getDouble("carb_time_input")
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, binding.ok, timeTextWatcher)
initDialog()
treatments_wizard_percent_used.text = resourceHelper.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
binding.percentUsed.text = resourceHelper.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
// ok button
ok.setOnClickListener {
binding.ok.setOnClickListener {
if (okClicked) {
aapsLogger.debug(LTag.UI, "guarding: ok already clicked")
} else {
@ -136,37 +152,37 @@ class WizardDialog : DaggerDialogFragment() {
dismiss()
}
// cancel button
cancel.setOnClickListener { dismiss() }
binding.cancel.setOnClickListener { dismiss() }
// checkboxes
treatments_wizard_bgcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_ttcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_cobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_basaliobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_bolusiobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_bgtrendcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
treatments_wizard_sbcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.bgcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.ttcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.cobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.basaliobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.bolusiobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.bgtrendcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
binding.sbcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
val showCalc = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_calculation_visible), false)
treatments_wizard_delimiter.visibility = showCalc.toVisibility()
treatments_wizard_resulttable.visibility = showCalc.toVisibility()
treatments_wizard_calculationcheckbox.isChecked = showCalc
treatments_wizard_calculationcheckbox.setOnCheckedChangeListener { _, isChecked ->
val showCalc = sp.getBoolean(R.string.key_wizard_calculation_visible, false)
binding.delimiter.visibility = showCalc.toVisibility()
binding.resulttable.visibility = showCalc.toVisibility()
binding.calculationcheckbox.isChecked = showCalc
binding.calculationcheckbox.setOnCheckedChangeListener { _, isChecked ->
run {
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_calculation_visible), isChecked)
treatments_wizard_delimiter.visibility = isChecked.toVisibility()
treatments_wizard_resulttable.visibility = isChecked.toVisibility()
binding.delimiter.visibility = isChecked.toVisibility()
binding.resulttable.visibility = isChecked.toVisibility()
}
}
// profile spinner
treatments_wizard_profile.onItemSelectedListener = object : OnItemSelectedListener {
binding.profile.onItemSelectedListener = object : OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.noprofileselected))
ok.visibility = View.GONE
binding.ok.visibility = View.GONE
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
calculateInsulin()
ok.visibility = View.VISIBLE
binding.ok.visibility = View.VISIBLE
}
}
// bus
@ -183,36 +199,37 @@ class WizardDialog : DaggerDialogFragment() {
override fun onDestroyView() {
super.onDestroyView()
disposable.clear()
_binding = null
}
private fun onCheckedChanged(buttonView: CompoundButton, @Suppress("UNUSED_PARAMETER") state: Boolean) {
saveCheckedStates()
treatments_wizard_ttcheckbox.isEnabled = treatments_wizard_bgcheckbox.isChecked && treatmentsPlugin.tempTargetFromHistory != null
if (buttonView.id == treatments_wizard_cobcheckbox.id)
binding.ttcheckbox.isEnabled = binding.bgcheckbox.isChecked && treatmentsPlugin.tempTargetFromHistory != null
if (buttonView.id == binding.cobcheckbox.id)
processCobCheckBox()
calculateInsulin()
}
private fun processCobCheckBox() {
if (treatments_wizard_cobcheckbox.isChecked) {
treatments_wizard_bolusiobcheckbox.isEnabled = false
treatments_wizard_basaliobcheckbox.isEnabled = false
treatments_wizard_bolusiobcheckbox.isChecked = true
treatments_wizard_basaliobcheckbox.isChecked = true
if (binding.cobcheckbox.isChecked) {
binding.bolusiobcheckbox.isEnabled = false
binding.basaliobcheckbox.isEnabled = false
binding.bolusiobcheckbox.isChecked = true
binding.basaliobcheckbox.isChecked = true
} else {
treatments_wizard_bolusiobcheckbox.isEnabled = true
treatments_wizard_basaliobcheckbox.isEnabled = true
binding.bolusiobcheckbox.isEnabled = true
binding.basaliobcheckbox.isEnabled = true
}
}
private fun saveCheckedStates() {
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_include_cob), treatments_wizard_cobcheckbox.isChecked)
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_include_trend_bg), treatments_wizard_bgtrendcheckbox.isChecked)
sp.putBoolean(R.string.key_wizard_include_cob, binding.cobcheckbox.isChecked)
sp.putBoolean(R.string.key_wizard_include_trend_bg, binding.bgtrendcheckbox.isChecked)
}
private fun loadCheckedStates() {
treatments_wizard_bgtrendcheckbox.isChecked = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_include_trend_bg), false)
treatments_wizard_cobcheckbox.isChecked = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_include_cob), false)
binding.bgtrendcheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_trend_bg, false)
binding.cobcheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_cob, false)
}
private fun initDialog() {
@ -230,25 +247,25 @@ class WizardDialog : DaggerDialogFragment() {
profileList.add(0, resourceHelper.gs(R.string.active))
context?.let { context ->
val adapter = ArrayAdapter(context, R.layout.spinner_centered, profileList)
treatments_wizard_profile.adapter = adapter
binding.profile.adapter = adapter
} ?: return
val units = profileFunction.getUnits()
treatments_wizard_bgunits.text = units
binding.bgunits.text = units
if (units == Constants.MGDL)
treatments_wizard_bg_input.setStep(1.0)
binding.bgInput.setStep(1.0)
else
treatments_wizard_bg_input.setStep(0.1)
binding.bgInput.setStep(0.1)
// Set BG if not old
val lastBg = iobCobCalculatorPlugin.actualBg()
if (lastBg != null) {
treatments_wizard_bg_input.value = lastBg.valueToUnits(units)
binding.bgInput.value = lastBg.valueToUnits(units)
} else {
treatments_wizard_bg_input.value = 0.0
binding.bgInput.value = 0.0
}
treatments_wizard_ttcheckbox.isEnabled = treatmentsPlugin.tempTargetFromHistory != null
binding.ttcheckbox.isEnabled = treatmentsPlugin.tempTargetFromHistory != null
// IOB calculation
treatmentsPlugin.updateTotalIOBTreatments()
@ -256,19 +273,19 @@ class WizardDialog : DaggerDialogFragment() {
treatmentsPlugin.updateTotalIOBTempBasals()
val basalIob = treatmentsPlugin.lastCalculationTempBasals.round()
treatments_wizard_bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -bolusIob.iob)
treatments_wizard_basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -basalIob.basaliob)
binding.bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -bolusIob.iob)
binding.basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -basalIob.basaliob)
calculateInsulin()
treatments_wizard_percent_used.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100).toVisibility()
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100).toVisibility()
}
private fun calculateInsulin() {
val profileStore = activePlugin.activeProfileInterface.profile
if (treatments_wizard_profile?.selectedItem == null || profileStore == null)
if (binding.profile.selectedItem == null || profileStore == null)
return // not initialized yet
var profileName = treatments_wizard_profile.selectedItem.toString()
var profileName = binding.profile.selectedItem.toString()
val specificProfile: Profile?
if (profileName == resourceHelper.gs(R.string.active)) {
specificProfile = profileFunction.getProfile()
@ -279,82 +296,83 @@ class WizardDialog : DaggerDialogFragment() {
if (specificProfile == null) return
// Entered values
var bg = SafeParse.stringToDouble(treatments_wizard_bg_input.text)
val carbs = SafeParse.stringToInt(treatments_wizard_carbs_input.text)
val correction = SafeParse.stringToDouble(treatments_wizard_correction_input.text)
var bg = SafeParse.stringToDouble(binding.bgInput.text)
val carbs = SafeParse.stringToInt(binding.carbsInput.text)
val correction = SafeParse.stringToDouble(binding.correctionInput.text)
val carbsAfterConstraint = constraintChecker.applyCarbsConstraints(Constraint(carbs)).value()
if (abs(carbs - carbsAfterConstraint) > 0.01) {
treatments_wizard_carbs_input.value = 0.0
binding.carbsInput.value = 0.0
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.carbsconstraintapplied))
return
}
bg = if (treatments_wizard_bgcheckbox.isChecked) bg else 0.0
val tempTarget = if (treatments_wizard_ttcheckbox.isChecked) treatmentsPlugin.tempTargetFromHistory else null
bg = if (binding.bgcheckbox.isChecked) bg else 0.0
val tempTarget = if (binding.ttcheckbox.isChecked) treatmentsPlugin.tempTargetFromHistory else null
// COB
var cob = 0.0
if (treatments_wizard_cobcheckbox.isChecked) {
if (binding.cobcheckbox.isChecked) {
val cobInfo = iobCobCalculatorPlugin.getCobInfo(false, "Wizard COB")
cobInfo.displayCob?.let { cob = it }
}
val carbTime = SafeParse.stringToInt(treatments_wizard_carb_time_input.text)
val carbTime = SafeParse.stringToInt(binding.carbTimeInput.text)
wizard = BolusWizard(mainApp).doCalc(specificProfile, profileName, tempTarget, carbsAfterConstraint, cob, bg, correction,
sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble(),
treatments_wizard_bgcheckbox.isChecked,
treatments_wizard_cobcheckbox.isChecked,
treatments_wizard_bolusiobcheckbox.isChecked,
treatments_wizard_basaliobcheckbox.isChecked,
treatments_wizard_sbcheckbox.isChecked,
treatments_wizard_ttcheckbox.isChecked,
treatments_wizard_bgtrendcheckbox.isChecked,
treatment_wizard_notes.text.toString(), carbTime)
binding.bgcheckbox.isChecked,
binding.cobcheckbox.isChecked,
binding.bolusiobcheckbox.isChecked,
binding.basaliobcheckbox.isChecked,
binding.sbcheckbox.isChecked,
binding.ttcheckbox.isChecked,
binding.bgtrendcheckbox.isChecked,
binding.alarm.isChecked,
binding.notes.text.toString(), carbTime)
wizard?.let { wizard ->
treatments_wizard_bg.text = String.format(resourceHelper.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(bg, profileFunction.getUnits())).valueToUnitsToString(profileFunction.getUnits()), wizard.sens)
treatments_wizard_bginsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBG)
binding.bg.text = String.format(resourceHelper.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(bg, profileFunction.getUnits())).valueToUnitsToString(profileFunction.getUnits()), wizard.sens)
binding.bginsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBG)
treatments_wizard_carbs.text = String.format(resourceHelper.gs(R.string.format_carbs_ic), carbs.toDouble(), wizard.ic)
treatments_wizard_carbsinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCarbs)
binding.carbs.text = String.format(resourceHelper.gs(R.string.format_carbs_ic), carbs.toDouble(), wizard.ic)
binding.carbsinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCarbs)
treatments_wizard_bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBolusIOB)
treatments_wizard_basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBasalsIOB)
binding.bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBolusIOB)
binding.basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBasalIOB)
treatments_wizard_correctioninsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCorrection)
binding.correctioninsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCorrection)
// Superbolus
treatments_wizard_sb.text = if (treatments_wizard_sbcheckbox.isChecked) resourceHelper.gs(R.string.twohours) else ""
treatments_wizard_sbinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromSuperBolus)
binding.sb.text = if (binding.sbcheckbox.isChecked) resourceHelper.gs(R.string.twohours) else ""
binding.sbinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromSuperBolus)
// Trend
if (treatments_wizard_bgtrendcheckbox.isChecked && wizard.glucoseStatus != null) {
treatments_wizard_bgtrend.text = ((if (wizard.trend > 0) "+" else "")
if (binding.bgtrendcheckbox.isChecked && wizard.glucoseStatus != null) {
binding.bgtrend.text = ((if (wizard.trend > 0) "+" else "")
+ Profile.toUnitsString(wizard.trend * 3, wizard.trend * 3 / Constants.MMOLL_TO_MGDL, profileFunction.getUnits())
+ " " + profileFunction.getUnits())
} else {
treatments_wizard_bgtrend.text = ""
binding.bgtrend.text = ""
}
treatments_wizard_bgtrendinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromTrend)
binding.bgtrendinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromTrend)
// COB
if (treatments_wizard_cobcheckbox.isChecked) {
treatments_wizard_cob.text = String.format(resourceHelper.gs(R.string.format_cob_ic), cob, wizard.ic)
treatments_wizard_cobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCOB)
if (binding.cobcheckbox.isChecked) {
binding.cob.text = String.format(resourceHelper.gs(R.string.format_cob_ic), cob, wizard.ic)
binding.cobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCOB)
} else {
treatments_wizard_cob.text = ""
treatments_wizard_cobinsulin.text = ""
binding.cob.text = ""
binding.cobinsulin.text = ""
}
if (wizard.calculatedTotalInsulin > 0.0 || carbsAfterConstraint > 0.0) {
val insulinText = if (wizard.calculatedTotalInsulin > 0.0) resourceHelper.gs(R.string.formatinsulinunits, wizard.calculatedTotalInsulin) else ""
val carbsText = if (carbsAfterConstraint > 0.0) resourceHelper.gs(R.string.format_carbs, carbsAfterConstraint) else ""
treatments_wizard_total.text = resourceHelper.gs(R.string.result_insulin_carbs, insulinText, carbsText)
ok.visibility = View.VISIBLE
binding.total.text = resourceHelper.gs(R.string.result_insulin_carbs, insulinText, carbsText)
binding.ok.visibility = View.VISIBLE
} else {
treatments_wizard_total.text = resourceHelper.gs(R.string.missing_carbs, wizard.carbsEquivalent.toInt())
ok.visibility = View.INVISIBLE
binding.total.text = resourceHelper.gs(R.string.missing_carbs, wizard.carbsEquivalent.toInt())
binding.ok.visibility = View.INVISIBLE
}
}

View file

@ -145,6 +145,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface {
super(new PluginDescription()
.mainType(PluginType.LOOP)
.fragmentClass(LoopFragment.class.getName())
.pluginIcon(R.drawable.ic_loop_closed_white)
.pluginName(R.string.loop)
.shortName(R.string.loop_shortname)
.preferencesId(R.xml.pref_loop)

View file

@ -80,6 +80,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
super(new PluginDescription()
.mainType(PluginType.APS)
.fragmentClass(OpenAPSAMAFragment.class.getName())
.pluginIcon(R.drawable.ic_generic_icon)
.pluginName(R.string.openapsama)
.shortName(R.string.oaps_shortname)
.preferencesId(R.xml.pref_openapsama)

View file

@ -267,8 +267,8 @@ public class DetermineBasalAdapterSMBJS {
mProfile.put("low_temptarget_lowers_sensitivity", false);
mProfile.put("sensitivity_raises_target", sp.getBoolean(resourceHelper.gs(R.string.key_sensitivity_raises_target),SMBDefaults.sensitivity_raises_target));
mProfile.put("resistance_lowers_target", sp.getBoolean(resourceHelper.gs(R.string.key_resistance_lowers_target),SMBDefaults.resistance_lowers_target));
mProfile.put("sensitivity_raises_target", sp.getBoolean(R.string.key_sensitivity_raises_target,SMBDefaults.sensitivity_raises_target));
mProfile.put("resistance_lowers_target", sp.getBoolean(R.string.key_resistance_lowers_target,SMBDefaults.resistance_lowers_target));
mProfile.put("adv_target_adjustments", SMBDefaults.adv_target_adjustments);
mProfile.put("exercise_mode", SMBDefaults.exercise_mode);
mProfile.put("half_basal_exercise_target", SMBDefaults.half_basal_exercise_target);
@ -284,7 +284,7 @@ public class DetermineBasalAdapterSMBJS {
mProfile.put("enableUAM", uamAllowed);
mProfile.put("A52_risk_enable", SMBDefaults.A52_risk_enable);
boolean smbEnabled = sp.getBoolean(resourceHelper.gs(R.string.key_use_smb), false);
boolean smbEnabled = sp.getBoolean(R.string.key_use_smb, false);
mProfile.put("SMBInterval", sp.getInt(R.string.key_smbinterval, SMBDefaults.SMBInterval));
mProfile.put("enableSMB_with_COB", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_COB, false));
mProfile.put("enableSMB_with_temptarget", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_temptarget, false));

View file

@ -88,6 +88,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
super(new PluginDescription()
.mainType(PluginType.APS)
.fragmentClass(OpenAPSSMBFragment.class.getName())
.pluginIcon(R.drawable.ic_generic_icon)
.pluginName(R.string.openapssmb)
.shortName(R.string.smb_shortname)
.preferencesId(R.xml.pref_openapssmb)

View file

@ -32,6 +32,7 @@ class ConfigBuilderPlugin @Inject constructor(
.showInList(true)
.alwaysEnabled(true)
.alwaysVisible(false)
.pluginIcon(R.drawable.ic_cogs)
.pluginName(R.string.configbuilder)
.shortName(R.string.configbuilder_shortname)
.description(R.string.description_config_builder),

View file

@ -32,6 +32,7 @@ class ObjectivesPlugin @Inject constructor(
.fragmentClass(ObjectivesFragment::class.qualifiedName)
.alwaysEnabled(config.APS)
.showInList(config.APS)
.pluginIcon(R.drawable.ic_graduation)
.pluginName(R.string.objectives)
.shortName(R.string.objectives_shortname)
.description(R.string.description_objectives),
@ -162,6 +163,12 @@ class ObjectivesPlugin @Inject constructor(
return value
}
fun isLgsAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[MAXBASAL_OBJECTIVE].isStarted)
value.set(aapsLogger, false, String.format(resourceHelper.gs(R.string.objectivenotstarted), MAXBASAL_OBJECTIVE + 1), this)
return value
}
override fun isClosedLoopAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
if (!objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted)
value.set(aapsLogger, false, String.format(resourceHelper.gs(R.string.objectivenotstarted), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)

View file

@ -22,6 +22,7 @@ class ActionsPlugin @Inject constructor(
.fragmentClass(ActionsFragment::class.qualifiedName)
.enableByDefault(config.APS || config.PUMPCONTROL)
.visibleByDefault(config.APS || config.PUMPCONTROL)
.pluginIcon(R.drawable.ic_action)
.pluginName(R.string.actions)
.shortName(R.string.actions_shortname)
.description(R.string.description_actions),

View file

@ -15,12 +15,18 @@ import java.util.*
import javax.inject.Inject
class AutomationEvent(private val injector: HasAndroidInjector) {
@Inject lateinit var aapsLogger: AAPSLogger
var title: String? = null
var isEnabled = true
var systemAction: Boolean = false // true = generated by AAPS, false = entered by user
var readOnly: Boolean = false // removing, editing disabled
var autoRemove: Boolean = false // auto-remove once used
var trigger: Trigger = TriggerConnector(injector)
val actions: MutableList<Action> = ArrayList()
var title: String? = null
var isEnabled = true
var lastRun: Long = 0
init {
@ -43,6 +49,9 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
return JSONObject()
.put("title", title)
.put("enabled", isEnabled)
.put("systemAction", systemAction)
.put("readOnly", readOnly)
.put("autoRemove", autoRemove)
.put("trigger", trigger.toJSON())
.put("actions", array)
.toString()
@ -52,6 +61,9 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
val d = JSONObject(data)
title = d.optString("title", "")
isEnabled = d.optBoolean("enabled", true)
systemAction = d.optBoolean("systemAction", false)
readOnly = d.optBoolean("readOnly", false)
autoRemove = d.optBoolean("autoRemove", false)
trigger = TriggerDummy(injector).instantiate(JSONObject(d.getString("trigger")))
?: TriggerConnector(injector)
val array = d.getJSONArray("actions")

View file

@ -9,18 +9,17 @@ import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.annotation.DrawableRes
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import dagger.android.HasAndroidInjector
import dagger.android.support.DaggerFragment
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationEventItemBinding
import info.nightscout.androidaps.databinding.AutomationFragmentBinding
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.dialogs.EditEventDialog
import info.nightscout.androidaps.plugins.general.automation.dragHelpers.ItemTouchHelperAdapter
@ -34,42 +33,50 @@ import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.HtmlHelper
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation
import info.nightscout.androidaps.utils.extensions.plusAssign
import info.nightscout.androidaps.utils.extensions.toVisibility
import info.nightscout.androidaps.utils.resources.ResourceHelper
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.automation_fragment.*
import java.util.*
import javax.inject.Inject
class AutomationFragment : DaggerFragment(), OnStartDragListener {
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var automationPlugin: AutomationPlugin
@Inject lateinit var mainApp : MainApp
@Inject lateinit var injector: HasAndroidInjector
private var disposable: CompositeDisposable = CompositeDisposable()
private lateinit var eventListAdapter: EventListAdapter
private var itemTouchHelper: ItemTouchHelper? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.automation_fragment, container, false)
private var _binding: AutomationFragmentBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = AutomationFragmentBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
eventListAdapter = EventListAdapter()
automation_eventListView.layoutManager = LinearLayoutManager(context)
automation_eventListView.adapter = eventListAdapter
binding.eventListView.layoutManager = LinearLayoutManager(context)
binding.eventListView.adapter = eventListAdapter
automation_logView.movementMethod = ScrollingMovementMethod()
binding.logView.movementMethod = ScrollingMovementMethod()
automation_fabAddEvent.setOnClickListener {
binding.fabAddEvent.setOnClickListener {
val dialog = EditEventDialog()
val args = Bundle()
args.putString("event", AutomationEvent(mainApp).toJSON())
args.putString("event", AutomationEvent(injector).toJSON())
args.putInt("position", -1) // New event
dialog.arguments = args
dialog.show(childFragmentManager, "EditEventDialog")
@ -77,7 +84,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
val callback: ItemTouchHelper.Callback = SimpleItemTouchHelperCallback(eventListAdapter)
itemTouchHelper = ItemTouchHelper(callback)
itemTouchHelper?.attachToRecyclerView(automation_eventListView)
itemTouchHelper?.attachToRecyclerView(binding.eventListView)
}
@ -105,13 +112,20 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
disposable.clear()
}
@Synchronized
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
@Synchronized
private fun updateGui() {
if (_binding == null) return
eventListAdapter.notifyDataSetChanged()
val sb = StringBuilder()
for (l in automationPlugin.executionLog.reversed())
sb.append(l).append("<br>")
automation_logView?.text = HtmlHelper.fromHtml(sb.toString())
binding.logView.text = HtmlHelper.fromHtml(sb.toString())
}
override fun onStartDrag(viewHolder: RecyclerView.ViewHolder) {
@ -132,6 +146,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
}
inner class EventListAdapter : RecyclerView.Adapter<EventListAdapter.ViewHolder>(), ItemTouchHelperAdapter {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.automation_event_item, parent, false)
return ViewHolder(v, parent.context)
@ -146,37 +161,38 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
@SuppressLint("ClickableViewAccessibility")
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val event = automationPlugin.automationEvents[position]
holder.eventTitle.text = event.title
holder.enabled.isChecked = event.isEnabled
holder.iconLayout.removeAllViews()
val event = automationPlugin.at(position)
holder.binding.eventTitle.text = event.title
holder.binding.enabled.isChecked = event.isEnabled
holder.binding.enabled.isEnabled = !event.readOnly
holder.binding.iconLayout.removeAllViews()
// trigger icons
val triggerIcons = HashSet<Int>()
fillIconSet(event.trigger as TriggerConnector, triggerIcons)
for (res in triggerIcons) {
addImage(res, holder.context, holder.iconLayout)
addImage(res, holder.context, holder.binding.iconLayout)
}
// arrow icon
val iv = ImageView(holder.context)
iv.setImageResource(R.drawable.ic_arrow_forward_white_24dp)
iv.layoutParams = LinearLayout.LayoutParams(resourceHelper.dpToPx(24), resourceHelper.dpToPx(24))
iv.setPadding(resourceHelper.dpToPx(4), 0, resourceHelper.dpToPx(4), 0)
holder.iconLayout.addView(iv)
holder.binding.iconLayout.addView(iv)
// action icons
val actionIcons = HashSet<Int>()
for (action in event.actions) {
actionIcons.add(action.icon())
}
for (res in actionIcons) {
addImage(res, holder.context, holder.iconLayout)
addImage(res, holder.context, holder.binding.iconLayout)
}
// enabled event
holder.enabled.setOnClickListener {
event.isEnabled = holder.enabled.isChecked
holder.binding.enabled.setOnClickListener {
event.isEnabled = holder.binding.enabled.isChecked
rxBus.send(EventAutomationDataChanged())
}
// edit event
holder.rootLayout.setOnClickListener {
holder.binding.rootLayout.setOnClickListener {
val dialog = EditEventDialog()
val args = Bundle()
args.putString("event", event.toJSON())
@ -185,7 +201,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
dialog.show(childFragmentManager, "EditEventDialog")
}
// Start a drag whenever the handle view it touched
holder.iconSort.setOnTouchListener { v: View, motionEvent: MotionEvent ->
holder.binding.iconSort.setOnTouchListener { v: View, motionEvent: MotionEvent ->
if (motionEvent.action == MotionEvent.ACTION_DOWN) {
this@AutomationFragment.onStartDrag(holder)
return@setOnTouchListener true
@ -193,46 +209,41 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
v.onTouchEvent(motionEvent)
}
// remove event
holder.iconTrash.setOnClickListener {
showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.automationEvents[position].title,
holder.binding.iconTrash.setOnClickListener {
showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title,
Runnable {
automationPlugin.automationEvents.removeAt(position)
automationPlugin.removeAt(position)
notifyItemRemoved(position)
rxBus.send(EventAutomationDataChanged())
rxBus.send(EventAutomationUpdateGui())
}, Runnable { rxBus.send(EventAutomationUpdateGui())
}, Runnable {
rxBus.send(EventAutomationUpdateGui())
})
}
holder.binding.iconTrash.visibility = (!event.readOnly).toVisibility()
holder.binding.aapsLogo.visibility = (event.systemAction).toVisibility()
}
override fun getItemCount(): Int = automationPlugin.automationEvents.size
override fun getItemCount(): Int = automationPlugin.size()
override fun onItemMove(fromPosition: Int, toPosition: Int): Boolean {
Collections.swap(automationPlugin.automationEvents, fromPosition, toPosition)
automationPlugin.swap(fromPosition, toPosition)
notifyItemMoved(fromPosition, toPosition)
rxBus.send(EventAutomationDataChanged())
return true
}
override fun onItemDismiss(position: Int) {
activity?.let { activity ->
showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.automationEvents[position].title,
showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title,
Runnable {
automationPlugin.automationEvents.removeAt(position)
automationPlugin.removeAt(position)
notifyItemRemoved(position)
rxBus.send(EventAutomationDataChanged())
rxBus.send(EventAutomationUpdateGui())
}, Runnable { rxBus.send(EventAutomationUpdateGui()) })
}
}
inner class ViewHolder(view: View, val context: Context) : RecyclerView.ViewHolder(view), ItemTouchHelperViewHolder {
val rootLayout: RelativeLayout = view.findViewById(R.id.rootLayout)
val iconLayout: LinearLayout = view.findViewById(R.id.iconLayout)
val eventTitle: TextView = view.findViewById(R.id.viewEventTitle)
val iconTrash: ImageView = view.findViewById(R.id.iconTrash)
val iconSort: ImageView = view.findViewById(R.id.iconSort)
val enabled: CheckBox = view.findViewById(R.id.automation_enabled)
val binding = AutomationEventItemBinding.bind(view)
override fun onItemSelected() = itemView.setBackgroundColor(Color.LTGRAY)

View file

@ -39,8 +39,10 @@ import io.reactivex.schedulers.Schedulers
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import java.util.*
import javax.inject.Inject
import javax.inject.Singleton
import kotlin.collections.ArrayList
@Singleton
class AutomationPlugin @Inject constructor(
@ -57,6 +59,7 @@ class AutomationPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(AutomationFragment::class.qualifiedName)
.pluginIcon(R.drawable.ic_automation)
.pluginName(R.string.automation)
.shortName(R.string.automation_short)
.preferencesId(R.xml.pref_automation)
@ -68,7 +71,7 @@ class AutomationPlugin @Inject constructor(
private val keyAutomationEvents = "AUTOMATION_EVENTS"
val automationEvents = ArrayList<AutomationEvent>()
private val automationEvents = ArrayList<AutomationEvent>()
var executionLog: MutableList<String> = ArrayList()
var btConnects: MutableList<EventBTChange> = ArrayList()
@ -76,6 +79,7 @@ class AutomationPlugin @Inject constructor(
private lateinit var refreshLoop: Runnable
companion object {
const val event = "{\"title\":\"Low\",\"enabled\":true,\"trigger\":\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\",\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBg\\\\\\\",\\\\\\\"data\\\\\\\":{\\\\\\\"bg\\\\\\\":4,\\\\\\\"comparator\\\\\\\":\\\\\\\"IS_LESSER\\\\\\\",\\\\\\\"units\\\\\\\":\\\\\\\"mmol\\\\\\\"}}\\\",\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDelta\\\\\\\",\\\\\\\"data\\\\\\\":{\\\\\\\"value\\\\\\\":-0.1,\\\\\\\"units\\\\\\\":\\\\\\\"mmol\\\\\\\",\\\\\\\"deltaType\\\\\\\":\\\\\\\"DELTA\\\\\\\",\\\\\\\"comparator\\\\\\\":\\\\\\\"IS_LESSER\\\\\\\"}}\\\"]}}\",\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionStartTempTarget\\\",\\\"data\\\":{\\\"value\\\":8,\\\"units\\\":\\\"mmol\\\",\\\"durationInMinutes\\\":60}}\"]}"
}
@ -183,42 +187,46 @@ class AutomationPlugin @Inject constructor(
@Synchronized
private fun processActions() {
var userEventsEnabled = true
if (loopPlugin.isSuspended || !loopPlugin.isEnabled()) {
aapsLogger.debug(LTag.AUTOMATION, "Loop deactivated")
executionLog.add(resourceHelper.gs(R.string.smscommunicator_loopisdisabled))
return
userEventsEnabled = false
}
val enabled = constraintChecker.isAutomationEnabled()
if (!enabled.value()) {
executionLog.add(enabled.getMostLimitedReasons(aapsLogger))
return
userEventsEnabled = false
}
aapsLogger.debug(LTag.AUTOMATION, "processActions")
for (event in automationEvents) {
if (event.isEnabled && event.shouldRun() && event.trigger.shouldRun() && event.getPreconditions().shouldRun()) {
val actions = event.actions
for (action in actions) {
action.doAction(object : Callback() {
override fun run() {
val sb = StringBuilder()
sb.append(dateUtil.timeString(DateUtil.now()))
sb.append(" ")
sb.append(if (result.success) "" else "")
sb.append(" <b>")
sb.append(event.title)
sb.append(":</b> ")
sb.append(action.shortDescription())
sb.append(": ")
sb.append(result.comment)
executionLog.add(sb.toString())
aapsLogger.debug(LTag.AUTOMATION, "Executed: $sb")
rxBus.send(EventAutomationUpdateGui())
}
})
if (event.systemAction || userEventsEnabled) {
val actions = event.actions
for (action in actions) {
action.doAction(object : Callback() {
override fun run() {
val sb = StringBuilder()
sb.append(dateUtil.timeString(DateUtil.now()))
sb.append(" ")
sb.append(if (result.success) "" else "")
sb.append(" <b>")
sb.append(event.title)
sb.append(":</b> ")
sb.append(action.shortDescription())
sb.append(": ")
sb.append(result.comment)
executionLog.add(sb.toString())
aapsLogger.debug(LTag.AUTOMATION, "Executed: $sb")
rxBus.send(EventAutomationUpdateGui())
}
})
}
SystemClock.sleep(1100)
event.lastRun = DateUtil.now()
if (event.autoRemove) automationEvents.remove(event)
}
SystemClock.sleep(1100)
event.lastRun = DateUtil.now()
}
}
// we cannot detect connected BT devices
@ -230,6 +238,38 @@ class AutomationPlugin @Inject constructor(
storeToSP() // save last run time
}
fun add(event: AutomationEvent) {
automationEvents.add(event)
rxBus.send(EventAutomationDataChanged())
}
fun addIfNotExists(event: AutomationEvent) {
for (e in automationEvents) {
if (event.title == e.title) return
}
automationEvents.add(event)
rxBus.send(EventAutomationDataChanged())
}
fun set(event: AutomationEvent, index: Int) {
automationEvents[index] = event
rxBus.send(EventAutomationDataChanged())
}
fun removeAt(index: Int) {
automationEvents.removeAt(index)
rxBus.send(EventAutomationDataChanged())
}
fun at(index: Int) = automationEvents[index]
fun size() = automationEvents.size
fun swap(fromPosition: Int, toPosition: Int) {
Collections.swap(automationEvents, fromPosition, toPosition)
rxBus.send(EventAutomationDataChanged())
}
fun getActionDummyObjects(): List<Action> {
return listOf(
//ActionLoopDisable(injector),
@ -239,6 +279,7 @@ class AutomationPlugin @Inject constructor(
ActionStartTempTarget(injector),
ActionStopTempTarget(injector),
ActionNotification(injector),
ActionAlarm(injector),
ActionProfileSwitchPercent(injector),
ActionProfileSwitch(injector),
ActionSendSMS(injector)

View file

@ -0,0 +1,75 @@
package info.nightscout.androidaps.plugins.general.automation.actions
import android.content.Context
import android.content.Intent
import android.widget.LinearLayout
import androidx.annotation.DrawableRes
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.activities.PreferencesActivity
import info.nightscout.androidaps.data.PumpEnactResult
import info.nightscout.androidaps.events.EventRefreshOverview
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.elements.InputString
import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement
import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationUserMessage
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.JsonHelper
import info.nightscout.androidaps.utils.alertDialogs.WarningDialog
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.json.JSONObject
import javax.inject.Inject
class ActionAlarm(injector: HasAndroidInjector) : Action(injector) {
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var nsUpload: NSUpload
@Inject lateinit var context: Context
var text = InputString(injector)
constructor(injector: HasAndroidInjector, text: String) : this(injector) {
this.text = InputString(injector, text)
}
override fun friendlyName(): Int = R.string.alarm
override fun shortDescription(): String = resourceHelper.gs(R.string.alarm_message, text.value)
@DrawableRes override fun icon(): Int = R.drawable.ic_access_alarm_24dp
override fun doAction(callback: Callback) {
val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.modern_alarm)
i.putExtra("status", text.value)
i.putExtra("title", resourceHelper.gs(R.string.alarm))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(i)
callback.result(PumpEnactResult(injector).success(true).comment(R.string.ok))?.run()
}
override fun toJSON(): String {
val data = JSONObject().put("text", text.value)
return JSONObject()
.put("type", this.javaClass.name)
.put("data", data)
.toString()
}
override fun fromJSON(data: String): Action {
val o = JSONObject(data)
text.value = JsonHelper.safeGetString(o, "text", "")
return this
}
override fun hasDialog(): Boolean = true
override fun generateDialog(root: LinearLayout) {
LayoutBuilder()
.add(LabelWithElement(injector, resourceHelper.gs(R.string.alarm_short), "", text))
.build(root)
}
}

View file

@ -6,24 +6,30 @@ import android.view.View
import android.view.ViewGroup
import android.widget.RadioButton
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationDialogChooseActionBinding
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
import kotlinx.android.synthetic.main.automation_dialog_choose_action.*
import javax.inject.Inject
import kotlin.reflect.full.primaryConstructor
class ChooseActionDialog : DialogFragmentWithDate() {
@Inject lateinit var automationPlugin: AutomationPlugin
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var mainApp : MainApp
@Inject lateinit var mainApp: MainApp
private var checkedIndex = -1
private var _binding: AutomationDialogChooseActionBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// restore checked radio button
@ -32,7 +38,8 @@ class ChooseActionDialog : DialogFragmentWithDate() {
}
onCreateViewGeneral()
return inflater.inflate(R.layout.automation_dialog_choose_action, container, false)
_binding = AutomationDialogChooseActionBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -42,11 +49,16 @@ class ChooseActionDialog : DialogFragmentWithDate() {
val radioButton = RadioButton(context)
radioButton.setText(a.friendlyName())
radioButton.tag = a.javaClass.name
automation_radioGroup.addView(radioButton)
binding.radioGroup.addView(radioButton)
}
if (checkedIndex != -1)
(automation_radioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
(binding.radioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun submit(): Boolean {
@ -70,16 +82,16 @@ class ChooseActionDialog : DialogFragmentWithDate() {
}
private fun getActionClass(): String? {
val radioButtonID = automation_radioGroup.checkedRadioButtonId
val radioButton = automation_radioGroup.findViewById<RadioButton>(radioButtonID)
val radioButtonID = binding.radioGroup.checkedRadioButtonId
val radioButton = binding.radioGroup.findViewById<RadioButton>(radioButtonID)
return radioButton?.let {
it.tag as String
}
}
private fun determineCheckedIndex(): Int {
for (i in 0 until automation_radioGroup.childCount) {
if ((automation_radioGroup.getChildAt(i) as RadioButton).isChecked)
for (i in 0 until binding.radioGroup.childCount) {
if ((binding.radioGroup.getChildAt(i) as RadioButton).isChecked)
return i
}
return -1

View file

@ -6,34 +6,42 @@ import android.view.View
import android.view.ViewGroup
import android.widget.RadioButton
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationDialogChooseTriggerBinding
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger
import kotlinx.android.synthetic.main.automation_dialog_choose_trigger.*
import javax.inject.Inject
import kotlin.reflect.full.primaryConstructor
class ChooseTriggerDialog : DialogFragmentWithDate() {
@Inject lateinit var automationPlugin: AutomationPlugin
@Inject lateinit var mainApp : MainApp
@Inject lateinit var mainApp: MainApp
private var checkedIndex = -1
private var clickListener: OnClickListener? = null
private var _binding: AutomationDialogChooseTriggerBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
interface OnClickListener {
fun onClick(newTriggerObject: Trigger)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
savedInstanceState: Bundle?): View {
// restore checked radio button
savedInstanceState?.let { bundle ->
checkedIndex = bundle.getInt("checkedIndex")
}
onCreateViewGeneral()
return inflater.inflate(R.layout.automation_dialog_choose_trigger, container, false)
_binding = AutomationDialogChooseTriggerBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -43,11 +51,16 @@ class ChooseTriggerDialog : DialogFragmentWithDate() {
val radioButton = RadioButton(context)
radioButton.setText(t.friendlyName())
radioButton.tag = t.javaClass.name
automation_chooseTriggerRadioGroup.addView(radioButton)
binding.chooseTriggerRadioGroup.addView(radioButton)
}
if (checkedIndex != -1)
(automation_chooseTriggerRadioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
(binding.chooseTriggerRadioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun submit(): Boolean {
@ -74,16 +87,16 @@ class ChooseTriggerDialog : DialogFragmentWithDate() {
}
private fun getTriggerClass(): String? {
val radioButtonID = automation_chooseTriggerRadioGroup.checkedRadioButtonId
val radioButton = automation_chooseTriggerRadioGroup.findViewById<RadioButton>(radioButtonID)
val radioButtonID = binding.chooseTriggerRadioGroup.checkedRadioButtonId
val radioButton = binding.chooseTriggerRadioGroup.findViewById<RadioButton>(radioButtonID)
return radioButton?.let {
it.tag as String
}
}
private fun determineCheckedIndex(): Int {
for (i in 0 until automation_chooseTriggerRadioGroup.childCount) {
if ((automation_chooseTriggerRadioGroup.getChildAt(i) as RadioButton).isChecked)
for (i in 0 until binding.chooseTriggerRadioGroup.childCount) {
if ((binding.chooseTriggerRadioGroup.getChildAt(i) as RadioButton).isChecked)
return i
}
return -1

View file

@ -5,41 +5,48 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationDialogActionBinding
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.actions.Action
import info.nightscout.androidaps.plugins.general.automation.actions.ActionDummy
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateAction
import kotlinx.android.synthetic.main.automation_dialog_action.*
import org.json.JSONObject
import javax.inject.Inject
class EditActionDialog : DialogFragmentWithDate() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var mainApp: MainApp
private var action: Action? = null
private var actionPosition: Int = -1
private var _binding: AutomationDialogActionBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
savedInstanceState: Bundle?): View {
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
actionPosition = bundle.getInt("actionPosition", -1)
bundle.getString("action")?.let { action = ActionDummy(mainApp).instantiate(JSONObject(it)) }
}
onCreateViewGeneral()
return inflater.inflate(R.layout.automation_dialog_action, container, false)
_binding = AutomationDialogActionBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
action?.let {
automation_actionTitle.setText(it.friendlyName())
automation_editActionLayout.removeAllViews()
it.generateDialog(automation_editActionLayout)
binding.actionTitle.setText(it.friendlyName())
binding.editActionLayout.removeAllViews()
it.generateDialog(binding.editActionLayout)
}
}

View file

@ -11,6 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationDialogEventBinding
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
@ -25,12 +26,13 @@ import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerCon
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.extensions.plusAssign
import info.nightscout.androidaps.utils.extensions.toVisibility
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.automation_dialog_event.*
import javax.inject.Inject
class EditEventDialog : DialogFragmentWithDate() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var mainApp: MainApp
@Inject lateinit var fabricPrivacy: FabricPrivacy
@ -42,8 +44,14 @@ class EditEventDialog : DialogFragmentWithDate() {
private var disposable: CompositeDisposable = CompositeDisposable()
private var _binding: AutomationDialogEventBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
savedInstanceState: Bundle?): View {
event = AutomationEvent(mainApp)
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
@ -52,16 +60,21 @@ class EditEventDialog : DialogFragmentWithDate() {
}
onCreateViewGeneral()
return inflater.inflate(R.layout.automation_dialog_event, container, false)
_binding = AutomationDialogEventBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
automation_inputEventTitle.setText(event.title)
automation_triggerDescription.text = event.trigger.friendlyDescription()
binding.okcancel.ok.visibility = (!event.readOnly).toVisibility()
automation_editTrigger.setOnClickListener {
binding.inputEventTitle.setText(event.title)
binding.inputEventTitle.isFocusable = false
binding.triggerDescription.text = event.trigger.friendlyDescription()
binding.editTrigger.visibility = (!event.readOnly).toVisibility()
binding.editTrigger.setOnClickListener {
val args = Bundle()
args.putString("trigger", event.trigger.toJSON())
val dialog = EditTriggerDialog()
@ -71,10 +84,11 @@ class EditEventDialog : DialogFragmentWithDate() {
// setup action list view
actionListAdapter = ActionListAdapter()
automation_actionListView.layoutManager = LinearLayoutManager(context)
automation_actionListView.adapter = actionListAdapter
binding.actionListView.layoutManager = LinearLayoutManager(context)
binding.actionListView.adapter = actionListAdapter
automation_addAction.setOnClickListener { ChooseActionDialog().show(childFragmentManager, "ChooseActionDialog") }
binding.addAction.visibility = (!event.readOnly).toVisibility()
binding.addAction.setOnClickListener { ChooseActionDialog().show(childFragmentManager, "ChooseActionDialog") }
showPreconditions()
@ -84,36 +98,33 @@ class EditEventDialog : DialogFragmentWithDate() {
.subscribe({
actionListAdapter?.notifyDataSetChanged()
showPreconditions()
}, { fabricPrivacy.logException(it) }
)
}, fabricPrivacy::logException)
disposable += rxBus
.toObservable(EventAutomationAddAction::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
event.addAction(it.action)
actionListAdapter?.notifyDataSetChanged()
}, { fabricPrivacy.logException(it) }
)
}, fabricPrivacy::logException)
disposable += rxBus
.toObservable(EventAutomationUpdateTrigger::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
event.trigger = it.trigger
automation_triggerDescription.text = event.trigger.friendlyDescription()
}, { fabricPrivacy.logException(it) }
)
binding.triggerDescription.text = event.trigger.friendlyDescription()
}, fabricPrivacy::logException)
disposable += rxBus
.toObservable(EventAutomationUpdateAction::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
event.actions[it.position] = it.action
actionListAdapter?.notifyDataSetChanged()
}, { fabricPrivacy.logException(it) })
}, fabricPrivacy::logException)
}
override fun submit(): Boolean {
// check for title
val title = automation_inputEventTitle?.text?.toString() ?: return false
val title = binding.inputEventTitle.text?.toString() ?: return false
if (title.isEmpty()) {
ToastUtils.showToastInUiThread(context, R.string.automation_missing_task_name)
return false
@ -132,9 +143,9 @@ class EditEventDialog : DialogFragmentWithDate() {
}
// store
if (position == -1)
automationPlugin.automationEvents.add(event)
automationPlugin.add(event)
else
automationPlugin.automationEvents[position] = event
automationPlugin.set(event, position)
rxBus.send(EventAutomationDataChanged())
return true
@ -143,6 +154,7 @@ class EditEventDialog : DialogFragmentWithDate() {
override fun onDestroyView() {
super.onDestroyView()
disposable.clear()
_binding = null
}
override fun onSaveInstanceState(savedInstanceState: Bundle) {
@ -154,12 +166,12 @@ class EditEventDialog : DialogFragmentWithDate() {
private fun showPreconditions() {
val forcedTriggers = event.getPreconditions()
if (forcedTriggers.size() > 0) {
automation_forcedTriggerDescription.visibility = View.VISIBLE
automation_forcedTriggerDescriptionLabel.visibility = View.VISIBLE
automation_forcedTriggerDescription.text = forcedTriggers.friendlyDescription()
binding.forcedTriggerDescription.visibility = View.VISIBLE
binding.forcedTriggerDescriptionLabel.visibility = View.VISIBLE
binding.forcedTriggerDescription.text = forcedTriggers.friendlyDescription()
} else {
automation_forcedTriggerDescription.visibility = View.GONE
automation_forcedTriggerDescriptionLabel.visibility = View.GONE
binding.forcedTriggerDescription.visibility = View.GONE
binding.forcedTriggerDescriptionLabel.visibility = View.GONE
}
}
@ -180,20 +192,24 @@ class EditEventDialog : DialogFragmentWithDate() {
inner class ViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
fun bind(action: Action, recyclerView: RecyclerView.Adapter<ViewHolder>, position: Int) {
view.findViewById<LinearLayout>(R.id.automation_layoutText).setOnClickListener {
if (action.hasDialog()) {
val args = Bundle()
args.putInt("actionPosition", position)
args.putString("action", action.toJSON())
val dialog = EditActionDialog()
dialog.arguments = args
dialog.show(childFragmentManager, "EditActionDialog")
if (!event.readOnly)
view.findViewById<LinearLayout>(R.id.automation_layoutText).setOnClickListener {
if (action.hasDialog()) {
val args = Bundle()
args.putInt("actionPosition", position)
args.putString("action", action.toJSON())
val dialog = EditActionDialog()
dialog.arguments = args
dialog.show(childFragmentManager, "EditActionDialog")
}
}
view.findViewById<ImageView>(R.id.automation_iconTrash).run {
visibility = (!event.readOnly).toVisibility()
setOnClickListener {
event.actions.remove(action)
recyclerView.notifyDataSetChanged()
rxBus.send(EventAutomationUpdateGui())
}
}
view.findViewById<ImageView>(R.id.automation_iconTrash).setOnClickListener {
event.actions.remove(action)
recyclerView.notifyDataSetChanged()
rxBus.send(EventAutomationUpdateGui())
}
view.findViewById<ImageView>(R.id.automation_action_image).setImageResource(action.icon())
view.findViewById<TextView>(R.id.automation_viewActionTitle).text = action.shortDescription()

View file

@ -5,7 +5,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.R
import info.nightscout.androidaps.databinding.AutomationDialogEditTriggerBinding
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateTrigger
@ -19,11 +19,11 @@ import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.extensions.plusAssign
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.automation_dialog_edit_trigger.*
import org.json.JSONObject
import javax.inject.Inject
class EditTriggerDialog : DialogFragmentWithDate() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var mainApp: MainApp
@Inject lateinit var fabricPrivacy: FabricPrivacy
@ -32,15 +32,22 @@ class EditTriggerDialog : DialogFragmentWithDate() {
private var triggers: Trigger? = null
private var _binding: AutomationDialogEditTriggerBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
savedInstanceState: Bundle?): View {
// load data from bundle
(savedInstanceState ?: arguments)?.let { bundle ->
bundle.getString("trigger")?.let { triggers = TriggerDummy(mainApp).instantiate(JSONObject(it)) }
}
onCreateViewGeneral()
return inflater.inflate(R.layout.automation_dialog_edit_trigger, container, false)
_binding = AutomationDialogEditTriggerBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -50,16 +57,16 @@ class EditTriggerDialog : DialogFragmentWithDate() {
.toObservable(EventTriggerChanged::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
automation_layoutTrigger.removeAllViews()
triggers?.generateDialog(automation_layoutTrigger)
binding.layoutTrigger.removeAllViews()
triggers?.generateDialog(binding.layoutTrigger)
}, { fabricPrivacy.logException(it) })
disposable += rxBus
.toObservable(EventTriggerRemove::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
findParent(triggers, it.trigger)?.list?.remove(it.trigger)
automation_layoutTrigger.removeAllViews()
triggers?.generateDialog(automation_layoutTrigger)
binding.layoutTrigger.removeAllViews()
triggers?.generateDialog(binding.layoutTrigger)
}, { fabricPrivacy.logException(it) })
disposable += rxBus
@ -67,17 +74,18 @@ class EditTriggerDialog : DialogFragmentWithDate() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
findParent(triggers, it.trigger)?.list?.add(it.trigger.duplicate())
automation_layoutTrigger.removeAllViews()
triggers?.generateDialog(automation_layoutTrigger)
binding.layoutTrigger.removeAllViews()
triggers?.generateDialog(binding.layoutTrigger)
}, { fabricPrivacy.logException(it) })
// display root trigger
triggers?.generateDialog(automation_layoutTrigger)
triggers?.generateDialog(binding.layoutTrigger)
}
override fun onDestroyView() {
super.onDestroyView()
disposable.clear()
_binding = null
}
override fun submit(): Boolean {

View file

@ -35,6 +35,12 @@ class TriggerDelta(injector: HasAndroidInjector) : Trigger(injector) {
else InputDelta(injector, 0.0, (-MGDL_MAX), MGDL_MAX, 1.0, DecimalFormat("1"), DeltaType.DELTA)
}
constructor(injector: HasAndroidInjector, inputDelta: InputDelta, units: String, comparator: Comparator.Compare) : this(injector) {
this.units = units
this.delta = inputDelta
this.comparator.value = comparator
}
private constructor(injector: HasAndroidInjector, triggerDelta: TriggerDelta) : this(injector) {
units = triggerDelta.units
delta = InputDelta(injector, triggerDelta.delta)

View file

@ -18,6 +18,7 @@ class FoodPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(FoodFragment::class.java.name)
.pluginIcon(R.drawable.ic_food)
.pluginName(R.string.food)
.shortName(R.string.food_short)
.description(R.string.description_food),

View file

@ -123,7 +123,7 @@ class ImportExportPrefs @Inject constructor(
}
private fun prefsEncryptionIsDisabled() =
buildHelper.isEngineeringMode() && !sp.getBoolean(resourceHelper.gs(R.string.key_maintenance_encrypt_exported_prefs), true)
buildHelper.isEngineeringMode() && !sp.getBoolean(R.string.key_maintenance_encrypt_exported_prefs, true)
private fun askForMasterPass(activity: FragmentActivity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { password ->

View file

@ -40,6 +40,7 @@ class MaintenancePlugin @Inject constructor(
.fragmentClass(MaintenanceFragment::class.java.name)
.alwaysVisible(false)
.alwaysEnabled(true)
.pluginIcon(R.drawable.ic_maintenance)
.pluginName(R.string.maintenance)
.shortName(R.string.maintenance_shortname)
.preferencesId(R.xml.pref_maintenance)

View file

@ -90,6 +90,7 @@ public class NSClientPlugin extends PluginBase {
super(new PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(NSClientFragment.class.getName())
.pluginIcon(R.drawable.ic_nightscout_syncs)
.pluginName(R.string.nsclientinternal)
.shortName(R.string.nsclientinternal_shortname)
.preferencesId(R.xml.pref_nsclientinternal)

View file

@ -59,6 +59,7 @@ class OpenHumansUploader @Inject constructor(
) : PluginBase(
PluginDescription()
.mainType(PluginType.GENERAL)
.pluginIcon(R.drawable.open_humans_white)
.pluginName(R.string.open_humans)
.shortName(R.string.open_humans_short)
.description(R.string.donate_your_data_to_science)

View file

@ -11,10 +11,7 @@ import android.graphics.drawable.AnimationDrawable
import android.os.Bundle
import android.os.Handler
import android.util.DisplayMetrics
import android.view.ContextMenu
import android.view.ContextMenu.ContextMenuInfo
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.View.OnLongClickListener
import android.view.ViewGroup
@ -31,17 +28,9 @@ import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.dialogs.CalibrationDialog
import info.nightscout.androidaps.dialogs.CarbsDialog
import info.nightscout.androidaps.dialogs.InsulinDialog
import info.nightscout.androidaps.dialogs.TreatmentDialog
import info.nightscout.androidaps.dialogs.WizardDialog
import info.nightscout.androidaps.dialogs.*
import info.nightscout.androidaps.events.*
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.interfaces.*
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification
@ -76,36 +65,16 @@ import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.overview_buttons_layout.*
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_carbsbutton
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_insulinbutton
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_quickwizardbutton
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_treatmentbutton
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_wizardbutton
import kotlinx.android.synthetic.main.overview_fragment.overview_notifications
import kotlinx.android.synthetic.main.overview_fragment_nsclient.*
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_bggraph
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_chartMenuButton
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_iobcalculationprogess
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_iobgraph
import kotlinx.android.synthetic.main.overview_graphs_layout.*
import kotlinx.android.synthetic.main.overview_info_layout.*
import kotlinx.android.synthetic.main.overview_info_layout.overview_arrow
import kotlinx.android.synthetic.main.overview_info_layout.overview_basebasal
import kotlinx.android.synthetic.main.overview_info_layout.overview_bg
import kotlinx.android.synthetic.main.overview_info_layout.overview_cob
import kotlinx.android.synthetic.main.overview_info_layout.overview_extendedbolus
import kotlinx.android.synthetic.main.overview_info_layout.overview_iob
import kotlinx.android.synthetic.main.overview_info_layout.overview_sensitivity
import kotlinx.android.synthetic.main.overview_info_layout.overview_time
import kotlinx.android.synthetic.main.overview_info_layout.overview_timeagoshort
import kotlinx.android.synthetic.main.overview_loop_pumpstatus_layout.*
import kotlinx.android.synthetic.main.overview_statuslights_layout.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledFuture
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import kotlin.collections.ArrayList
import kotlin.math.abs
@ -155,9 +124,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
private var loopHandler = Handler()
private var refreshLoop: Runnable? = null
private val worker = Executors.newSingleThreadScheduledExecutor()
private var scheduledUpdate: ScheduledFuture<*>? = null
private val secondaryGraphs = ArrayList<GraphView>()
private val secondaryGraphsLabel = ArrayList<TextView>()
@ -214,6 +180,10 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
overviewMenus.setupChartMenu(overview_chartMenuButton)
prepareGraphs()
overview_activeprofile?.setOnClickListener(this)
overview_activeprofile?.setOnLongClickListener(this)
overview_temptarget?.setOnClickListener(this)
overview_temptarget?.setOnLongClickListener(this)
overview_accepttempbutton?.setOnClickListener(this)
overview_treatmentbutton?.setOnClickListener(this)
overview_wizardbutton?.setOnClickListener(this)
@ -223,15 +193,15 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
overview_carbsbutton?.setOnClickListener(this)
overview_quickwizardbutton?.setOnClickListener(this)
overview_quickwizardbutton?.setOnLongClickListener(this)
overview_apsmode?.setOnClickListener(this)
overview_apsmode?.setOnLongClickListener(this)
overview_activeprofile?.setOnLongClickListener(this)
}
override fun onPause() {
super.onPause()
disposable.clear()
loopHandler.removeCallbacksAndMessages(null)
overview_apsmode_llayout?.let { unregisterForContextMenu(it) }
overview_activeprofile?.let { unregisterForContextMenu(it) }
overview_temptarget?.let { unregisterForContextMenu(it) }
}
override fun onResume() {
@ -303,20 +273,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
}
loopHandler.postDelayed(refreshLoop, 60 * 1000L)
overview_apsmode_llayout?.let { registerForContextMenu(overview_apsmode) }
overview_activeprofile?.let { registerForContextMenu(it) }
overview_temptarget?.let { registerForContextMenu(it) }
updateGUI("onResume")
}
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?) {
super.onCreateContextMenu(menu, v, menuInfo)
overviewMenus.createContextMenu(menu, v)
}
override fun onContextItemSelected(item: MenuItem): Boolean {
return if (overviewMenus.onContextItemSelected(item, childFragmentManager)) true else super.onContextItemSelected(item)
}
override fun onClick(v: View) {
// try to fix https://fabric.io/nightscout3/android/apps/info.nightscout.androidaps/issues/5aca7a1536c7b23527eb4be7?time=last-seven-days
@ -324,12 +283,20 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
if (childFragmentManager.isStateSaved) return
activity?.let { activity ->
when (v.id) {
R.id.overview_treatmentbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TreatmentDialog().show(childFragmentManager, "Overview") })
R.id.overview_wizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { WizardDialog().show(childFragmentManager, "Overview") })
R.id.overview_insulinbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { InsulinDialog().show(childFragmentManager, "Overview") })
R.id.overview_treatmentbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TreatmentDialog().show(childFragmentManager, "Overview") })
R.id.overview_wizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { WizardDialog().show(childFragmentManager, "Overview") })
R.id.overview_insulinbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { InsulinDialog().show(childFragmentManager, "Overview") })
R.id.overview_quickwizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { onClickQuickWizard() })
R.id.overview_carbsbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { CarbsDialog().show(childFragmentManager, "Overview") })
R.id.overview_carbsbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { CarbsDialog().show(childFragmentManager, "Overview") })
R.id.overview_temptarget -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TempTargetDialog().show(childFragmentManager, "Overview") })
R.id.overview_activeprofile -> {
val args = Bundle()
args.putLong("time", DateUtil.now())
args.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal)
val pvd = ProfileViewerDialog()
pvd.arguments = args
pvd.show(childFragmentManager, "ProfileViewDialog")
}
R.id.overview_cgmbutton -> {
if (xdripPlugin.isEnabled(PluginType.BGSOURCE))
openCgmApp("com.eveningoutpost.dexdrip")
@ -373,6 +340,14 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
}
}
}
R.id.overview_apsmode -> {
val args = Bundle()
args.putInt("showOkCancel", 1) // 1-> true
val pvd = LoopDialog()
pvd.arguments = args
pvd.show(childFragmentManager, "Overview")
}
}
}
}
@ -397,6 +372,16 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
startActivity(Intent(v.context, QuickWizardListActivity::class.java))
return true
}
R.id.overview_apsmode -> {
val args = Bundle()
args.putInt("showOkCancel", 0) // 0-> false
val pvd = LoopDialog()
pvd.arguments = args
pvd.show(childFragmentManager, "Overview")
}
R.id.overview_temptarget -> v.performClick()
R.id.overview_activeprofile -> activity?.let { activity -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { ProfileSwitchDialog().show(childFragmentManager, "Overview") })}
}
return false
}
@ -522,21 +507,19 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
}
}
var task: Runnable? = null
private fun scheduleUpdateGUI(from: String) {
class UpdateRunnable : Runnable {
override fun run() {
activity?.runOnUiThread {
updateGUI(from)
scheduledUpdate = null
}
updateGUI(from)
task = null
}
}
// prepare task for execution in 500 milliseconds
// cancel waiting task to prevent multiple updates
scheduledUpdate?.cancel(false)
val task: Runnable = UpdateRunnable()
scheduledUpdate = worker.schedule(task, 500, TimeUnit.MILLISECONDS)
view?.removeCallbacks(task)
task = UpdateRunnable()
view?.postDelayed(task, 500)
}
@SuppressLint("SetTextI18n")
@ -562,6 +545,14 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
val units = profileFunction.getUnits()
val lowLine = defaultValueHelper.determineLowLine()
val highLine = defaultValueHelper.determineHighLine()
val lastRun = loopPlugin.lastRun
val predictionsAvailable = if (config.APS) lastRun?.request?.hasPredictions == true else config.NSCLIENT
try {
updateGraph(lastRun, predictionsAvailable, lowLine, highLine, pump, profile)
} catch (e: IllegalStateException) {
return // view no longer exists
}
//Start with updating the BG as it is unaffected by loop.
// **** BG value ****
@ -664,8 +655,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
overview_apsmode_text?.visibility = View.GONE
overview_time_llayout?.visibility = View.VISIBLE
}
val lastRun = loopPlugin.lastRun
val predictionsAvailable = if (config.APS) lastRun?.request?.hasPredictions == true else config.NSCLIENT
// temp target
val tempTarget = treatmentsPlugin.tempTargetFromHistory
@ -803,8 +792,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
iobCobCalculatorPlugin.getLastAutosensData("Overview")?.let { autosensData ->
String.format(Locale.ENGLISH, "%.0f%%", autosensData.autosensResult.ratio * 100)
} ?: ""
}
// ****** GRAPH *******
private fun updateGraph(lastRun: LoopInterface.LastRun?, predictionsAvailable: Boolean, lowLine: Double, highLine: Double, pump: PumpInterface, profile: Profile) {
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
overview_bggraph ?: return@launch
val graphData = GraphData(injector, overview_bggraph, iobCobCalculatorPlugin, treatmentsPlugin)

View file

@ -1,43 +1,20 @@
package info.nightscout.androidaps.plugins.general.overview
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.view.ContextMenu
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.ImageButton
import androidx.annotation.ColorRes
import androidx.annotation.StringRes
import androidx.appcompat.widget.PopupMenu
import androidx.fragment.app.FragmentManager
import com.google.gson.Gson
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.db.TempTarget
import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.dialogs.TempTargetDialog
import info.nightscout.androidaps.events.EventRefreshOverview
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.interfaces.PumpDescription
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DefaultValueHelper
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
@ -50,13 +27,7 @@ class OverviewMenus @Inject constructor(
private val resourceHelper: ResourceHelper,
private val sp: SP,
private val rxBus: RxBusWrapper,
private val context: Context,
private val buildHelper: BuildHelper,
private val defaultValueHelper: DefaultValueHelper,
private val activePlugin: ActivePluginProvider,
private val profileFunction: ProfileFunction,
private val commandQueue: CommandQueueProvider,
private val configBuilderPlugin: ConfigBuilderPlugin,
private val loopPlugin: LoopPlugin,
private val config: Config
) {
@ -175,247 +146,4 @@ class OverviewMenus @Inject constructor(
}
}
fun createContextMenu(menu: ContextMenu, v: View) {
when (v.id) {
R.id.overview_apsmode -> {
val pumpDescription: PumpDescription = activePlugin.activePump.pumpDescription
if (!profileFunction.isProfileValid("ContextMenuCreation")) return
menu.setHeaderTitle(resourceHelper.gs(R.string.loop))
if (loopPlugin.isEnabled(PluginType.LOOP)) {
menu.add(resourceHelper.gs(R.string.disableloop))
if (!loopPlugin.isSuspended) {
menu.add(resourceHelper.gs(R.string.suspendloopfor1h))
menu.add(resourceHelper.gs(R.string.suspendloopfor2h))
menu.add(resourceHelper.gs(R.string.suspendloopfor3h))
menu.add(resourceHelper.gs(R.string.suspendloopfor10h))
} else {
if (!loopPlugin.isDisconnected) {
menu.add(resourceHelper.gs(R.string.resume))
}
}
}
if (!loopPlugin.isEnabled(PluginType.LOOP)) {
menu.add(resourceHelper.gs(R.string.enableloop))
}
if (!loopPlugin.isDisconnected) {
showSuspendPump(menu, pumpDescription)
} else {
menu.add(resourceHelper.gs(R.string.reconnect))
}
}
R.id.overview_activeprofile -> {
menu.setHeaderTitle(resourceHelper.gs(R.string.profile))
menu.add(resourceHelper.gs(R.string.viewprofile))
if (activePlugin.activeProfileInterface.profile != null) {
menu.add(resourceHelper.gs(R.string.careportal_profileswitch))
}
}
R.id.overview_temptarget -> {
menu.setHeaderTitle(resourceHelper.gs(R.string.careportal_temporarytarget))
menu.add(resourceHelper.gs(R.string.custom))
menu.add(resourceHelper.gs(R.string.eatingsoon))
menu.add(resourceHelper.gs(R.string.activity))
menu.add(resourceHelper.gs(R.string.hypo))
if (activePlugin.activeTreatments.tempTargetFromHistory != null) {
menu.add(resourceHelper.gs(R.string.cancel))
}
}
}
}
private fun showSuspendPump(menu: ContextMenu, pumpDescription: PumpDescription) {
if (pumpDescription.tempDurationStep15mAllowed) menu.add(resourceHelper.gs(R.string.disconnectpumpfor15m))
if (pumpDescription.tempDurationStep30mAllowed) menu.add(resourceHelper.gs(R.string.disconnectpumpfor30m))
menu.add(resourceHelper.gs(R.string.disconnectpumpfor1h))
menu.add(resourceHelper.gs(R.string.disconnectpumpfor2h))
menu.add(resourceHelper.gs(R.string.disconnectpumpfor3h))
}
fun onContextItemSelected(item: MenuItem, manager: FragmentManager): Boolean {
val profile = profileFunction.getProfile() ?: return true
when (item.title) {
resourceHelper.gs(R.string.disableloop) -> {
aapsLogger.debug("USER ENTRY: LOOP DISABLED")
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
loopPlugin.setFragmentVisible(PluginType.LOOP, false)
configBuilderPlugin.storeSettings("DisablingLoop")
rxBus.send(EventRefreshOverview("suspendmenu"))
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
ToastUtils.showToastInUiThread(context, resourceHelper.gs(R.string.tempbasaldeliveryerror))
}
}
})
loopPlugin.createOfflineEvent(24 * 60) // upload 24h, we don't know real duration
return true
}
resourceHelper.gs(R.string.enableloop) -> {
aapsLogger.debug("USER ENTRY: LOOP ENABLED")
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
configBuilderPlugin.storeSettings("EnablingLoop")
rxBus.send(EventRefreshOverview("suspendmenu"))
loopPlugin.createOfflineEvent(0)
return true
}
resourceHelper.gs(R.string.resume), resourceHelper.gs(R.string.reconnect) -> {
aapsLogger.debug("USER ENTRY: RESUME")
loopPlugin.suspendTo(0L)
rxBus.send(EventRefreshOverview("suspendmenu"))
commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(i)
}
}
})
sp.putBoolean(R.string.key_objectiveusereconnect, true)
loopPlugin.createOfflineEvent(0)
return true
}
resourceHelper.gs(R.string.suspendloopfor1h) -> {
aapsLogger.debug("USER ENTRY: SUSPEND 1h")
loopPlugin.suspendLoop(60)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.suspendloopfor2h) -> {
aapsLogger.debug("USER ENTRY: SUSPEND 2h")
loopPlugin.suspendLoop(120)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.suspendloopfor3h) -> {
aapsLogger.debug("USER ENTRY: SUSPEND 3h")
loopPlugin.suspendLoop(180)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.suspendloopfor10h) -> {
aapsLogger.debug("USER ENTRY: SUSPEND 10h")
loopPlugin.suspendLoop(600)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.disconnectpumpfor15m) -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 15m")
loopPlugin.disconnectPump(15, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.disconnectpumpfor30m) -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 30m")
loopPlugin.disconnectPump(30, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.disconnectpumpfor1h) -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 1h")
loopPlugin.disconnectPump(60, profile)
sp.putBoolean(R.string.key_objectiveusedisconnect, true)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.disconnectpumpfor2h) -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 2h")
loopPlugin.disconnectPump(120, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.disconnectpumpfor3h) -> {
aapsLogger.debug("USER ENTRY: DISCONNECT 3h")
loopPlugin.disconnectPump(180, profile)
rxBus.send(EventRefreshOverview("suspendmenu"))
return true
}
resourceHelper.gs(R.string.careportal_profileswitch) -> {
ProfileSwitchDialog().show(manager, "Overview")
}
resourceHelper.gs(R.string.viewprofile) -> {
val args = Bundle()
args.putLong("time", DateUtil.now())
args.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal)
val pvd = ProfileViewerDialog()
pvd.arguments = args
pvd.show(manager, "ProfileViewDialog")
}
resourceHelper.gs(R.string.eatingsoon) -> {
aapsLogger.debug("USER ENTRY: TEMP TARGET EATING SOON")
val target = Profile.toMgdl(defaultValueHelper.determineEatingSoonTT(), profileFunction.getUnits())
val tempTarget = TempTarget()
.date(System.currentTimeMillis())
.duration(defaultValueHelper.determineEatingSoonTTDuration())
.reason(resourceHelper.gs(R.string.eatingsoon))
.source(Source.USER)
.low(target)
.high(target)
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
}
resourceHelper.gs(R.string.activity) -> {
aapsLogger.debug("USER ENTRY: TEMP TARGET ACTIVITY")
val target = Profile.toMgdl(defaultValueHelper.determineActivityTT(), profileFunction.getUnits())
val tempTarget = TempTarget()
.date(DateUtil.now())
.duration(defaultValueHelper.determineActivityTTDuration())
.reason(resourceHelper.gs(R.string.activity))
.source(Source.USER)
.low(target)
.high(target)
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
}
resourceHelper.gs(R.string.hypo) -> {
aapsLogger.debug("USER ENTRY: TEMP TARGET HYPO")
val target = Profile.toMgdl(defaultValueHelper.determineHypoTT(), profileFunction.getUnits())
val tempTarget = TempTarget()
.date(DateUtil.now())
.duration(defaultValueHelper.determineHypoTTDuration())
.reason(resourceHelper.gs(R.string.hypo))
.source(Source.USER)
.low(target)
.high(target)
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
}
resourceHelper.gs(R.string.custom) -> {
TempTargetDialog().show(manager, "Overview")
}
resourceHelper.gs(R.string.cancel) -> {
aapsLogger.debug("USER ENTRY: TEMP TARGET CANCEL")
val tempTarget = TempTarget()
.source(Source.USER)
.date(DateUtil.now())
.duration(0)
.low(0.0)
.high(0.0)
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
}
}
return false
}
}

View file

@ -41,6 +41,7 @@ class OverviewPlugin @Inject constructor(
.fragmentClass(OverviewFragment::class.qualifiedName)
.alwaysVisible(true)
.alwaysEnabled(true)
.pluginIcon(R.drawable.ic_home)
.pluginName(R.string.overview)
.shortName(R.string.overview_shortname)
.preferencesId(R.xml.pref_overview)

View file

@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.general.overview
import android.graphics.Color
import android.widget.TextView
import androidx.annotation.StringRes
import info.nightscout.androidaps.Config
@ -8,6 +9,8 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.db.CareportalEvent
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants
import info.nightscout.androidaps.utils.DecimalFormatter
import info.nightscout.androidaps.utils.WarnColors
import info.nightscout.androidaps.utils.resources.ResourceHelper
@ -33,16 +36,28 @@ class StatusLightHandler @Inject constructor(
handleAge(careportal_canulaage, CareportalEvent.SITECHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
handleAge(careportal_insulinage, CareportalEvent.INSULINCHANGE, R.string.key_statuslights_iage_warning, 72.0, R.string.key_statuslights_iage_critical, 144.0)
handleAge(careportal_sensorage, CareportalEvent.SENSORCHANGE, R.string.key_statuslights_sage_warning, 216.0, R.string.key_statuslights_sage_critical, 240.0)
handleAge(careportal_pbage, CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0)
if (pump.pumpDescription.isBatteryReplaceable) {
handleAge(careportal_pbage, CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0)
}
if (!config.NSCLIENT) {
handleLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
if (pump.model() == PumpType.Insulet_Omnipod) {
handleOmnipodReservoirLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
} else {
handleLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
}
if (bgSource.sensorBatteryLevel != -1)
handleLevel(careportal_sensorbatterylevel, R.string.key_statuslights_sbat_critical, 5.0, R.string.key_statuslights_sbat_warning, 20.0, bgSource.sensorBatteryLevel.toDouble(), "%")
else
careportal_sensorbatterylevel?.text = ""
}
if (!config.NSCLIENT && pump.model() != PumpType.AccuChekCombo)
handleLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
if (!config.NSCLIENT) {
if (pump.model() == PumpType.Insulet_Omnipod && pump is OmnipodPumpPlugin) { // instanceof check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below
handleOmnipodBatteryLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%", (pump as OmnipodPumpPlugin).isUseRileyLinkBatteryLevel)
} else if (pump.model() != PumpType.AccuChekCombo) {
handleLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
}
}
}
private fun handleAge(view: TextView?, eventName: String, @StringRes warnSettings: Int, defaultWarnThreshold: Double, @StringRes urgentSettings: Int, defaultUrgentThreshold: Double) {
@ -64,4 +79,24 @@ class StatusLightHandler @Inject constructor(
view?.text = " " + DecimalFormatter.to0Decimal(level) + units
warnColors.setColorInverse(view, level, resWarn, resUrgent)
}
// Omnipod only reports reservoir level when it's 50 units or less, so we display "50+U" for any value > 50
private fun handleOmnipodReservoirLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
if (level > OmnipodConstants.MAX_RESERVOIR_READING) {
@Suppress("SetTextI18n")
view?.text = " 50+$units"
view?.setTextColor(Color.WHITE)
} else {
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
}
}
private fun handleOmnipodBatteryLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String, useRileyLinkBatteryLevel: Boolean) {
if (useRileyLinkBatteryLevel) {
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
} else {
view?.text = resourceHelper.gs(R.string.notavailable)
view?.setTextColor(Color.WHITE)
}
}
}

View file

@ -66,6 +66,7 @@ class SmsCommunicatorPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(SmsCommunicatorFragment::class.java.name)
.pluginIcon(R.drawable.ic_sms)
.pluginName(R.string.smscommunicator)
.shortName(R.string.smscommunicator_shortname)
.preferencesId(R.xml.pref_smscommunicator)

View file

@ -195,7 +195,7 @@ class ActionStringHandler @Inject constructor(
val formatInt = DecimalFormat("0")
val bolusWizard = BolusWizard(injector).doCalc(profile, profileName, activePlugin.activeTreatments.tempTargetFromHistory,
carbsAfterConstraints, cobInfo.displayCob!!, bgReading!!.valueToUnits(profileFunction.getUnits()),
0.0, percentage.toDouble(), useBG, useCOB, useBolusIOB, useBasalIOB, false, useTT, useTrend)
0.0, percentage.toDouble(), useBG, useCOB, useBolusIOB, useBasalIOB, false, useTT, useTrend, false)
if (Math.abs(bolusWizard.insulinAfterConstraints - bolusWizard.calculatedTotalInsulin) >= 0.01) {
sendError("Insulin constraint violation!" +
"\nCannot deliver " + format.format(bolusWizard.calculatedTotalInsulin) + "!")
@ -215,7 +215,7 @@ class ActionStringHandler @Inject constructor(
if (useCOB) rMessage += "\nFrom" + formatInt.format(cobInfo.displayCob) + "g COB : " + format.format(bolusWizard.insulinFromCOB) + "U"
if (useBG) rMessage += "\nFrom BG: " + format.format(bolusWizard.insulinFromBG) + "U"
if (useBolusIOB) rMessage += "\nBolus IOB: " + format.format(bolusWizard.insulinFromBolusIOB) + "U"
if (useBasalIOB) rMessage += "\nBasal IOB: " + format.format(bolusWizard.insulinFromBasalsIOB) + "U"
if (useBasalIOB) rMessage += "\nBasal IOB: " + format.format(bolusWizard.insulinFromBasalIOB) + "U"
if (useTrend) rMessage += "\nFrom 15' trend: " + format.format(bolusWizard.insulinFromTrend) + "U"
if (percentage != 100) {
rMessage += "\nPercentage: " + format.format(bolusWizard.totalBeforePercentageAdjustment) + "U * " + percentage + "% -> ~" + format.format(bolusWizard.calculatedTotalInsulin) + "U"

View file

@ -39,6 +39,7 @@ class WearPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.GENERAL)
.fragmentClass(WearFragment::class.java.name)
.pluginIcon(R.drawable.ic_watch)
.pluginName(R.string.wear)
.shortName(R.string.wear_shortname)
.preferencesId(R.xml.pref_wear)

View file

@ -291,7 +291,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
return;
}
executeTask(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient), dataMap);
(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, dataMap);
}
}
}
@ -402,7 +402,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
}
}
entries.putDataMapArrayList("entries", dataMaps);
executeTask(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient), entries);
(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, entries);
}
sendPreferences();
sendBasals();
@ -553,8 +553,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
dm.putDataMapArrayList("temps", temps);
dm.putDataMapArrayList("boluses", boluses);
dm.putDataMapArrayList("predictions", predictions);
executeTask(new SendToDataLayerThread(BASAL_DATA_PATH, googleApiClient), dm);
(new SendToDataLayerThread(BASAL_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, dm);
}
private DataMap tempDatamap(long startTime, double startBasal, long to, double toBasal, double amount) {
@ -601,7 +600,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putString("openSettings", "openSettings");
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendNotification", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("OpenSettings", "No connection to wearable available!");
@ -617,7 +615,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
dataMapRequest.getDataMap().putString("progressstatus", status);
dataMapRequest.getDataMap().putInt("progresspercent", progresspercent);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendBolusProgress", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("BolusProgress", "No connection to wearable available!");
@ -637,7 +634,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
aapsLogger.debug(LTag.WEAR, "Requesting confirmation from wear: " + actionstring);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendActionConfirmationRequest", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("confirmationRequest", "No connection to wearable available!");
@ -657,7 +653,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
aapsLogger.debug(LTag.WEAR, "Requesting confirmation from wear: " + actionstring);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendChangeConfirmationRequest", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("changeConfirmRequest", "No connection to wearable available!");
@ -675,7 +670,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
aapsLogger.debug(LTag.WEAR, "Canceling notification on wear: " + actionstring);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendCancelNotificationRequest", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("cancelNotificationReq", "No connection to wearable available!");
@ -701,8 +695,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
currentBasal = generateBasalString();
//bgi
double bgi = -(bolusIob.activity + basalIob.activity) * 5 * Profile.fromMgdlToUnits(profile.getIsfMgdl(), profileFunction.getUnits());
bgiString = "" + ((bgi >= 0) ? "+" : "") + DecimalFormatter.to1Decimal(bgi);
@ -740,7 +732,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
dataMapRequest.getDataMap().putBoolean("showBgi", sp.getBoolean(R.string.key_wear_showbgi, false));
dataMapRequest.getDataMap().putInt("batteryLevel", (phoneBattery >= 30) ? 1 : 0);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendStatus", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("SendStatus", "No connection to wearable available!");
@ -757,29 +748,12 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
dataMapRequest.getDataMap().putBoolean("wearcontrol", wearcontrol);
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
debugData("sendPreferences", putDataRequest);
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
} else {
Log.e("SendStatus", "No connection to wearable available!");
}
}
private void debugData(String source, Object data) {
// Log.d(TAG, "WR: " + source + " " + data);
}
@SuppressWarnings("UNCHECKED")
private void executeTask(AsyncTask task, DataMap... parameters) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, parameters);
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
// } else {
// task.execute();
// }
}
@NonNull
private String generateStatusString(Profile profile, String currentBasal, String iobSum, String iobDetail, String bgiString) {

View file

@ -43,6 +43,7 @@ class StatusLinePlugin @Inject constructor(
) : PluginBase(
PluginDescription()
.mainType(PluginType.GENERAL)
.pluginIcon((R.drawable.ic_blooddrop_48))
.pluginName(R.string.xdripstatus)
.shortName(R.string.xdripstatus_shortname)
.neverVisible(true)

View file

@ -31,6 +31,7 @@ class InsulinLyumjevPlugin @Inject constructor(
init {
pluginDescription
.pluginIcon(R.drawable.ic_insulin)
.pluginName(R.string.lyumjev)
.description(R.string.description_insulin_lyumjev)
}

View file

@ -29,6 +29,7 @@ abstract class InsulinOrefBasePlugin(
) : PluginBase(PluginDescription()
.mainType(PluginType.INSULIN)
.fragmentClass(InsulinFragment::class.java.name)
.pluginIcon(R.drawable.ic_insulin)
.shortName(R.string.insulin_shortname)
.visibleByDefault(false),
aapsLogger, resourceHelper, injector

View file

@ -49,6 +49,7 @@ class InsulinOrefFreePeakPlugin @Inject constructor(
init {
pluginDescription
.pluginIcon(R.drawable.ic_insulin)
.pluginName(R.string.free_peak_oref)
.preferencesId(R.xml.pref_insulinoreffreepeak)
.description(R.string.description_insulin_free_peak)

View file

@ -37,6 +37,7 @@ class LocalProfilePlugin @Inject constructor(
.mainType(PluginType.PROFILE)
.fragmentClass(LocalProfileFragment::class.java.name)
.enableByDefault(true)
.pluginIcon(R.drawable.ic_local_profile)
.pluginName(R.string.localprofile)
.shortName(R.string.localprofile_shortname)
.description(R.string.description_profile_local)

View file

@ -32,6 +32,7 @@ class NSProfilePlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.PROFILE)
.fragmentClass(NSProfileFragment::class.java.name)
.pluginIcon(R.drawable.ic_nightscout_profile)
.pluginName(R.string.nsprofile)
.shortName(R.string.profileviewer_shortname)
.alwaysEnabled(config.NSCLIENT)

View file

@ -147,7 +147,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
super(new PluginDescription()
.mainType(PluginType.PUMP)
.fragmentClass(ComboFragment.class.getName())
.pluginIcon(R.drawable.ic_combo)
.pluginIcon(R.drawable.ic_combo_128)
.pluginName(R.string.combopump)
.shortName(R.string.combopump_shortname)
.description(R.string.description_pump_combo),
@ -338,7 +338,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
* Runs pump initialization if needed and reads the pump state from the main screen.
*/
@Override
public synchronized void getPumpStatus() {
public synchronized void getPumpStatus(String reason) {
getAapsLogger().debug(LTag.PUMP, "getPumpStatus called");
if (!pump.initialized) {
initializePump();

View file

@ -219,7 +219,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
DateUtil dateUtil
) {
super(new PluginDescription()
.pluginIcon(R.drawable.ic_insight)
.pluginIcon(R.drawable.ic_insight_128)
.pluginName(R.string.insight_local)
.shortName(R.string.insightpump_shortname)
.mainType(PluginType.PUMP)
@ -370,7 +370,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
}
@Override
public void getPumpStatus() {
public void getPumpStatus(String reason) {
try {
tbrOverNotificationBlock = ParameterBlockUtil.readParameterBlock(connectionService, Service.CONFIGURATION, TBROverNotificationBlock.class);
readHistory();

View file

@ -57,6 +57,7 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
) {
super(new PluginDescription()
.mainType(PluginType.PUMP)
.pluginIcon(R.drawable.ic_ict)
.pluginName(R.string.mdi)
.description(R.string.description_pump_mdi),
injector, aapsLogger, resourceHelper, commandQueue
@ -132,7 +133,7 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
}
@Override
public void getPumpStatus() {
public void getPumpStatus(String reason) {
}
@NonNull @Override

View file

@ -58,6 +58,7 @@ class VirtualPumpPlugin @Inject constructor(
) : PumpPluginBase(PluginDescription()
.mainType(PluginType.PUMP)
.fragmentClass(VirtualPumpFragment::class.java.name)
.pluginIcon(R.drawable.ic_virtual_pump)
.pluginName(R.string.virtualpump)
.shortName(R.string.virtualpump_shortname)
.preferencesId(R.xml.pref_virtualpump)
@ -178,7 +179,7 @@ class VirtualPumpPlugin @Inject constructor(
override fun disconnect(reason: String) {}
override fun stopConnecting() {}
override fun getPumpStatus() {
override fun getPumpStatus(reason: String?) {
lastDataTime = System.currentTimeMillis()
}

View file

@ -56,6 +56,7 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
) {
super(new PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
.pluginName(R.string.sensitivityaaps)
.shortName(R.string.sensitivity_shortname)
.preferencesId(R.xml.pref_absorption_aaps)

View file

@ -55,6 +55,7 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
) {
super(new PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
.pluginName(R.string.sensitivityoref1)
.shortName(R.string.sensitivity_shortname)
.enableByDefault(true)

View file

@ -51,6 +51,7 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
) {
super(new PluginDescription()
.mainType(PluginType.SENSITIVITY)
.pluginIcon(R.drawable.ic_generic_icon)
.pluginName(R.string.sensitivityweightedaverage)
.shortName(R.string.sensitivity_shortname)
.preferencesId(R.xml.pref_absorption_aaps)

View file

@ -38,6 +38,7 @@ class DexcomPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_dexcom_g6)
.pluginName(R.string.dexcom_app_patched)
.shortName(R.string.dexcom_short)
.preferencesId(R.xml.pref_bgsourcedexcom)

View file

@ -34,6 +34,7 @@ class EversensePlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_eversense)
.pluginName(R.string.eversense)
.shortName(R.string.eversense_shortname)
.preferencesId(R.xml.pref_bgsource)

View file

@ -24,6 +24,7 @@ class GlimpPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_glimp)
.pluginName(R.string.Glimp)
.preferencesId(R.xml.pref_bgsource)
.description(R.string.description_source_glimp),

View file

@ -25,6 +25,7 @@ class MM640gPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_generic_cgm)
.pluginName(R.string.MM640g)
.description(R.string.description_source_mm640g),
aapsLogger, resourceHelper, injector

View file

@ -32,6 +32,7 @@ class NSClientSourcePlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_nsclient_bg)
.pluginName(R.string.nsclientbg)
.description(R.string.description_source_ns_client),
aapsLogger, resourceHelper, injector

View file

@ -31,6 +31,7 @@ class PoctechPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_poctech)
.pluginName(R.string.poctech)
.preferencesId(R.xml.pref_bgsource)
.description(R.string.description_source_poctech),

View file

@ -40,6 +40,7 @@ class RandomBgPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_dice)
.pluginName(R.string.randombg)
.shortName(R.string.randombg_short)
.preferencesId(R.xml.pref_bgsource)

View file

@ -27,6 +27,7 @@ class TomatoPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon(R.drawable.ic_sensor)
.pluginName(R.string.tomato)
.preferencesId(R.xml.pref_bgsource)
.shortName(R.string.tomato_short)

View file

@ -25,6 +25,7 @@ class XdripPlugin @Inject constructor(
) : PluginBase(PluginDescription()
.mainType(PluginType.BGSOURCE)
.fragmentClass(BGSourceFragment::class.java.name)
.pluginIcon((R.drawable.ic_blooddrop_48))
.pluginName(R.string.xdrip)
.description(R.string.description_source_xdrip),
aapsLogger, resourceHelper, injector

View file

@ -111,6 +111,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
super(new PluginDescription()
.mainType(PluginType.TREATMENT)
.fragmentClass(TreatmentsFragment.class.getName())
.pluginIcon(R.drawable.ic_treatments)
.pluginName(R.string.treatments)
.shortName(R.string.treatments_shortname)
.alwaysEnabled(true)

View file

@ -11,7 +11,7 @@ import javax.inject.Inject
class CommandReadStatus(
injector: HasAndroidInjector,
private val reason: String,
val reason: String,
callback: Callback?
) : Command(injector, CommandType.READSTATUS, callback) {
@ -19,7 +19,7 @@ class CommandReadStatus(
@Inject lateinit var localAlertUtils: LocalAlertUtils
override fun execute() {
activePlugin.activePump.getPumpStatus()
activePlugin.activePump.getPumpStatus(reason)
localAlertUtils.notifyPumpStatusRead()
aapsLogger.debug(LTag.PUMPQUEUE, "CommandReadStatus executed. Reason: $reason")
val pump = activePlugin.activePump

View file

@ -77,7 +77,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
aapsLogger.debug(LTag.CORE, "KeepAlive scheduled")
SystemClock.sleep(5000) // wait for app initialization
localAlertUtils.shortenSnoozeInterval()
localAlertUtils.presnoozeAlarms()
localAlertUtils.preSnoozeAlarms()
val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val i = Intent(context, KeepAliveReceiver::class.java)
val pi = PendingIntent.getBroadcast(context, 0, i, 0)

View file

@ -5,19 +5,21 @@ import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import javax.inject.Inject
import javax.inject.Singleton
import kotlin.math.min
/**
* Created by adrian on 17/12/17.
@ -31,48 +33,49 @@ class LocalAlertUtils @Inject constructor(
private val activePlugin: ActivePluginProvider,
private val profileFunction: ProfileFunction,
private val iobCobCalculatorPlugin: IobCobCalculatorPlugin,
private val smsCommunicatorPlugin: SmsCommunicatorPlugin,
private val config: Config,
private val nsUpload: NSUpload,
private val dateUtil: DateUtil
) {
fun missedReadingsThreshold(): Long {
return T.mins(sp.getInt(resourceHelper.gs(R.string.key_missed_bg_readings_threshold_minutes), Constants.DEFAULT_MISSED_BG_READINGS_THRESHOLD_MINUTES).toLong()).msecs()
private fun missedReadingsThreshold(): Long {
return T.mins(sp.getInt(R.string.key_missed_bg_readings_threshold_minutes, Constants.DEFAULT_MISSED_BG_READINGS_THRESHOLD_MINUTES).toLong()).msecs()
}
fun pumpUnreachableThreshold(): Long {
return T.mins(sp.getInt(resourceHelper.gs(R.string.key_pump_unreachable_threshold_minutes), Constants.DEFAULT_PUMP_UNREACHABLE_THRESHOLD_MINUTES).toLong()).msecs()
private fun pumpUnreachableThreshold(): Long {
return T.mins(sp.getInt(R.string.key_pump_unreachable_threshold_minutes, Constants.DEFAULT_PUMP_UNREACHABLE_THRESHOLD_MINUTES).toLong()).msecs()
}
fun checkPumpUnreachableAlarm(lastConnection: Long, isStatusOutdated: Boolean, isDisconnected: Boolean) {
val alarmTimeoutExpired = isAlarmTimeoutExpired(lastConnection, pumpUnreachableThreshold())
val nextAlarmOccurrenceReached = sp.getLong("nextPumpDisconnectedAlarm", 0L) < System.currentTimeMillis()
if (config.APS && sp.getBoolean(resourceHelper.gs(R.string.key_enable_pump_unreachable_alert), true)
&& isStatusOutdated && alarmTimeoutExpired && nextAlarmOccurrenceReached && !isDisconnected) {
aapsLogger.debug(LTag.CORE, "Generating pump unreachable alarm. lastConnection: " + dateUtil.dateAndTimeString(lastConnection) + " isStatusOutdated: " + isStatusOutdated)
val n = Notification(Notification.PUMP_UNREACHABLE, resourceHelper.gs(R.string.pump_unreachable), Notification.URGENT)
n.soundId = R.raw.alarm
sp.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold())
rxBus.send(EventNewNotification(n))
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
nsUpload.uploadError(n.text)
if (config.APS && isStatusOutdated && alarmTimeoutExpired && nextAlarmOccurrenceReached && !isDisconnected) {
if (sp.getBoolean(R.string.key_enable_pump_unreachable_alert, true)) {
aapsLogger.debug(LTag.CORE, "Generating pump unreachable alarm. lastConnection: " + dateUtil.dateAndTimeString(lastConnection) + " isStatusOutdated: " + isStatusOutdated)
sp.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold())
rxBus.send(EventNewNotification(Notification(Notification.PUMP_UNREACHABLE, resourceHelper.gs(R.string.pump_unreachable), Notification.URGENT).also { it.soundId = R.raw.alarm }))
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true))
nsUpload.uploadError(resourceHelper.gs(R.string.pump_unreachable))
}
if (sp.getBoolean(R.string.key_smscommunicator_report_pump_ureachable, true))
smsCommunicatorPlugin.sendNotificationToAllNumbers(resourceHelper.gs(R.string.pump_unreachable))
}
if (!isStatusOutdated && !alarmTimeoutExpired) rxBus.send(EventDismissNotification(Notification.PUMP_UNREACHABLE))
}
private fun isAlarmTimeoutExpired(lastConnection: Long, unreachableThreshold: Long): Boolean {
if (activePlugin.activePump.pumpDescription.hasCustomUnreachableAlertCheck) {
return activePlugin.activePump.isUnreachableAlertTimeoutExceeded(unreachableThreshold)
return if (activePlugin.activePump.pumpDescription.hasCustomUnreachableAlertCheck) {
activePlugin.activePump.isUnreachableAlertTimeoutExceeded(unreachableThreshold)
} else {
return lastConnection + pumpUnreachableThreshold() < System.currentTimeMillis()
lastConnection + pumpUnreachableThreshold() < System.currentTimeMillis()
}
}
/*Presnoozes the alarms with 5 minutes if no snooze exists.
/*Pre-snoozes the alarms with 5 minutes if no snooze exists.
* Call only at startup!
*/
fun presnoozeAlarms() {
fun preSnoozeAlarms() {
if (sp.getLong("nextMissedReadingsAlarm", 0L) < System.currentTimeMillis()) {
sp.putLong("nextMissedReadingsAlarm", System.currentTimeMillis() + 5 * 60 * 1000)
}
@ -83,10 +86,10 @@ class LocalAlertUtils @Inject constructor(
fun shortenSnoozeInterval() { //shortens alarm times in case of setting changes or future data
var nextMissedReadingsAlarm = sp.getLong("nextMissedReadingsAlarm", 0L)
nextMissedReadingsAlarm = Math.min(System.currentTimeMillis() + missedReadingsThreshold(), nextMissedReadingsAlarm)
nextMissedReadingsAlarm = min(System.currentTimeMillis() + missedReadingsThreshold(), nextMissedReadingsAlarm)
sp.putLong("nextMissedReadingsAlarm", nextMissedReadingsAlarm)
var nextPumpDisconnectedAlarm = sp.getLong("nextPumpDisconnectedAlarm", 0L)
nextPumpDisconnectedAlarm = Math.min(System.currentTimeMillis() + pumpUnreachableThreshold(), nextPumpDisconnectedAlarm)
nextPumpDisconnectedAlarm = min(System.currentTimeMillis() + pumpUnreachableThreshold(), nextPumpDisconnectedAlarm)
sp.putLong("nextPumpDisconnectedAlarm", nextPumpDisconnectedAlarm)
}
@ -104,7 +107,7 @@ class LocalAlertUtils @Inject constructor(
fun checkStaleBGAlert() {
val bgReading: BgReading? = iobCobCalculatorPlugin.lastBg()
if (sp.getBoolean(resourceHelper.gs(R.string.key_enable_missed_bg_readings_alert), false)
if (sp.getBoolean(R.string.key_enable_missed_bg_readings_alert, false)
&& bgReading != null && bgReading.date + missedReadingsThreshold() < System.currentTimeMillis() && sp.getLong("nextMissedReadingsAlarm", 0L) < System.currentTimeMillis()) {
val n = Notification(Notification.BG_READINGS_MISSED, resourceHelper.gs(R.string.missed_bg_readings), Notification.URGENT)
n.soundId = R.raw.alarm

View file

@ -6,6 +6,7 @@ import android.text.Spanned
import com.google.common.base.Joiner
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.data.DetailedBolusInfo
@ -20,6 +21,15 @@ import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.actions.ActionAlarm
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator
import info.nightscout.androidaps.plugins.general.automation.elements.InputDelta
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBg
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDelta
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTime
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.queue.Callback
@ -30,8 +40,10 @@ import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.extensions.formatColor
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.json.JSONException
import org.json.JSONObject
import java.text.DecimalFormat
import java.util.*
import javax.inject.Inject
import kotlin.math.abs
@ -43,13 +55,15 @@ class BolusWizard @Inject constructor(
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var sp: SP
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var context: Context
@Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var loopPlugin: LoopPlugin
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
@Inject lateinit var automationPlugin: AutomationPlugin
@Inject lateinit var dateUtil: DateUtil
@Inject lateinit var config: Config
init {
@ -72,7 +86,7 @@ class BolusWizard @Inject constructor(
private set
var insulinFromBolusIOB = 0.0
private set
var insulinFromBasalsIOB = 0.0
var insulinFromBasalIOB = 0.0
private set
var insulinFromCorrection = 0.0
private set
@ -104,7 +118,7 @@ class BolusWizard @Inject constructor(
var carbs: Int = 0
var cob: Double = 0.0
var bg: Double = 0.0
var correction: Double = 0.0
private var correction: Double = 0.0
private var percentageCorrection: Double = 0.0
private var useBg: Boolean = false
private var useCob: Boolean = false
@ -113,8 +127,9 @@ class BolusWizard @Inject constructor(
private var useSuperBolus: Boolean = false
private var useTT: Boolean = false
private var useTrend: Boolean = false
private var useAlarm = false
var notes: String = ""
var carbTime: Int = 0
private var carbTime: Int = 0
@JvmOverloads
fun doCalc(profile: Profile,
@ -132,6 +147,7 @@ class BolusWizard @Inject constructor(
useSuperBolus: Boolean,
useTT: Boolean,
useTrend: Boolean,
useAlarm: Boolean,
notes: String = "",
carbTime: Int = 0
): BolusWizard {
@ -151,6 +167,7 @@ class BolusWizard @Inject constructor(
this.useSuperBolus = useSuperBolus
this.useTT = useTT
this.useTrend = useTrend
this.useAlarm = useAlarm
this.notes = notes
this.carbTime = carbTime
@ -193,7 +210,7 @@ class BolusWizard @Inject constructor(
val basalIob = activePlugin.activeTreatments.lastCalculationTempBasals.round()
insulinFromBolusIOB = if (includeBolusIOB) -bolusIob.iob else 0.0
insulinFromBasalsIOB = if (includeBasalIOB) -basalIob.basaliob else 0.0
insulinFromBasalIOB = if (includeBasalIOB) -basalIob.basaliob else 0.0
// Insulin from correction
insulinFromCorrection = correction
@ -207,7 +224,7 @@ class BolusWizard @Inject constructor(
}
// Total
calculatedTotalInsulin = insulinFromBG + insulinFromTrend + insulinFromCarbs + insulinFromBolusIOB + insulinFromBasalsIOB + insulinFromCorrection + insulinFromSuperBolus + insulinFromCOB
calculatedTotalInsulin = insulinFromBG + insulinFromTrend + insulinFromCarbs + insulinFromBolusIOB + insulinFromBasalIOB + insulinFromCorrection + insulinFromSuperBolus + insulinFromCOB
// Percentage adjustment
totalBeforePercentageAdjustment = calculatedTotalInsulin
@ -229,6 +246,7 @@ class BolusWizard @Inject constructor(
return this
}
@Suppress("SpellCheckingInspection")
private fun nsJSON(): JSONObject {
val bolusCalcJSON = JSONObject()
try {
@ -239,9 +257,9 @@ class BolusWizard @Inject constructor(
bolusCalcJSON.put("targetBGHigh", targetBGHigh)
bolusCalcJSON.put("isf", sens)
bolusCalcJSON.put("ic", ic)
bolusCalcJSON.put("iob", -(insulinFromBolusIOB + insulinFromBasalsIOB))
bolusCalcJSON.put("iob", -(insulinFromBolusIOB + insulinFromBasalIOB))
bolusCalcJSON.put("bolusiob", insulinFromBolusIOB)
bolusCalcJSON.put("basaliob", insulinFromBasalsIOB)
bolusCalcJSON.put("basaliob", insulinFromBasalIOB)
bolusCalcJSON.put("bolusiobused", includeBolusIOB)
bolusCalcJSON.put("basaliobused", includeBasalIOB)
bolusCalcJSON.put("bg", bg)
@ -270,14 +288,14 @@ class BolusWizard @Inject constructor(
return bolusCalcJSON
}
private fun confirmMessageAfterConstraints(pump: PumpInterface): Spanned {
private fun confirmMessageAfterConstraints(advisor: Boolean): Spanned {
val actions: LinkedList<String> = LinkedList()
if (insulinAfterConstraints > 0) {
val pct = if (percentageCorrection != 100.0) " (" + percentageCorrection.toInt() + "%)" else ""
actions.add(resourceHelper.gs(R.string.bolus) + ": " + resourceHelper.gs(R.string.formatinsulinunits, insulinAfterConstraints).formatColor(resourceHelper, R.color.bolus) + pct)
}
if (carbs > 0) {
if (carbs > 0 && !advisor) {
var timeShift = ""
if (carbTime > 0) {
timeShift += " (+" + resourceHelper.gs(R.string.mins, carbTime) + ")"
@ -287,23 +305,24 @@ class BolusWizard @Inject constructor(
actions.add(resourceHelper.gs(R.string.carbs) + ": " + resourceHelper.gs(R.string.format_carbs, carbs).formatColor(resourceHelper, R.color.carbs) + timeShift)
}
if (insulinFromCOB > 0) {
actions.add(resourceHelper.gs(R.string.cobvsiob) + ": " + resourceHelper.gs(R.string.formatsignedinsulinunits, insulinFromBolusIOB + insulinFromBasalsIOB + insulinFromCOB + insulinFromBG).formatColor(resourceHelper, R.color.cobAlert))
actions.add(resourceHelper.gs(R.string.cobvsiob) + ": " + resourceHelper.gs(R.string.formatsignedinsulinunits, insulinFromBolusIOB + insulinFromBasalIOB + insulinFromCOB + insulinFromBG).formatColor(resourceHelper, R.color.cobAlert))
val absorptionRate = iobCobCalculatorPlugin.slowAbsorptionPercentage(60)
if (absorptionRate > .25)
actions.add(resourceHelper.gs(R.string.slowabsorptiondetected, resourceHelper.gc(R.color.cobAlert), (absorptionRate * 100).toInt()))
}
if (abs(insulinAfterConstraints - calculatedTotalInsulin) > pump.pumpDescription.pumpType.determineCorrectBolusStepSize(insulinAfterConstraints))
actions.add(resourceHelper.gs(R.string.bolusconstraintappliedwarn, calculatedTotalInsulin, insulinAfterConstraints).formatColor(resourceHelper, R.color.warning))
if (config.NSCLIENT)
if (abs(insulinAfterConstraints - calculatedTotalInsulin) > activePlugin.activePump.pumpDescription.pumpType.determineCorrectBolusStepSize(insulinAfterConstraints))
actions.add(resourceHelper.gs(R.string.bolusconstraintappliedwarn, calculatedTotalInsulin, insulinAfterConstraints).formatColor(resourceHelper, R.color.warning))
if (config.NSCLIENT && insulinAfterConstraints > 0)
actions.add(resourceHelper.gs(R.string.bolusrecordedonly).formatColor(resourceHelper, R.color.warning))
if (useAlarm && !advisor && carbs > 0 && carbTime > 0)
actions.add(resourceHelper.gs(R.string.alarminxmin, carbTime).formatColor(resourceHelper, R.color.info))
if (advisor)
actions.add(resourceHelper.gs(R.string.advisoralarm).formatColor(resourceHelper, R.color.info))
return HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions))
}
fun confirmAndExecute(context: Context) {
val profile = profileFunction.getProfile() ?: return
val pump = activePlugin.activePump
fun confirmAndExecute(ctx: Context) {
if (calculatedTotalInsulin > 0.0 || carbs > 0.0) {
if (accepted) {
aapsLogger.debug(LTag.UI, "guarding: already accepted")
@ -311,76 +330,174 @@ class BolusWizard @Inject constructor(
}
accepted = true
val confirmMessage = confirmMessageAfterConstraints(pump)
if (sp.getBoolean(R.string.key_usebolusadvisor, false) && Profile.toMgdl(bg, profile.units) > 180 && carbs > 0 && carbTime >= 0)
OKDialog.showYesNoCancel(ctx, resourceHelper.gs(R.string.bolusadvisor), resourceHelper.gs(R.string.bolusadvisormessage),
{ bolusAdvisorProcessing(ctx) },
{ commonProcessing(ctx) }
)
else
commonProcessing(ctx)
}
}
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.boluswizard), confirmMessage, Runnable {
if (insulinAfterConstraints > 0 || carbs > 0) {
if (useSuperBolus) {
aapsLogger.debug("USER ENTRY: SUPERBOLUS TBR")
if (loopPlugin.isEnabled(PluginType.LOOP)) {
loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000)
rxBus.send(EventRefreshOverview("WizardDialog"))
private fun bolusAdvisorProcessing(ctx: Context) {
val confirmMessage = confirmMessageAfterConstraints(advisor = true)
OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, {
DetailedBolusInfo().apply {
eventType = CareportalEvent.CORRECTIONBOLUS
insulin = insulinAfterConstraints
carbs = 0.0
context = ctx
glucose = bg
glucoseType = "Manual"
carbTime = 0
boluscalc = nsJSON()
source = Source.USER
notes = this@BolusWizard.notes
aapsLogger.debug("USER ENTRY: BOLUS ADVISOR insulin $insulinAfterConstraints")
if (insulin > 0) {
commandQueue.bolus(this, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(ctx, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.treatmentdeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
ctx.startActivity(i)
} else
scheduleEatReminder()
}
})
}
}
})
}
if (pump.pumpDescription.tempBasalStyle == PumpDescription.ABSOLUTE) {
commandQueue.tempBasalAbsolute(0.0, 120, true, profile, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(i)
}
}
})
} else {
private fun commonProcessing(ctx: Context) {
val profile = profileFunction.getProfile() ?: return
val pump = activePlugin.activePump
commandQueue.tempBasalPercent(0, 120, true, profile, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(i)
}
}
})
}
val confirmMessage = confirmMessageAfterConstraints(advisor = false)
OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, {
if (insulinAfterConstraints > 0 || carbs > 0) {
if (useSuperBolus) {
aapsLogger.debug("USER ENTRY: SUPERBOLUS TBR")
if (loopPlugin.isEnabled(PluginType.LOOP)) {
loopPlugin.superBolusTo(System.currentTimeMillis() + 2 * 60L * 60 * 1000)
rxBus.send(EventRefreshOverview("WizardDialog"))
}
val detailedBolusInfo = DetailedBolusInfo()
detailedBolusInfo.eventType = CareportalEvent.BOLUSWIZARD
detailedBolusInfo.insulin = insulinAfterConstraints
detailedBolusInfo.carbs = carbs.toDouble()
detailedBolusInfo.context = context
detailedBolusInfo.glucose = bg
detailedBolusInfo.glucoseType = "Manual"
detailedBolusInfo.carbTime = carbTime
detailedBolusInfo.boluscalc = nsJSON()
detailedBolusInfo.source = Source.USER
detailedBolusInfo.notes = notes
aapsLogger.debug("USER ENTRY: BOLUS insulin $insulinAfterConstraints carbs: $carbs")
if (detailedBolusInfo.insulin > 0 || pump.pumpDescription.storesCarbInfo) {
commandQueue.bolus(detailedBolusInfo, object : Callback() {
if (pump.pumpDescription.tempBasalStyle == PumpDescription.ABSOLUTE) {
commandQueue.tempBasalAbsolute(0.0, 120, true, profile, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(context, ErrorHelperActivity::class.java)
val i = Intent(ctx, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.treatmentdeliveryerror))
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(i)
ctx.startActivity(i)
}
}
})
} else {
activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
commandQueue.tempBasalPercent(0, 120, true, profile, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(ctx, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
ctx.startActivity(i)
}
}
})
}
}
})
DetailedBolusInfo().apply {
eventType = CareportalEvent.BOLUSWIZARD
insulin = insulinAfterConstraints
carbs = this@BolusWizard.carbs.toDouble()
context = ctx
glucose = bg
glucoseType = "Manual"
carbTime = this@BolusWizard.carbTime
boluscalc = nsJSON()
source = Source.USER
notes = this@BolusWizard.notes
aapsLogger.debug("USER ENTRY: BOLUS WIZARD insulin $insulinAfterConstraints carbs: $carbs")
if (insulin > 0 || pump.pumpDescription.storesCarbInfo) {
commandQueue.bolus(this, object : Callback() {
override fun run() {
if (!result.success) {
val i = Intent(ctx, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.treatmentdeliveryerror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
ctx.startActivity(i)
}
}
})
} else {
activePlugin.activeTreatments.addToHistoryTreatment(this, false)
}
}
if (useAlarm && carbs > 0 && carbTime > 0) {
scheduleReminder(dateUtil._now() + T.mins(carbTime.toLong()).msecs())
}
}
})
}
private fun scheduleEatReminder() {
val event = AutomationEvent(injector).apply {
title = resourceHelper.gs(R.string.bolusadvisor)
readOnly = true
systemAction = true
autoRemove = true
trigger = TriggerConnector(injector, TriggerConnector.Type.OR).apply {
// Bg under 180 mgdl and dropping by 15 mgdl
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
list.add(TriggerBg(injector, 180.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, -15.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, -8.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
})
// Bg under 160 mgdl and dropping by 9 mgdl
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
list.add(TriggerBg(injector, 160.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, -9.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, -5.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
})
// Bg under 145 mgdl and dropping
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
list.add(TriggerBg(injector, 145.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, 0.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
list.add(TriggerDelta(injector, InputDelta(injector, 0.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
})
}
actions.add(ActionAlarm(injector, resourceHelper.gs(R.string.time_to_eat)))
}
automationPlugin.addIfNotExists(event)
}
private fun scheduleReminder(time: Long) {
val event = AutomationEvent(injector).apply {
title = resourceHelper.gs(R.string.timetoeat)
readOnly = true
systemAction = true
autoRemove = true
trigger = TriggerConnector(injector, TriggerConnector.Type.AND).apply {
list.add(TriggerTime(injector, time))
}
actions.add(ActionAlarm(injector, resourceHelper.gs(R.string.timetoeat)))
}
automationPlugin.addIfNotExists(event)
}
}

View file

@ -117,7 +117,7 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec
trend = true
}
val percentage = sp.getDouble(R.string.key_boluswizard_percentage, 100.0)
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, "QuickWizard")
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, false, "QuickWizard")
}
fun buttonText(): String = safeGetString(storage, "buttonText", "")

View file

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M14.27,6C13.72,6.95 14.05,8.18 15,8.73c0.95,0.55 2.18,0.22 2.73,-0.73c0.55,-0.95 0.22,-2.18 -0.73,-2.73C16.05,4.72 14.82,5.05 14.27,6z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M15.84,10.41c0,0 -1.63,-0.94 -2.6,-1.5c-2.38,-1.38 -3.2,-4.44 -1.82,-6.82l-1.73,-1C8.1,3.83 8.6,7.21 10.66,9.4l-5.15,8.92l1.73,1l1.5,-2.6l1.73,1l-3,5.2l1.73,1l6.29,-10.89c1.14,1.55 1.33,3.69 0.31,5.46l1.73,1C19.13,16.74 18.81,12.91 15.84,10.41z"/>
<path
android:fillColor="@android:color/white"
android:pathData="M12.75,3.8c0.72,0.41 1.63,0.17 2.05,-0.55c0.41,-0.72 0.17,-1.63 -0.55,-2.05c-0.72,-0.41 -1.63,-0.17 -2.05,0.55C11.79,2.47 12.03,3.39 12.75,3.8z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M17,12c-2.76,0 -5,2.24 -5,5s2.24,5 5,5c2.76,0 5,-2.24 5,-5S19.76,12 17,12zM18.65,19.35l-2.15,-2.15V14h1v2.79l1.85,1.85L18.65,19.35zM18,3h-3.18C14.4,1.84 13.3,1 12,1S9.6,1.84 9.18,3H6C4.9,3 4,3.9 4,5v15c0,1.1 0.9,2 2,2h6.11c-0.59,-0.57 -1.07,-1.25 -1.42,-2H6V5h2v3h8V5h2v5.08c0.71,0.1 1.38,0.31 2,0.6V5C20,3.9 19.1,3 18,3zM12,5c-0.55,0 -1,-0.45 -1,-1c0,-0.55 0.45,-1 1,-1c0.55,0 1,0.45 1,1C13,4.55 12.55,5 12,5z"/>
</vector>

View file

@ -0,0 +1,4 @@
<vector android:height="28.8dp" android:viewportHeight="512"
android:viewportWidth="640" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M512.1,191l-8.2,14.3c-3,5.3 -9.4,7.5 -15.1,5.4 -11.8,-4.4 -22.6,-10.7 -32.1,-18.6 -4.6,-3.8 -5.8,-10.5 -2.8,-15.7l8.2,-14.3c-6.9,-8 -12.3,-17.3 -15.9,-27.4h-16.5c-6,0 -11.2,-4.3 -12.2,-10.3 -2,-12 -2.1,-24.6 0,-37.1 1,-6 6.2,-10.4 12.2,-10.4h16.5c3.6,-10.1 9,-19.4 15.9,-27.4l-8.2,-14.3c-3,-5.2 -1.9,-11.9 2.8,-15.7 9.5,-7.9 20.4,-14.2 32.1,-18.6 5.7,-2.1 12.1,0.1 15.1,5.4l8.2,14.3c10.5,-1.9 21.2,-1.9 31.7,0L552,6.3c3,-5.3 9.4,-7.5 15.1,-5.4 11.8,4.4 22.6,10.7 32.1,18.6 4.6,3.8 5.8,10.5 2.8,15.7l-8.2,14.3c6.9,8 12.3,17.3 15.9,27.4h16.5c6,0 11.2,4.3 12.2,10.3 2,12 2.1,24.6 0,37.1 -1,6 -6.2,10.4 -12.2,10.4h-16.5c-3.6,10.1 -9,19.4 -15.9,27.4l8.2,14.3c3,5.2 1.9,11.9 -2.8,15.7 -9.5,7.9 -20.4,14.2 -32.1,18.6 -5.7,2.1 -12.1,-0.1 -15.1,-5.4l-8.2,-14.3c-10.4,1.9 -21.2,1.9 -31.7,0zM501.6,132.2c38.5,29.6 82.4,-14.3 52.8,-52.8 -38.5,-29.7 -82.4,14.3 -52.8,52.8zM386.3,286.1l33.7,16.8c10.1,5.8 14.5,18.1 10.5,29.1 -8.9,24.2 -26.4,46.4 -42.6,65.8 -7.4,8.9 -20.2,11.1 -30.3,5.3l-29.1,-16.8c-16,13.7 -34.6,24.6 -54.9,31.7v33.6c0,11.6 -8.3,21.6 -19.7,23.6 -24.6,4.2 -50.4,4.4 -75.9,0 -11.5,-2 -20,-11.9 -20,-23.6L158,418c-20.3,-7.2 -38.9,-18 -54.9,-31.7L74,403c-10,5.8 -22.9,3.6 -30.3,-5.3 -16.2,-19.4 -33.3,-41.6 -42.2,-65.7 -4,-10.9 0.4,-23.2 10.5,-29.1l33.3,-16.8c-3.9,-20.9 -3.9,-42.4 0,-63.4L12,205.8c-10.1,-5.8 -14.6,-18.1 -10.5,-29 8.9,-24.2 26,-46.4 42.2,-65.8 7.4,-8.9 20.2,-11.1 30.3,-5.3l29.1,16.8c16,-13.7 34.6,-24.6 54.9,-31.7L158,57.1c0,-11.5 8.2,-21.5 19.6,-23.5 24.6,-4.2 50.5,-4.4 76,-0.1 11.5,2 20,11.9 20,23.6v33.6c20.3,7.2 38.9,18 54.9,31.7l29.1,-16.8c10,-5.8 22.9,-3.6 30.3,5.3 16.2,19.4 33.2,41.6 42.1,65.8 4,10.9 0.1,23.2 -10,29.1l-33.7,16.8c3.9,21 3.9,42.5 0,63.5zM268.7,307.2c59.2,-77 -28.7,-164.9 -105.7,-105.7 -59.2,77 28.7,164.9 105.7,105.7zM512.1,489.9l-8.2,14.3c-3,5.3 -9.4,7.5 -15.1,5.4 -11.8,-4.4 -22.6,-10.7 -32.1,-18.6 -4.6,-3.8 -5.8,-10.5 -2.8,-15.7l8.2,-14.3c-6.9,-8 -12.3,-17.3 -15.9,-27.4h-16.5c-6,0 -11.2,-4.3 -12.2,-10.3 -2,-12 -2.1,-24.6 0,-37.1 1,-6 6.2,-10.4 12.2,-10.4h16.5c3.6,-10.1 9,-19.4 15.9,-27.4l-8.2,-14.3c-3,-5.2 -1.9,-11.9 2.8,-15.7 9.5,-7.9 20.4,-14.2 32.1,-18.6 5.7,-2.1 12.1,0.1 15.1,5.4l8.2,14.3c10.5,-1.9 21.2,-1.9 31.7,0l8.2,-14.3c3,-5.3 9.4,-7.5 15.1,-5.4 11.8,4.4 22.6,10.7 32.1,18.6 4.6,3.8 5.8,10.5 2.8,15.7l-8.2,14.3c6.9,8 12.3,17.3 15.9,27.4h16.5c6,0 11.2,4.3 12.2,10.3 2,12 2.1,24.6 0,37.1 -1,6 -6.2,10.4 -12.2,10.4h-16.5c-3.6,10.1 -9,19.4 -15.9,27.4l8.2,14.3c3,5.2 1.9,11.9 -2.8,15.7 -9.5,7.9 -20.4,14.2 -32.1,18.6 -5.7,2.1 -12.1,-0.1 -15.1,-5.4l-8.2,-14.3c-10.4,1.9 -21.2,1.9 -31.7,0zM501.6,431c38.5,29.6 82.4,-14.3 52.8,-52.8 -38.5,-29.6 -82.4,14.3 -52.8,52.8z"/>
</vector>

View file

@ -0,0 +1,351 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="128dp"
android:height="128dp"
android:viewportWidth="128"
android:viewportHeight="128">
<path
android:pathData="M113.898,66.344c-7.93,-26.481 -5.677,-41.886 -40.369,-41.247l-65.537,0c-0.867,0 -1.571,0.698 -1.571,1.557l0,74.712c0,0.859 0.704,1.556 1.571,1.556c36.066,-0.023 75.9,-0.798 107.146,-0.503c-0.418,-12.709 1.843,-25.782 -1.24,-36.075Z"
android:fillColor="#464646"/>
<path
android:fillColor="#FF000000"
android:pathData="M114.573,100.359h1.097v1.941h-1.097z"
android:fillAlpha="0.53"/>
<path
android:pathData="M70.056,25.097h28.828v3.52h-28.828z"
android:fillColor="#464646"/>
<path
android:pathData="M102.018,27.166c-0.461,-1.487 -2.043,-2.32 -3.53,-1.859l-5.39,1.671c-1.487,0.461 -2.32,2.043 -1.859,3.53l10.656,34.366c0.461,1.487 2.043,2.32 3.53,1.859l5.39,-1.671c1.487,-0.461 2.32,-2.043 1.859,-3.531l-10.656,-34.365Z"
android:fillColor="#464646"/>
<path
android:pathData="M112.737,64.061l-1.788,-7.113l1.84,0.672l1.251,4.979l-1.303,1.462Z"
android:fillColor="#464646"/>
<path
android:pathData="M107.177,44.068l-2.247,-7.017l2.055,0.502l1.573,4.912l-1.381,1.603Z"
android:fillColor="#464646"/>
<path
android:fillColor="#FF000000"
android:pathData="M102.602,30.807l0.374,-0.113l11.273,37.448l-0.374,0.113l-11.273,-37.448Z"/>
<path
android:fillColor="#FF000000"
android:pathData="M6.421,29.673h82.127v0.326h-82.127z"/>
<path
android:fillColor="#FF000000"
android:pathData="M87.862,29.589l0.834,0.144c10.443,6.398 19.498,15.777 21.21,28.643c-2.181,-13.177 -11.537,-22.238 -22.044,-28.787Z"/>
<path
android:pathData="M6.365,25.42l-2.055,-0c-1.973,-0 -3.575,1.602 -3.575,3.575l-0,71.14c-0,1.538 1.249,2.787 2.787,2.787l2.843,0l0,-77.502Z"
android:fillColor="#464646"/>
<path
android:fillColor="#FF000000"
android:pathData="M6.365,25.768h0.391v76.691h-0.391z"/>
<path
android:pathData="M6.504,30.076h0.978v60.878h-0.978z"
android:fillColor="#6b6b6b"
android:fillAlpha="0.46"/>
<path
android:pathData="M127.265,79.943c0,-1.717 -1.433,-3.112 -3.198,-3.112l-9.596,0l0.238,25.644l9.358,-0.695c1.765,0 3.198,-1.394 3.198,-3.111l0,-18.726Z"
android:fillColor="#464646"/>
<path
android:fillColor="#FF000000"
android:pathData="M115.924,77.208c-0,-0.175 -0.142,-0.317 -0.317,-0.317l-0.633,0c-0.174,0 -0.316,0.142 -0.316,0.317l-0,24.874c-0,0.174 0.142,0.316 0.316,0.316l0.633,0c0.175,0 0.317,-0.142 0.317,-0.316l-0,-24.874Z"/>
<path
android:pathData="M126.595,78.424c-0,-0.355 -0.288,-0.643 -0.643,-0.643l-7.814,0c-0.355,0 -0.643,0.288 -0.643,0.643l0,1.285c0,0.354 0.288,0.642 0.643,0.642l7.814,0c0.355,0 0.643,-0.288 0.643,-0.642l-0,-1.285Z"
android:fillColor="#545050"/>
<path
android:pathData="M127.265,85.924c0,-0.486 -0.394,-0.88 -0.88,-0.88l-8.24,0c-0.486,0 -0.88,0.394 -0.88,0.88l-0,1.76c-0,0.486 0.394,0.88 0.88,0.88l8.24,-0c0.486,-0 0.88,-0.394 0.88,-0.88l0,-1.76Z"
android:fillColor="#545050"/>
<path
android:pathData="M127.042,94.598c-0,-0.432 -0.351,-0.783 -0.783,-0.783l-8.492,0c-0.431,0 -0.782,0.351 -0.782,0.783l0,1.564c0,0.432 0.351,0.782 0.782,0.782l8.492,0c0.432,0 0.783,-0.35 0.783,-0.782l-0,-1.564Z"
android:fillColor="#545050"/>
<path
android:fillColor="#FF000000"
android:pathData="M106.361,63.068c-5.795,-17.929 -8.872,-28.147 -28.485,-28.666c-19.345,-0.512 -38.936,-0.433 -58.626,-0.23c-5.576,-0 -10.103,4.304 -10.103,9.606c-0.416,11.818 -0.448,23.636 0.057,35.454c0.174,8.616 4.733,14.667 15.405,14.733c22.929,0.142 47.889,-0.14 71.767,0.043c10.83,0.083 15.793,-3.823 13.55,-14.372l-3.565,-16.568Z"/>
<path
android:pathData="M105.082,64.63c-5.404,-16.658 -6.593,-28.412 -27.702,-28.957c-18.682,-0.426 -37.855,-0.44 -56.759,-0.249c-5.353,-0 -9.7,4.037 -9.7,9.009c-0.474,11.246 -0.651,22.323 0,33.57c0.536,9.24 4.552,14.212 15.509,14.168l65.81,-0.166c13.051,0.416 18.198,-0.758 15.926,-13.834l-3.084,-13.541Z"
android:fillColor="#cacaca"/>
<path
android:pathData="M101.857,63.805c-5.05,-14.655 -6.161,-24.996 -25.887,-25.475c-17.458,-0.374 -35.376,-0.387 -53.041,-0.219c-5.003,-0 -9.065,3.551 -9.065,7.925l-0.171,29.595c-0.102,7.797 3.799,12.956 14.491,12.69l61.672,-0.434c12.197,0.367 17.006,-0.666 14.884,-12.17l-2.883,-11.912Z"
android:fillColor="#3c3c3c"/>
<path
android:pathData="M38.884,46.406l0.031,-0.137c0.084,-0.007 0.149,-0.031 0.196,-0.072c0.048,-0.041 0.081,-0.098 0.101,-0.17c0.019,-0.073 0.029,-0.168 0.029,-0.287c-0,-0.072 -0.003,-0.151 -0.009,-0.237l-0.019,-0.359l-1.225,0l-0.153,0.273c-0.073,0.128 -0.126,0.238 -0.159,0.33c-0.034,0.092 -0.05,0.173 -0.05,0.244c-0,0.156 0.093,0.248 0.281,0.278l-0.031,0.137l-1.139,-0l0.031,-0.137c0.057,-0.007 0.112,-0.03 0.163,-0.068c0.051,-0.038 0.105,-0.096 0.163,-0.173c0.057,-0.077 0.138,-0.204 0.242,-0.383l1.785,-3.085l0.421,-0l0.2,3.105c0.009,0.146 0.026,0.261 0.05,0.344c0.024,0.082 0.057,0.144 0.099,0.184c0.042,0.039 0.103,0.065 0.182,0.076l-0.03,0.137l-1.159,-0ZM38.113,44.902l1.089,-0l-0.048,-0.897c-0.005,-0.122 -0.01,-0.276 -0.013,-0.459c-0.004,-0.184 -0.006,-0.317 -0.006,-0.399l-0.031,0l-0.991,1.755Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M43.44,42.702l-0.167,0.754l-0.267,0c-0.015,-0.228 -0.065,-0.393 -0.149,-0.494c-0.085,-0.101 -0.221,-0.152 -0.408,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.137,0.092 -0.267,0.225 -0.39,0.398c-0.122,0.174 -0.229,0.377 -0.32,0.61c-0.091,0.233 -0.161,0.471 -0.209,0.713c-0.048,0.243 -0.072,0.461 -0.072,0.656c-0,0.303 0.049,0.525 0.149,0.667c0.099,0.142 0.254,0.213 0.466,0.213c0.139,0 0.261,-0.021 0.365,-0.063c0.104,-0.041 0.201,-0.112 0.292,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.268,0l-0.17,0.791c-0.19,0.052 -0.372,0.089 -0.549,0.112c-0.176,0.022 -0.357,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.587,-0.143c-0.162,-0.096 -0.284,-0.234 -0.365,-0.415c-0.082,-0.181 -0.123,-0.399 -0.123,-0.653c0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.058,-0.326 0.106,-0.51c0.061,-0.228 0.138,-0.436 0.231,-0.624c0.1,-0.198 0.214,-0.374 0.343,-0.526c0.12,-0.141 0.251,-0.259 0.392,-0.354c0.13,-0.087 0.27,-0.155 0.421,-0.203c0.15,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.325,0.01 0.469,0.03c0.144,0.021 0.304,0.058 0.48,0.112Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M46.434,42.702l-0.167,0.754l-0.267,0c-0.015,-0.228 -0.065,-0.393 -0.149,-0.494c-0.085,-0.101 -0.221,-0.152 -0.408,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.138,0.092 -0.268,0.225 -0.39,0.398c-0.123,0.174 -0.23,0.377 -0.321,0.61c-0.091,0.233 -0.16,0.471 -0.208,0.713c-0.049,0.243 -0.073,0.461 -0.073,0.656c0,0.303 0.05,0.525 0.149,0.667c0.099,0.142 0.255,0.213 0.467,0.213c0.139,0 0.26,-0.021 0.364,-0.063c0.104,-0.041 0.202,-0.112 0.293,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.267,0l-0.17,0.791c-0.189,0.052 -0.372,0.089 -0.548,0.112c-0.177,0.022 -0.358,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.588,-0.143c-0.161,-0.096 -0.283,-0.234 -0.365,-0.415c-0.081,-0.181 -0.122,-0.399 -0.122,-0.653c-0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.057,-0.326 0.106,-0.51c0.061,-0.228 0.138,-0.436 0.231,-0.624c0.1,-0.198 0.214,-0.374 0.342,-0.526c0.121,-0.141 0.252,-0.259 0.393,-0.354c0.13,-0.087 0.27,-0.155 0.42,-0.203c0.151,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.326,0.01 0.47,0.03c0.143,0.021 0.304,0.058 0.48,0.112Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M46.938,42.741l0.031,-0.137l1.119,0l-0.031,0.137c-0.07,0.015 -0.121,0.031 -0.151,0.05c-0.031,0.018 -0.059,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.348,1.56c-0.024,0.105 -0.043,0.206 -0.057,0.302c-0.014,0.095 -0.021,0.194 -0.021,0.296c-0,0.203 0.049,0.356 0.149,0.46c0.099,0.104 0.249,0.156 0.45,0.156c0.189,-0 0.347,-0.039 0.473,-0.117c0.126,-0.078 0.227,-0.19 0.304,-0.337c0.076,-0.147 0.14,-0.337 0.192,-0.571l0.387,-1.752c0.018,-0.083 0.033,-0.165 0.044,-0.245c0.011,-0.079 0.017,-0.147 0.017,-0.203c0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.044,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l1.058,0l-0.031,0.137c-0.068,0.015 -0.119,0.032 -0.151,0.051c-0.033,0.02 -0.062,0.048 -0.087,0.085c-0.025,0.037 -0.049,0.096 -0.074,0.176c-0.024,0.08 -0.055,0.207 -0.094,0.381l-0.362,1.668c-0.073,0.333 -0.175,0.597 -0.307,0.794c-0.131,0.197 -0.296,0.339 -0.494,0.426c-0.198,0.087 -0.439,0.131 -0.725,0.131c-0.322,-0 -0.568,-0.078 -0.738,-0.233c-0.171,-0.155 -0.257,-0.381 -0.257,-0.678c0,-0.104 0.011,-0.223 0.033,-0.358c0.021,-0.134 0.051,-0.286 0.09,-0.455l0.29,-1.298c0.022,-0.098 0.038,-0.186 0.048,-0.263c0.011,-0.077 0.016,-0.139 0.016,-0.185c-0,-0.083 -0.022,-0.143 -0.064,-0.18c-0.043,-0.036 -0.114,-0.057 -0.212,-0.062Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M51.321,45.155l-1.217,0l0.092,-0.431l1.217,-0l-0.092,0.431Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M54.936,42.702l-0.167,0.754l-0.268,0c-0.014,-0.228 -0.064,-0.393 -0.149,-0.494c-0.084,-0.101 -0.22,-0.152 -0.407,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.138,0.092 -0.268,0.225 -0.39,0.398c-0.123,0.174 -0.23,0.377 -0.321,0.61c-0.091,0.233 -0.16,0.471 -0.208,0.713c-0.049,0.243 -0.073,0.461 -0.073,0.656c0,0.303 0.05,0.525 0.149,0.667c0.099,0.142 0.255,0.213 0.467,0.213c0.139,0 0.26,-0.021 0.364,-0.063c0.104,-0.041 0.202,-0.112 0.293,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.267,0l-0.17,0.791c-0.189,0.052 -0.372,0.089 -0.548,0.112c-0.177,0.022 -0.358,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.588,-0.143c-0.161,-0.096 -0.283,-0.234 -0.365,-0.415c-0.081,-0.181 -0.122,-0.399 -0.122,-0.653c-0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.057,-0.326 0.105,-0.51c0.062,-0.228 0.139,-0.436 0.232,-0.624c0.1,-0.198 0.214,-0.374 0.342,-0.526c0.121,-0.141 0.252,-0.259 0.393,-0.354c0.13,-0.087 0.27,-0.155 0.42,-0.203c0.151,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.326,0.01 0.47,0.03c0.143,0.021 0.304,0.058 0.48,0.112Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M57.754,45.595c-0.024,0.11 -0.04,0.197 -0.047,0.261c-0.008,0.064 -0.011,0.122 -0.011,0.174c-0,0.083 0.021,0.142 0.062,0.176c0.042,0.035 0.112,0.056 0.211,0.063l-0.031,0.137l-1.114,-0l0.031,-0.137c0.07,-0.011 0.123,-0.029 0.158,-0.054c0.036,-0.025 0.065,-0.06 0.089,-0.105c0.025,-0.044 0.047,-0.098 0.067,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.229,-1.033l-1.496,-0l-0.231,1.052c-0.015,0.069 -0.026,0.125 -0.035,0.169c-0.008,0.043 -0.014,0.086 -0.018,0.128c-0.004,0.042 -0.005,0.087 -0.005,0.138c-0,0.079 0.018,0.137 0.055,0.172c0.037,0.036 0.11,0.058 0.217,0.067l-0.03,0.137l-1.114,-0l0.03,-0.137c0.071,-0.011 0.124,-0.029 0.159,-0.054c0.036,-0.025 0.065,-0.06 0.089,-0.105c0.024,-0.044 0.047,-0.098 0.067,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.473,-2.145c0.017,-0.076 0.032,-0.157 0.044,-0.243c0.012,-0.087 0.018,-0.155 0.018,-0.205c-0,-0.087 -0.023,-0.148 -0.067,-0.182c-0.045,-0.035 -0.113,-0.055 -0.206,-0.06l0.03,-0.137l1.114,0l-0.03,0.137c-0.071,0.015 -0.121,0.031 -0.152,0.05c-0.031,0.018 -0.058,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.189,0.852l1.495,0l0.19,-0.855c0.016,-0.076 0.031,-0.157 0.043,-0.243c0.012,-0.087 0.018,-0.155 0.018,-0.205c-0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.045,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l1.114,0l-0.031,0.137c-0.063,0.015 -0.108,0.029 -0.134,0.042c-0.026,0.013 -0.049,0.03 -0.071,0.052c-0.021,0.023 -0.042,0.055 -0.061,0.097c-0.02,0.041 -0.04,0.103 -0.063,0.183c-0.022,0.081 -0.048,0.187 -0.078,0.319l-0.476,2.161Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M61.94,42.604l-0.193,0.855l-0.267,0c-0.005,-0.133 -0.016,-0.238 -0.03,-0.313c-0.015,-0.075 -0.032,-0.131 -0.051,-0.167c-0.018,-0.036 -0.04,-0.063 -0.064,-0.081c-0.024,-0.018 -0.054,-0.03 -0.09,-0.037c-0.036,-0.008 -0.088,-0.012 -0.155,-0.012l-0.908,0l-0.317,1.46l0.532,-0c0.082,-0 0.15,-0.012 0.205,-0.034c0.054,-0.022 0.105,-0.061 0.151,-0.115c0.047,-0.055 0.099,-0.139 0.156,-0.252l0.254,-0l-0.251,1.069l-0.237,-0c0,-0.102 -0.003,-0.177 -0.011,-0.226c-0.007,-0.048 -0.017,-0.084 -0.029,-0.107c-0.012,-0.023 -0.027,-0.041 -0.046,-0.054c-0.019,-0.013 -0.043,-0.022 -0.072,-0.028c-0.03,-0.006 -0.079,-0.008 -0.148,-0.008l-0.557,-0l-0.356,1.606l0.824,0c0.082,0 0.151,-0.006 0.207,-0.018c0.057,-0.012 0.109,-0.033 0.155,-0.062c0.046,-0.03 0.091,-0.068 0.134,-0.116c0.042,-0.047 0.086,-0.108 0.132,-0.182c0.045,-0.074 0.107,-0.188 0.185,-0.34l0.27,0l-0.245,0.964l-2.47,-0l0.031,-0.137c0.07,-0.011 0.123,-0.029 0.158,-0.054c0.036,-0.025 0.065,-0.06 0.09,-0.105c0.024,-0.044 0.046,-0.098 0.066,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.474,-2.145c0.04,-0.185 0.061,-0.335 0.061,-0.448c-0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.044,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l2.562,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M63.098,44.323l0.092,-0c0.078,-0 0.149,-0.013 0.213,-0.039c0.064,-0.026 0.139,-0.074 0.224,-0.142c0.086,-0.069 0.222,-0.195 0.408,-0.379c0.187,-0.184 0.32,-0.324 0.398,-0.419c0.079,-0.096 0.137,-0.179 0.173,-0.248c0.036,-0.07 0.054,-0.133 0.054,-0.191c0,-0.046 -0.018,-0.084 -0.055,-0.113c-0.037,-0.028 -0.09,-0.046 -0.159,-0.051l0.031,-0.137l1.194,0l-0.03,0.137c-0.075,0.011 -0.159,0.049 -0.252,0.115c-0.094,0.066 -0.238,0.195 -0.431,0.386l-1.08,1.053l0.593,1.425c0.05,0.121 0.091,0.21 0.121,0.266c0.031,0.057 0.064,0.104 0.099,0.142c0.035,0.039 0.075,0.069 0.12,0.092c0.044,0.024 0.098,0.04 0.161,0.049l-0.03,0.137l-1.075,-0l0.03,-0.137c0.101,-0.009 0.151,-0.054 0.151,-0.134c-0,-0.024 -0.003,-0.049 -0.007,-0.075c-0.005,-0.026 -0.015,-0.064 -0.031,-0.114c-0.016,-0.05 -0.037,-0.11 -0.065,-0.181l-0.362,-0.886c-0.043,-0.105 -0.08,-0.18 -0.112,-0.222c-0.031,-0.043 -0.065,-0.073 -0.1,-0.089c-0.035,-0.017 -0.09,-0.025 -0.164,-0.025l-0.156,-0l-0.231,1.052c-0.024,0.112 -0.04,0.199 -0.048,0.263c-0.007,0.064 -0.011,0.121 -0.011,0.172c0,0.083 0.021,0.142 0.063,0.176c0.042,0.035 0.112,0.056 0.21,0.063l-0.031,0.137l-1.113,-0l0.03,-0.137c0.071,-0.011 0.124,-0.029 0.159,-0.054c0.035,-0.025 0.065,-0.06 0.089,-0.105c0.024,-0.044 0.046,-0.098 0.067,-0.163c0.02,-0.064 0.051,-0.188 0.092,-0.371l0.473,-2.145c0.019,-0.085 0.034,-0.167 0.045,-0.246c0.011,-0.079 0.016,-0.146 0.016,-0.202c0,-0.087 -0.022,-0.148 -0.066,-0.182c-0.045,-0.035 -0.114,-0.055 -0.206,-0.06l0.03,-0.137l1.114,0l-0.031,0.137c-0.07,0.015 -0.121,0.031 -0.151,0.05c-0.031,0.018 -0.059,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.198,0.889Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M67.283,45.363c-0.003,0.023 -0.004,0.044 -0.005,0.064c-0.001,0.021 -0.002,0.041 -0.002,0.062c0,0.105 0.014,0.195 0.043,0.269c0.028,0.074 0.068,0.134 0.121,0.18c0.052,0.047 0.115,0.08 0.189,0.101c0.074,0.021 0.157,0.032 0.249,0.032c0.092,-0 0.179,-0.013 0.261,-0.039c0.083,-0.025 0.156,-0.063 0.218,-0.114c0.063,-0.052 0.113,-0.115 0.15,-0.191c0.037,-0.075 0.056,-0.163 0.056,-0.262c-0,-0.063 -0.009,-0.121 -0.026,-0.173c-0.017,-0.053 -0.041,-0.101 -0.071,-0.145c-0.03,-0.044 -0.066,-0.085 -0.107,-0.122c-0.042,-0.037 -0.087,-0.072 -0.135,-0.105c-0.049,-0.033 -0.1,-0.065 -0.154,-0.095c-0.054,-0.03 -0.109,-0.06 -0.164,-0.091c-0.059,-0.032 -0.117,-0.064 -0.175,-0.097c-0.058,-0.034 -0.114,-0.07 -0.167,-0.108c-0.053,-0.038 -0.102,-0.079 -0.147,-0.123c-0.046,-0.044 -0.085,-0.093 -0.118,-0.147c-0.033,-0.054 -0.059,-0.113 -0.078,-0.178c-0.019,-0.065 -0.028,-0.137 -0.028,-0.216c-0,-0.098 0.012,-0.19 0.037,-0.275c0.025,-0.085 0.06,-0.163 0.105,-0.234c0.045,-0.071 0.099,-0.134 0.162,-0.19c0.063,-0.056 0.131,-0.103 0.206,-0.141c0.075,-0.039 0.155,-0.068 0.239,-0.088c0.085,-0.02 0.172,-0.03 0.262,-0.03c0.04,0 0.084,0.003 0.13,0.008c0.047,0.005 0.093,0.013 0.14,0.023c0.046,0.01 0.09,0.022 0.133,0.037c0.042,0.014 0.079,0.031 0.112,0.049c0.032,0.019 0.058,0.039 0.078,0.061c0.019,0.023 0.029,0.046 0.029,0.071c-0,0.027 -0.001,0.061 -0.001,0.101c-0.001,0.041 -0.003,0.087 -0.004,0.138c-0.001,0.052 -0.003,0.108 -0.006,0.169c-0.003,0.06 -0.006,0.125 -0.01,0.193l-0.141,-0.007c0.003,-0.034 0.005,-0.066 0.005,-0.097c-0,-0.091 -0.014,-0.172 -0.041,-0.242c-0.028,-0.071 -0.066,-0.129 -0.116,-0.176c-0.05,-0.047 -0.11,-0.082 -0.18,-0.106c-0.07,-0.023 -0.148,-0.035 -0.233,-0.035c-0.085,-0 -0.165,0.014 -0.239,0.042c-0.074,0.029 -0.137,0.068 -0.191,0.119c-0.054,0.05 -0.096,0.11 -0.127,0.18c-0.031,0.07 -0.046,0.146 -0.046,0.23c0,0.067 0.009,0.129 0.027,0.184c0.017,0.055 0.042,0.106 0.073,0.153c0.031,0.046 0.068,0.088 0.11,0.126c0.043,0.038 0.09,0.074 0.14,0.108c0.05,0.034 0.103,0.066 0.158,0.097c0.056,0.031 0.112,0.061 0.169,0.092c0.058,0.031 0.117,0.062 0.175,0.095c0.058,0.032 0.113,0.067 0.166,0.103c0.053,0.037 0.102,0.077 0.147,0.12c0.045,0.043 0.084,0.091 0.117,0.143c0.033,0.053 0.059,0.111 0.078,0.174c0.019,0.063 0.028,0.133 0.028,0.21c0,0.127 -0.017,0.24 -0.052,0.338c-0.035,0.099 -0.081,0.184 -0.14,0.257c-0.058,0.073 -0.125,0.135 -0.201,0.185c-0.076,0.05 -0.154,0.09 -0.236,0.121c-0.082,0.031 -0.163,0.053 -0.245,0.066c-0.082,0.014 -0.157,0.02 -0.227,0.02c-0.092,0 -0.178,-0.006 -0.259,-0.019c-0.081,-0.012 -0.152,-0.029 -0.212,-0.049c-0.061,-0.02 -0.109,-0.044 -0.144,-0.07c-0.035,-0.027 -0.052,-0.054 -0.052,-0.082c0,-0.062 0.002,-0.151 0.006,-0.267c0.004,-0.116 0.011,-0.254 0.021,-0.414l0.14,0.007Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M68.953,44.325c0.104,-0.032 0.192,-0.057 0.266,-0.077c0.073,-0.019 0.134,-0.035 0.184,-0.046c0.05,-0.011 0.089,-0.019 0.117,-0.023c0.028,-0.004 0.049,-0.006 0.063,-0.006c0.024,-0 0.045,0.003 0.066,0.01c0.02,0.007 0.038,0.019 0.053,0.036c0.016,0.017 0.028,0.039 0.036,0.067c0.008,0.029 0.012,0.064 0.012,0.105c0,0.014 -0,0.042 -0.002,0.083c-0.001,0.04 -0.004,0.097 -0.007,0.169c-0.004,0.072 -0.009,0.16 -0.015,0.264c-0.006,0.105 -0.014,0.228 -0.023,0.369l0.017,0.001c0.072,-0.18 0.15,-0.339 0.234,-0.478c0.084,-0.139 0.17,-0.256 0.257,-0.35c0.086,-0.095 0.173,-0.167 0.259,-0.216c0.087,-0.048 0.169,-0.073 0.247,-0.073c0.063,0 0.119,0.012 0.167,0.036c0.048,0.024 0.09,0.055 0.126,0.095c0.036,0.039 0.066,0.084 0.09,0.136c0.024,0.051 0.043,0.105 0.058,0.161c0.015,0.057 0.026,0.114 0.032,0.171c0.007,0.058 0.01,0.111 0.01,0.162c-0,0.136 -0.014,0.264 -0.042,0.382c-0.028,0.119 -0.066,0.228 -0.114,0.327c-0.048,0.099 -0.105,0.187 -0.171,0.265c-0.066,0.078 -0.137,0.144 -0.214,0.197c-0.077,0.054 -0.157,0.094 -0.241,0.123c-0.084,0.028 -0.168,0.042 -0.253,0.042c-0.09,0 -0.177,-0.016 -0.263,-0.048c-0.085,-0.033 -0.165,-0.087 -0.241,-0.162c-0.01,0.233 -0.02,0.474 -0.03,0.722c-0.01,0.248 -0.016,0.508 -0.017,0.778l-0.292,0.033l-0.03,-0.001c0.014,-0.174 0.027,-0.356 0.039,-0.547c0.012,-0.191 0.024,-0.382 0.034,-0.574c0.01,-0.192 0.019,-0.382 0.028,-0.568c0.008,-0.186 0.015,-0.36 0.021,-0.524c0.005,-0.163 0.009,-0.312 0.013,-0.445c0.003,-0.133 0.005,-0.243 0.005,-0.33c-0,-0.036 -0.002,-0.067 -0.006,-0.093c-0.004,-0.026 -0.011,-0.049 -0.022,-0.066c-0.01,-0.018 -0.026,-0.031 -0.046,-0.04c-0.021,-0.009 -0.048,-0.013 -0.081,-0.013c-0.034,-0 -0.076,0.004 -0.125,0.011c-0.049,0.007 -0.109,0.02 -0.178,0.038l-0.021,-0.103ZM69.674,45.895c0.079,0.067 0.157,0.116 0.236,0.148c0.078,0.031 0.157,0.047 0.236,0.047c0.104,0 0.2,-0.022 0.287,-0.066c0.088,-0.044 0.164,-0.11 0.227,-0.197c0.064,-0.087 0.114,-0.195 0.149,-0.324c0.036,-0.128 0.054,-0.277 0.054,-0.447c-0,-0.063 -0.005,-0.128 -0.015,-0.195c-0.009,-0.067 -0.025,-0.128 -0.046,-0.182c-0.02,-0.054 -0.048,-0.099 -0.082,-0.134c-0.034,-0.034 -0.075,-0.052 -0.123,-0.052c-0.057,0 -0.113,0.015 -0.168,0.044c-0.056,0.029 -0.11,0.069 -0.163,0.118c-0.052,0.05 -0.102,0.108 -0.151,0.175c-0.048,0.067 -0.093,0.138 -0.136,0.212c-0.043,0.075 -0.082,0.152 -0.117,0.232c-0.035,0.079 -0.066,0.156 -0.093,0.231c-0.026,0.076 -0.048,0.147 -0.064,0.213c-0.016,0.067 -0.026,0.126 -0.031,0.177Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M71.959,43.594c-0.033,-0 -0.061,-0.007 -0.087,-0.021c-0.025,-0.013 -0.046,-0.031 -0.064,-0.052c-0.017,-0.022 -0.031,-0.047 -0.04,-0.076c-0.009,-0.028 -0.014,-0.057 -0.014,-0.087c0,-0.041 0.007,-0.078 0.021,-0.11c0.014,-0.032 0.032,-0.059 0.054,-0.081c0.023,-0.022 0.047,-0.038 0.074,-0.049c0.027,-0.011 0.053,-0.016 0.079,-0.016c0.032,0 0.06,0.006 0.085,0.018c0.025,0.011 0.047,0.027 0.065,0.048c0.018,0.02 0.032,0.043 0.042,0.07c0.01,0.026 0.015,0.055 0.015,0.085c-0,0.033 -0.006,0.065 -0.017,0.097c-0.011,0.032 -0.027,0.061 -0.047,0.087c-0.02,0.026 -0.044,0.047 -0.072,0.063c-0.029,0.016 -0.06,0.024 -0.094,0.024ZM72.08,44.223c-0.016,0.106 -0.029,0.212 -0.04,0.318c-0.012,0.106 -0.021,0.209 -0.028,0.309c-0.007,0.099 -0.012,0.193 -0.015,0.282c-0.003,0.088 -0.005,0.168 -0.005,0.24c0,0.096 0.002,0.179 0.004,0.248c0.003,0.069 0.008,0.128 0.014,0.175c0.007,0.047 0.015,0.085 0.025,0.113c0.009,0.029 0.022,0.051 0.036,0.066c0.014,0.015 0.031,0.025 0.05,0.03c0.019,0.004 0.041,0.007 0.065,0.007c0.044,-0 0.092,-0.007 0.144,-0.02c0.051,-0.014 0.104,-0.033 0.157,-0.057l0.026,0.073c-0.033,0.027 -0.075,0.054 -0.126,0.082c-0.051,0.028 -0.104,0.053 -0.159,0.076c-0.056,0.024 -0.111,0.042 -0.164,0.057c-0.053,0.014 -0.1,0.021 -0.139,0.021c-0.026,0 -0.049,-0.002 -0.071,-0.006c-0.021,-0.004 -0.04,-0.015 -0.057,-0.031c-0.018,-0.017 -0.033,-0.042 -0.046,-0.074c-0.014,-0.033 -0.025,-0.077 -0.034,-0.132c-0.009,-0.056 -0.015,-0.126 -0.02,-0.209c-0.005,-0.084 -0.007,-0.185 -0.007,-0.304c0,-0.069 0.001,-0.148 0.002,-0.236c0.002,-0.087 0.004,-0.182 0.006,-0.282c0.003,-0.101 0.007,-0.207 0.012,-0.319c0.004,-0.112 0.01,-0.227 0.018,-0.346c0.002,-0.026 0.008,-0.047 0.021,-0.064c0.012,-0.016 0.026,-0.028 0.044,-0.037c0.018,-0.009 0.037,-0.015 0.057,-0.018c0.019,-0.004 0.038,-0.005 0.055,-0.005c0.062,-0 0.12,0.014 0.175,0.043Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M72.837,46.218l-0.022,-0.001c0.008,-0.088 0.015,-0.184 0.021,-0.288c0.007,-0.104 0.013,-0.21 0.018,-0.317c0.006,-0.107 0.011,-0.214 0.015,-0.319c0.004,-0.105 0.008,-0.204 0.011,-0.295c0.003,-0.092 0.005,-0.174 0.007,-0.246c0.001,-0.072 0.002,-0.129 0.002,-0.171c-0,-0.035 -0.001,-0.064 -0.004,-0.089c-0.003,-0.025 -0.009,-0.046 -0.019,-0.063c-0.01,-0.017 -0.024,-0.029 -0.043,-0.037c-0.018,-0.008 -0.043,-0.012 -0.075,-0.012c-0.015,0 -0.032,0.001 -0.048,0.003c-0.017,0.002 -0.036,0.005 -0.056,0.008c-0.021,0.004 -0.044,0.009 -0.069,0.015c-0.026,0.006 -0.055,0.013 -0.088,0.022l-0.021,-0.101c0.154,-0.055 0.279,-0.095 0.374,-0.117c0.096,-0.023 0.16,-0.034 0.194,-0.034c0.061,-0 0.105,0.018 0.131,0.053c0.027,0.036 0.04,0.089 0.04,0.16c-0,0.006 -0.001,0.025 -0.003,0.057c-0.002,0.031 -0.004,0.072 -0.007,0.123c-0.004,0.051 -0.008,0.109 -0.012,0.176c-0.005,0.067 -0.01,0.139 -0.016,0.215c-0.006,0.077 -0.013,0.157 -0.02,0.24c-0.008,0.083 -0.016,0.166 -0.024,0.248l0.014,0.002c0.044,-0.182 0.095,-0.352 0.151,-0.509c0.056,-0.158 0.119,-0.294 0.189,-0.41c0.07,-0.116 0.147,-0.208 0.231,-0.274c0.084,-0.066 0.176,-0.099 0.277,-0.099c0.035,-0 0.068,0.005 0.099,0.016c0.03,0.011 0.057,0.027 0.079,0.047c0.022,0.02 0.04,0.044 0.053,0.071c0.013,0.027 0.019,0.057 0.019,0.09c0,0.041 -0.009,0.082 -0.027,0.12c-0.018,0.039 -0.046,0.073 -0.085,0.102l-0.012,0c-0.039,-0.032 -0.075,-0.055 -0.11,-0.07c-0.035,-0.014 -0.072,-0.021 -0.111,-0.021c-0.042,-0 -0.082,0.007 -0.121,0.023c-0.039,0.016 -0.075,0.039 -0.107,0.068c-0.053,0.049 -0.102,0.113 -0.148,0.192c-0.045,0.079 -0.087,0.167 -0.125,0.264c-0.037,0.096 -0.071,0.198 -0.101,0.304c-0.03,0.106 -0.056,0.21 -0.078,0.311c-0.022,0.1 -0.04,0.195 -0.053,0.284c-0.013,0.088 -0.023,0.163 -0.029,0.223l-0.291,0.036Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M74.737,43.594c-0.033,-0 -0.062,-0.007 -0.087,-0.021c-0.025,-0.013 -0.046,-0.031 -0.064,-0.052c-0.017,-0.022 -0.031,-0.047 -0.04,-0.076c-0.009,-0.028 -0.014,-0.057 -0.014,-0.087c-0,-0.041 0.007,-0.078 0.021,-0.11c0.014,-0.032 0.032,-0.059 0.054,-0.081c0.022,-0.022 0.047,-0.038 0.074,-0.049c0.027,-0.011 0.053,-0.016 0.079,-0.016c0.032,0 0.06,0.006 0.085,0.018c0.025,0.011 0.047,0.027 0.065,0.048c0.018,0.02 0.032,0.043 0.042,0.07c0.01,0.026 0.014,0.055 0.014,0.085c0,0.033 -0.005,0.065 -0.016,0.097c-0.011,0.032 -0.027,0.061 -0.047,0.087c-0.02,0.026 -0.044,0.047 -0.072,0.063c-0.029,0.016 -0.06,0.024 -0.094,0.024ZM74.858,44.223c-0.016,0.106 -0.029,0.212 -0.041,0.318c-0.011,0.106 -0.02,0.209 -0.027,0.309c-0.007,0.099 -0.012,0.193 -0.015,0.282c-0.003,0.088 -0.005,0.168 -0.005,0.24c0,0.096 0.001,0.179 0.004,0.248c0.003,0.069 0.008,0.128 0.014,0.175c0.007,0.047 0.015,0.085 0.025,0.113c0.009,0.029 0.021,0.051 0.036,0.066c0.014,0.015 0.031,0.025 0.05,0.03c0.019,0.004 0.04,0.007 0.065,0.007c0.044,-0 0.092,-0.007 0.144,-0.02c0.051,-0.014 0.103,-0.033 0.156,-0.057l0.027,0.073c-0.034,0.027 -0.076,0.054 -0.126,0.082c-0.051,0.028 -0.104,0.053 -0.16,0.076c-0.055,0.024 -0.11,0.042 -0.163,0.057c-0.054,0.014 -0.1,0.021 -0.139,0.021c-0.026,0 -0.049,-0.002 -0.071,-0.006c-0.021,-0.004 -0.04,-0.015 -0.058,-0.031c-0.017,-0.017 -0.032,-0.042 -0.046,-0.074c-0.013,-0.033 -0.024,-0.077 -0.033,-0.132c-0.009,-0.056 -0.015,-0.126 -0.02,-0.209c-0.005,-0.084 -0.007,-0.185 -0.007,-0.304c-0,-0.069 0.001,-0.148 0.002,-0.236c0.001,-0.087 0.003,-0.182 0.006,-0.282c0.003,-0.101 0.007,-0.207 0.011,-0.319c0.005,-0.112 0.011,-0.227 0.018,-0.346c0.002,-0.026 0.009,-0.047 0.021,-0.064c0.012,-0.016 0.027,-0.028 0.045,-0.037c0.018,-0.009 0.036,-0.015 0.056,-0.018c0.02,-0.004 0.039,-0.005 0.055,-0.005c0.063,-0 0.121,0.014 0.176,0.043Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M76.123,43.172c-0.039,0.176 -0.071,0.358 -0.098,0.546c-0.026,0.188 -0.049,0.374 -0.067,0.557c0.043,0.001 0.086,0.003 0.127,0.004c0.041,0.001 0.08,0.002 0.116,0.002c0.035,0.001 0.068,0.002 0.097,0.002l0.073,-0c0.085,-0 0.154,-0.005 0.208,-0.015c0.004,0.015 0.008,0.03 0.011,0.043c0.003,0.013 0.004,0.025 0.004,0.036c0,0.041 -0.017,0.067 -0.051,0.079c-0.034,0.012 -0.083,0.018 -0.147,0.018c-0.061,0 -0.129,-0.003 -0.205,-0.011c-0.076,-0.007 -0.159,-0.014 -0.249,-0.021c-0.01,0.1 -0.018,0.196 -0.025,0.291c-0.007,0.094 -0.013,0.183 -0.017,0.266c-0.004,0.084 -0.007,0.161 -0.009,0.233c-0.002,0.071 -0.003,0.134 -0.003,0.186c0,0.1 0.005,0.188 0.015,0.266c0.011,0.078 0.029,0.144 0.055,0.199c0.026,0.054 0.061,0.096 0.107,0.124c0.045,0.029 0.103,0.044 0.173,0.044c0.05,-0 0.106,-0.009 0.167,-0.027c0.062,-0.018 0.132,-0.046 0.211,-0.085c0.025,0.025 0.04,0.056 0.044,0.092c-0.058,0.038 -0.116,0.073 -0.175,0.104c-0.058,0.031 -0.116,0.058 -0.172,0.08c-0.057,0.022 -0.112,0.039 -0.164,0.051c-0.053,0.012 -0.104,0.018 -0.151,0.018c-0.062,0 -0.119,-0.011 -0.17,-0.034c-0.052,-0.022 -0.097,-0.063 -0.134,-0.121c-0.038,-0.058 -0.067,-0.136 -0.088,-0.234c-0.021,-0.099 -0.031,-0.223 -0.031,-0.374c-0,-0.084 0.001,-0.171 0.004,-0.261c0.003,-0.089 0.007,-0.18 0.011,-0.272c0.005,-0.092 0.011,-0.184 0.018,-0.276c0.008,-0.091 0.016,-0.182 0.025,-0.271c-0.073,0.001 -0.141,0.004 -0.204,0.009c-0.062,0.005 -0.116,0.013 -0.16,0.024c-0.003,-0.005 -0.005,-0.012 -0.005,-0.019c0,-0.02 0.01,-0.038 0.029,-0.055c0.019,-0.017 0.045,-0.033 0.079,-0.047c0.034,-0.014 0.075,-0.025 0.122,-0.035c0.047,-0.009 0.099,-0.015 0.156,-0.019c0.021,-0.194 0.044,-0.377 0.068,-0.55c0.024,-0.173 0.049,-0.327 0.073,-0.462c0.004,-0.024 0.013,-0.044 0.025,-0.06c0.013,-0.016 0.028,-0.029 0.044,-0.038c0.017,-0.009 0.035,-0.016 0.055,-0.019c0.019,-0.004 0.038,-0.006 0.057,-0.006c0.03,0 0.058,0.003 0.083,0.01c0.024,0.006 0.047,0.016 0.068,0.028Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M79.373,42.907c0.122,0 0.234,0.011 0.338,0.034c0.103,0.022 0.193,0.049 0.268,0.082c0.075,0.032 0.134,0.067 0.177,0.104c0.043,0.037 0.064,0.071 0.064,0.102c-0,0.064 -0.002,0.147 -0.007,0.249c-0.005,0.102 -0.011,0.226 -0.018,0.37l-0.121,-0.004l0.002,-0.074c-0,-0.064 -0.008,-0.125 -0.021,-0.183c-0.014,-0.058 -0.038,-0.113 -0.073,-0.166c-0.037,-0.053 -0.082,-0.1 -0.133,-0.141c-0.052,-0.041 -0.108,-0.075 -0.169,-0.103c-0.062,-0.028 -0.127,-0.049 -0.197,-0.063c-0.069,-0.014 -0.14,-0.022 -0.213,-0.022c-0.124,0 -0.237,0.02 -0.339,0.058c-0.101,0.039 -0.192,0.092 -0.272,0.16c-0.08,0.068 -0.149,0.149 -0.208,0.243c-0.059,0.093 -0.108,0.194 -0.146,0.304c-0.039,0.109 -0.068,0.224 -0.087,0.345c-0.019,0.121 -0.028,0.243 -0.028,0.366c-0,0.146 0.012,0.283 0.036,0.412c0.024,0.129 0.058,0.248 0.103,0.357c0.045,0.109 0.098,0.206 0.162,0.292c0.063,0.087 0.133,0.16 0.212,0.22c0.078,0.059 0.163,0.105 0.255,0.137c0.091,0.031 0.187,0.047 0.289,0.047c0.07,0 0.143,-0.008 0.218,-0.023c0.074,-0.015 0.15,-0.039 0.227,-0.072c0.077,-0.033 0.155,-0.075 0.233,-0.126c0.079,-0.05 0.157,-0.111 0.235,-0.181c0.007,0.003 0.016,0.008 0.026,0.014c0.01,0.005 0.019,0.011 0.027,0.018c0.008,0.007 0.015,0.015 0.022,0.023c0.006,0.009 0.009,0.017 0.009,0.025c-0,0.006 -0.004,0.014 -0.012,0.024c-0.091,0.1 -0.182,0.184 -0.275,0.252c-0.093,0.068 -0.186,0.123 -0.28,0.164c-0.094,0.042 -0.188,0.072 -0.284,0.09c-0.095,0.018 -0.19,0.027 -0.284,0.027c-0.126,0 -0.245,-0.017 -0.359,-0.052c-0.114,-0.035 -0.219,-0.085 -0.317,-0.149c-0.097,-0.065 -0.185,-0.144 -0.264,-0.236c-0.079,-0.093 -0.146,-0.197 -0.202,-0.312c-0.056,-0.115 -0.099,-0.24 -0.129,-0.375c-0.03,-0.135 -0.045,-0.278 -0.045,-0.428c-0,-0.145 0.015,-0.29 0.044,-0.437c0.029,-0.146 0.073,-0.286 0.131,-0.419c0.058,-0.134 0.131,-0.259 0.218,-0.375c0.088,-0.116 0.19,-0.217 0.307,-0.303c0.117,-0.086 0.249,-0.153 0.396,-0.202c0.146,-0.048 0.308,-0.073 0.484,-0.073Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M80.532,45.381c-0,-0.093 0.01,-0.188 0.029,-0.285c0.02,-0.097 0.048,-0.19 0.086,-0.281c0.038,-0.09 0.086,-0.175 0.142,-0.254c0.056,-0.08 0.121,-0.149 0.194,-0.209c0.073,-0.059 0.155,-0.106 0.245,-0.14c0.09,-0.035 0.188,-0.052 0.294,-0.052c0.119,0 0.224,0.025 0.315,0.076c0.092,0.05 0.168,0.116 0.231,0.198c0.062,0.082 0.109,0.176 0.141,0.28c0.032,0.105 0.048,0.213 0.048,0.322c-0,0.094 -0.01,0.189 -0.029,0.286c-0.02,0.096 -0.049,0.19 -0.087,0.28c-0.039,0.091 -0.086,0.176 -0.142,0.255c-0.056,0.079 -0.121,0.149 -0.195,0.208c-0.073,0.06 -0.155,0.106 -0.245,0.141c-0.09,0.034 -0.188,0.051 -0.293,0.051c-0.119,0 -0.224,-0.025 -0.316,-0.075c-0.091,-0.05 -0.168,-0.116 -0.23,-0.198c-0.061,-0.082 -0.108,-0.176 -0.14,-0.281c-0.032,-0.105 -0.048,-0.212 -0.048,-0.322ZM80.865,45.249c-0,0.063 0.004,0.127 0.014,0.192c0.01,0.065 0.025,0.128 0.045,0.188c0.021,0.061 0.046,0.117 0.076,0.169c0.03,0.053 0.066,0.099 0.108,0.138c0.041,0.039 0.087,0.069 0.139,0.092c0.051,0.022 0.108,0.033 0.17,0.033c0.068,-0 0.128,-0.015 0.179,-0.044c0.052,-0.029 0.096,-0.068 0.134,-0.116c0.038,-0.048 0.069,-0.104 0.093,-0.166c0.025,-0.062 0.045,-0.126 0.059,-0.193c0.015,-0.066 0.026,-0.132 0.032,-0.197c0.006,-0.065 0.009,-0.125 0.009,-0.179c-0,-0.064 -0.005,-0.129 -0.015,-0.193c-0.01,-0.065 -0.025,-0.127 -0.045,-0.187c-0.021,-0.06 -0.046,-0.116 -0.076,-0.168c-0.03,-0.053 -0.066,-0.098 -0.107,-0.137c-0.041,-0.038 -0.088,-0.069 -0.139,-0.091c-0.052,-0.022 -0.109,-0.033 -0.171,-0.033c-0.068,-0 -0.127,0.014 -0.179,0.043c-0.051,0.029 -0.096,0.067 -0.134,0.115c-0.037,0.049 -0.068,0.104 -0.093,0.166c-0.024,0.062 -0.044,0.126 -0.059,0.192c-0.015,0.066 -0.025,0.132 -0.031,0.197c-0.006,0.066 -0.009,0.125 -0.009,0.179Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M82.392,44.332c0.066,-0.024 0.129,-0.045 0.19,-0.064c0.061,-0.019 0.117,-0.035 0.168,-0.049c0.051,-0.014 0.096,-0.025 0.135,-0.032c0.039,-0.008 0.07,-0.011 0.092,-0.011c0.054,-0 0.096,0.016 0.126,0.048c0.03,0.032 0.045,0.087 0.045,0.165c0,0.018 -0.002,0.058 -0.005,0.119c-0.004,0.061 -0.01,0.137 -0.016,0.229c-0.007,0.092 -0.016,0.197 -0.026,0.314c-0.01,0.118 -0.022,0.244 -0.035,0.376l0.008,0.002c0.065,-0.236 0.134,-0.434 0.208,-0.594c0.073,-0.16 0.148,-0.289 0.224,-0.388c0.076,-0.098 0.153,-0.169 0.23,-0.211c0.077,-0.042 0.151,-0.063 0.224,-0.063c0.064,-0 0.118,0.016 0.163,0.047c0.044,0.032 0.081,0.073 0.108,0.124c0.028,0.051 0.049,0.109 0.062,0.173c0.013,0.065 0.019,0.131 0.019,0.197c0,0.059 -0.002,0.121 -0.005,0.186c-0.004,0.066 -0.009,0.13 -0.014,0.194c-0.006,0.064 -0.012,0.124 -0.018,0.181c-0.006,0.057 -0.011,0.107 -0.016,0.15l0.009,0.001c0.065,-0.239 0.134,-0.44 0.208,-0.602c0.074,-0.162 0.149,-0.292 0.225,-0.391c0.077,-0.098 0.154,-0.168 0.231,-0.211c0.077,-0.042 0.152,-0.063 0.224,-0.063c0.046,-0 0.091,0.01 0.135,0.029c0.044,0.02 0.082,0.051 0.116,0.094c0.034,0.043 0.061,0.099 0.082,0.167c0.02,0.067 0.03,0.149 0.03,0.245c0,0.027 -0.001,0.063 -0.005,0.11c-0.003,0.047 -0.007,0.099 -0.011,0.157c-0.005,0.058 -0.01,0.119 -0.016,0.183c-0.006,0.065 -0.012,0.128 -0.016,0.19c-0.005,0.062 -0.009,0.121 -0.012,0.178c-0.003,0.056 -0.005,0.104 -0.005,0.145c-0,0.073 0.003,0.131 0.009,0.177c0.006,0.045 0.016,0.081 0.03,0.108c0.014,0.026 0.032,0.044 0.056,0.054c0.023,0.01 0.051,0.015 0.085,0.015c0.048,-0 0.098,-0.007 0.15,-0.02c0.052,-0.014 0.104,-0.033 0.157,-0.057l0.027,0.073c-0.034,0.027 -0.076,0.054 -0.127,0.082c-0.051,0.028 -0.105,0.053 -0.161,0.076c-0.056,0.024 -0.112,0.042 -0.168,0.057c-0.055,0.014 -0.105,0.021 -0.147,0.021c-0.05,0 -0.09,-0.013 -0.119,-0.04c-0.028,-0.027 -0.05,-0.064 -0.064,-0.11c-0.015,-0.046 -0.024,-0.101 -0.028,-0.163c-0.004,-0.062 -0.006,-0.129 -0.006,-0.2c-0,-0.087 0.003,-0.177 0.009,-0.272c0.006,-0.095 0.012,-0.185 0.02,-0.27c0.007,-0.085 0.014,-0.163 0.02,-0.232c0.006,-0.069 0.009,-0.121 0.009,-0.157c0,-0.101 -0.018,-0.177 -0.054,-0.227c-0.035,-0.051 -0.084,-0.076 -0.145,-0.076c-0.047,-0 -0.098,0.022 -0.151,0.067c-0.054,0.045 -0.107,0.107 -0.16,0.186c-0.054,0.079 -0.105,0.172 -0.155,0.279c-0.049,0.108 -0.094,0.224 -0.134,0.349c-0.04,0.126 -0.074,0.257 -0.101,0.394c-0.028,0.137 -0.045,0.274 -0.054,0.411l-0.291,0.036l-0.022,-0.001c0.01,-0.195 0.02,-0.368 0.029,-0.518c0.008,-0.15 0.016,-0.282 0.023,-0.394c0.007,-0.112 0.013,-0.208 0.017,-0.286c0.004,-0.078 0.006,-0.142 0.006,-0.193c0,-0.104 -0.018,-0.183 -0.053,-0.235c-0.036,-0.053 -0.082,-0.08 -0.138,-0.08c-0.049,0 -0.101,0.022 -0.155,0.066c-0.054,0.044 -0.108,0.105 -0.161,0.183c-0.053,0.078 -0.103,0.171 -0.152,0.277c-0.049,0.106 -0.093,0.221 -0.132,0.344c-0.04,0.124 -0.073,0.254 -0.099,0.39c-0.027,0.137 -0.044,0.274 -0.052,0.411l-0.292,0.036l-0.022,-0.001c0.008,-0.088 0.015,-0.184 0.021,-0.288c0.007,-0.104 0.013,-0.21 0.018,-0.317c0.006,-0.107 0.011,-0.214 0.015,-0.319c0.004,-0.105 0.008,-0.204 0.011,-0.295c0.003,-0.092 0.006,-0.174 0.007,-0.246c0.001,-0.072 0.002,-0.129 0.002,-0.171c0,-0.038 -0.003,-0.07 -0.008,-0.096c-0.006,-0.026 -0.014,-0.047 -0.026,-0.062c-0.012,-0.016 -0.026,-0.026 -0.044,-0.033c-0.018,-0.006 -0.038,-0.01 -0.063,-0.01c-0.033,0 -0.073,0.005 -0.119,0.014c-0.047,0.01 -0.1,0.022 -0.159,0.038l-0.021,-0.1Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M86.789,42.445c-0.017,0.148 -0.035,0.302 -0.053,0.459c-0.017,0.158 -0.034,0.318 -0.051,0.479c-0.016,0.162 -0.032,0.324 -0.047,0.488c-0.015,0.163 -0.029,0.324 -0.042,0.484c-0.012,0.159 -0.023,0.315 -0.032,0.467c-0.01,0.153 -0.017,0.3 -0.023,0.44l0.016,0.001c0.073,-0.18 0.152,-0.339 0.236,-0.476c0.085,-0.137 0.171,-0.253 0.258,-0.345c0.087,-0.093 0.174,-0.163 0.26,-0.211c0.086,-0.047 0.167,-0.071 0.243,-0.071c0.064,0 0.12,0.012 0.169,0.036c0.05,0.024 0.092,0.055 0.129,0.095c0.036,0.039 0.066,0.084 0.09,0.136c0.024,0.051 0.044,0.105 0.059,0.161c0.014,0.057 0.025,0.114 0.031,0.171c0.006,0.058 0.009,0.111 0.009,0.162c-0,0.138 -0.014,0.267 -0.041,0.387c-0.027,0.121 -0.065,0.23 -0.114,0.329c-0.048,0.099 -0.105,0.187 -0.171,0.264c-0.066,0.077 -0.137,0.142 -0.214,0.195c-0.077,0.053 -0.159,0.093 -0.244,0.12c-0.085,0.028 -0.171,0.041 -0.258,0.041c-0.057,0 -0.115,-0.006 -0.173,-0.019c-0.058,-0.013 -0.115,-0.033 -0.17,-0.06c-0.055,-0.027 -0.107,-0.062 -0.156,-0.104c-0.05,-0.042 -0.094,-0.092 -0.133,-0.15c-0.032,0.082 -0.065,0.149 -0.099,0.201c-0.033,0.052 -0.064,0.094 -0.093,0.125l-0.072,-0.018c0.051,-0.142 0.088,-0.312 0.113,-0.511c0.024,-0.2 0.042,-0.425 0.055,-0.677c0.005,-0.107 0.011,-0.23 0.018,-0.367c0.007,-0.137 0.014,-0.282 0.021,-0.435c0.008,-0.152 0.016,-0.307 0.024,-0.467c0.008,-0.159 0.017,-0.314 0.025,-0.464c0.008,-0.15 0.016,-0.293 0.024,-0.428c0.007,-0.134 0.014,-0.253 0.021,-0.357c0,-0.023 0.007,-0.042 0.02,-0.058c0.013,-0.016 0.03,-0.029 0.049,-0.039c0.02,-0.01 0.042,-0.017 0.066,-0.022c0.025,-0.004 0.049,-0.007 0.073,-0.007c0.057,0 0.116,0.015 0.177,0.045ZM87.701,45.056c0,-0.063 -0.005,-0.128 -0.014,-0.195c-0.01,-0.067 -0.025,-0.128 -0.046,-0.182c-0.021,-0.054 -0.049,-0.099 -0.083,-0.134c-0.033,-0.034 -0.074,-0.052 -0.123,-0.052c-0.056,0 -0.112,0.014 -0.168,0.043c-0.055,0.028 -0.108,0.066 -0.16,0.114c-0.051,0.048 -0.101,0.103 -0.148,0.165c-0.047,0.063 -0.092,0.129 -0.133,0.197c-0.041,0.069 -0.078,0.139 -0.111,0.209c-0.033,0.07 -0.062,0.136 -0.085,0.199c-0.024,0.064 -0.042,0.121 -0.055,0.172c-0.013,0.052 -0.02,0.093 -0.02,0.124c0.014,0.057 0.036,0.109 0.065,0.156c0.029,0.047 0.065,0.087 0.106,0.12c0.041,0.033 0.087,0.058 0.138,0.076c0.05,0.018 0.104,0.026 0.161,0.026c0.092,0 0.18,-0.023 0.262,-0.07c0.082,-0.047 0.154,-0.115 0.215,-0.204c0.061,-0.089 0.11,-0.198 0.146,-0.326c0.035,-0.129 0.053,-0.275 0.053,-0.438Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M88.365,45.381c0,-0.093 0.01,-0.188 0.03,-0.285c0.019,-0.097 0.048,-0.19 0.086,-0.281c0.038,-0.09 0.085,-0.175 0.141,-0.254c0.056,-0.08 0.121,-0.149 0.195,-0.209c0.073,-0.059 0.155,-0.106 0.245,-0.14c0.09,-0.035 0.188,-0.052 0.293,-0.052c0.119,0 0.224,0.025 0.316,0.076c0.091,0.05 0.168,0.116 0.23,0.198c0.062,0.082 0.11,0.176 0.142,0.28c0.032,0.105 0.048,0.213 0.048,0.322c-0,0.094 -0.01,0.189 -0.03,0.286c-0.019,0.096 -0.048,0.19 -0.087,0.28c-0.038,0.091 -0.086,0.176 -0.142,0.255c-0.056,0.079 -0.121,0.149 -0.194,0.208c-0.073,0.06 -0.155,0.106 -0.245,0.141c-0.09,0.034 -0.188,0.051 -0.294,0.051c-0.119,0 -0.224,-0.025 -0.315,-0.075c-0.092,-0.05 -0.168,-0.116 -0.23,-0.198c-0.062,-0.082 -0.109,-0.176 -0.141,-0.281c-0.032,-0.105 -0.048,-0.212 -0.048,-0.322ZM88.698,45.249c0,0.063 0.005,0.127 0.015,0.192c0.01,0.065 0.025,0.128 0.045,0.188c0.02,0.061 0.046,0.117 0.076,0.169c0.03,0.053 0.066,0.099 0.107,0.138c0.041,0.039 0.088,0.069 0.139,0.092c0.052,0.022 0.109,0.033 0.171,0.033c0.068,-0 0.127,-0.015 0.179,-0.044c0.051,-0.029 0.096,-0.068 0.134,-0.116c0.037,-0.048 0.068,-0.104 0.093,-0.166c0.024,-0.062 0.044,-0.126 0.059,-0.193c0.015,-0.066 0.025,-0.132 0.031,-0.197c0.006,-0.065 0.009,-0.125 0.009,-0.179c0,-0.064 -0.004,-0.129 -0.014,-0.193c-0.01,-0.065 -0.025,-0.127 -0.045,-0.187c-0.021,-0.06 -0.046,-0.116 -0.076,-0.168c-0.031,-0.053 -0.066,-0.098 -0.108,-0.137c-0.041,-0.038 -0.087,-0.069 -0.139,-0.091c-0.051,-0.022 -0.108,-0.033 -0.17,-0.033c-0.068,-0 -0.128,0.014 -0.179,0.043c-0.052,0.029 -0.096,0.067 -0.134,0.115c-0.038,0.049 -0.069,0.104 -0.093,0.166c-0.025,0.062 -0.045,0.126 -0.059,0.192c-0.015,0.066 -0.026,0.132 -0.032,0.197c-0.006,0.066 -0.009,0.125 -0.009,0.179Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M95.015,49.884l-55.056,0.169c1.178,8.3 3.964,16.599 8.096,24.899l53.267,-0.253c-0.468,-8.474 -2.202,-16.791 -6.307,-24.815Z"
android:fillColor="#232121"/>
<path
android:pathData="M93.977,51.234l-52.33,0.148c1.119,7.266 3.768,14.532 7.695,21.798l50.629,-0.222c-0.445,-7.418 -2.093,-14.699 -5.994,-21.724Z"
android:fillColor="#9c9c9c"/>
<path
android:pathData="M97.314,58.815c-0.621,-2.274 -1.511,-5.644 -2.909,-5.977l-46.282,0.338c-1.106,-0 -2.003,0.898 -2.003,2.005l-0.047,11.459c0.419,1.159 1.47,2.679 2.323,4.852l48.284,-0.085l0.634,-12.592Z"
android:fillColor="#6c684d"/>
<path
android:fillColor="#FF000000"
android:pathData="M76.495,59.591l-1.452,-1.453l-2.905,-0l-1.453,1.453l0,5.195l1.453,1.453l2.905,-0l1.452,-1.453l0,-5.195Z"
android:fillAlpha="0.41"/>
<path
android:pathData="M75.213,60.492l-1.955,1.704l-0,-3.408l1.955,1.704Z"
android:strokeWidth="0.75"
android:fillColor="#00000000"
android:strokeColor="#fff"/>
<path
android:pathData="M75.213,63.838l-1.955,1.704l-0,-3.408l1.955,1.704Z"
android:strokeWidth="0.75"
android:fillColor="#00000000"
android:strokeColor="#fff"/>
<path
android:pathData="M73.565,62.092l-1.23,-1.519l-0.304,0.246l1.23,1.519l0.304,-0.246Z"
android:fillColor="#fff"/>
<path
android:pathData="M73.35,61.884l-1.383,1.383l0.249,0.249l1.383,-1.383l-0.249,-0.249Z"
android:fillColor="#fff"/>
<path
android:pathData="M23.509,45.515c5.889,-1.177 11.389,1.466 12.274,5.897c0.885,4.432 -3.178,8.984 -9.067,10.16c-5.889,1.177 -11.389,-1.466 -12.274,-5.897c-0.885,-4.432 3.177,-8.984 9.067,-10.16Z"
android:fillColor="#232121"/>
<path
android:fillColor="#FF000000"
android:pathData="M24.584,49.088c3.797,-0.759 7.262,0.534 7.731,2.886c0.47,2.351 -2.232,4.875 -6.03,5.634c-3.797,0.758 -7.262,-0.535 -7.731,-2.886c-0.47,-2.351 2.232,-4.876 6.03,-5.634Z"/>
<path
android:pathData="M24.622,49.749c3.246,-0.648 6.207,0.457 6.608,2.467c0.402,2.009 -1.907,4.167 -5.153,4.815c-3.246,0.649 -6.207,-0.456 -6.608,-2.466c-0.402,-2.01 1.908,-4.167 5.153,-4.816Z"
android:fillColor="#232121"/>
<path
android:pathData="M29.181,59.053l1.85,5.241l-5.327,1.589l-1.849,-5.241l5.326,-1.589Z"
android:fillColor="#222323"/>
<path
android:pathData="M27.729,62.818c5.889,-1.176 11.389,1.466 12.274,5.897c0.885,4.432 -3.178,8.984 -9.067,10.16c-5.889,1.177 -11.389,-1.466 -12.274,-5.897c-0.885,-4.431 3.178,-8.984 9.067,-10.16Z"
android:fillColor="#232121"/>
<path
android:fillColor="#FF000000"
android:pathData="M28.804,66.391c3.797,-0.759 7.262,0.534 7.731,2.886c0.47,2.351 -2.232,4.876 -6.029,5.634c-3.798,0.759 -7.262,-0.535 -7.732,-2.886c-0.47,-2.351 2.232,-4.876 6.03,-5.634Z"/>
<path
android:pathData="M28.921,66.974c3.246,-0.648 6.207,0.457 6.608,2.467c0.401,2.009 -1.908,4.167 -5.154,4.815c-3.245,0.649 -6.206,-0.456 -6.608,-2.466c-0.401,-2.01 1.908,-4.167 5.154,-4.816Z"
android:fillColor="#232121"/>
<path
android:pathData="M32.568,68.842l-0.564,-0.619l-3.412,4.073l0.564,0.618l3.412,-4.072Z"
android:fillColor="#fff"/>
<path
android:pathData="M27.874,69.634l-0.705,0.599l1.787,2.754l0.705,-0.6l-1.787,-2.753Z"
android:fillColor="#fff"/>
<path
android:pathData="M17.265,41.908h2.626v3.967h-2.626z"
android:fillColor="#fff"/>
<path
android:pathData="M18.159,40.791h2.682v3.408h-2.682z"
android:fillColor="#fff"
android:fillAlpha="0.44"/>
<path
android:pathData="M24.091,50.931h2.682v3.408h-2.682z"
android:fillColor="#fff"
android:fillAlpha="0.44"/>
<path
android:pathData="M23.197,52.048h2.626v3.967h-2.626z"
android:fillColor="#fff"/>
<path
android:pathData="M22.12,79.345l-0.563,-0.619l-3.412,4.073l0.564,0.619l3.411,-4.073Z"
android:fillColor="#fff"/>
<path
android:pathData="M17.427,80.137l-0.705,0.599l1.786,2.754l0.705,-0.599l-1.786,-2.754Z"
android:fillColor="#fff"/>
<path
android:fillColor="#FF000000"
android:pathData="M101.406,83.862c0,-0.864 -0.702,-1.566 -1.566,-1.566l-61.353,-0c-0.865,-0 -1.567,0.702 -1.567,1.566l12.83,18.016l51.656,-0l0,-18.016Z"/>
<path
android:pathData="M99.971,84.945c0,-0.821 -0.659,-1.487 -1.471,-1.487l-57.598,-0c-0.812,-0 -1.471,0.666 -1.471,1.487l12.045,17.102l48.495,-0l0,-17.102Z"
android:fillColor="#a7a9a6"/>
<path
android:fillColor="#FF000000"
android:pathData="M99.971,84.945c0,-0.821 -0.666,-1.487 -1.487,-1.487l-28.414,-0l0,18.589l29.901,-0l0,-17.102Z"
android:fillAlpha="0.41"/>
<path
android:pathData="M52.221,83.265l-13.866,0.174l13.004,18.644l0.9,0.002l-0.038,-18.82Z"
android:fillColor="#443f29"
android:fillAlpha="0.4"/>
<path
android:pathData="M52.093,101.965l-0,-18.589l4.649,4.647l0,9.294l-4.649,4.648Z"
android:fillColor="#443f29"
android:fillAlpha="0.4"/>
<path
android:pathData="M56.742,90.954h3.476v3.433h-3.476z"
android:fillColor="#443f29"
android:fillAlpha="0.4"/>
<path
android:fillColor="#FF000000"
android:pathData="M60.163,83.446h1.651v18.685h-1.651z"
android:fillAlpha="0.55"/>
<path
android:fillColor="#FF000000"
android:pathData="M68.376,83.446h1.695v18.685h-1.695z"
android:fillAlpha="0.55"/>
<path
android:fillColor="#FF000000"
android:pathData="M64.639,83.316h1.955v18.685h-1.955z"
android:fillAlpha="0.55"/>
<path
android:fillColor="#FF000000"
android:pathData="M78.598,94.921l-0,-0.27l1.823,0c-0.066,-0.065 -0.132,-0.15 -0.197,-0.255c-0.066,-0.106 -0.115,-0.2 -0.148,-0.284l0.277,-0c0.075,0.151 0.166,0.282 0.273,0.395c0.107,0.113 0.211,0.193 0.311,0.24l0,0.174l-2.339,-0Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M78.598,95.757l0.326,-0l-0,0.307l-0.326,0c-0.12,0 -0.217,-0.02 -0.29,-0.06c-0.074,-0.04 -0.131,-0.103 -0.171,-0.19l0.122,-0.075c0.027,0.057 0.066,0.099 0.117,0.126c0.052,0.027 0.125,0.042 0.222,0.045l-0,-0.153Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M79.208,96.464l0.026,0.283c-0.147,0.021 -0.257,0.07 -0.33,0.147c-0.074,0.076 -0.111,0.168 -0.111,0.276c0,0.13 0.052,0.24 0.156,0.33c0.104,0.09 0.242,0.134 0.413,0.134c0.164,0 0.292,-0.043 0.387,-0.129c0.094,-0.087 0.141,-0.2 0.141,-0.34c0,-0.086 -0.021,-0.165 -0.063,-0.235c-0.042,-0.07 -0.096,-0.125 -0.163,-0.165l0.035,-0.253l1.197,0.213l0,1.092l-0.273,0l-0,-0.876l-0.626,-0.119c0.097,0.132 0.146,0.271 0.146,0.415c-0,0.192 -0.071,0.354 -0.212,0.486c-0.141,0.132 -0.322,0.198 -0.543,0.198c-0.211,-0 -0.393,-0.058 -0.547,-0.174c-0.189,-0.141 -0.283,-0.333 -0.283,-0.577c0,-0.2 0.059,-0.363 0.178,-0.489c0.119,-0.127 0.276,-0.199 0.472,-0.217Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M84.532,95.094l-0,-0.322l2.054,-0c-0.074,-0.078 -0.148,-0.18 -0.222,-0.306c-0.074,-0.126 -0.129,-0.239 -0.166,-0.339l0.311,-0c0.085,0.18 0.188,0.338 0.309,0.473c0.12,0.135 0.237,0.23 0.351,0.286l-0,0.208l-2.637,0Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M58.766,93.922l0.035,0.261c-0.148,0.03 -0.254,0.081 -0.32,0.153c-0.065,0.072 -0.098,0.16 -0.098,0.263c0,0.123 0.043,0.227 0.128,0.311c0.085,0.085 0.191,0.127 0.316,0.127c0.12,0 0.219,-0.039 0.297,-0.117c0.078,-0.079 0.117,-0.178 0.117,-0.299c-0,-0.049 -0.01,-0.111 -0.029,-0.184l0.229,0.029c-0.002,0.017 -0.003,0.031 -0.003,0.042c-0,0.111 0.029,0.211 0.087,0.3c0.058,0.089 0.147,0.134 0.268,0.134c0.096,-0 0.175,-0.033 0.238,-0.098c0.063,-0.064 0.094,-0.148 0.094,-0.25c0,-0.102 -0.032,-0.187 -0.096,-0.254c-0.063,-0.068 -0.159,-0.111 -0.287,-0.131l0.047,-0.261c0.175,0.032 0.31,0.105 0.407,0.218c0.096,0.113 0.144,0.253 0.144,0.422c-0,0.116 -0.025,0.223 -0.075,0.32c-0.05,0.098 -0.118,0.173 -0.204,0.224c-0.086,0.052 -0.177,0.078 -0.274,0.078c-0.092,-0 -0.175,-0.025 -0.251,-0.074c-0.075,-0.049 -0.135,-0.122 -0.179,-0.219c-0.029,0.126 -0.09,0.223 -0.181,0.293c-0.091,0.069 -0.206,0.104 -0.343,0.104c-0.186,0 -0.343,-0.067 -0.472,-0.203c-0.129,-0.135 -0.194,-0.306 -0.194,-0.513c0,-0.187 0.056,-0.342 0.167,-0.465c0.111,-0.123 0.255,-0.194 0.432,-0.211Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M58.205,95.713l0.297,0l0,0.297l-0.297,0c-0.109,0 -0.197,-0.019 -0.265,-0.058c-0.067,-0.038 -0.119,-0.1 -0.155,-0.184l0.111,-0.072c0.024,0.055 0.06,0.095 0.107,0.121c0.047,0.027 0.114,0.041 0.202,0.044l0,-0.148Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M58.205,97.381l0,-0.261l1.663,-0c-0.059,-0.063 -0.119,-0.145 -0.179,-0.247c-0.06,-0.102 -0.105,-0.194 -0.135,-0.275l0.252,-0c0.069,0.146 0.152,0.273 0.25,0.383c0.097,0.109 0.192,0.186 0.284,0.232l-0,0.168l-2.135,-0Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M58.762,98.049l0.023,0.274c-0.133,0.021 -0.234,0.068 -0.301,0.142c-0.067,0.074 -0.101,0.163 -0.101,0.267c0,0.126 0.048,0.232 0.143,0.319c0.094,0.087 0.22,0.131 0.377,0.131c0.149,0 0.266,-0.042 0.352,-0.125c0.086,-0.084 0.129,-0.194 0.129,-0.329c0,-0.084 -0.019,-0.16 -0.057,-0.228c-0.038,-0.067 -0.088,-0.12 -0.149,-0.159l0.032,-0.245l1.092,0.206l0,1.057l-0.249,-0l-0,-0.848l-0.572,-0.115c0.089,0.128 0.134,0.262 0.134,0.402c-0,0.185 -0.065,0.342 -0.193,0.47c-0.129,0.127 -0.294,0.191 -0.496,0.191c-0.193,-0 -0.359,-0.056 -0.499,-0.168c-0.172,-0.137 -0.258,-0.323 -0.258,-0.559c-0,-0.193 0.054,-0.351 0.162,-0.473c0.109,-0.122 0.252,-0.192 0.431,-0.21Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M72.623,95.683l-0.275,-0l0,-1.537c0.069,-0.002 0.135,0.009 0.199,0.033c0.104,0.04 0.207,0.102 0.309,0.188c0.101,0.087 0.219,0.211 0.352,0.374c0.207,0.252 0.371,0.423 0.492,0.512c0.121,0.089 0.236,0.133 0.344,0.133c0.113,0 0.208,-0.04 0.286,-0.121c0.077,-0.081 0.116,-0.186 0.116,-0.316c0,-0.138 -0.041,-0.248 -0.123,-0.33c-0.083,-0.083 -0.197,-0.124 -0.343,-0.126l0.03,-0.293c0.219,0.02 0.386,0.096 0.501,0.227c0.114,0.131 0.172,0.307 0.172,0.528c-0,0.223 -0.062,0.399 -0.186,0.529c-0.124,0.131 -0.277,0.196 -0.46,0.196c-0.093,-0 -0.184,-0.019 -0.274,-0.058c-0.09,-0.038 -0.185,-0.101 -0.284,-0.189c-0.099,-0.088 -0.236,-0.235 -0.409,-0.44c-0.144,-0.171 -0.241,-0.281 -0.293,-0.33c-0.051,-0.049 -0.102,-0.089 -0.154,-0.12l-0,1.14Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M55.974,85.925h43.913v0.675h-43.913z"/>
<path
android:fillColor="#FF000000"
android:pathData="M61.086,86.551h0.548v5.866h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M59.209,86.332h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M78.263,86.449h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M75.96,86.536h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M73.483,86.579h0.548v5.866h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M70.92,86.449h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M68.448,86.261h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M63.473,86.48h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M65.945,86.355h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M97.991,86.318h0.548v5.866h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M95.514,86.579h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M93.255,86.579h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M90.778,86.666h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M88.171,86.492h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M85.824,86.536h0.548v5.866h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M83.304,86.536h0.565v3.52h-0.565z"/>
<path
android:fillColor="#FF000000"
android:pathData="M80.865,86.548h0.548v3.52h-0.548z"/>
<path
android:fillColor="#FF000000"
android:pathData="M79.48,86.318h0.548v6.214h-0.548z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="640dp"
android:height="512dp"
android:viewportWidth="640"
android:viewportHeight="512">
<path
android:fillColor="@android:color/white"
android:pathData="M592,192L473.26,192c12.69,29.59 7.12,65.2 -17,89.32L320,417.58L320,464c0,26.51 21.49,48 48,48h224c26.51,0 48,-21.49 48,-48L640,240c0,-26.51 -21.49,-48 -48,-48zM480,376c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM433.63,189.3L258.7,14.37c-19.16,-19.16 -50.23,-19.16 -69.39,0L14.37,189.3c-19.16,19.16 -19.16,50.23 0,69.39L189.3,433.63c19.16,19.16 50.23,19.16 69.39,0L433.63,258.7c19.16,-19.17 19.16,-50.24 0,-69.4zM96,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,376c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,120c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM352,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24z"/>
</vector>

View file

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
android:fillColor="#fff"/>
<path
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="30.4518"
android:startX="11.6122"
android:endY="30.419544"
android:endX="52.3879"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFB3B3B3"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FF000000"
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
<path
android:fillColor="#FF000000"
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M18.06,22.99h1.66c0.84,0 1.53,-0.64 1.63,-1.46L23,5.05h-5L18,1h-1.97v4.05h-4.97l0.3,2.34c1.71,0.47 3.31,1.32 4.27,2.26 1.44,1.42 2.43,2.89 2.43,5.29v8.05zM1,21.99L1,21h15.03v0.99c0,0.55 -0.45,1 -1.01,1L2.01,22.99c-0.56,0 -1.01,-0.45 -1.01,-1zM16.03,14.99c0,-8 -15.03,-8 -15.03,0h15.03zM1.02,17h15v2h-15z"/>
</vector>

View file

@ -0,0 +1,45 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="30.4518"
android:startX="11.6122"
android:endY="30.419544"
android:endX="52.3879"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFB3B3B3"/>
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FF000000"
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
<path
android:fillColor="#FF000000"
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
<path
android:pathData="M32,32m-27.5,0a27.5,27.5 0,1 1,55 0a27.5,27.5 0,1 1,-55 0"
android:fillColor="@android:color/white"/>
<path
android:fillColor="#FF000000"
android:pathData="M21.824,34.228l1.704,0.498c-0.358,1.621 -1,2.857 -1.928,3.708c-0.929,0.851 -2.063,1.277 -3.404,1.277c-1.388,-0 -2.517,-0.327 -3.387,-0.982c-0.869,-0.654 -1.531,-1.602 -1.985,-2.843c-0.454,-1.241 -0.681,-2.574 -0.681,-3.998c0,-1.553 0.257,-2.908 0.769,-4.064c0.512,-1.156 1.242,-2.034 2.187,-2.635c0.946,-0.6 1.987,-0.9 3.123,-0.9c1.288,0 2.372,0.38 3.25,1.14c0.879,0.759 1.491,1.827 1.836,3.204l-1.678,0.458c-0.298,-1.085 -0.732,-1.875 -1.3,-2.371c-0.568,-0.495 -1.282,-0.742 -2.143,-0.742c-0.99,-0 -1.817,0.275 -2.482,0.824c-0.664,0.549 -1.131,1.287 -1.401,2.212c-0.269,0.926 -0.404,1.881 -0.404,2.864c0,1.268 0.16,2.375 0.479,3.321c0.319,0.946 0.815,1.653 1.489,2.121c0.673,0.468 1.402,0.702 2.187,0.702c0.955,0 1.763,-0.319 2.425,-0.956c0.661,-0.638 1.109,-1.584 1.344,-2.838Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M31.653,33.607l0,-1.749l5.455,-0.011l-0,5.534c-0.837,0.773 -1.701,1.355 -2.591,1.745c-0.89,0.39 -1.804,0.585 -2.741,0.585c-1.265,-0 -2.414,-0.314 -3.448,-0.941c-1.033,-0.627 -1.814,-1.535 -2.341,-2.721c-0.527,-1.187 -0.79,-2.513 -0.79,-3.978c-0,-1.451 0.262,-2.806 0.786,-4.064c0.524,-1.258 1.278,-2.192 2.262,-2.802c0.984,-0.611 2.117,-0.916 3.399,-0.916c0.931,0 1.773,0.175 2.526,0.524c0.752,0.349 1.342,0.836 1.77,1.46c0.427,0.624 0.752,1.438 0.975,2.441l-1.537,0.489c-0.194,-0.76 -0.434,-1.357 -0.721,-1.791c-0.287,-0.434 -0.697,-0.781 -1.23,-1.042c-0.532,-0.262 -1.124,-0.392 -1.774,-0.392c-0.779,-0 -1.452,0.137 -2.02,0.412c-0.568,0.275 -1.027,0.636 -1.375,1.083c-0.348,0.448 -0.619,0.939 -0.813,1.475c-0.328,0.923 -0.491,1.923 -0.491,3.001c-0,1.329 0.197,2.442 0.592,3.337c0.396,0.895 0.971,1.56 1.727,1.994c0.755,0.434 1.557,0.651 2.406,0.651c0.738,-0 1.459,-0.165 2.161,-0.494c0.703,-0.329 1.236,-0.68 1.599,-1.053l-0,-2.777l-3.786,0Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M39.568,39.456l-0,-14.912l2.565,-0l3.048,10.559c0.281,0.983 0.486,1.719 0.614,2.207c0.147,-0.542 0.375,-1.339 0.686,-2.39l3.083,-10.376l2.293,-0l-0,14.912l-1.643,0l-0,-12.481l-3.742,12.481l-1.537,0l-3.725,-12.695l0,12.695l-1.642,0Z"
android:fillType="nonZero"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M34.9527,3.6697C32.9895,3.458 31.0105,3.458 29.0473,3.6697L28.2608,9.24C26.4699,9.5448 24.7219,10.0669 23.0535,10.7961L19.4324,6.543C17.6686,7.4441 16.0037,8.5334 14.4648,9.7918L16.7622,14.9098C15.4176,16.1519 14.2242,17.5533 13.2085,19.0841L7.9023,17.4981C6.898,19.227 6.0756,21.0591 5.4492,22.9644L10.1018,26.006C9.6302,27.7901 9.3704,29.6257 9.3293,31.4731L4.0231,33.0573C4.0966,35.0648 4.3783,37.0588 4.8639,39.0057L10.3931,39.0057C10.9443,40.7654 11.7011,42.4527 12.6477,44.0287L9.0266,48.2817C10.1543,49.9301 11.4509,51.4518 12.8935,52.8233L17.5453,49.7808C18.9442,50.9578 20.477,51.9602 22.1113,52.7663L21.323,58.3357C23.148,59.102 25.0473,59.6692 26.9896,60.0293L29.2861,54.9105C31.0893,55.1312 32.9108,55.1312 34.7139,54.9105L37.0104,60.0293C38.9527,59.6692 40.852,59.102 42.677,58.3357L41.8888,52.7663C43.523,51.9602 45.0558,50.9578 46.4548,49.7808L51.1065,52.8233C52.5492,51.4518 53.8457,49.9301 54.9735,48.2817L51.3523,44.0287C52.299,42.4527 53.0557,40.7654 53.6069,39.0057L59.1361,39.0057C59.6217,37.0588 59.9034,35.0648 59.9769,33.0573L54.6707,31.4731C54.6296,29.6257 54.3698,27.7901 53.8982,26.006L58.5508,22.9644C57.9244,21.0591 57.102,19.227 56.0977,17.4981L50.7915,19.0841C49.7758,17.5533 48.5825,16.1519 47.2378,14.9098L49.5352,9.7918C47.9963,8.5334 46.3314,7.4441 44.5676,6.543L40.9465,10.7961C39.2781,10.0669 37.5301,9.5448 35.7392,9.24L34.9527,3.6697ZM32,18.61C39.2624,18.61 45.1582,24.61 45.1582,31.9997C45.1582,39.3902 39.2624,45.3893 32,45.3893C24.7376,45.3893 18.8418,39.3902 18.8418,31.9997C18.8418,24.61 24.7376,18.61 32,18.61Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -0,0 +1,87 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
android:strokeAlpha="0.96"
android:strokeWidth="0.84"
android:fillColor="?attr/text_color"
android:strokeColor="#fff"/>
<path
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M17.119,8.385h1.107v10.439h-1.107z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z"
android:fillColor="#fff"/>
<path
android:fillColor="@android:color/white"
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/white"
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/darker_gray"
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z"
android:fillAlpha="0.96"/>
<path
android:fillColor="@android:color/darker_gray"
android:pathData="M60.657,36.693l-22.108,0c-0.966,0 -1.751,0.785 -1.751,1.752l-0,0.681c-0,0.447 0.363,0.811 0.811,0.811l23.048,-0l0,-3.244Z"
android:fillAlpha="0.96"/>
</vector>

View file

@ -0,0 +1,4 @@
<vector android:height="28.8dp" android:viewportHeight="512"
android:viewportWidth="640" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M622.34,153.2L343.4,67.5c-15.2,-4.67 -31.6,-4.67 -46.79,0L17.66,153.2c-23.54,7.23 -23.54,38.36 0,45.59l48.63,14.94c-10.67,13.19 -17.23,29.28 -17.88,46.9C38.78,266.15 32,276.11 32,288c0,10.78 5.68,19.85 13.86,25.65L20.33,428.53C18.11,438.52 25.71,448 35.94,448h56.11c10.24,0 17.84,-9.48 15.62,-19.47L82.14,313.65C90.32,307.85 96,298.78 96,288c0,-11.57 -6.47,-21.25 -15.66,-26.87 0.76,-15.02 8.44,-28.3 20.69,-36.72L296.6,284.5c9.06,2.78 26.44,6.25 46.79,0l278.95,-85.7c23.55,-7.24 23.55,-38.36 0,-45.6zM352.79,315.09c-28.53,8.76 -52.84,3.92 -65.59,0l-145.02,-44.55L128,384c0,35.35 85.96,64 192,64s192,-28.65 192,-64l-14.18,-113.47 -145.03,44.56z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>

View file

@ -0,0 +1,52 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M6.171,24.3397C3.8502,26.496 3.5322,29.698 5.4601,31.4917C7.3872,33.2847 10.8312,32.9912 13.152,30.835L6.171,24.3397ZM6.1447,24.3153L13.1257,30.8105L32.4135,12.8898L25.4325,6.3946L6.1447,24.3153Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M27.8111,21.5928C28.4437,21.5932 28.9565,21.048 28.9569,20.3756C28.9573,19.7033 28.4444,19.1566 27.8126,19.1562C27.18,19.1558 26.6664,19.701 26.666,20.3742L27.8118,20.3749L27.8111,21.5928Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M28.3077,20.9977C28.4591,20.8544 28.4651,20.615 28.3218,20.4636L27.8025,19.9148C27.6593,19.7634 27.4206,19.7567 27.2692,19.9L13.0015,33.3152C12.8501,33.4584 13.1194,33.5198 13.2627,33.6712L13.7819,34.22C13.9252,34.3715 14.1646,34.3788 14.316,34.2355L28.3077,20.9977Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M12.8796,30.7117l1.4542,1.4634l-1.2991,1.2909l-1.4542,-1.4634z"
android:fillColor="#ffffff"/>
<path
android:pathData="M11.2926,57.0326L15.0819,53.5125L15.523,53.923L11.7337,57.4431L10.9249,57.7851L11.2926,57.0326Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M16.3239,48.4068l4.6153,4.2949l-3.3673,3.1281l-4.6153,-4.2949z"
android:strokeWidth="1.15"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M32.6362,32.3306l5.8109,5.4075l-16.8087,15.6146l-5.8109,-5.4075z"
android:strokeWidth="0.68"
android:fillColor="#00000000"
android:strokeColor="#ffffff"/>
<path
android:pathData="M30.0742,35.3171l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M19.738,44.8949l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M21.8556,42.9278l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M23.955,40.9775l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M26.0246,39.0549l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M28.0977,37.1291l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
android:fillColor="#ffffff"/>
<path
android:pathData="M50.4865,14.7282C53.0833,12.3159 56.7436,11.8079 58.6621,13.5932C60.5806,15.3785 60.0311,18.7813 57.4343,21.1936L38.5619,38.7252L31.6141,32.2598L50.4865,14.7282Z"
android:fillColor="#ffffff"/>
</vector>

View file

@ -0,0 +1,422 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="128dp"
android:height="128dp"
android:viewportWidth="128"
android:viewportHeight="128">
<path
android:pathData="M124.703,45.511c-1.189,-11.934 -8.458,-17.836 -19.136,-18.791c-27.785,-1.202 -55.39,-2.279 -84.289,0.703c-10.852,0.51 -19.086,7.207 -19.086,18.031c-0.033,5.986 -0.544,12.118 -0.556,17.598c-0.173,6.469 -0.009,13.074 0.614,19.864c-0.236,10.908 7.856,18.079 19.027,18.371c27.174,0.708 55.195,2.101 83.936,0.41c10.133,-0.597 18.342,-6.919 19.256,-18.545c0.491,-12.578 0.984,-25.22 0.234,-37.641Z"
android:fillColor="#1f1e1c"/>
<group>
<clip-path
android:pathData="M124.703,45.511c-1.189,-11.934 -8.458,-17.836 -19.136,-18.791c-27.785,-1.202 -55.39,-2.279 -84.289,0.703c-10.852,0.51 -19.086,7.207 -19.086,18.031c-0.033,5.986 -0.544,12.118 -0.556,17.598c-0.173,6.469 -0.009,13.074 0.614,19.864c-0.236,10.908 7.856,18.079 19.027,18.371c27.174,0.708 55.195,2.101 83.936,0.41c10.133,-0.597 18.342,-6.919 19.256,-18.545c0.491,-12.578 0.984,-25.22 0.234,-37.641Z"/>
<path
android:fillColor="#FF000000"
android:pathData="M112.873,28.353l-1.49,-0.352l-0,72.139l1.45,-0.397l0.04,-71.39Z"/>
</group>
<path
android:pathData="M104.774,49.218c-0,-7.339 -5.958,-13.297 -13.297,-13.297l-67.927,0c-7.338,0 -13.296,5.958 -13.296,13.297l-0,31.707c-0,7.338 5.958,13.296 13.296,13.296l67.927,0c7.339,0 13.297,-5.958 13.297,-13.296l-0,-31.707Z"
android:fillColor="#a29a9a"/>
<path
android:fillColor="#FF000000"
android:pathData="M104.208,49.433c0,-7.235 -5.873,-13.108 -13.108,-13.108l-67.246,-0c-7.235,-0 -13.109,5.873 -13.109,13.108l0,31.26c0,7.234 5.874,13.108 13.109,13.108l67.246,-0c7.235,-0 13.108,-5.874 13.108,-13.108l0,-31.26Z"/>
<path
android:pathData="M25.744,47.631c0.013,-0.064 0.002,-0.111 -0.031,-0.141c-0.034,-0.03 -0.101,-0.052 -0.203,-0.065c-0.044,-0.009 -0.067,-0.035 -0.067,-0.076c0,-0.009 0.002,-0.02 0.005,-0.031c0.003,-0.011 0.006,-0.025 0.01,-0.04c0.095,0.009 0.189,0.016 0.281,0.021c0.092,0.005 0.178,0.007 0.258,0.007c0.067,0 0.148,-0.002 0.243,-0.007c0.096,-0.005 0.186,-0.012 0.272,-0.021c0.006,0.031 0.01,0.055 0.01,0.071c-0,0.045 -0.023,0.068 -0.067,0.072c-0.102,0.012 -0.174,0.035 -0.215,0.066c-0.041,0.032 -0.068,0.08 -0.081,0.144l-0.472,2.452c-0.013,0.064 -0.002,0.11 0.033,0.139c0.035,0.028 0.107,0.05 0.215,0.066c0.041,0.01 0.062,0.034 0.062,0.072c-0,0.019 -0.003,0.044 -0.01,0.076c-0.095,-0.009 -0.192,-0.016 -0.291,-0.021c-0.098,-0.005 -0.188,-0.007 -0.267,-0.007c-0.067,-0 -0.147,0.002 -0.241,0.007c-0.094,0.005 -0.184,0.012 -0.27,0.021c-0.006,-0.032 -0.009,-0.057 -0.009,-0.076c-0,-0.038 0.019,-0.061 0.057,-0.067c0.102,-0.016 0.175,-0.039 0.22,-0.069c0.044,-0.03 0.073,-0.077 0.085,-0.141l0.473,-2.452Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M28.22,48.967c0.019,-0.086 0.029,-0.158 0.029,-0.215c-0,-0.092 -0.045,-0.138 -0.134,-0.138c-0.047,-0 -0.106,0.026 -0.176,0.078c-0.07,0.053 -0.143,0.121 -0.22,0.205c-0.076,0.085 -0.152,0.179 -0.226,0.284c-0.075,0.105 -0.141,0.212 -0.198,0.32c-0.029,0.054 -0.057,0.114 -0.084,0.179c-0.027,0.065 -0.051,0.132 -0.071,0.2c-0.021,0.069 -0.037,0.136 -0.048,0.203c-0.011,0.067 -0.017,0.129 -0.017,0.186c0,0.045 0.005,0.088 0.014,0.129c-0.12,0.013 -0.246,0.037 -0.377,0.072c-0.025,-0.016 -0.038,-0.035 -0.038,-0.058c0,-0.006 0.002,-0.019 0.005,-0.04c0.003,-0.021 0.006,-0.038 0.01,-0.05c0.073,-0.369 0.13,-0.66 0.171,-0.873c0.042,-0.214 0.073,-0.375 0.093,-0.485c0.021,-0.109 0.034,-0.181 0.039,-0.214c0.004,-0.034 0.007,-0.054 0.007,-0.06c-0,-0.038 -0.013,-0.057 -0.038,-0.057c-0.013,-0 -0.032,0.005 -0.058,0.016l-0.157,0.067c-0.026,0.011 -0.045,0.017 -0.057,0.017c-0.016,-0 -0.03,-0.01 -0.041,-0.029c-0.011,-0.019 -0.02,-0.041 -0.026,-0.067c0.057,-0.035 0.125,-0.072 0.203,-0.112c0.078,-0.039 0.153,-0.076 0.226,-0.109c0.073,-0.034 0.137,-0.062 0.191,-0.084c0.054,-0.022 0.089,-0.033 0.105,-0.033c0.022,-0 0.041,0.005 0.057,0.016c0.016,0.011 0.024,0.03 0.024,0.055c0,0.01 -0.001,0.022 -0.002,0.036c-0.002,0.014 -0.004,0.029 -0.007,0.045l-0.172,0.831l0.019,-0c0.083,-0.14 0.169,-0.271 0.258,-0.392c0.089,-0.121 0.179,-0.225 0.269,-0.312c0.091,-0.088 0.182,-0.156 0.275,-0.205c0.092,-0.05 0.186,-0.074 0.281,-0.074c0.089,-0 0.16,0.022 0.212,0.066c0.053,0.045 0.079,0.118 0.079,0.22c0,0.038 -0.003,0.083 -0.009,0.134c-0.007,0.05 -0.015,0.101 -0.024,0.152l-0.244,1.145c-0.009,0.045 -0.014,0.075 -0.014,0.091c0,0.041 0.019,0.062 0.057,0.062c0.019,0 0.042,-0.006 0.067,-0.017c0.026,-0.011 0.05,-0.023 0.074,-0.038c0.024,-0.014 0.045,-0.027 0.065,-0.038c0.019,-0.011 0.035,-0.017 0.047,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.057,0.041 -0.116,0.08 -0.176,0.117c-0.061,0.036 -0.121,0.069 -0.179,0.097c-0.059,0.029 -0.114,0.052 -0.165,0.07c-0.051,0.017 -0.092,0.026 -0.124,0.026c-0.035,-0 -0.068,-0.007 -0.098,-0.022c-0.03,-0.014 -0.045,-0.048 -0.045,-0.102c-0,-0.01 0.001,-0.025 0.005,-0.045c0.003,-0.021 0.006,-0.039 0.009,-0.055l0.267,-1.274Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M30.358,48.823c-0.035,-0.003 -0.057,-0.011 -0.067,-0.026c-0.009,-0.014 -0.016,-0.031 -0.019,-0.05c-0.016,-0.095 -0.052,-0.169 -0.11,-0.222c-0.057,-0.052 -0.135,-0.078 -0.234,-0.078c-0.101,-0 -0.189,0.024 -0.262,0.074c-0.073,0.049 -0.11,0.12 -0.11,0.212c0,0.063 0.028,0.128 0.084,0.193c0.055,0.065 0.121,0.131 0.198,0.198c0.057,0.051 0.118,0.103 0.181,0.158c0.064,0.054 0.121,0.109 0.172,0.164c0.051,0.056 0.093,0.114 0.126,0.174c0.034,0.061 0.05,0.123 0.05,0.186c0,0.093 -0.02,0.179 -0.062,0.258c-0.041,0.08 -0.097,0.149 -0.169,0.208c-0.072,0.059 -0.156,0.105 -0.253,0.14c-0.097,0.035 -0.199,0.053 -0.308,0.053c-0.111,-0 -0.219,-0.01 -0.324,-0.029c-0.105,-0.019 -0.204,-0.049 -0.296,-0.09c0.026,-0.096 0.045,-0.184 0.06,-0.265c0.014,-0.081 0.024,-0.173 0.031,-0.275l0.047,0c0.077,0 0.115,0.027 0.115,0.082c-0.006,0.133 0.025,0.237 0.093,0.31c0.068,0.073 0.163,0.109 0.284,0.109c0.124,0 0.226,-0.032 0.305,-0.097c0.08,-0.066 0.12,-0.151 0.12,-0.256c-0,-0.047 -0.012,-0.093 -0.036,-0.138c-0.024,-0.045 -0.055,-0.087 -0.093,-0.126c-0.038,-0.04 -0.081,-0.08 -0.129,-0.12c-0.048,-0.04 -0.097,-0.08 -0.148,-0.121c-0.095,-0.08 -0.182,-0.163 -0.26,-0.251c-0.078,-0.087 -0.117,-0.188 -0.117,-0.303c0,-0.086 0.02,-0.165 0.06,-0.239c0.039,-0.073 0.094,-0.135 0.162,-0.188c0.068,-0.052 0.148,-0.094 0.239,-0.124c0.09,-0.03 0.186,-0.045 0.288,-0.045c0.185,-0 0.358,0.043 0.52,0.128c-0.016,0.048 -0.029,0.109 -0.04,0.182c-0.011,0.073 -0.02,0.146 -0.026,0.219l-0.072,-0.005Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M31.47,47.788c-0.061,0 -0.108,-0.018 -0.143,-0.055c-0.035,-0.036 -0.053,-0.085 -0.053,-0.145c0,-0.086 0.029,-0.163 0.088,-0.232c0.059,-0.068 0.13,-0.102 0.213,-0.102c0.063,-0 0.109,0.02 0.136,0.062c0.027,0.041 0.04,0.094 0.04,0.157c0,0.08 -0.027,0.152 -0.081,0.217c-0.054,0.065 -0.121,0.098 -0.2,0.098ZM31.226,50.016c-0.003,0.013 -0.006,0.03 -0.009,0.05c-0.003,0.021 -0.005,0.036 -0.005,0.046c0,0.038 0.019,0.057 0.057,0.057c0.023,0 0.046,-0.006 0.069,-0.017c0.024,-0.011 0.048,-0.023 0.072,-0.038c0.024,-0.014 0.045,-0.027 0.064,-0.038c0.02,-0.011 0.035,-0.017 0.048,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.054,0.041 -0.112,0.08 -0.174,0.117c-0.062,0.036 -0.122,0.069 -0.179,0.097c-0.057,0.029 -0.111,0.052 -0.162,0.07c-0.051,0.017 -0.093,0.026 -0.124,0.026c-0.035,-0 -0.069,-0.007 -0.101,-0.022c-0.031,-0.014 -0.047,-0.048 -0.047,-0.102c-0,-0.01 0.001,-0.026 0.004,-0.05c0.004,-0.024 0.007,-0.041 0.01,-0.05c0.07,-0.341 0.126,-0.612 0.167,-0.814c0.041,-0.202 0.072,-0.356 0.093,-0.463c0.021,-0.106 0.034,-0.177 0.041,-0.212c0.006,-0.035 0.009,-0.056 0.009,-0.062c0,-0.038 -0.014,-0.057 -0.043,-0.057c-0.013,-0 -0.032,0.005 -0.057,0.016c-0.026,0.011 -0.053,0.023 -0.081,0.034c-0.029,0.011 -0.055,0.022 -0.079,0.033c-0.024,0.011 -0.042,0.017 -0.055,0.017c-0.019,-0 -0.033,-0.01 -0.043,-0.029c-0.009,-0.019 -0.017,-0.041 -0.024,-0.067c0.058,-0.031 0.124,-0.067 0.201,-0.107c0.076,-0.04 0.15,-0.077 0.222,-0.112c0.071,-0.035 0.135,-0.064 0.191,-0.086c0.055,-0.022 0.093,-0.033 0.112,-0.033c0.054,-0 0.081,0.027 0.081,0.081c-0,0.022 -0.003,0.046 -0.01,0.071l-0.315,1.565Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M33.374,48.532c-0.039,-0.012 -0.083,-0.023 -0.134,-0.031c-0.051,-0.008 -0.099,-0.012 -0.143,-0.012c-0.137,0 -0.256,0.035 -0.358,0.105c-0.102,0.07 -0.187,0.166 -0.255,0.287c-0.069,0.121 -0.12,0.262 -0.153,0.424c-0.033,0.163 -0.05,0.336 -0.05,0.521c-0,0.117 0.016,0.202 0.048,0.255c0.031,0.052 0.079,0.079 0.143,0.079c0.057,-0 0.119,-0.03 0.186,-0.089c0.067,-0.059 0.134,-0.135 0.203,-0.229c0.068,-0.094 0.133,-0.199 0.195,-0.317c0.062,-0.118 0.117,-0.237 0.165,-0.358c0.048,-0.121 0.085,-0.237 0.112,-0.348c0.027,-0.112 0.041,-0.207 0.041,-0.287ZM31.87,51.085c0.045,0.096 0.113,0.176 0.206,0.241c0.092,0.065 0.192,0.098 0.3,0.098c0.134,-0 0.252,-0.055 0.353,-0.165c0.102,-0.109 0.175,-0.269 0.22,-0.479l0.234,-1.145l-0.019,-0c-0.134,0.28 -0.281,0.488 -0.442,0.625c-0.16,0.137 -0.314,0.205 -0.46,0.205c-0.048,-0 -0.096,-0.007 -0.143,-0.022c-0.048,-0.014 -0.089,-0.039 -0.124,-0.076c-0.035,-0.036 -0.064,-0.086 -0.086,-0.148c-0.023,-0.062 -0.034,-0.142 -0.034,-0.241c0,-0.257 0.039,-0.49 0.117,-0.699c0.078,-0.208 0.179,-0.385 0.303,-0.529c0.124,-0.145 0.262,-0.257 0.413,-0.334c0.151,-0.078 0.298,-0.117 0.441,-0.117c0.112,-0 0.214,0.004 0.308,0.014c0.094,0.009 0.204,0.027 0.332,0.052l-0.439,2.243c-0.035,0.181 -0.094,0.335 -0.177,0.46c-0.083,0.126 -0.175,0.23 -0.277,0.311c-0.101,0.081 -0.209,0.14 -0.322,0.176c-0.113,0.037 -0.217,0.055 -0.312,0.055c-0.239,0 -0.425,-0.032 -0.559,-0.095c0.023,-0.07 0.04,-0.131 0.053,-0.182c0.013,-0.051 0.024,-0.117 0.033,-0.2l0.081,-0.048Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M34.609,47.449c0,-0.016 -0.002,-0.032 -0.007,-0.047c-0.005,-0.016 -0.018,-0.024 -0.04,-0.024c-0.01,-0 -0.027,0.002 -0.05,0.007c-0.024,0.005 -0.049,0.009 -0.074,0.014c-0.026,0.005 -0.05,0.009 -0.072,0.012c-0.022,0.003 -0.038,0.005 -0.048,0.005c-0.044,-0 -0.067,-0.033 -0.067,-0.1c0.144,-0.038 0.276,-0.077 0.399,-0.117c0.122,-0.04 0.244,-0.084 0.365,-0.131c0.038,0.025 0.057,0.055 0.057,0.09c0,0.013 -0.001,0.026 -0.005,0.041c-0.003,0.014 -0.006,0.026 -0.009,0.036l-0.406,2.047l0.015,-0c0.085,-0.14 0.171,-0.271 0.257,-0.392c0.086,-0.121 0.174,-0.225 0.263,-0.312c0.089,-0.088 0.179,-0.156 0.272,-0.205c0.092,-0.05 0.184,-0.074 0.276,-0.074c0.093,-0 0.167,0.022 0.222,0.066c0.056,0.045 0.084,0.118 0.084,0.22c-0,0.038 -0.003,0.083 -0.01,0.134c-0.006,0.05 -0.014,0.101 -0.024,0.152l-0.243,1.145c-0.003,0.013 -0.006,0.029 -0.009,0.048c-0.004,0.019 -0.005,0.033 -0.005,0.043c-0,0.041 0.019,0.062 0.057,0.062c0.019,0 0.041,-0.006 0.067,-0.017c0.025,-0.011 0.05,-0.023 0.074,-0.038c0.024,-0.014 0.045,-0.027 0.064,-0.038c0.019,-0.011 0.035,-0.017 0.048,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.058,0.041 -0.116,0.08 -0.177,0.117c-0.06,0.036 -0.12,0.069 -0.179,0.097c-0.059,0.029 -0.113,0.052 -0.162,0.07c-0.049,0.017 -0.09,0.026 -0.122,0.026c-0.035,-0 -0.068,-0.007 -0.1,-0.022c-0.032,-0.014 -0.048,-0.048 -0.048,-0.102c0,-0.01 0.002,-0.026 0.005,-0.05c0.003,-0.024 0.007,-0.041 0.01,-0.05l0.267,-1.274c0.019,-0.089 0.029,-0.161 0.029,-0.215c-0,-0.092 -0.045,-0.138 -0.134,-0.138c-0.045,-0 -0.1,0.023 -0.167,0.071c-0.067,0.048 -0.138,0.112 -0.212,0.193c-0.075,0.081 -0.151,0.176 -0.227,0.284c-0.076,0.108 -0.148,0.221 -0.215,0.339c-0.028,0.054 -0.056,0.114 -0.083,0.179c-0.027,0.065 -0.05,0.133 -0.069,0.203c-0.02,0.07 -0.035,0.138 -0.046,0.205c-0.011,0.067 -0.016,0.127 -0.016,0.181c-0,0.045 0.004,0.088 0.014,0.129c-0.121,0.013 -0.247,0.037 -0.377,0.072c-0.029,-0.016 -0.043,-0.035 -0.043,-0.058c-0,-0.012 0.002,-0.027 0.005,-0.045c0.003,-0.017 0.006,-0.033 0.009,-0.045l0.463,-2.386c0.019,-0.092 0.033,-0.184 0.043,-0.274c0.01,-0.091 0.014,-0.162 0.014,-0.213Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M36.938,48.275c0.025,-0.121 0.038,-0.218 0.038,-0.291c0,-0.042 -0.005,-0.085 -0.014,-0.129c0.06,-0.01 0.124,-0.019 0.191,-0.029c0.066,-0.009 0.133,-0.024 0.2,-0.043c0.025,0.019 0.038,0.038 0.038,0.058c0,0.006 -0.001,0.019 -0.002,0.038c-0.002,0.019 -0.004,0.035 -0.007,0.047l-0.082,0.43l0.492,-0c-0.01,0.029 -0.019,0.064 -0.029,0.105c-0.009,0.041 -0.017,0.079 -0.024,0.114c-0.079,-0.012 -0.16,-0.022 -0.243,-0.028c-0.083,-0.007 -0.161,-0.011 -0.234,-0.015l-0.262,1.489c-0.01,0.048 -0.014,0.081 -0.014,0.1c-0,0.077 0.046,0.115 0.138,0.115c0.048,-0 0.091,-0.006 0.131,-0.017c0.04,-0.011 0.076,-0.024 0.108,-0.04c0.028,-0.013 0.053,-0.025 0.073,-0.036c0.021,-0.011 0.038,-0.017 0.051,-0.017c0.035,0 0.055,0.03 0.062,0.091c-0.099,0.076 -0.206,0.137 -0.322,0.181c-0.117,0.045 -0.226,0.067 -0.327,0.067c-0.115,-0 -0.196,-0.018 -0.244,-0.055c-0.047,-0.037 -0.071,-0.091 -0.071,-0.165c-0,-0.035 0.003,-0.068 0.009,-0.1l0.301,-1.627l-0.348,0c0.006,-0.054 0.016,-0.095 0.031,-0.122c0.014,-0.027 0.039,-0.04 0.074,-0.04l0.272,-0l0.014,-0.081Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M19.38,44.017l-0.213,-1.272l-0.688,1.272l0.901,-0ZM17.885,45.119c-0.026,0.051 -0.039,0.093 -0.039,0.125c0,0.044 0.025,0.076 0.074,0.096c0.049,0.02 0.125,0.037 0.227,0.052c0.065,0.011 0.098,0.038 0.098,0.082c-0,0.018 -0.004,0.045 -0.011,0.081c-0.109,-0.01 -0.21,-0.019 -0.303,-0.024c-0.093,-0.006 -0.19,-0.008 -0.292,-0.008c-0.073,-0 -0.148,0.002 -0.226,0.005c-0.079,0.004 -0.165,0.013 -0.26,0.027c-0.003,-0.014 -0.007,-0.029 -0.011,-0.043c-0.003,-0.015 -0.005,-0.027 -0.005,-0.038c0,-0.048 0.031,-0.077 0.093,-0.088c0.189,-0.032 0.311,-0.102 0.365,-0.207l1.747,-3.214c0.021,-0.036 0.049,-0.055 0.081,-0.055c0.011,0 0.022,0.002 0.033,0.006c0.011,0.003 0.02,0.007 0.027,0.011l0.584,3.236c0.011,0.065 0.044,0.114 0.099,0.147c0.054,0.033 0.125,0.056 0.212,0.071c0.048,0.007 0.079,0.018 0.093,0.033c0.015,0.014 0.022,0.032 0.022,0.054c-0,0.018 -0.004,0.046 -0.011,0.082c-0.102,-0.007 -0.199,-0.014 -0.292,-0.019c-0.093,-0.006 -0.188,-0.008 -0.286,-0.008c-0.215,-0 -0.428,0.011 -0.639,0.032c-0.011,-0.025 -0.016,-0.052 -0.016,-0.081c-0,-0.048 0.034,-0.077 0.103,-0.088c0.048,-0.007 0.099,-0.023 0.153,-0.049c0.055,-0.025 0.082,-0.065 0.082,-0.12l0,-0.033c0,-0.014 -0.002,-0.031 -0.005,-0.049l-0.164,-0.911l-1.048,0l-0.485,0.895Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M22.315,45.588c-0.287,0 -0.532,-0.038 -0.733,-0.114c-0.202,-0.077 -0.367,-0.181 -0.494,-0.314c-0.128,-0.133 -0.22,-0.288 -0.279,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c0,-0.266 0.044,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.175,-0.211 0.394,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.931,-0.197c0.182,0 0.357,0.015 0.526,0.044c0.17,0.029 0.332,0.069 0.489,0.12c-0.011,0.106 -0.017,0.209 -0.017,0.311c0,0.073 0.003,0.146 0.009,0.218c0.005,0.073 0.011,0.146 0.019,0.219c-0.026,0.018 -0.058,0.027 -0.099,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.032,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.34,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.132,0.178 -0.233,0.386 -0.303,0.624c-0.069,0.239 -0.103,0.491 -0.103,0.756c-0,0.197 0.026,0.374 0.079,0.532c0.053,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.137,0.062 0.291,0.093 0.461,0.093c0.248,-0 0.443,-0.051 0.587,-0.153c0.144,-0.102 0.268,-0.265 0.374,-0.491c0.025,-0.058 0.069,-0.087 0.131,-0.087c0.022,-0 0.044,0.004 0.068,0.013c0.024,0.009 0.039,0.018 0.046,0.025c-0.054,0.116 -0.102,0.239 -0.144,0.368c-0.042,0.129 -0.085,0.274 -0.128,0.434c-0.08,0.015 -0.166,0.028 -0.257,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.176,0.02 -0.256,0.025c-0.08,0.005 -0.149,0.008 -0.208,0.008Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M25.66,45.588c-0.287,0 -0.532,-0.038 -0.733,-0.114c-0.202,-0.077 -0.367,-0.181 -0.494,-0.314c-0.128,-0.133 -0.22,-0.288 -0.279,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c0,-0.266 0.044,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.175,-0.211 0.394,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.931,-0.197c0.182,0 0.357,0.015 0.526,0.044c0.17,0.029 0.332,0.069 0.489,0.12c-0.011,0.106 -0.017,0.209 -0.017,0.311c0,0.073 0.003,0.146 0.009,0.218c0.005,0.073 0.011,0.146 0.019,0.219c-0.026,0.018 -0.059,0.027 -0.099,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.032,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.34,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.133,0.178 -0.233,0.386 -0.303,0.624c-0.069,0.239 -0.103,0.491 -0.103,0.756c-0,0.197 0.026,0.374 0.079,0.532c0.053,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.137,0.062 0.29,0.093 0.461,0.093c0.248,-0 0.443,-0.051 0.587,-0.153c0.144,-0.102 0.268,-0.265 0.374,-0.491c0.025,-0.058 0.069,-0.087 0.131,-0.087c0.022,-0 0.044,0.004 0.068,0.013c0.024,0.009 0.039,0.018 0.046,0.025c-0.054,0.116 -0.102,0.239 -0.144,0.368c-0.042,0.129 -0.085,0.274 -0.128,0.434c-0.08,0.015 -0.166,0.028 -0.257,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.176,0.02 -0.256,0.025c-0.08,0.005 -0.149,0.008 -0.208,0.008Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M30.402,44.306c-0.032,0.182 -0.09,0.351 -0.172,0.507c-0.081,0.157 -0.185,0.292 -0.311,0.407c-0.125,0.114 -0.272,0.204 -0.439,0.27c-0.167,0.065 -0.356,0.098 -0.567,0.098c-0.208,0 -0.388,-0.033 -0.541,-0.101c-0.152,-0.067 -0.276,-0.158 -0.371,-0.273c-0.094,-0.114 -0.158,-0.25 -0.191,-0.406c-0.032,-0.157 -0.031,-0.326 0.006,-0.508l0.376,-1.948c0.015,-0.076 -0.006,-0.131 -0.062,-0.163c-0.057,-0.033 -0.125,-0.053 -0.205,-0.06c-0.055,-0.008 -0.082,-0.037 -0.082,-0.088c0,-0.025 0.006,-0.058 0.017,-0.098c0.218,0.022 0.418,0.033 0.6,0.033c0.076,-0 0.175,-0.003 0.297,-0.008c0.122,-0.006 0.232,-0.014 0.33,-0.025c0.004,0.018 0.007,0.035 0.008,0.049c0.002,0.015 0.003,0.027 0.003,0.038c0,0.022 -0.006,0.041 -0.019,0.058c-0.013,0.016 -0.034,0.026 -0.063,0.03c-0.094,0.014 -0.173,0.039 -0.237,0.073c-0.064,0.035 -0.103,0.087 -0.117,0.156l-0.361,1.861c-0.025,0.138 -0.031,0.272 -0.019,0.403c0.013,0.131 0.049,0.249 0.107,0.352c0.058,0.104 0.139,0.188 0.243,0.251c0.103,0.064 0.233,0.096 0.39,0.096c0.131,-0 0.257,-0.019 0.379,-0.057c0.122,-0.039 0.235,-0.1 0.338,-0.186c0.104,-0.085 0.194,-0.197 0.27,-0.336c0.077,-0.138 0.135,-0.309 0.175,-0.512l0.355,-1.861c0.014,-0.073 -0.004,-0.128 -0.055,-0.164c-0.051,-0.036 -0.123,-0.062 -0.218,-0.076c-0.044,-0.004 -0.066,-0.033 -0.066,-0.088c0,-0.011 0.001,-0.023 0.003,-0.038c0.002,-0.014 0.005,-0.031 0.008,-0.049c0.109,0.011 0.199,0.019 0.268,0.025c0.069,0.005 0.14,0.008 0.213,0.008c0.065,-0 0.137,-0.002 0.215,-0.006c0.078,-0.003 0.165,-0.011 0.259,-0.021c0.004,0.018 0.008,0.034 0.011,0.049c0.004,0.014 0.006,0.027 0.006,0.038c-0,0.047 -0.024,0.074 -0.071,0.082c-0.091,0.014 -0.166,0.04 -0.224,0.076c-0.058,0.036 -0.095,0.087 -0.109,0.153l-0.377,1.959Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M32.618,44.077c-0.015,0.116 -0.038,0.192 -0.071,0.229c-0.033,0.036 -0.082,0.054 -0.148,0.054l-1.08,0c0.015,-0.116 0.037,-0.192 0.068,-0.229c0.031,-0.036 0.081,-0.054 0.15,-0.054l1.081,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M34.784,45.588c-0.287,0 -0.532,-0.038 -0.734,-0.114c-0.202,-0.077 -0.366,-0.181 -0.494,-0.314c-0.127,-0.133 -0.22,-0.288 -0.278,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c-0,-0.266 0.043,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.174,-0.211 0.393,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.93,-0.197c0.182,0 0.358,0.015 0.527,0.044c0.169,0.029 0.332,0.069 0.488,0.12c-0.01,0.106 -0.016,0.209 -0.016,0.311c0,0.073 0.003,0.146 0.008,0.218c0.006,0.073 0.012,0.146 0.019,0.219c-0.025,0.018 -0.058,0.027 -0.098,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.033,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.341,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.133,0.178 -0.234,0.386 -0.303,0.624c-0.069,0.239 -0.104,0.491 -0.104,0.756c0,0.197 0.027,0.374 0.08,0.532c0.052,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.136,0.062 0.29,0.093 0.461,0.093c0.247,-0 0.443,-0.051 0.587,-0.153c0.143,-0.102 0.268,-0.265 0.373,-0.491c0.026,-0.058 0.07,-0.087 0.131,-0.087c0.022,-0 0.045,0.004 0.069,0.013c0.023,0.009 0.039,0.018 0.046,0.025c-0.055,0.116 -0.103,0.239 -0.145,0.368c-0.041,0.129 -0.084,0.274 -0.128,0.434c-0.08,0.015 -0.165,0.028 -0.256,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.177,0.02 -0.257,0.025c-0.08,0.005 -0.149,0.008 -0.207,0.008Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M39.368,42.352c0.014,-0.072 0.002,-0.126 -0.038,-0.161c-0.04,-0.034 -0.117,-0.061 -0.23,-0.079c-0.051,-0.011 -0.076,-0.036 -0.076,-0.076c-0,-0.011 0.002,-0.025 0.005,-0.041c0.004,-0.016 0.008,-0.032 0.011,-0.046c0.109,0.007 0.218,0.014 0.325,0.021c0.107,0.008 0.205,0.011 0.292,0.011c0.076,0 0.169,-0.002 0.278,-0.008c0.109,-0.005 0.213,-0.014 0.311,-0.024c0.008,0.029 0.011,0.058 0.011,0.087c0,0.044 -0.023,0.067 -0.071,0.071c-0.109,0.018 -0.19,0.045 -0.243,0.082c-0.052,0.036 -0.086,0.091 -0.101,0.163l-0.534,2.8c-0.015,0.072 0.001,0.125 0.046,0.158c0.046,0.033 0.123,0.058 0.232,0.076c0.047,0.011 0.071,0.038 0.071,0.082c-0,0.022 -0.004,0.051 -0.011,0.087c-0.105,-0.01 -0.216,-0.019 -0.33,-0.024c-0.115,-0.006 -0.217,-0.008 -0.308,-0.008c-0.073,-0 -0.166,0.002 -0.279,0.008c-0.112,0.005 -0.218,0.014 -0.316,0.024c-0.007,-0.036 -0.011,-0.065 -0.011,-0.087c-0,-0.047 0.022,-0.074 0.065,-0.082c0.128,-0.022 0.216,-0.048 0.265,-0.079c0.049,-0.031 0.081,-0.083 0.096,-0.155l0.256,-1.337l-1.55,-0l-0.256,1.337c-0.015,0.072 -0,0.125 0.043,0.158c0.044,0.033 0.126,0.058 0.246,0.076c0.047,0.004 0.071,0.031 0.071,0.082c-0,0.022 -0.004,0.051 -0.011,0.087c-0.109,-0.01 -0.222,-0.019 -0.338,-0.024c-0.117,-0.006 -0.22,-0.008 -0.311,-0.008c-0.073,-0 -0.162,0.002 -0.268,0.008c-0.105,0.005 -0.205,0.014 -0.3,0.024c-0.011,-0.025 -0.016,-0.054 -0.016,-0.087c-0,-0.047 0.023,-0.073 0.071,-0.076c0.116,-0.018 0.199,-0.045 0.248,-0.079c0.049,-0.035 0.081,-0.089 0.096,-0.161l0.54,-2.8c0.014,-0.072 0.002,-0.128 -0.036,-0.166c-0.038,-0.038 -0.115,-0.066 -0.232,-0.085c-0.051,-0.003 -0.076,-0.029 -0.076,-0.076c-0,-0.026 0.005,-0.053 0.016,-0.082c0.106,0.011 0.21,0.019 0.314,0.025c0.104,0.005 0.201,0.008 0.292,0.008c0.073,-0 0.168,-0.003 0.287,-0.008c0.118,-0.006 0.226,-0.014 0.324,-0.025c0.011,0.029 0.017,0.056 0.017,0.082c-0,0.044 -0.026,0.069 -0.077,0.076c-0.116,0.019 -0.202,0.047 -0.256,0.085c-0.055,0.038 -0.089,0.094 -0.104,0.166l-0.246,1.25l1.55,-0l0.246,-1.25Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M41.278,42.347c0.014,-0.073 -0.006,-0.126 -0.06,-0.158c-0.055,-0.033 -0.126,-0.055 -0.213,-0.066c-0.051,-0.011 -0.077,-0.042 -0.077,-0.093c0,-0.011 0.001,-0.023 0.003,-0.038c0.002,-0.014 0.005,-0.031 0.008,-0.049c0.109,0.011 0.22,0.019 0.333,0.025c0.113,0.005 0.218,0.008 0.317,0.008l1.031,-0c0.156,-0 0.266,-0.006 0.327,-0.017c0.062,-0.01 0.113,-0.016 0.153,-0.016c0.047,0 0.077,0.022 0.087,0.066c0.008,0.061 0.017,0.155 0.028,0.281c0.011,0.125 0.032,0.268 0.065,0.428c-0.014,0.007 -0.033,0.015 -0.054,0.025c-0.022,0.009 -0.042,0.013 -0.06,0.013c-0.048,0 -0.079,-0.022 -0.093,-0.065c-0.047,-0.186 -0.117,-0.317 -0.207,-0.393c-0.091,-0.077 -0.228,-0.115 -0.41,-0.115l-0.682,0l-0.273,1.424l0.748,0c0.08,0 0.138,-0.027 0.175,-0.081c0.036,-0.055 0.069,-0.13 0.098,-0.224c0.007,-0.018 0.017,-0.033 0.03,-0.044c0.012,-0.011 0.033,-0.016 0.062,-0.016c0.033,-0 0.068,0.007 0.104,0.022c-0.022,0.087 -0.041,0.166 -0.057,0.237c-0.016,0.071 -0.031,0.143 -0.044,0.216c-0.013,0.072 -0.023,0.149 -0.033,0.229c-0.009,0.08 -0.017,0.171 -0.024,0.273c-0.033,0.01 -0.066,0.016 -0.098,0.016c-0.033,-0 -0.056,-0.009 -0.069,-0.027c-0.012,-0.019 -0.017,-0.039 -0.013,-0.06c0.007,-0.084 -0,-0.16 -0.022,-0.23c-0.022,-0.069 -0.073,-0.103 -0.153,-0.103l-0.742,-0l-0.256,1.353c-0.011,0.058 -0.003,0.097 0.024,0.117c0.027,0.02 0.072,0.03 0.134,0.03l0.627,0c0.157,0 0.297,-0.04 0.421,-0.12c0.123,-0.08 0.252,-0.218 0.387,-0.414c0.015,-0.019 0.028,-0.032 0.041,-0.041c0.013,-0.009 0.03,-0.014 0.052,-0.014c0.022,0 0.043,0.005 0.065,0.016c0.022,0.011 0.042,0.026 0.06,0.044c-0.018,0.036 -0.036,0.075 -0.054,0.115c-0.018,0.032 -0.037,0.071 -0.055,0.114c-0.018,0.044 -0.036,0.088 -0.054,0.131c-0.03,0.073 -0.053,0.144 -0.071,0.213c-0.019,0.069 -0.037,0.118 -0.055,0.147c-0.018,0.029 -0.047,0.044 -0.087,0.044c-0.062,-0 -0.124,-0.005 -0.186,-0.014c-0.062,-0.009 -0.145,-0.013 -0.251,-0.013l-1.288,-0c-0.076,-0 -0.17,0.002 -0.281,0.008c-0.111,0.005 -0.215,0.014 -0.313,0.024c-0.004,-0.018 -0.007,-0.034 -0.009,-0.049c-0.001,-0.014 -0.002,-0.027 -0.002,-0.038c-0,-0.018 0.005,-0.036 0.016,-0.054c0.011,-0.019 0.031,-0.03 0.06,-0.033c0.113,-0.018 0.197,-0.046 0.251,-0.082c0.055,-0.036 0.087,-0.086 0.098,-0.147l0.541,-2.805Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M44.628,43.711l0.011,-0.076l1.342,-1.217c0.073,-0.062 0.109,-0.118 0.109,-0.169c0,-0.066 -0.065,-0.109 -0.196,-0.131c-0.051,-0.011 -0.076,-0.038 -0.076,-0.082c-0,-0.026 0.003,-0.057 0.011,-0.093c0.105,0.011 0.196,0.019 0.272,0.025c0.077,0.005 0.162,0.008 0.257,0.008c0.08,-0 0.158,-0.003 0.234,-0.008c0.077,-0.006 0.161,-0.014 0.251,-0.025c0.004,0.018 0.007,0.035 0.009,0.049c0.001,0.015 0.002,0.027 0.002,0.038c0,0.048 -0.023,0.077 -0.071,0.088c-0.083,0.018 -0.155,0.044 -0.215,0.079c-0.06,0.034 -0.116,0.075 -0.167,0.123l-1.342,1.222l1.021,1.642c0.032,0.051 0.077,0.096 0.133,0.134c0.057,0.038 0.125,0.065 0.205,0.079c0.029,0.007 0.047,0.017 0.054,0.027c0.008,0.011 0.011,0.024 0.011,0.039c0,0.025 -0.009,0.056 -0.027,0.092c-0.207,-0.021 -0.38,-0.032 -0.518,-0.032c-0.084,-0 -0.151,-0.025 -0.202,-0.074c-0.051,-0.049 -0.108,-0.121 -0.169,-0.215l-0.939,-1.523ZM44.301,42.347c0.007,-0.044 0.003,-0.079 -0.011,-0.107c-0.015,-0.027 -0.036,-0.049 -0.063,-0.065c-0.027,-0.016 -0.058,-0.028 -0.093,-0.035c-0.034,-0.008 -0.068,-0.013 -0.101,-0.017c-0.051,-0.007 -0.076,-0.036 -0.076,-0.087c-0,-0.011 0.002,-0.025 0.005,-0.041c0.004,-0.016 0.008,-0.034 0.011,-0.052c0.109,0.011 0.217,0.019 0.322,0.025c0.106,0.005 0.204,0.008 0.295,0.008c0.076,-0 0.172,-0.003 0.286,-0.008c0.115,-0.006 0.221,-0.014 0.32,-0.025c0.003,0.018 0.006,0.035 0.008,0.049c0.002,0.015 0.002,0.029 0.002,0.044c0,0.044 -0.025,0.071 -0.076,0.082c-0.095,0.014 -0.174,0.038 -0.237,0.071c-0.064,0.032 -0.103,0.085 -0.118,0.158l-0.54,2.805c-0.007,0.043 -0.005,0.079 0.006,0.106c0.011,0.027 0.03,0.05 0.057,0.068c0.027,0.018 0.059,0.032 0.095,0.041c0.037,0.009 0.075,0.016 0.115,0.019c0.044,0.008 0.065,0.035 0.065,0.082c0,0.011 -0,0.024 -0.002,0.038c-0.002,0.015 -0.005,0.031 -0.008,0.049c-0.11,-0.01 -0.218,-0.019 -0.325,-0.024c-0.107,-0.006 -0.207,-0.008 -0.298,-0.008c-0.076,-0 -0.171,0.002 -0.286,0.008c-0.115,0.005 -0.221,0.014 -0.319,0.024c-0.004,-0.018 -0.007,-0.034 -0.008,-0.049c-0.002,-0.014 -0.003,-0.027 -0.003,-0.038c-0,-0.047 0.022,-0.074 0.065,-0.082c0.099,-0.014 0.181,-0.039 0.249,-0.073c0.067,-0.035 0.108,-0.089 0.122,-0.161l0.541,-2.805Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M94.509,42.106c0,-0.434 -0.352,-0.787 -0.786,-0.787l-42.122,0c-0.434,0 -0.787,0.353 -0.787,0.787l0,7.861c0,0.434 0.353,0.787 0.787,0.787l42.122,-0c0.434,-0 0.786,-0.353 0.786,-0.787l0,-7.861Z"
android:fillColor="#7d7474"/>
<path
android:fillColor="#FF000000"
android:pathData="M50.62,42.583h4.465v7.397h-4.465z"/>
<path
android:pathData="M94.509,42.126c0,-0.445 -0.361,-0.807 -0.806,-0.807l-28.12,0l0,9.435l28.12,-0c0.445,-0 0.806,-0.362 0.806,-0.807l0,-7.821Z"
android:fillColor="#2a2727"/>
<path
android:pathData="M65.583,41.319l-9.208,0c-0.67,0 -1.214,0.544 -1.214,1.214l-0,6.992c-0,0.671 0.544,1.215 1.214,1.215l9.208,-0l0,-9.421Z"
android:fillColor="#fff"/>
<path
android:fillColor="#FF000000"
android:pathData="M59.633,41.319h2.276v9.434h-2.276z"/>
<path
android:fillColor="#FF000000"
android:pathData="M63.295,41.319h2.276v9.434h-2.276z"/>
<path
android:pathData="M65.583,50.754l0,-9.435l3.481,3.335l0.01,3.239l-3.491,2.861Z"
android:fillColor="#fff"/>
<path
android:pathData="M100.303,64.994c0,-4.183 -3.396,-7.579 -7.578,-7.579l-7.653,0c-4.183,0 -7.579,3.396 -7.579,7.579l0,13.846c0,4.183 3.396,7.578 7.579,7.578l7.653,0c4.182,0 7.578,-3.395 7.578,-7.578l0,-13.846Z"
android:fillColor="#423f3f"/>
<path
android:fillColor="#FF000000"
android:pathData="M100.002,65.149c-0,-4.06 -3.296,-7.356 -7.356,-7.356l-7.395,0c-4.06,0 -7.356,3.296 -7.356,7.356l0,13.397c0,4.06 3.296,7.356 7.356,7.356l7.395,0c4.06,0 7.356,-3.296 7.356,-7.356l-0,-13.397Z"/>
<path
android:pathData="M99.329,65.48c-0,-3.744 -3.039,-6.783 -6.783,-6.783l-7.222,0c-3.744,0 -6.783,3.039 -6.783,6.783l-0,12.866c-0,3.744 3.039,6.783 6.783,6.783l7.222,0c3.744,0 6.783,-3.039 6.783,-6.783l-0,-12.866Z"
android:fillColor="#9d9292"/>
<path
android:fillColor="#FF000000"
android:pathData="M98.815,65.674c0,-3.583 -2.909,-6.492 -6.491,-6.492l-6.776,0c-3.583,0 -6.492,2.909 -6.492,6.492l0,12.402c0,3.583 2.909,6.492 6.492,6.492l6.776,-0c3.582,-0 6.491,-2.909 6.491,-6.492l0,-12.402Z"/>
<path
android:pathData="M88.957,62.103l2,2.463l-4,-0l2,-2.463Z"
android:fillColor="#fff"/>
<path
android:pathData="M89.135,82.366l-1.999,-2.464l3.999,0l-2,2.464Z"
android:fillColor="#fff"/>
<path
android:pathData="M96.144,70.804c0,-1.753 -1.423,-3.176 -3.175,-3.176l-8.148,0c-1.753,0 -3.175,1.423 -3.175,3.176l-0,3.202c-0,1.753 1.422,3.176 3.175,3.176l8.148,-0c1.752,-0 3.175,-1.423 3.175,-3.176l0,-3.202Z"
android:fillColor="#766d6d"/>
<path
android:fillColor="#FF000000"
android:pathData="M93.86,70.396c0,-1.074 -0.872,-1.946 -1.946,-1.946l-5.992,-0c-1.075,-0 -1.947,0.872 -1.947,1.946l0,3.893c0,1.074 0.872,1.946 1.947,1.946l5.992,0c1.074,0 1.946,-0.872 1.946,-1.946l0,-3.893Z"/>
<path
android:pathData="M88.975,72.191m-1.528,0a1.528,1.528 0,1 1,3.056 0a1.528,1.528 0,1 1,-3.056 0"
android:fillColor="#fff"/>
<path
android:pathData="M93.143,70.838c-0,-0.823 -0.668,-1.49 -1.49,-1.49l-5.409,-0c-0.823,-0 -1.49,0.667 -1.49,1.49l-0,2.98c-0,0.822 0.667,1.489 1.49,1.489l5.409,0c0.822,0 1.49,-0.667 1.49,-1.489l-0,-2.98Z"
android:strokeWidth="1.25"
android:fillColor="#00000000"
android:strokeColor="#fff"/>
<path
android:pathData="M43.182,84.176c0.783,-0 1.419,0.636 1.419,1.419c-0,0.783 -0.636,1.418 -1.419,1.418c-0.783,0 -1.419,-0.635 -1.419,-1.418c0,-0.783 0.636,-1.419 1.419,-1.419ZM43.182,84.394c0.662,0 1.2,0.538 1.2,1.201c0,0.662 -0.538,1.2 -1.2,1.2c-0.663,0 -1.201,-0.538 -1.201,-1.2c0,-0.663 0.538,-1.201 1.201,-1.201Z"
android:fillColor="#fff"/>
<path
android:pathData="M37.26,85.484m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M38.811,85.483m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M40.483,85.508m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M45.499,85.595m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M47.136,85.574m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M48.784,85.595m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
android:strokeWidth="1.25"
android:fillColor="#fff"
android:strokeColor="#fff"/>
<path
android:pathData="M42.527,85.42h1.31v0.306h-1.31z"
android:fillColor="#fff"/>
<path
android:pathData="M43.335,86.228l-0,-1.31l-0.306,0l-0,1.31l0.306,-0Z"
android:fillColor="#fff"/>
<path
android:pathData="M45.624,87.875c0.059,-0.058 0.059,-0.153 0.001,-0.212l-1.039,-1.055c-0.058,-0.059 -0.153,-0.059 -0.212,-0.001l-0.214,0.21c-0.059,0.058 -0.059,0.153 -0.001,0.212l1.039,1.055c0.058,0.059 0.153,0.06 0.212,0.002l0.214,-0.211Z"
android:fillColor="#fff"/>
<path
android:pathData="M72.033,60.303c0,-0.69 -0.56,-1.25 -1.25,-1.25l-54.973,0c-0.69,0 -1.249,0.56 -1.249,1.25l-0,19.437c-0,0.69 0.559,1.25 1.249,1.25l54.973,-0c0.69,-0 1.25,-0.56 1.25,-1.25l0,-19.437Z"
android:fillColor="#484343"/>
<path
android:fillColor="#FF000000"
android:pathData="M71.446,60.777c-0,-0.657 -0.534,-1.19 -1.191,-1.19l-53.929,-0c-0.657,-0 -1.191,0.533 -1.191,1.19l0,18.52c0,0.657 0.534,1.191 1.191,1.191l53.929,-0c0.657,-0 1.191,-0.534 1.191,-1.191l-0,-18.52Z"/>
<path
android:pathData="M70.661,77.866c0,-0.176 -0.143,-0.319 -0.319,-0.319l-54.245,-0c-0.176,-0 -0.319,0.143 -0.319,0.319l-0,1.55c-0,0.176 0.143,0.32 0.319,0.32l54.245,-0c0.176,-0 0.319,-0.144 0.319,-0.32l0,-1.55Z"
android:fillColor="#fff"/>
<path
android:pathData="M70.224,78.163c-0,-0.118 -0.096,-0.214 -0.215,-0.214l-53.615,-0c-0.119,-0 -0.215,0.096 -0.215,0.214l0,1.039c0,0.118 0.096,0.214 0.215,0.214l53.615,0c0.119,0 0.215,-0.096 0.215,-0.214l-0,-1.039Z"
android:fillColor="#23211f"/>
<path
android:pathData="M16.482,78.201h48.339v0.948h-48.339z"
android:fillColor="#f37e31"/>
<path
android:pathData="M64.494,78.188h5.445v0.96h-5.445z"
android:fillColor="#5c5454"/>
<path
android:pathData="M65.739,77.776l-0.907,0.912l0.282,0.284l0.907,-0.913l-0.282,-0.283Z"
android:fillColor="#a79999"/>
<path
android:pathData="M65.114,78.393l0.907,0.913l-0.282,0.283l-0.907,-0.913l0.282,-0.283Z"
android:fillColor="#a79999"/>
<path
android:pathData="M70.754,61.429l-1.892,1.074l0,-2.148l1.892,1.074Z"
android:fillColor="#6aae47"/>
<path
android:pathData="M47.136,61.484c-0,-0.346 0.033,-0.625 0.099,-0.836c0.066,-0.212 0.164,-0.374 0.295,-0.489c0.13,-0.115 0.294,-0.172 0.492,-0.172c0.146,0 0.274,0.032 0.384,0.095c0.11,0.063 0.201,0.155 0.272,0.274c0.072,0.119 0.128,0.264 0.169,0.436c0.041,0.171 0.061,0.402 0.061,0.692c0,0.344 -0.033,0.621 -0.098,0.832c-0.066,0.211 -0.164,0.375 -0.294,0.49c-0.13,0.115 -0.295,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.617,-0.304c-0.179,-0.244 -0.269,-0.641 -0.269,-1.191ZM47.479,61.484c-0,0.481 0.052,0.801 0.156,0.96c0.105,0.159 0.234,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.387,-0.24c0.104,-0.16 0.156,-0.479 0.156,-0.959c0,-0.482 -0.052,-0.803 -0.156,-0.961c-0.105,-0.159 -0.235,-0.238 -0.391,-0.238c-0.153,-0 -0.275,0.07 -0.367,0.21c-0.115,0.178 -0.172,0.508 -0.172,0.989Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M49.249,62.155l0.334,-0.048c0.038,0.204 0.103,0.351 0.195,0.441c0.092,0.09 0.205,0.135 0.337,0.135c0.157,-0 0.289,-0.059 0.397,-0.176c0.109,-0.117 0.163,-0.262 0.163,-0.436c-0,-0.165 -0.05,-0.301 -0.15,-0.408c-0.101,-0.107 -0.228,-0.161 -0.382,-0.161c-0.063,-0 -0.142,0.013 -0.236,0.04l0.037,-0.316c0.023,0.003 0.04,0.004 0.054,0.004c0.142,0 0.27,-0.04 0.384,-0.12c0.113,-0.08 0.17,-0.203 0.17,-0.369c0,-0.132 -0.041,-0.242 -0.124,-0.328c-0.083,-0.087 -0.19,-0.13 -0.321,-0.13c-0.129,-0 -0.237,0.044 -0.324,0.132c-0.086,0.088 -0.142,0.22 -0.167,0.396l-0.333,-0.064c0.04,-0.242 0.133,-0.428 0.278,-0.561c0.144,-0.133 0.324,-0.199 0.539,-0.199c0.148,0 0.285,0.035 0.41,0.103c0.125,0.069 0.22,0.162 0.286,0.281c0.066,0.118 0.099,0.244 0.099,0.378c0,0.126 -0.031,0.241 -0.094,0.345c-0.063,0.104 -0.157,0.187 -0.28,0.248c0.16,0.04 0.285,0.123 0.374,0.249c0.089,0.126 0.134,0.283 0.134,0.472c-0,0.256 -0.087,0.473 -0.26,0.651c-0.173,0.178 -0.392,0.267 -0.656,0.267c-0.239,-0 -0.437,-0.077 -0.594,-0.23c-0.158,-0.153 -0.248,-0.352 -0.27,-0.596Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M52.365,62.097l0.325,-0.048c0.008,0.224 0.047,0.377 0.116,0.46c0.07,0.083 0.165,0.124 0.288,0.124c0.09,-0 0.168,-0.022 0.233,-0.067c0.066,-0.045 0.111,-0.105 0.136,-0.182c0.024,-0.076 0.037,-0.199 0.037,-0.367l-0,-2.018l0.359,0l0,1.997c0,0.245 -0.027,0.434 -0.082,0.569c-0.055,0.135 -0.142,0.237 -0.261,0.308c-0.12,0.07 -0.26,0.106 -0.42,0.106c-0.239,-0 -0.421,-0.074 -0.548,-0.222c-0.127,-0.148 -0.188,-0.368 -0.183,-0.66Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M55.689,62.667c-0.124,0.113 -0.243,0.193 -0.357,0.24c-0.114,0.046 -0.237,0.07 -0.368,0.07c-0.216,-0 -0.382,-0.057 -0.498,-0.171c-0.117,-0.114 -0.175,-0.26 -0.175,-0.437c0,-0.104 0.022,-0.199 0.066,-0.285c0.044,-0.086 0.101,-0.154 0.173,-0.206c0.071,-0.052 0.151,-0.092 0.24,-0.118c0.065,-0.019 0.164,-0.037 0.296,-0.054c0.27,-0.035 0.468,-0.076 0.595,-0.124c0.001,-0.049 0.002,-0.081 0.002,-0.094c0,-0.147 -0.031,-0.25 -0.094,-0.31c-0.086,-0.081 -0.212,-0.122 -0.38,-0.122c-0.157,0 -0.273,0.03 -0.348,0.089c-0.075,0.06 -0.13,0.164 -0.166,0.315l-0.326,-0.048c0.029,-0.151 0.078,-0.272 0.146,-0.365c0.068,-0.092 0.166,-0.164 0.295,-0.214c0.128,-0.049 0.277,-0.074 0.447,-0.074c0.168,-0 0.304,0.021 0.409,0.063c0.105,0.043 0.183,0.097 0.232,0.161c0.05,0.065 0.084,0.147 0.104,0.245c0.011,0.061 0.017,0.172 0.017,0.332l-0,0.479c-0,0.335 0.007,0.546 0.021,0.635c0.014,0.089 0.042,0.173 0.084,0.255l-0.348,-0c-0.035,-0.075 -0.057,-0.162 -0.067,-0.262ZM55.661,61.864c-0.121,0.053 -0.303,0.098 -0.545,0.135c-0.137,0.022 -0.234,0.046 -0.291,0.072c-0.057,0.027 -0.101,0.066 -0.131,0.117c-0.031,0.052 -0.047,0.109 -0.047,0.171c0,0.096 0.034,0.176 0.101,0.24c0.068,0.064 0.166,0.096 0.296,0.096c0.128,-0 0.243,-0.03 0.343,-0.091c0.1,-0.061 0.173,-0.144 0.22,-0.249c0.036,-0.081 0.054,-0.201 0.054,-0.359l0,-0.132Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M56.516,62.929l-0,-2.122l0.3,-0l0,0.301c0.145,-0.233 0.354,-0.349 0.627,-0.349c0.118,-0 0.227,0.023 0.327,0.068c0.099,0.046 0.174,0.107 0.223,0.181c0.05,0.075 0.084,0.164 0.104,0.266c0.012,0.067 0.019,0.183 0.019,0.35l-0,1.305l-0.334,-0l-0,-1.291c-0,-0.147 -0.013,-0.256 -0.039,-0.329c-0.026,-0.073 -0.072,-0.13 -0.138,-0.174c-0.066,-0.043 -0.144,-0.065 -0.233,-0.065c-0.142,0 -0.265,0.049 -0.368,0.146c-0.103,0.097 -0.155,0.282 -0.155,0.554l0,1.159l-0.333,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M61.343,62.583l-0,0.346l-1.796,-0c-0.003,-0.087 0.01,-0.17 0.039,-0.25c0.045,-0.132 0.118,-0.262 0.219,-0.39c0.101,-0.128 0.246,-0.276 0.437,-0.443c0.295,-0.261 0.495,-0.468 0.599,-0.621c0.103,-0.152 0.155,-0.297 0.155,-0.432c0,-0.143 -0.047,-0.263 -0.142,-0.361c-0.094,-0.098 -0.217,-0.147 -0.369,-0.147c-0.161,-0 -0.29,0.052 -0.386,0.156c-0.096,0.104 -0.145,0.248 -0.146,0.431l-0.343,-0.038c0.023,-0.275 0.111,-0.485 0.265,-0.63c0.153,-0.145 0.359,-0.217 0.617,-0.217c0.261,0 0.467,0.078 0.619,0.234c0.152,0.156 0.228,0.349 0.228,0.58c0,0.117 -0.022,0.232 -0.067,0.345c-0.044,0.113 -0.118,0.233 -0.221,0.358c-0.103,0.125 -0.275,0.297 -0.514,0.515c-0.201,0.182 -0.329,0.305 -0.386,0.369c-0.057,0.065 -0.104,0.13 -0.141,0.195l1.333,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M61.701,61.484c-0,-0.346 0.033,-0.625 0.099,-0.836c0.066,-0.212 0.164,-0.374 0.295,-0.489c0.13,-0.115 0.294,-0.172 0.492,-0.172c0.146,0 0.273,0.032 0.383,0.095c0.11,0.063 0.201,0.155 0.273,0.274c0.072,0.119 0.128,0.264 0.169,0.436c0.04,0.171 0.061,0.402 0.061,0.692c-0,0.344 -0.033,0.621 -0.098,0.832c-0.066,0.211 -0.164,0.375 -0.294,0.49c-0.131,0.115 -0.295,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.618,-0.304c-0.179,-0.244 -0.268,-0.641 -0.268,-1.191ZM62.044,61.484c-0,0.481 0.052,0.801 0.156,0.96c0.105,0.159 0.233,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.386,-0.24c0.105,-0.16 0.157,-0.479 0.157,-0.959c-0,-0.482 -0.052,-0.803 -0.157,-0.961c-0.104,-0.159 -0.234,-0.238 -0.39,-0.238c-0.153,-0 -0.276,0.07 -0.367,0.21c-0.115,0.178 -0.172,0.508 -0.172,0.989Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M65.566,62.583l-0,0.346l-1.797,-0c-0.002,-0.087 0.011,-0.17 0.039,-0.25c0.046,-0.132 0.119,-0.262 0.22,-0.39c0.101,-0.128 0.246,-0.276 0.437,-0.443c0.295,-0.261 0.495,-0.468 0.598,-0.621c0.104,-0.152 0.156,-0.297 0.156,-0.432c0,-0.143 -0.047,-0.263 -0.142,-0.361c-0.094,-0.098 -0.218,-0.147 -0.37,-0.147c-0.16,-0 -0.289,0.052 -0.385,0.156c-0.097,0.104 -0.145,0.248 -0.147,0.431l-0.343,-0.038c0.024,-0.275 0.112,-0.485 0.266,-0.63c0.153,-0.145 0.359,-0.217 0.617,-0.217c0.261,0 0.467,0.078 0.619,0.234c0.152,0.156 0.228,0.349 0.228,0.58c-0,0.117 -0.022,0.232 -0.067,0.345c-0.044,0.113 -0.118,0.233 -0.221,0.358c-0.103,0.125 -0.275,0.297 -0.515,0.515c-0.2,0.182 -0.328,0.305 -0.385,0.369c-0.057,0.065 -0.104,0.13 -0.141,0.195l1.333,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M65.923,61.484c0,-0.346 0.034,-0.625 0.1,-0.836c0.066,-0.212 0.164,-0.374 0.294,-0.489c0.131,-0.115 0.295,-0.172 0.493,-0.172c0.145,0 0.273,0.032 0.383,0.095c0.11,0.063 0.201,0.155 0.273,0.274c0.071,0.119 0.128,0.264 0.168,0.436c0.041,0.171 0.062,0.402 0.062,0.692c-0,0.344 -0.033,0.621 -0.099,0.832c-0.065,0.211 -0.163,0.375 -0.293,0.49c-0.131,0.115 -0.296,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.618,-0.304c-0.179,-0.244 -0.269,-0.641 -0.269,-1.191ZM66.266,61.484c0,0.481 0.053,0.801 0.157,0.96c0.104,0.159 0.233,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.386,-0.24c0.104,-0.16 0.157,-0.479 0.157,-0.959c-0,-0.482 -0.053,-0.803 -0.157,-0.961c-0.104,-0.159 -0.234,-0.238 -0.39,-0.238c-0.153,-0 -0.276,0.07 -0.367,0.21c-0.115,0.178 -0.173,0.508 -0.173,0.989Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M16.44,62.904l-0.364,0.001l-0,-2.19c-0.088,0.079 -0.203,0.158 -0.345,0.238c-0.142,0.079 -0.27,0.139 -0.384,0.179l0,-0.332c0.204,-0.092 0.382,-0.202 0.535,-0.331c0.152,-0.129 0.26,-0.254 0.323,-0.375l0.235,-0.001l0,2.811Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M17.373,61.52c-0,-0.331 0.036,-0.598 0.108,-0.8c0.072,-0.202 0.179,-0.358 0.322,-0.468c0.142,-0.11 0.321,-0.166 0.537,-0.166c0.159,-0.001 0.299,0.029 0.419,0.089c0.12,0.06 0.219,0.147 0.297,0.26c0.078,0.114 0.14,0.252 0.184,0.416c0.045,0.163 0.067,0.384 0.067,0.661c-0,0.329 -0.036,0.594 -0.107,0.796c-0.072,0.202 -0.179,0.358 -0.321,0.469c-0.142,0.111 -0.322,0.166 -0.539,0.167c-0.286,0.001 -0.511,-0.095 -0.674,-0.288c-0.195,-0.232 -0.293,-0.611 -0.293,-1.136ZM17.747,61.518c0,0.46 0.057,0.765 0.171,0.917c0.114,0.152 0.255,0.227 0.422,0.227c0.167,-0.001 0.308,-0.078 0.422,-0.231c0.114,-0.153 0.171,-0.459 0.171,-0.917c-0,-0.461 -0.057,-0.767 -0.171,-0.918c-0.114,-0.151 -0.256,-0.226 -0.426,-0.226c-0.167,0.001 -0.301,0.068 -0.401,0.202c-0.125,0.171 -0.188,0.487 -0.188,0.946Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M19.88,61.254l-0,-0.391l0.414,-0.002l0,0.392l-0.414,0.001ZM19.88,62.891l-0,-0.392l0.414,-0.001l0,0.391l-0.414,0.002Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M22.742,62.549l0,0.331l-1.96,0.007c-0.003,-0.083 0.011,-0.162 0.042,-0.239c0.05,-0.126 0.13,-0.25 0.24,-0.373c0.11,-0.123 0.269,-0.264 0.477,-0.426c0.322,-0.25 0.54,-0.449 0.653,-0.595c0.113,-0.146 0.17,-0.284 0.17,-0.414c0,-0.136 -0.052,-0.251 -0.155,-0.344c-0.103,-0.093 -0.237,-0.14 -0.403,-0.139c-0.176,0.001 -0.316,0.051 -0.421,0.151c-0.105,0.099 -0.159,0.237 -0.16,0.413l-0.374,-0.035c0.025,-0.264 0.122,-0.465 0.289,-0.604c0.167,-0.139 0.392,-0.208 0.674,-0.21c0.284,-0.001 0.51,0.073 0.675,0.221c0.166,0.149 0.249,0.333 0.249,0.553c0,0.112 -0.024,0.222 -0.072,0.331c-0.049,0.108 -0.13,0.222 -0.242,0.342c-0.113,0.121 -0.3,0.286 -0.562,0.495c-0.218,0.174 -0.358,0.292 -0.421,0.354c-0.062,0.062 -0.113,0.124 -0.153,0.187l1.454,-0.006Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M24.505,62.873l-0.365,0.001l0,-2.19c-0.087,0.08 -0.202,0.159 -0.345,0.238c-0.142,0.08 -0.27,0.14 -0.383,0.179l0,-0.332c0.204,-0.091 0.382,-0.201 0.534,-0.33c0.153,-0.129 0.261,-0.255 0.324,-0.376l0.235,-0.001l-0,2.811Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M43.306,61.012h0.317v0.854h-0.317z"
android:fillColor="#999d97"/>
<path
android:pathData="M43.281,60.49l0,2.034l-3.593,0l-0,-2.034l3.593,-0ZM42.775,60.894l-2.519,0l-0,1.171l2.519,0l0,-1.171Z"
android:fillColor="#999d97"/>
<path
android:pathData="M32.357,62.612h0.99v0.44h-0.99z"
android:fillColor="#fff"/>
<path
android:pathData="M34.304,61.954l-1.262,-0.643l-0.183,0.343l1.262,0.644l0.183,-0.344Z"
android:fillColor="#fff"/>
<path
android:pathData="M32.852,61.654l-1.262,0.644l-0.183,-0.344l1.261,-0.643l0.184,0.343Z"
android:fillColor="#fff"/>
<path
android:pathData="M32.636,60.352h0.446v2.7h-0.446z"
android:fillColor="#fff"/>
<path
android:pathData="M33.082,60.165c0,-0.062 -0.05,-0.112 -0.111,-0.112l-0.223,0c-0.062,0 -0.112,0.05 -0.112,0.112l-0,2.159c-0,0.062 0.05,0.112 0.112,0.112l0.223,-0c0.061,-0 0.111,-0.05 0.111,-0.112l0,-2.159Z"
android:fillColor="#fff"/>
<path
android:pathData="M35.628,66.114l0.468,-0l-0,2.017c-0,0.351 -0.04,0.629 -0.121,0.836c-0.08,0.206 -0.225,0.374 -0.435,0.503c-0.209,0.13 -0.484,0.194 -0.825,0.194c-0.331,0 -0.601,-0.056 -0.812,-0.169c-0.21,-0.112 -0.36,-0.276 -0.45,-0.489c-0.09,-0.214 -0.135,-0.505 -0.135,-0.875l-0,-2.017l0.467,-0l0,2.014c0,0.304 0.029,0.527 0.086,0.671c0.057,0.143 0.155,0.254 0.294,0.332c0.138,0.078 0.308,0.117 0.509,0.117c0.344,-0 0.589,-0.077 0.735,-0.231c0.146,-0.154 0.219,-0.45 0.219,-0.889l0,-2.014Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M36.493,69.664l1.024,-3.61l0.347,0l-1.021,3.61l-0.35,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M38.189,69.605l0,-3.491l0.434,-0l0,1.252c0.203,-0.231 0.458,-0.347 0.766,-0.347c0.19,-0 0.355,0.037 0.494,0.111c0.14,0.073 0.24,0.175 0.3,0.306c0.06,0.13 0.091,0.319 0.091,0.566l-0,1.603l-0.434,-0l-0,-1.603c-0,-0.214 -0.047,-0.37 -0.141,-0.468c-0.094,-0.097 -0.227,-0.146 -0.399,-0.146c-0.128,-0 -0.249,0.033 -0.362,0.099c-0.114,0.066 -0.194,0.155 -0.243,0.268c-0.048,0.112 -0.072,0.268 -0.072,0.466l0,1.384l-0.434,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M42.035,69.605l-0,-3.255l1.093,-0c0.223,-0 0.401,0.033 0.536,0.099c0.134,0.065 0.24,0.167 0.316,0.304c0.076,0.137 0.114,0.28 0.114,0.429c0,0.14 -0.033,0.271 -0.101,0.393c-0.068,0.123 -0.17,0.222 -0.306,0.298c0.176,0.058 0.312,0.156 0.406,0.295c0.095,0.139 0.142,0.304 0.142,0.493c0,0.153 -0.028,0.294 -0.086,0.425c-0.058,0.131 -0.129,0.232 -0.214,0.303c-0.085,0.071 -0.191,0.125 -0.319,0.161c-0.128,0.037 -0.284,0.055 -0.47,0.055l-1.111,-0ZM42.42,67.717l0.631,0c0.171,0 0.293,-0.012 0.367,-0.037c0.098,-0.033 0.172,-0.087 0.222,-0.162c0.05,-0.076 0.075,-0.171 0.075,-0.285c-0,-0.108 -0.024,-0.203 -0.07,-0.285c-0.046,-0.082 -0.113,-0.138 -0.199,-0.169c-0.086,-0.03 -0.234,-0.045 -0.443,-0.045l-0.583,-0l0,0.983ZM42.42,69.221l0.726,-0c0.125,-0 0.212,-0.006 0.262,-0.016c0.089,-0.018 0.163,-0.047 0.223,-0.089c0.06,-0.041 0.109,-0.101 0.147,-0.181c0.039,-0.079 0.058,-0.17 0.058,-0.274c-0,-0.121 -0.028,-0.227 -0.084,-0.316c-0.055,-0.09 -0.132,-0.153 -0.231,-0.189c-0.099,-0.036 -0.241,-0.054 -0.427,-0.054l-0.674,-0l0,1.119Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M44.772,69.605l0,-3.255l1.293,-0c0.259,-0 0.457,0.029 0.592,0.087c0.135,0.059 0.243,0.162 0.324,0.31c0.081,0.148 0.121,0.312 0.121,0.491c0,0.231 -0.067,0.425 -0.2,0.584c-0.134,0.158 -0.341,0.259 -0.621,0.302c0.102,0.055 0.18,0.109 0.233,0.162c0.113,0.115 0.219,0.26 0.32,0.433l0.507,0.886l-0.485,-0l-0.386,-0.677c-0.113,-0.196 -0.205,-0.345 -0.278,-0.449c-0.073,-0.104 -0.138,-0.176 -0.196,-0.218c-0.058,-0.041 -0.116,-0.07 -0.176,-0.086c-0.044,-0.011 -0.115,-0.016 -0.215,-0.016l-0.447,0l-0,1.446l-0.386,-0ZM45.158,67.786l0.829,0c0.176,0 0.314,-0.02 0.414,-0.061c0.099,-0.04 0.175,-0.106 0.226,-0.195c0.052,-0.09 0.078,-0.187 0.078,-0.292c-0,-0.154 -0.05,-0.281 -0.15,-0.38c-0.1,-0.099 -0.258,-0.149 -0.475,-0.149l-0.922,0l-0,1.077Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M47.522,68.226h1.099v0.402h-1.099z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M49.063,69.605l-0,-3.255l1.099,-0c0.194,-0 0.341,0.01 0.443,0.031c0.144,0.026 0.264,0.077 0.36,0.152c0.097,0.075 0.175,0.179 0.234,0.314c0.059,0.135 0.088,0.283 0.088,0.444c0,0.277 -0.078,0.511 -0.236,0.703c-0.158,0.192 -0.443,0.287 -0.855,0.287l-0.748,0l0,1.324l-0.385,-0ZM49.448,67.897l0.754,0c0.249,0 0.426,-0.051 0.531,-0.155c0.104,-0.104 0.157,-0.25 0.157,-0.438c-0,-0.136 -0.031,-0.252 -0.093,-0.349c-0.061,-0.097 -0.142,-0.161 -0.243,-0.192c-0.065,-0.02 -0.185,-0.029 -0.36,-0.029l-0.746,-0l0,1.163Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M51.729,69.605l-0,-2.358l0.322,-0l-0,0.357c0.082,-0.167 0.158,-0.277 0.228,-0.331c0.069,-0.053 0.146,-0.08 0.229,-0.08c0.121,0 0.243,0.043 0.368,0.129l-0.123,0.371c-0.088,-0.058 -0.175,-0.087 -0.263,-0.087c-0.078,0 -0.148,0.027 -0.21,0.079c-0.063,0.053 -0.107,0.126 -0.134,0.219c-0.039,0.142 -0.059,0.298 -0.059,0.466l-0,1.235l-0.358,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M52.955,68.426c0,-0.437 0.109,-0.76 0.327,-0.971c0.181,-0.174 0.402,-0.262 0.664,-0.262c0.29,0 0.527,0.107 0.711,0.319c0.185,0.212 0.277,0.506 0.277,0.88c-0,0.304 -0.041,0.543 -0.123,0.717c-0.081,0.173 -0.2,0.309 -0.355,0.405c-0.156,0.096 -0.326,0.144 -0.51,0.144c-0.296,0 -0.535,-0.106 -0.717,-0.317c-0.182,-0.212 -0.274,-0.517 -0.274,-0.915ZM53.323,68.426c0,0.302 0.059,0.528 0.177,0.678c0.118,0.15 0.267,0.225 0.446,0.225c0.177,0 0.325,-0.075 0.443,-0.226c0.118,-0.151 0.177,-0.381 0.177,-0.691c-0,-0.291 -0.059,-0.512 -0.178,-0.662c-0.119,-0.151 -0.266,-0.226 -0.442,-0.226c-0.179,0 -0.328,0.075 -0.446,0.225c-0.118,0.149 -0.177,0.375 -0.177,0.677Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M55.449,69.605l-0,-2.05l-0.319,0l0,-0.308l0.319,-0l-0,-0.229c-0,-0.234 0.045,-0.413 0.135,-0.537c0.09,-0.125 0.232,-0.187 0.427,-0.187c0.131,0 0.253,0.017 0.364,0.051l-0.056,0.338c-0.07,-0.014 -0.134,-0.02 -0.192,-0.02c-0.124,-0 -0.208,0.027 -0.253,0.082c-0.045,0.055 -0.068,0.171 -0.068,0.349l0,0.153l0.41,-0l0,0.308l-0.41,0l0,2.05l-0.357,-0ZM56.486,66.809l0,-0.459l0.358,-0l0,0.459l-0.358,0ZM56.486,69.605l0,-2.358l0.358,-0l0,2.358l-0.358,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M57.381,66.35h0.358v3.255h-0.358z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M60.673,69.605l-0.357,-0l-0,-2.547c-0.087,0.092 -0.2,0.184 -0.339,0.275c-0.14,0.092 -0.266,0.161 -0.377,0.207l-0,-0.387c0.2,-0.105 0.375,-0.232 0.525,-0.381c0.149,-0.15 0.256,-0.295 0.318,-0.436l0.23,0l0,3.269Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M18.919,66.916h0.698v2.397h-0.698z"
android:fillColor="#fff"/>
<path
android:pathData="M18.106,66.873h1.512v0.698h-1.512z"
android:fillColor="#fff"/>
<path
android:pathData="M18.118,65.492h0.698v1.731h-0.698z"
android:fillColor="#fff"/>
<path
android:pathData="M15.93,67.321h0.698v1.961h-0.698z"
android:fillColor="#fff"/>
<path
android:pathData="M16.592,65.802h0.681v2.141h-0.681z"
android:fillColor="#fff"/>
<path
android:pathData="M16.592,65.492h1.861v0.62h-1.861z"
android:fillColor="#fff"/>
<path
android:pathData="M22.859,69.525l-0.539,0l0,-3.507c-0.129,0.127 -0.299,0.253 -0.509,0.38c-0.211,0.126 -0.4,0.221 -0.567,0.284l-0,-0.532c0.301,-0.145 0.564,-0.32 0.789,-0.526c0.226,-0.206 0.385,-0.406 0.479,-0.599l0.347,-0l-0,4.5Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M24.539,68.899h0.613v0.627h-0.613z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M25.942,68.342l0.538,-0.073c0.062,0.312 0.167,0.536 0.316,0.674c0.148,0.137 0.329,0.206 0.542,0.206c0.254,0 0.467,-0.089 0.642,-0.269c0.174,-0.179 0.261,-0.401 0.261,-0.666c0,-0.253 -0.08,-0.462 -0.242,-0.626c-0.161,-0.164 -0.367,-0.246 -0.616,-0.246c-0.101,0 -0.228,0.021 -0.38,0.061l0.06,-0.483c0.036,0.004 0.065,0.006 0.087,0.006c0.229,0 0.436,-0.061 0.619,-0.183c0.183,-0.122 0.275,-0.311 0.275,-0.566c0,-0.201 -0.067,-0.369 -0.2,-0.501c-0.134,-0.132 -0.306,-0.199 -0.518,-0.199c-0.209,0 -0.383,0.068 -0.523,0.202c-0.14,0.135 -0.229,0.336 -0.269,0.605l-0.538,-0.097c0.065,-0.369 0.215,-0.655 0.448,-0.858c0.233,-0.203 0.524,-0.304 0.87,-0.304c0.24,-0 0.46,0.052 0.661,0.157c0.202,0.105 0.356,0.248 0.462,0.43c0.107,0.181 0.16,0.374 0.16,0.578c0,0.193 -0.051,0.37 -0.152,0.529c-0.102,0.159 -0.252,0.285 -0.452,0.379c0.259,0.061 0.461,0.188 0.604,0.38c0.144,0.193 0.216,0.434 0.216,0.723c-0,0.392 -0.14,0.723 -0.419,0.996c-0.279,0.272 -0.632,0.408 -1.059,0.408c-0.384,-0 -0.704,-0.117 -0.958,-0.352c-0.254,-0.234 -0.399,-0.538 -0.435,-0.911Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M29.345,68.351l0.565,-0.049c0.042,0.282 0.139,0.493 0.292,0.635c0.152,0.141 0.336,0.212 0.551,0.212c0.26,0 0.479,-0.1 0.658,-0.299c0.18,-0.2 0.269,-0.465 0.269,-0.795c0,-0.314 -0.086,-0.562 -0.258,-0.743c-0.173,-0.182 -0.399,-0.272 -0.678,-0.272c-0.173,-0 -0.33,0.04 -0.469,0.12c-0.14,0.081 -0.249,0.185 -0.329,0.314l-0.505,-0.068l0.424,-2.302l2.18,0l0,0.526l-1.749,0l-0.236,1.205c0.263,-0.188 0.539,-0.282 0.828,-0.282c0.383,0 0.706,0.136 0.969,0.407c0.263,0.271 0.395,0.62 0.395,1.046c-0,0.405 -0.116,0.756 -0.347,1.051c-0.281,0.363 -0.665,0.545 -1.152,0.545c-0.398,-0 -0.724,-0.114 -0.976,-0.343c-0.252,-0.228 -0.396,-0.531 -0.432,-0.908Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M15.893,72.909h2.95v0.614h-2.95z"
android:fillColor="#f37e31"/>
<path
android:pathData="M18.806,76.021h0.663v0.611h-0.663z"
android:fillColor="#f37e31"/>
<path
android:pathData="M18.212,73.523h0.631v3.111h-0.631z"
android:fillColor="#f37e31"/>
<path
android:pathData="M15.893,73.523h0.611v3.111h-0.611z"
android:fillColor="#f37e31"/>
<path
android:pathData="M23.778,76.344l0,0.517l-2.795,0c-0.004,-0.13 0.016,-0.254 0.06,-0.374c0.071,-0.197 0.185,-0.391 0.342,-0.582c0.157,-0.192 0.383,-0.413 0.68,-0.664c0.459,-0.391 0.77,-0.7 0.931,-0.928c0.162,-0.228 0.243,-0.444 0.243,-0.647c-0,-0.214 -0.074,-0.393 -0.221,-0.54c-0.147,-0.146 -0.339,-0.22 -0.575,-0.22c-0.251,0 -0.451,0.078 -0.601,0.234c-0.15,0.155 -0.226,0.37 -0.228,0.645l-0.533,-0.057c0.036,-0.412 0.174,-0.726 0.412,-0.943c0.239,-0.216 0.559,-0.324 0.961,-0.324c0.406,0 0.727,0.117 0.964,0.35c0.236,0.233 0.355,0.522 0.355,0.867c-0,0.175 -0.035,0.347 -0.104,0.517c-0.07,0.169 -0.184,0.347 -0.345,0.535c-0.161,0.187 -0.428,0.444 -0.801,0.771c-0.311,0.271 -0.511,0.455 -0.6,0.551c-0.088,0.097 -0.161,0.194 -0.219,0.292l2.074,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M24.627,76.248h0.591v0.613h-0.591z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M25.98,75.704l0.519,-0.072c0.06,0.305 0.161,0.525 0.304,0.66c0.144,0.134 0.318,0.201 0.524,0.201c0.244,0 0.451,-0.087 0.619,-0.263c0.168,-0.175 0.252,-0.392 0.252,-0.651c0,-0.247 -0.078,-0.451 -0.233,-0.612c-0.156,-0.16 -0.354,-0.24 -0.595,-0.24c-0.098,-0 -0.22,0.02 -0.366,0.06l0.058,-0.473c0.034,0.004 0.062,0.006 0.083,0.006c0.221,0 0.421,-0.06 0.598,-0.179c0.176,-0.12 0.265,-0.304 0.265,-0.553c-0,-0.197 -0.064,-0.361 -0.193,-0.49c-0.129,-0.13 -0.296,-0.195 -0.499,-0.195c-0.202,0 -0.371,0.066 -0.505,0.198c-0.135,0.131 -0.222,0.329 -0.26,0.592l-0.519,-0.096c0.063,-0.361 0.207,-0.64 0.432,-0.839c0.225,-0.198 0.505,-0.297 0.84,-0.297c0.231,0 0.443,0.051 0.638,0.154c0.194,0.103 0.342,0.243 0.445,0.42c0.103,0.177 0.155,0.366 0.155,0.565c-0,0.189 -0.049,0.362 -0.147,0.517c-0.099,0.155 -0.244,0.279 -0.436,0.371c0.25,0.059 0.444,0.183 0.583,0.372c0.138,0.188 0.207,0.424 0.207,0.707c0,0.382 -0.134,0.707 -0.403,0.973c-0.27,0.266 -0.61,0.399 -1.022,0.399c-0.371,-0 -0.679,-0.115 -0.925,-0.344c-0.245,-0.229 -0.385,-0.526 -0.419,-0.891Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M29.263,75.713l0.545,-0.048c0.041,0.275 0.134,0.482 0.282,0.621c0.147,0.138 0.324,0.207 0.532,0.207c0.25,0 0.462,-0.097 0.635,-0.293c0.173,-0.195 0.259,-0.454 0.259,-0.777c0,-0.307 -0.083,-0.549 -0.249,-0.726c-0.167,-0.177 -0.384,-0.266 -0.654,-0.266c-0.167,-0 -0.318,0.039 -0.453,0.118c-0.134,0.079 -0.24,0.181 -0.317,0.306l-0.488,-0.065l0.41,-2.251l2.103,-0l0,0.514l-1.688,-0l-0.227,1.178c0.253,-0.184 0.52,-0.275 0.799,-0.275c0.369,-0 0.681,0.132 0.935,0.397c0.253,0.265 0.38,0.606 0.38,1.022c0,0.397 -0.111,0.74 -0.334,1.029c-0.272,0.354 -0.642,0.532 -1.111,0.532c-0.385,-0 -0.699,-0.112 -0.942,-0.335c-0.243,-0.223 -0.382,-0.519 -0.417,-0.888Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M35.535,72.479l0.56,-0l0,2.532c0,0.44 -0.048,0.79 -0.144,1.049c-0.096,0.259 -0.27,0.47 -0.521,0.632c-0.251,0.163 -0.58,0.244 -0.988,0.244c-0.396,-0 -0.72,-0.071 -0.972,-0.212c-0.252,-0.142 -0.432,-0.347 -0.54,-0.615c-0.108,-0.268 -0.162,-0.634 -0.162,-1.098l0,-2.532l0.56,-0l0,2.529c0,0.38 0.034,0.661 0.103,0.841c0.068,0.181 0.185,0.32 0.352,0.417c0.166,0.098 0.369,0.147 0.61,0.147c0.411,-0 0.705,-0.097 0.88,-0.29c0.175,-0.194 0.262,-0.565 0.262,-1.115l0,-2.529Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M56.616,76.861l-0.556,-0l0,-3.44c-0.134,0.124 -0.309,0.248 -0.526,0.372c-0.218,0.124 -0.413,0.217 -0.586,0.279l0,-0.522c0.311,-0.142 0.583,-0.314 0.816,-0.516c0.232,-0.202 0.397,-0.398 0.494,-0.588l0.358,0l0,4.415Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M60.962,76.342l0,0.519l-2.993,-0c-0.004,-0.13 0.018,-0.255 0.065,-0.375c0.076,-0.198 0.198,-0.393 0.366,-0.585c0.168,-0.192 0.41,-0.414 0.727,-0.666c0.492,-0.392 0.825,-0.702 0.998,-0.931c0.173,-0.229 0.259,-0.445 0.259,-0.649c0,-0.214 -0.078,-0.395 -0.236,-0.542c-0.157,-0.147 -0.363,-0.22 -0.616,-0.22c-0.268,-0 -0.482,0.078 -0.643,0.234c-0.16,0.156 -0.241,0.372 -0.244,0.648l-0.571,-0.057c0.039,-0.414 0.186,-0.73 0.442,-0.946c0.255,-0.217 0.598,-0.326 1.028,-0.326c0.435,0 0.779,0.117 1.032,0.351c0.253,0.234 0.38,0.524 0.38,0.87c-0,0.176 -0.037,0.349 -0.111,0.519c-0.074,0.17 -0.198,0.348 -0.369,0.536c-0.172,0.188 -0.458,0.446 -0.858,0.774c-0.333,0.272 -0.547,0.457 -0.642,0.554c-0.095,0.096 -0.173,0.194 -0.235,0.292l2.221,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M61.867,74.291l0,-0.615l0.633,-0l0,0.615l-0.633,-0ZM61.867,76.861l0,-0.615l0.633,-0l0,0.615l-0.633,-0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M63.316,74.692c-0,-0.519 0.055,-0.938 0.165,-1.255c0.11,-0.317 0.274,-0.561 0.491,-0.733c0.217,-0.172 0.491,-0.258 0.82,-0.258c0.243,0 0.456,0.048 0.639,0.143c0.184,0.095 0.335,0.231 0.455,0.41c0.119,0.179 0.213,0.397 0.281,0.654c0.068,0.257 0.102,0.604 0.102,1.039c-0,0.516 -0.055,0.933 -0.164,1.25c-0.109,0.316 -0.272,0.561 -0.49,0.734c-0.217,0.173 -0.491,0.26 -0.823,0.26c-0.436,-0 -0.779,-0.152 -1.028,-0.456c-0.299,-0.366 -0.448,-0.962 -0.448,-1.788ZM63.887,74.692c0,0.722 0.087,1.203 0.261,1.441c0.174,0.239 0.389,0.359 0.644,0.359c0.255,-0 0.47,-0.12 0.644,-0.36c0.174,-0.24 0.261,-0.72 0.261,-1.44c0,-0.723 -0.087,-1.204 -0.261,-1.442c-0.174,-0.238 -0.391,-0.357 -0.65,-0.357c-0.255,-0 -0.459,0.105 -0.612,0.315c-0.191,0.268 -0.287,0.763 -0.287,1.484Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M68.616,76.861l-0,-1.053l-1.964,0l-0,-0.495l2.066,-2.849l0.454,0l-0,2.849l0.612,0l-0,0.495l-0.612,0l-0,1.053l-0.556,-0ZM68.616,75.313l-0,-1.982l-1.418,1.982l1.418,0Z"
android:fillColor="#fff"
android:fillType="nonZero"/>
<path
android:pathData="M50.221,74.7a1.692,1.702 0,1 0,3.384 0a1.692,1.702 0,1 0,-3.384 0z"
android:fillColor="#aaa2a2"/>
</vector>

View file

@ -0,0 +1,8 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M48.433,3.365l13.803,11.632l-27.606,0l13.803,-11.632Z"/>
<path android:fillColor="@android:color/white" android:pathData="M45.253,14.997h6.586v3.428h-6.586z"/>
<path android:fillColor="@android:color/white" android:pathData="M38.504,14.997h6.749v12.189h-6.749z"/>
<path android:fillColor="@android:color/white" android:pathData="M51.84,14.997h6.747v12.189h-6.747z"/>
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156s-7.156,-3.204 -7.156,-7.156s3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.938,4.449 -9.938,9.938S6.574,22 12.063,22S22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
android:fillColor="#FFFFFF"/>
</vector>

View file

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156c-3.952,0 -7.156,-3.204 -7.156,-7.156c0,-3.952 3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.937,4.449 -9.937,9.938c0,5.488 4.449,9.937 9.937,9.937C17.551,22 22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
android:fillColor="#939393"/>
<path
android:pathData="M14.868,22.154c0.794,0 1.49,-0.418 1.973,-1.054l-0.001,-3.926c-0.482,-0.634 -1.177,-1.052 -1.969,-1.052l-5.612,-0.001c-0.793,0 -1.487,0.416 -1.97,1.05l-0.004,3.926c0.482,0.636 1.178,1.055 1.972,1.055"
android:fillColor="#939393"/>
</vector>

View file

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156c-3.952,0 -7.156,-3.204 -7.156,-7.156c0,-3.952 3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.937,4.449 -9.937,9.938c0,5.488 4.449,9.937 9.937,9.937C17.551,22 22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
android:fillColor="#00C03E"/>
<path
android:pathData="M9.401,8.391l6.599,3.609l-6.599,3.609z"
android:fillColor="#00C03E"/>
</vector>

View file

@ -1,9 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M12.064,2.891c-2.006,-2.006 -4.997,-2.417 -7.414,-1.246l4.398,4.398L6.044,9.049L1.645,4.651c-1.171,2.417 -0.76,5.408 1.246,7.414c1.86,1.86 4.568,2.349 6.879,1.477l9.17,9.17c0.391,0.391 1.024,0.391 1.414,0l2.357,-2.357c0.391,-0.391 0.391,-1.024 0,-1.414l-9.17,-9.17C14.413,7.459 13.925,4.751 12.064,2.891z"
android:fillColor="@color/white"/>
android:pathData="M30.342,24.318c1.366,3.679 4.175,6.646 7.729,8.193c-0.101,0.988 -0.53,1.949 -1.287,2.705l-19.957,19.958c-1.746,1.746 -4.582,1.746 -6.329,-0l-3.26,-3.26c-1.746,-1.747 -1.746,-4.583 0,-6.329l19.958,-19.957c0.868,-0.869 2.007,-1.306 3.146,-1.31ZM16.307,44.823c1.159,0 2.1,0.932 2.1,2.079c-0,1.147 -0.941,2.078 -2.1,2.078c-1.159,0 -2.099,-0.931 -2.099,-2.078c-0,-1.147 0.94,-2.079 2.099,-2.079Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M58.682,18.101c0.003,0.104 0.004,0.208 0.004,0.312c-0,7.953 -6.336,14.41 -14.14,14.41c-7.804,-0 -14.139,-6.457 -14.139,-14.41c-0,-7.952 6.335,-14.409 14.139,-14.409c3.386,0 6.495,1.215 8.93,3.241l-10.873,6.475l0,7.107l6.258,3.309l0.078,0.13l0.076,-0.048l0.091,0.048l0.024,-0.121l9.552,-6.044Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -0,0 +1,10 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
<path android:fillColor="#00000000"
android:pathData="M48.482,34.89c1.19,0.985 11.298,-12.07 10.281,-19.108c-0.83,-5.741 -4.429,-10.197 -10.281,-10.324c-5.915,-0.129 -9.748,4.343 -10.28,10.324c-0.628,7.047 8.849,20.079 10.28,19.108Z"
android:strokeColor="@android:color/white" android:strokeWidth="3.09"/>
<path android:fillColor="@android:color/white" android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z"/>
<path android:fillColor="#FF000000" android:pathData="M43.147,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
<path android:fillColor="#FF000000" android:pathData="M50.951,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
</vector>

View file

@ -0,0 +1,11 @@
<vector android:height="36dp" android:viewportHeight="64"
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z"/>
<path android:fillColor="#FF000000" android:pathData="M27.035,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
<path android:fillColor="#FF000000" android:pathData="M34.54,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
<path android:fillColor="#00000000"
android:pathData="M31.98,46.071c1.15,0.944 10.925,-11.56 9.942,-18.302c-0.803,-5.498 -4.283,-9.766 -9.942,-9.888c-5.72,-0.123 -9.427,4.16 -9.942,9.888c-0.607,6.75 8.558,19.231 9.942,18.302Z"
android:strokeColor="@android:color/white" android:strokeWidth="3.09"/>
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z"/>
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z"/>
</vector>

View file

@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M36.472,7.728c-2.167,-1.778 -20.58,21.776 -18.727,34.474c1.511,10.356 8.067,18.397 18.727,18.626c10.775,0.231 17.757,-7.836 18.727,-18.626c1.144,-12.715 -16.12,-36.225 -18.727,-34.474Z"
android:strokeWidth="3.09"
android:fillColor="#00000000"
android:strokeColor="#fff"/>
<path
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -0,0 +1,85 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M51.787,23.533c-0.01,-10.925 -8.888,-19.787 -19.813,-19.777c-10.925,0.01 -19.787,8.889 -19.777,19.814l0.016,16.897c0.01,10.925 8.888,19.787 19.813,19.777c10.925,-0.01 19.787,-8.889 19.777,-19.814l-0.016,-16.897Z"
android:fillColor="#ebeae3"/>
<path
android:pathData="M46.353,25.52c-0.007,-7.925 -6.447,-14.353 -14.372,-14.346c-7.925,0.008 -14.353,6.448 -14.346,14.373l0.015,16.092c0.006,6.181 5.029,11.195 11.21,11.19l6.318,-0.006c6.182,-0.006 11.196,-5.029 11.19,-11.211l-0.015,-16.092Z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="31.4229"
android:startX="17.6405"
android:endY="30.819769"
android:endX="58.322098"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFB3B3B3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M22.928,44.362l-0.021,-22.414c-0.004,-4.01 3.249,-7.27 7.26,-7.273l3.634,-0.004c4.011,-0.003 7.27,3.25 7.274,7.261l0.02,22.413c-0.638,2.068 -1.683,3.934 -3.208,5.56l-11.85,0.011c-1.578,-1.46 -2.517,-3.384 -3.119,-5.554l0.01,-0Z"
android:strokeWidth="0.56"
android:fillColor="#00000000"
android:strokeColor="#000"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.826,46.02l-2.759,0.002l-0.001,-0.899c-0,-0.158 0.008,-0.279 0.026,-0.362c0.022,-0.117 0.065,-0.216 0.129,-0.295c0.063,-0.079 0.152,-0.143 0.266,-0.191c0.114,-0.048 0.239,-0.073 0.376,-0.073c0.235,0 0.434,0.064 0.596,0.193c0.163,0.129 0.244,0.362 0.245,0.699l0,0.611l1.122,-0.001l0,0.316ZM27.378,45.706l-0,-0.616c-0,-0.204 -0.044,-0.349 -0.132,-0.434c-0.088,-0.086 -0.212,-0.129 -0.371,-0.129c-0.116,0.001 -0.214,0.026 -0.297,0.076c-0.082,0.051 -0.136,0.117 -0.162,0.2c-0.017,0.053 -0.025,0.151 -0.025,0.294l0.001,0.61l0.986,-0.001Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.48,43.896c-0.458,0.001 -0.816,-0.105 -1.076,-0.317c-0.259,-0.213 -0.389,-0.487 -0.389,-0.823c-0,-0.22 0.06,-0.418 0.182,-0.595c0.122,-0.177 0.291,-0.311 0.509,-0.404c0.217,-0.093 0.464,-0.14 0.74,-0.14c0.28,-0 0.531,0.048 0.752,0.146c0.221,0.097 0.388,0.235 0.502,0.414c0.114,0.179 0.171,0.371 0.171,0.578c-0,0.225 -0.063,0.425 -0.188,0.602c-0.125,0.177 -0.297,0.311 -0.514,0.402c-0.217,0.091 -0.446,0.137 -0.689,0.137ZM27.486,43.571c0.332,-0 0.594,-0.078 0.786,-0.232c0.191,-0.155 0.286,-0.349 0.286,-0.582c-0,-0.237 -0.097,-0.432 -0.29,-0.585c-0.194,-0.154 -0.468,-0.23 -0.823,-0.23c-0.225,0 -0.421,0.033 -0.588,0.099c-0.168,0.066 -0.298,0.162 -0.39,0.288c-0.092,0.127 -0.138,0.268 -0.138,0.425c0,0.224 0.089,0.416 0.267,0.576c0.178,0.161 0.474,0.241 0.89,0.241Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.853,39.51l0.092,-0.316c0.3,0.066 0.529,0.185 0.687,0.357c0.157,0.171 0.236,0.381 0.236,0.629c0.001,0.257 -0.06,0.466 -0.181,0.627c-0.121,0.161 -0.296,0.284 -0.526,0.368c-0.229,0.084 -0.476,0.127 -0.739,0.127c-0.288,0 -0.538,-0.047 -0.752,-0.142c-0.215,-0.094 -0.377,-0.229 -0.488,-0.404c-0.112,-0.175 -0.167,-0.368 -0.168,-0.578c0,-0.238 0.07,-0.439 0.211,-0.602c0.14,-0.162 0.338,-0.276 0.593,-0.34l0.085,0.311c-0.201,0.055 -0.347,0.135 -0.439,0.24c-0.091,0.106 -0.137,0.238 -0.137,0.397c0,0.183 0.051,0.336 0.153,0.459c0.102,0.123 0.238,0.21 0.41,0.259c0.171,0.05 0.348,0.075 0.53,0.075c0.234,-0.001 0.439,-0.03 0.614,-0.089c0.175,-0.06 0.306,-0.152 0.392,-0.276c0.087,-0.125 0.13,-0.26 0.13,-0.405c-0,-0.177 -0.059,-0.326 -0.177,-0.449c-0.118,-0.122 -0.294,-0.205 -0.526,-0.248Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.82,38.199l-2.434,0.002l0,0.785l-0.325,0l-0.002,-1.889l0.326,0l0,0.789l2.434,-0.003l0.001,0.316Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.174,36.055l0.043,-0.302c0.205,0.047 0.363,0.135 0.477,0.264c0.113,0.129 0.169,0.294 0.169,0.494c0.001,0.253 -0.089,0.453 -0.269,0.601c-0.18,0.148 -0.433,0.222 -0.758,0.223c-0.336,-0 -0.597,-0.075 -0.783,-0.224c-0.186,-0.149 -0.279,-0.343 -0.279,-0.582c-0,-0.231 0.09,-0.419 0.272,-0.566c0.182,-0.146 0.438,-0.22 0.768,-0.22c0.02,0 0.05,0.001 0.091,0.002l0.001,1.287c0.219,-0.011 0.387,-0.065 0.504,-0.161c0.117,-0.097 0.175,-0.217 0.175,-0.361c-0,-0.107 -0.033,-0.199 -0.098,-0.275c-0.066,-0.076 -0.17,-0.136 -0.313,-0.18ZM27.627,37.016l-0.001,-0.964c-0.168,0.013 -0.294,0.05 -0.378,0.111c-0.131,0.093 -0.196,0.214 -0.196,0.363c0,0.134 0.053,0.247 0.157,0.339c0.104,0.091 0.244,0.142 0.418,0.151Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.084,34.259l0.043,-0.288c0.23,0.031 0.41,0.112 0.54,0.241c0.13,0.129 0.195,0.288 0.195,0.477c0,0.236 -0.089,0.426 -0.268,0.57c-0.179,0.144 -0.435,0.216 -0.769,0.216c-0.216,0 -0.405,-0.031 -0.567,-0.092c-0.161,-0.062 -0.283,-0.156 -0.364,-0.282c-0.081,-0.126 -0.122,-0.263 -0.122,-0.412c0,-0.187 0.055,-0.341 0.164,-0.46c0.11,-0.119 0.266,-0.196 0.468,-0.23l0.051,0.285c-0.134,0.027 -0.235,0.075 -0.303,0.144c-0.067,0.069 -0.101,0.152 -0.101,0.249c-0,0.148 0.061,0.268 0.184,0.36c0.122,0.092 0.316,0.137 0.581,0.137c0.268,-0 0.463,-0.045 0.585,-0.134c0.122,-0.089 0.182,-0.205 0.182,-0.348c0,-0.115 -0.041,-0.21 -0.122,-0.287c-0.082,-0.077 -0.208,-0.126 -0.377,-0.146Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.816,33.72l-2.76,0.002l-0,-0.292l0.99,-0.001c-0.183,-0.136 -0.275,-0.309 -0.275,-0.517c-0,-0.128 0.029,-0.239 0.087,-0.333c0.058,-0.094 0.139,-0.162 0.242,-0.203c0.102,-0.04 0.252,-0.061 0.448,-0.061l1.267,-0.001l-0,0.292l-1.267,0.002c-0.17,-0 -0.293,0.032 -0.37,0.095c-0.077,0.063 -0.116,0.153 -0.116,0.269c0.001,0.087 0.027,0.168 0.079,0.245c0.052,0.076 0.123,0.13 0.212,0.163c0.089,0.032 0.212,0.048 0.369,0.048l1.094,-0.001l-0,0.293Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M27.844,29.206l0.092,-0.315c0.3,0.066 0.529,0.185 0.687,0.356c0.157,0.172 0.236,0.382 0.237,0.63c-0,0.257 -0.061,0.466 -0.182,0.627c-0.121,0.161 -0.296,0.283 -0.525,0.368c-0.23,0.084 -0.477,0.126 -0.74,0.126c-0.288,0.001 -0.538,-0.047 -0.752,-0.141c-0.214,-0.095 -0.377,-0.23 -0.488,-0.405c-0.112,-0.175 -0.167,-0.367 -0.167,-0.577c-0.001,-0.239 0.069,-0.439 0.21,-0.602c0.14,-0.163 0.338,-0.276 0.593,-0.34l0.085,0.31c-0.201,0.056 -0.347,0.136 -0.439,0.241c-0.091,0.105 -0.137,0.237 -0.137,0.397c0,0.183 0.051,0.336 0.153,0.459c0.102,0.123 0.238,0.209 0.41,0.259c0.171,0.05 0.348,0.074 0.53,0.074c0.234,-0 0.439,-0.03 0.614,-0.089c0.175,-0.059 0.306,-0.151 0.393,-0.276c0.086,-0.125 0.129,-0.26 0.129,-0.405c-0,-0.176 -0.059,-0.326 -0.177,-0.448c-0.118,-0.123 -0.294,-0.205 -0.526,-0.249Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M28.811,27.895l-2.434,0.002l0,0.786l-0.325,-0l-0.002,-1.889l0.326,-0l0,0.788l2.434,-0.002l0.001,0.315Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.982,26.833l-0.341,-0l-0.001,-0.899l0.341,-0l0.001,0.899Z"
android:fillType="nonZero"/>
<path
android:fillColor="#FF000000"
android:pathData="M28.808,24.589l0,0.292l-2.159,0.002c0.078,0.07 0.156,0.163 0.234,0.277c0.077,0.114 0.136,0.217 0.175,0.308l-0.328,0c-0.089,-0.163 -0.197,-0.306 -0.324,-0.429c-0.127,-0.122 -0.25,-0.209 -0.369,-0.259l-0,-0.189l2.771,-0.002Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.446,23.84c-0.326,0.001 -0.589,-0.028 -0.788,-0.086c-0.199,-0.058 -0.352,-0.144 -0.46,-0.258c-0.108,-0.114 -0.162,-0.258 -0.163,-0.431c0,-0.128 0.03,-0.241 0.09,-0.337c0.059,-0.097 0.145,-0.176 0.257,-0.239c0.113,-0.063 0.249,-0.113 0.411,-0.149c0.161,-0.035 0.378,-0.054 0.652,-0.054c0.324,-0 0.585,0.028 0.784,0.086c0.199,0.057 0.353,0.143 0.461,0.257c0.109,0.114 0.163,0.259 0.164,0.433c-0,0.23 -0.095,0.41 -0.286,0.542c-0.23,0.157 -0.604,0.236 -1.122,0.236ZM27.446,23.54c0.453,-0.001 0.754,-0.047 0.904,-0.139c0.15,-0.091 0.225,-0.204 0.225,-0.339c-0,-0.134 -0.075,-0.247 -0.226,-0.338c-0.151,-0.092 -0.452,-0.137 -0.904,-0.137c-0.454,0 -0.756,0.046 -0.905,0.138c-0.15,0.092 -0.224,0.206 -0.224,0.343c0,0.134 0.066,0.241 0.198,0.321c0.168,0.101 0.479,0.151 0.932,0.151Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.445,21.989c-0.327,0 -0.589,-0.029 -0.788,-0.087c-0.199,-0.057 -0.353,-0.143 -0.461,-0.258c-0.108,-0.114 -0.162,-0.258 -0.162,-0.431c-0,-0.128 0.029,-0.24 0.089,-0.337c0.059,-0.096 0.145,-0.176 0.258,-0.239c0.112,-0.063 0.249,-0.112 0.41,-0.148c0.161,-0.036 0.379,-0.054 0.652,-0.054c0.324,-0.001 0.585,0.028 0.784,0.085c0.199,0.057 0.353,0.143 0.462,0.257c0.108,0.115 0.163,0.259 0.163,0.433c0,0.23 -0.095,0.411 -0.286,0.542c-0.229,0.157 -0.603,0.236 -1.121,0.237ZM27.444,21.688c0.453,-0 0.755,-0.046 0.905,-0.138c0.15,-0.092 0.225,-0.205 0.224,-0.339c0,-0.135 -0.075,-0.248 -0.226,-0.339c-0.15,-0.091 -0.452,-0.137 -0.904,-0.137c-0.454,0.001 -0.756,0.047 -0.905,0.139c-0.149,0.091 -0.224,0.205 -0.224,0.342c0,0.134 0.066,0.242 0.198,0.322c0.169,0.1 0.479,0.15 0.932,0.15Z"
android:fillType="nonZero"/>
<path
android:fillColor="@android:color/black"
android:pathData="M27.307,19.687c-0.051,0.121 -0.125,0.211 -0.22,0.27c-0.095,0.059 -0.21,0.088 -0.343,0.088c-0.2,0 -0.369,-0.062 -0.506,-0.186c-0.137,-0.125 -0.206,-0.291 -0.206,-0.498c0,-0.208 0.07,-0.375 0.21,-0.502c0.14,-0.127 0.31,-0.191 0.511,-0.191c0.128,0 0.239,0.029 0.334,0.087c0.095,0.058 0.168,0.146 0.219,0.264c0.056,-0.147 0.145,-0.258 0.267,-0.334c0.123,-0.077 0.27,-0.115 0.441,-0.115c0.236,-0.001 0.434,0.071 0.595,0.215c0.161,0.144 0.241,0.334 0.241,0.569c0.001,0.235 -0.08,0.425 -0.241,0.569c-0.161,0.144 -0.362,0.217 -0.603,0.217c-0.18,0 -0.33,-0.039 -0.451,-0.118c-0.121,-0.078 -0.204,-0.19 -0.248,-0.335ZM26.733,19.746c0.13,-0 0.237,-0.037 0.32,-0.109c0.083,-0.073 0.124,-0.167 0.124,-0.283c-0,-0.113 -0.041,-0.205 -0.124,-0.277c-0.082,-0.072 -0.183,-0.108 -0.302,-0.108c-0.124,0 -0.229,0.037 -0.313,0.112c-0.085,0.074 -0.127,0.166 -0.127,0.277c-0,0.111 0.041,0.204 0.124,0.278c0.083,0.073 0.182,0.11 0.298,0.11ZM28.007,19.839c0.097,0 0.191,-0.02 0.281,-0.059c0.09,-0.04 0.16,-0.099 0.21,-0.177c0.049,-0.078 0.074,-0.162 0.074,-0.252c-0,-0.14 -0.052,-0.255 -0.157,-0.346c-0.104,-0.091 -0.236,-0.136 -0.397,-0.136c-0.163,-0 -0.298,0.047 -0.405,0.141c-0.106,0.093 -0.16,0.211 -0.159,0.352c-0,0.137 0.053,0.251 0.158,0.342c0.106,0.09 0.237,0.135 0.395,0.135Z"
android:fillType="nonZero"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM9,11L7,11L7,9h2v2zM13,11h-2L11,9h2v2zM17,11h-2L15,9h2v2z"/>
</vector>

View file

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M18.253,15.869c1.19,0 2.158,-1.02 2.158,-2.274c0,-1.254 -0.968,-2.275 -2.158,-2.275c-1.19,0 -2.158,1.02 -2.158,2.275C16.095,14.849 17.063,15.869 18.253,15.869zM18.253,12.018c0.824,0 1.496,0.707 1.496,1.576c0,0.869 -0.671,1.576 -1.496,1.576s-1.496,-0.707 -1.496,-1.576C16.757,12.725 17.429,12.018 18.253,12.018z"
android:fillColor="@color/exercise"/>
<path
android:pathData="M21.442,18.522c-0.03,-0.043 -0.745,-1.039 -1.801,-1.039c-0.785,0 -1.295,0.514 -1.746,0.969c-0.399,0.402 -0.744,0.75 -1.226,0.75h-0.001c-0.393,0 -0.714,-0.242 -1.034,-0.538l1.665,-1.325l-4.553,-6.356l-4.394,3.496c-0.259,0.242 -0.627,0.87 -0.164,1.515c0.214,0.298 0.463,0.387 0.635,0.41c0.409,0.053 0.738,-0.217 0.765,-0.24l2.759,-2.195l0.676,0.943l-3.964,3.153c-0.371,-0.351 -0.791,-0.637 -1.305,-0.637H7.753c-0.788,0 -1.457,0.64 -2.048,1.205c-0.352,0.337 -0.752,0.72 -0.973,0.72c-0.428,0 -0.982,-0.647 -1.142,-0.874c-0.109,-0.154 -0.316,-0.186 -0.464,-0.071c-0.147,0.115 -0.178,0.333 -0.069,0.488c0.083,0.119 0.837,1.155 1.674,1.155c0.477,0 0.913,-0.417 1.418,-0.9c0.502,-0.48 1.071,-1.024 1.603,-1.024h0c0.469,0 0.879,0.45 1.313,0.927c0.482,0.529 0.981,1.077 1.659,1.077c0.647,0 1.193,-0.472 1.722,-0.929c0.494,-0.427 1.005,-0.868 1.542,-0.868c0.321,0.001 0.622,0.293 0.97,0.631c0.453,0.439 0.965,0.936 1.71,0.936h0.001c0.748,0 1.245,-0.501 1.684,-0.943c0.413,-0.416 0.769,-0.776 1.287,-0.776c0.719,0 1.264,0.751 1.269,0.759c0.11,0.155 0.317,0.184 0.464,0.07C21.52,18.894 21.551,18.677 21.442,18.522zM12.027,18.661c-0.459,0.396 -0.892,0.771 -1.301,0.771c-0.395,-0.001 -0.777,-0.42 -1.181,-0.862c-0.002,-0.003 -0.005,-0.005 -0.007,-0.008l4.415,-3.512l-1.475,-2.059L9.18,15.614c-0.022,0.019 -0.161,0.12 -0.276,0.096c-0.024,-0.003 -0.097,-0.012 -0.186,-0.136c-0.195,-0.273 0.01,-0.509 0.055,-0.555l3.844,-3.058l3.754,5.241l-1.24,0.986c-0.332,-0.301 -0.69,-0.554 -1.143,-0.554C13.214,17.635 12.584,18.18 12.027,18.661z"
android:fillColor="@color/exercise"/>
<path
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
android:fillColor="@color/inrange"/>
<path
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
android:fillColor="@color/tempTargetConfirmation"/>
</vector>

View file

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M16.954,15.325l3.851,-3.85c0.314,-0.314 0.314,-0.821 0.001,-1.134c-0.315,-0.315 -0.82,-0.314 -1.134,-0.001l-3.851,3.851l-3.851,-3.851c-0.315,-0.313 -0.821,-0.314 -1.134,0.001c-0.313,0.313 -0.313,0.82 0.001,1.134l3.851,3.85l-3.851,3.851c-0.314,0.313 -0.314,0.82 -0.001,1.133c0.157,0.156 0.362,0.235 0.567,0.235s0.41,-0.078 0.567,-0.235l3.851,-3.85l3.851,3.85c0.157,0.156 0.362,0.235 0.567,0.235c0.205,0 0.411,-0.078 0.567,-0.235c0.313,-0.313 0.313,-0.82 -0.001,-1.133L16.954,15.325z"
android:fillColor="@color/tempTargetConfirmation"/>
<path
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
android:fillColor="@color/inrange"/>
<path
android:pathData="M13.949,6.338H2.595c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h11.354c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
android:fillColor="@color/tempTargetConfirmation"/>
</vector>

View file

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M21.107,18.396h-0.515c-0.23,-3.231 -2.587,-5.897 -5.66,-6.605c-0.089,-0.819 -0.777,-1.462 -1.62,-1.462c-0.843,0 -1.531,0.642 -1.62,1.462c-3.073,0.708 -5.429,3.374 -5.66,6.605H5.518c-0.221,0 -0.4,0.179 -0.4,0.4c0,0.221 0.179,0.4 0.4,0.4h15.59c0.221,0 0.4,-0.179 0.4,-0.4C21.507,18.575 21.328,18.396 21.107,18.396zM13.313,10.943c0.461,0 0.836,0.311 0.964,0.73c-0.317,-0.043 -0.637,-0.072 -0.964,-0.072c-0.327,0 -0.648,0.03 -0.965,0.072C12.477,11.254 12.852,10.943 13.313,10.943zM13.313,12.401c3.391,0 6.212,2.654 6.479,5.995H6.834C7.101,15.056 9.922,12.401 13.313,12.401z"
android:fillColor="@color/carbs"/>
<path
android:pathData="M15.428,13.489c-0.588,-0.271 -1.415,-0.457 -2.268,-0.509c-0.221,-0.014 -0.411,0.154 -0.424,0.375c-0.014,0.221 0.154,0.411 0.375,0.424c0.746,0.046 1.487,0.209 1.981,0.437c0.047,0.021 0.095,0.033 0.143,0.036c0.16,0.01 0.317,-0.078 0.388,-0.232C15.717,13.82 15.629,13.582 15.428,13.489z"
android:fillColor="@color/carbs"/>
<path
android:pathData="M8.051,17.801c-0.029,0.001 -0.061,-0.003 -0.095,-0.011c-0.188,-0.047 -0.304,-0.239 -0.257,-0.427c0.43,-1.726 1.665,-3.196 3.304,-3.933c0.043,-0.019 0.088,-0.029 0.135,-0.031c0.143,-0.004 0.273,0.078 0.331,0.208c0.039,0.086 0.042,0.182 0.008,0.271c-0.034,0.088 -0.099,0.158 -0.185,0.196c-1.444,0.649 -2.531,1.942 -2.909,3.458C8.346,17.687 8.209,17.797 8.051,17.801z"
android:fillColor="@color/carbs"/>
<path
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
android:fillColor="@color/inrange"/>
<path
android:pathData="M11.122,8.486H5.436c-0.232,0 -0.42,-0.193 -0.42,-0.431l0,-1.717h-2.42c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.84c0.232,0 0.42,0.193 0.42,0.431l0,1.717h4.845V5.907c0,-0.238 0.188,-0.431 0.421,-0.431h2.827c0.232,0 0.421,0.193 0.421,0.431c0,0.238 -0.188,0.431 -0.421,0.431h-2.407v1.717C11.542,8.293 11.354,8.486 11.122,8.486z"
android:fillColor="@color/tempTargetConfirmation"/>
</vector>

View file

@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M8.822,17.137c-0.016,-0.28 0.022,-0.543 0.363,-0.583c0.313,-0.037 0.426,0.189 0.462,0.448c0.135,0.983 0.67,1.563 1.668,1.692c0.292,0.038 0.514,0.167 0.459,0.498c-0.051,0.305 -0.324,0.337 -0.568,0.336C10.03,19.526 8.835,18.321 8.822,17.137z"
android:fillColor="@color/low"/>
<path
android:pathData="M15.21,16.109c-0.631,-2.484 -3.383,-6.32 -3.773,-6.32s-3.151,3.845 -3.779,6.324c-0.42,1.658 0.111,3.081 1.577,4.049c1.43,0.944 2.973,0.929 4.402,-0.013C15.106,19.18 15.634,17.779 15.21,16.109zM13.255,19.568c-0.603,0.397 -1.221,0.599 -1.835,0.599c-0.607,0 -1.213,-0.197 -1.802,-0.586c-1.206,-0.796 -1.639,-1.906 -1.287,-3.298c0.489,-1.929 2.895,-5.336 3.105,-5.336s2.609,3.403 3.1,5.333C14.889,17.668 14.458,18.774 13.255,19.568z"
android:fillColor="@color/low"/>
<path
android:pathData="M19.522,16.771v-6.712h-1.423v6.712h-2.135l2.846,3.82l2.846,-3.82H19.522z"
android:fillColor="@color/low"/>
<path
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
android:fillColor="@color/inrange"/>
<path
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
android:fillColor="@color/tempTargetConfirmation"/>
</vector>

View file

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M16.438,8.901L9.729,15.61c-0.054,0.054 -0.09,0.122 -0.103,0.196L8.825,20.15c-0.022,0.121 0.016,0.245 0.103,0.332s0.211,0.126 0.332,0.103l4.343,-0.801c0.074,-0.014 0.143,-0.05 0.196,-0.103l6.709,-6.709c0.391,-0.391 0.39,-1.029 -0.002,-1.421l-2.648,-2.648C17.467,8.511 16.829,8.51 16.438,8.901zM12.907,18.755c0.085,0.085 0.116,0.211 0.08,0.326c-0.016,0.051 -0.044,0.096 -0.08,0.132c-0.046,0.046 -0.106,0.078 -0.173,0.09l-2.164,0.382c-0.215,-0.007 -0.428,-0.091 -0.592,-0.255c-0.164,-0.164 -0.248,-0.377 -0.255,-0.591l0.382,-2.164c0.021,-0.119 0.107,-0.216 0.222,-0.253c0.115,-0.036 0.241,-0.005 0.326,0.08L12.907,18.755zM19.949,12.025c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L19.949,12.025zM18.793,10.85c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L18.793,10.85zM17.637,9.675c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L17.637,9.675z"
android:fillColor="@color/tempTargetConfirmation"/>
<path
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
android:fillColor="@color/inrange"/>
<path
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
android:fillColor="@color/tempTargetConfirmation"/>
</vector>

View file

@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M15.781,51.823l0,-37.292c0,-2.609 2.118,-4.727 4.727,-4.727l23.484,-0c2.609,-0 4.727,2.118 4.727,4.727l0,37.292c0,2.609 -2.118,4.727 -4.727,4.727l-23.484,-0c-2.609,-0 -4.727,-2.118 -4.727,-4.727ZM32.25,43.601l0.246,-0c6.347,-0 11.5,-5.152 11.5,-11.5c0,-6.347 -5.153,-11.5 -11.5,-11.5c-0.041,-0 -0.082,0.001 -0.123,0.001c-0.041,-0 -0.082,-0.001 -0.123,-0.001c-6.347,-0 -11.5,5.153 -11.5,11.5c0,6.348 5.153,11.5 11.5,11.5Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M41.141,34.705l0,-5.207l-17.291,-0l0,5.207l17.291,-0Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M29.894,40.747l5.207,-0.001l-0.002,-17.291l-5.207,0.001l0.002,17.291Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M52.196,25.072l-0,-1.617l-3.037,0l0,1.617l3.037,0Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M52.196,40.746l-0,-1.617l-3.037,0l0,1.617l3.037,0Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M54.099,24.651c0,0.66 -1.612,1.852 -1.71,1.196c-0.116,-0.774 -1.047,-1.157 -1.711,-1.196c-0.941,-0.054 0.767,-1.195 1.711,-1.195c0.944,-0 1.71,0.536 1.71,1.195Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M54.099,39.129l0,-14.056l-1.904,-0l0,14.056l1.904,-0Z"
android:fillColor="@android:color/white"/>
<path
android:pathData="M54.099,39.484c0,0.697 -0.766,1.263 -1.71,1.263c-0.944,0 -2.611,-1.051 -1.711,-1.263c0.524,-0.124 1.639,-0.308 1.711,-1.263c0.051,-0.696 1.71,0.566 1.71,1.263Z"
android:fillColor="@android:color/white"/>
</vector>

View file

@ -0,0 +1,17 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M41,53.0926C41,57.6742 33.0897,61.4847 23.2273,61.657C13.3648,61.8319 4.8549,58.3075 4.1102,53.7391C3.3654,49.1734 10.635,45.0953 20.4399,44.5785C30.2476,44.0592 39.3051,47.2761 40.7891,51.8047L41,53.0926ZM33.599,33.571C33.599,39.0032 29.1004,43.5239 23.4929,43.7279C17.8826,43.9346 13.0472,39.7531 12.6228,34.3394C12.1984,28.9231 16.3328,24.0871 21.9075,23.4723C27.4849,22.8575 32.6352,26.6733 33.4785,32.042L33.599,33.571Z"
android:fillColor="#ffffff"
android:fillType="nonZero"/>
<path
android:pathData="M59.9421,12.9495C59.9421,7.0918 54.161,2.3354 47.0401,2.3354C39.9191,2.3354 34.138,7.0918 34.138,12.9495C34.138,15.849 35.5788,18.6213 38.1273,20.6243L34.138,28.8708L41.8559,22.6694C43.4901,23.259 45.2556,23.5637 47.0401,23.5637C54.161,23.5637 59.9421,18.8073 59.9421,12.9495Z"
android:fillColor="#ffffff"
android:fillAlpha="0.96"/>
<path
android:fillColor="#FF000000"
android:pathData="M39.0941,17.8588L39.0949,13.9134C39.0949,13.752 39.226,13.621 39.3873,13.6211L39.7008,13.6211C39.8546,13.6212 39.9806,13.74 39.9925,13.8905C40.0238,13.8875 40.0559,13.8859 40.0879,13.8859L41.0815,13.8861L41.0825,8.7741C41.0827,7.7211 41.8725,6.8662 42.8454,6.8664L53.1736,6.8685C54.1464,6.8687 54.9359,7.7238 54.9357,8.7769L54.9343,15.9526C54.9341,17.0056 54.1442,17.8605 53.1714,17.8603L42.8432,17.8582C42.7769,17.8582 42.7112,17.8542 42.6465,17.8466C42.5964,17.8542 42.5452,17.8582 42.4934,17.8582L40.0871,17.8577C40.0551,17.8577 40.0237,17.8564 39.9927,17.8534L39.9927,17.859C39.9927,18.0204 39.8613,18.1513 39.6999,18.1513L39.3864,18.1512C39.2251,18.1512 39.0941,18.0202 39.0941,17.8588ZM43.7517,9.1657L43.7507,14.2169L52.2649,14.2186L52.2659,9.1674L43.7517,9.1657ZM50.8092,15.1565L50.8088,16.7322L52.2646,15.9448L50.8092,15.1565ZM48.5703,15.9622C48.5703,15.956 48.5703,15.95 48.5703,15.9441C48.5704,15.4702 48.222,15.0857 47.7927,15.0856C47.363,15.0855 47.0145,15.4699 47.0144,15.9438L47.0144,15.9791C47.0143,16.4332 47.3627,16.8022 47.7923,16.8022C48.2217,16.8023 48.5702,16.4335 48.5703,15.9794C48.5703,15.9734 48.5703,15.9678 48.5703,15.9622ZM45.2062,15.1554L43.7504,15.9431L45.2059,16.7311L45.2062,15.1554Z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M20,12c0,-2.54 -1.19,-4.81 -3.04,-6.27L16,0H8l-0.95,5.73C5.19,7.19 4,9.45 4,12s1.19,4.81 3.05,6.27L8,24h8l0.96,-5.73C18.81,16.81 20,14.54 20,12zM6,12c0,-3.31 2.69,-6 6,-6s6,2.69 6,6 -2.69,6 -6,6 -6,-2.69 -6,-6z"/>
</vector>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector android:height="36dp" android:viewportHeight="120"
android:viewportWidth="120" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="m59.75,62.316c5.179,-2.256 8.801,-7.417 8.801,-13.427 0,-8.086 -6.555,-14.641 -14.641,-14.641 -8.086,0 -14.641,6.555 -14.641,14.641 0,6.01 3.622,11.171 8.801,13.427 -7.849,1.589 -14.555,6.318 -18.76,12.817 5.968,6.896 14.774,11.272 24.589,11.272 9.821,0 18.633,-4.382 24.601,-11.286 -4.205,-6.491 -10.907,-11.215 -18.75,-12.803z"/>
<path android:fillColor="@android:color/white" android:pathData="M21.689,33.33 L10.002,21.643c-5.155,7 -8.677,15.271 -10.002,24.25l16.523,0c0.968,-4.535 2.741,-8.776 5.166,-12.563z"/>
<path android:fillColor="@android:color/white" android:pathData="m91.275,45.893l16.523,0C106.473,36.909 102.947,28.634 97.787,21.631L86.101,33.317c2.429,3.79 4.205,8.035 5.174,12.576z"/>
<path android:fillColor="@android:color/white" android:pathData="M86.305,10.106C79.304,4.91 71.02,1.351 62.022,0l0,15.422l13.059,5.908z"/>
<path android:fillColor="@android:color/white" android:pathData="M45.754,15.339L45.754,0.003c-8.995,1.354 -17.276,4.915 -24.274,10.113l10.963,10.963z"/>
<path android:fillColor="@android:color/white" android:pathData="m26.558,80.554c-4.881,-5.002 -8.405,-11.333 -9.971,-18.394l-16.546,0c4.001,26.128 26.629,46.206 53.858,46.206 27.229,0 49.857,-20.077 53.858,-46.206l-16.546,0c-1.564,7.053 -5.082,13.378 -9.955,18.378 -6.946,7.127 -16.643,11.56 -27.357,11.56 -10.706,0 -20.396,-4.427 -27.341,-11.544z"/>
</vector>

View file

@ -50,9 +50,11 @@
android:id="@+id/main_navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:itemBackground="?selectableItemBackground"
app:itemTextColor="#FFFFFF"
android:layout_gravity="start" />
app:itemBackground="?attr/selectableItemBackground"
android:fitsSystemWindows="true"
android:layout_gravity="start"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"/>
</androidx.drawerlayout.widget.DrawerLayout>
</LinearLayout>

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